@vvfx/ge-ir 0.0.1-beta.11 → 0.0.1-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +134 -55
  2. package/dist/common/coordinate-mapping.d.ts +2 -0
  3. package/dist/common/json-normalization.d.ts +1 -1
  4. package/dist/common/particle-expression.d.ts +2 -0
  5. package/dist/conversion.d.ts +6 -0
  6. package/dist/ge2ir/parser/component.d.ts +2 -1
  7. package/dist/ge2ir/parser/timeline.d.ts +4 -2
  8. package/dist/ge2ir/post-process/mask.d.ts +1 -1
  9. package/dist/ge2ir/post-process.d.ts +1 -1
  10. package/dist/ge2ir/preserve-scene.d.ts +2 -0
  11. package/dist/ge2ir/types.d.ts +2 -0
  12. package/dist/index.d.ts +0 -3
  13. package/dist/index.js +9510 -8686
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +9512 -8687
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/ir2ge/assemble-source-preserved-data.d.ts +5 -0
  18. package/dist/ir2ge/converter/bezier.d.ts +4 -6
  19. package/dist/ir2ge/converter/precomp.d.ts +3 -3
  20. package/dist/ir2ge/generator/{component.d.ts → append-component.d.ts} +1 -1
  21. package/dist/ir2ge/generator/append-particle-component.d.ts +3 -0
  22. package/dist/ir2ge/generator/append-timeline-tracks.d.ts +15 -0
  23. package/dist/ir2ge/generator/component-preservation.d.ts +1 -0
  24. package/dist/ir2ge/generator/layer-strategy.d.ts +2 -2
  25. package/dist/ir2ge/post-process/mask.d.ts +16 -10
  26. package/dist/ir2ge/post-process/matte.d.ts +2 -1
  27. package/dist/ir2ge/post-process/merge-preserved-resources.d.ts +1 -0
  28. package/dist/ir2ge/post-process/{visibility.d.ts → normalize-activation-intervals.d.ts} +4 -4
  29. package/dist/ir2ge/post-process/restore-runtime-graph.d.ts +4 -0
  30. package/dist/ir2ge/types.d.ts +10 -0
  31. package/dist/particle/assemble-particle-source-data.d.ts +11 -0
  32. package/dist/particle/particle-fragment.d.ts +6 -9
  33. package/dist/preserved-data.d.ts +25 -0
  34. package/package.json +4 -4
  35. package/dist/ir2ge/generator/build-particle-component.d.ts +0 -3
  36. package/dist/ir2ge/generator/timeline.d.ts +0 -8
  37. package/dist/ir2ge/map-particle-layout-to-ge-transform.d.ts +0 -30
  38. package/dist/particle/merge-particle-fragment.d.ts +0 -12
  39. package/dist/particle/merge-particle-scenes.d.ts +0 -21
  40. /package/dist/ge2ir/parser/{scene.d.ts → build-scene-context.d.ts} +0 -0
  41. /package/dist/ge2ir/parser/{layer.d.ts → parse-item-layer.d.ts} +0 -0
  42. /package/dist/ir2ge/generator/{layer.d.ts → append-layer-items.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/_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","../../../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/common/json-normalization.ts","../src/common/data-path.ts","../src/common/id.ts","../src/common/math.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_extends.js","../src/ir2ge/post-process/merge-preserved-resources.ts","../src/ir2ge/assemble.ts","../src/ir2ge/converter/opacity.ts","../src/ir2ge/converter/precomp.ts","../src/ir2ge/generator/timeline.ts","../src/ir2ge/converter/timing.ts","../src/ir2ge/converter/bezier.ts","../src/common/anchor-mapping.ts","../src/ir2ge/converter/transform.ts","../src/ir2ge/converter/normalized-animation.ts","../src/ir2ge/converter/animation.ts","../src/ir2ge/mapping.ts","../src/common/particle-expression.ts","../src/ir2ge/generator/component-preservation.ts","../src/ir2ge/generator/build-particle-component.ts","../src/ir2ge/generator/component.ts","../src/ir2ge/generator/layer-strategy.ts","../src/ir2ge/generator/layer.ts","../src/ir2ge/post-process/parenting.ts","../src/ir2ge/post-process/mask-geometry.ts","../src/ir2ge/post-process/mask.ts","../src/ir2ge/post-process/matte.ts","../src/ir2ge/post-process/ge-mask-remap.ts","../src/ir2ge/post-process/visibility.ts","../src/ir2ge/post-process/pipeline.ts","../src/ir2ge/post-process/cross-composition-mask.ts","../src/preserved-data.ts","../src/ir2ge/convert.ts","../src/ge2ir/assemble.ts","../src/ge2ir/extract-particle-source-data.ts","../src/ge2ir/mapping.ts","../src/ge2ir/parser/scene.ts","../src/ge2ir/parser/keyframe.ts","../src/ge2ir/parser/animation.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_object_without_properties_loose.js","../src/ge2ir/parser/parse-particle-component.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/post-process/mask.ts","../src/ge2ir/convert.ts","../src/layer-preserved-data.ts","../src/update-preserved-data.ts","../src/particle/particle-fragment.ts","../src/ir2ge/map-particle-layout-to-ge-transform.ts","../src/particle/merge-particle-fragment.ts","../src/particle/merge-particle-scenes.ts"],"sourcesContent":["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","/**\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 = (2 / height) * DEFAULT_CAMERA_Z * Math.tan((DEFAULT_CAMERA_FOV / 2) * (Math.PI / 180)) + 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\n/**\n * Convert a GE world-space point to a top-left canvas coordinate while\n * preserving its perspective-adjusted Z value.\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 pixelX = x / effectiveRatio + width / 2;\n const pixelY = height / 2 - y / effectiveRatio;\n\n return [pixelX, pixelY, z];\n}\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 { isRecord } from './json-normalization';\n\ntype GERecord = Record<string, unknown>;\n\n/** GE scene collection indexed by entity ID. */\nexport type GESceneCollectionIndex = Map<string, GERecord>;\n\n/** Wrap an ID in a GE DataPath reference. */\nexport function toDataPath(id: string): DataPath {\n return { id };\n}\n\n/** Index GE scene collection entries by string ID. */\nexport function buildSceneCollectionIndex(collection: GERecord[] | undefined): GESceneCollectionIndex {\n const entryById: GESceneCollectionIndex = new Map();\n\n if (!Array.isArray(collection)) {\n return entryById;\n }\n\n for (const entry of collection) {\n const id = entry['id'];\n\n if (typeof id === 'string') {\n entryById.set(id, entry);\n }\n }\n\n return entryById;\n}\n\n/** Resolve a GE DataPath against an indexed scene collection. */\nexport function resolveDataPath(collectionIndex: GESceneCollectionIndex, reference: unknown): GERecord | undefined {\n const id = resolveDataPathId(reference);\n\n return id != null ? collectionIndex.get(id) : undefined;\n}\n\n/** Return the string ID stored in a GE DataPath-like value. */\nexport function resolveDataPathId(reference: unknown): string | undefined {\n return isRecord(reference) && typeof reference['id'] === 'string' ? reference['id'] : undefined;\n}\n\nexport function visitDataPathReferences(\n value: unknown,\n visit: (id: string) => void,\n visited = new WeakSet<object>(),\n): void {\n if (value == null || typeof value !== 'object' || visited.has(value)) {\n return;\n }\n\n visited.add(value);\n\n if (Array.isArray(value)) {\n for (const entry of value) {\n visitDataPathReferences(entry, visit, visited);\n }\n\n return;\n }\n\n const referenceId = resolveDataPathId(value);\n\n if (referenceId != null) {\n visit(referenceId);\n }\n\n for (const entry of Object.values(value)) {\n visitDataPathReferences(entry, visit, visited);\n }\n}\n","import { v4 } from 'uuid';\n\n/** Generate a 32-character hexadecimal UUID v4. */\nexport function createId(): string {\n return v4().replaceAll('-', '');\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","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","import { visitDataPathReferences, resolveDataPathId } from '../../common/data-path';\nimport { isRecord, normalizeJsonValue } from '../../common/json-normalization';\nimport type { GEToIRPreservedData } from '../../preserved-data';\n\n/** Merge source GE objects that are outside Composition graphs regenerated from IR. */\nexport function mergePreservedResources(\n generated: Record<string, unknown>,\n preservedData?: GEToIRPreservedData,\n): Record<string, unknown> {\n if (preservedData?.sourceScene == null) {\n return generated;\n }\n\n const sourceScene = preservedData.sourceScene;\n const result = { ...generated };\n const sourceCompositionIds = new Set(\n Object.values(preservedData.compositionBindings).map(binding => binding.sourceCompositionId),\n );\n const excluded = collectRegeneratedGraphIds(sourceScene, generated, sourceCompositionIds);\n const collectionNames = [\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 collectionName of collectionNames) {\n result[collectionName] = mergeCollection(\n asArray(generated[collectionName]),\n asArray(sourceScene[collectionName]).filter(\n entry => !isExcludedCollectionEntry(collectionName, entry, excluded),\n ),\n );\n }\n\n result['compositions'] = mergeCollection(\n asRecordArray(generated['compositions']),\n asRecordArray(sourceScene['compositions']).filter(\n entry => !isExcludedCollectionEntry('compositions', entry, excluded),\n ),\n );\n\n return result;\n}\n\ninterface ResourceIds {\n images: Set<string>;\n textures: Set<string>;\n}\n\ninterface RegeneratedGraphIds extends ResourceIds {\n compositions: Set<string>;\n components: Set<string>;\n items: Set<string>;\n miscs: Set<string>;\n}\n\ntype RegeneratedGraphCollection = keyof RegeneratedGraphIds;\n\ninterface SourceGraphEntry {\n collection: RegeneratedGraphCollection;\n value: Record<string, unknown>;\n}\n\ninterface SourceGraphIndex {\n entryById: Map<string, SourceGraphEntry>;\n images: Record<string, unknown>[];\n itemIdsByParentId: Map<string, string[]>;\n}\n\nconst REGENERATED_GRAPH_COLLECTIONS: RegeneratedGraphCollection[] = [\n 'compositions', 'components', 'items', 'miscs', 'textures', 'images',\n];\nconst REFERENCE_OWNER_COLLECTIONS = [\n 'compositions', 'components', 'plugins', 'geometries', 'materials', 'items', 'shaders', 'bins', 'animations',\n 'miscs',\n];\n\nfunction collectRegeneratedGraphIds(\n sourceScene: Record<string, unknown>,\n generatedScene: Record<string, unknown>,\n sourceCompositionIds: Set<string>,\n): RegeneratedGraphIds {\n const index = buildSourceGraphIndex(sourceScene);\n const excluded: RegeneratedGraphIds = {\n compositions: new Set(),\n components: new Set(),\n images: new Set(),\n items: new Set(),\n miscs: new Set(),\n textures: new Set(),\n };\n\n for (const sourceCompositionId of sourceCompositionIds) {\n collectSourceGraph(sourceCompositionId, index, excluded);\n }\n\n protectRetainedResourceReferences(sourceScene, generatedScene, index, excluded);\n\n return excluded;\n}\n\nfunction buildSourceGraphIndex(sourceScene: Record<string, unknown>): SourceGraphIndex {\n const entryById = new Map<string, SourceGraphEntry>();\n\n for (const collection of REGENERATED_GRAPH_COLLECTIONS) {\n for (const value of asRecordArray(sourceScene[collection])) {\n const id = value['id'];\n\n if (typeof id === 'string') {\n entryById.set(id, { collection, value });\n }\n }\n }\n\n const items = asRecordArray(sourceScene['items']);\n\n return {\n entryById,\n images: asRecordArray(sourceScene['images']),\n itemIdsByParentId: buildItemIdsByParentId(items),\n };\n}\n\nfunction collectSourceGraph(id: string, index: SourceGraphIndex, collected: RegeneratedGraphIds): void {\n const entry = index.entryById.get(id);\n\n if (entry == null || collected[entry.collection].has(id)) {\n return;\n }\n\n collected[entry.collection].add(id);\n visitDataPathReferences(entry.value, referenceId => collectSourceGraph(referenceId, index, collected));\n\n if (entry.collection === 'items') {\n for (const childId of index.itemIdsByParentId.get(id) ?? []) {\n collectSourceGraph(childId, index, collected);\n }\n } else if (entry.collection === 'textures') {\n collectNumericTextureSource(entry.value, index, imageId => collectSourceGraph(imageId, index, collected));\n }\n}\n\nfunction protectRetainedResourceReferences(\n sourceScene: Record<string, unknown>,\n generatedScene: Record<string, unknown>,\n index: SourceGraphIndex,\n excluded: RegeneratedGraphIds,\n): void {\n const protectedResources: ResourceIds = { images: new Set(), textures: new Set() };\n\n for (const collectionName of REFERENCE_OWNER_COLLECTIONS) {\n for (const entry of asArray(sourceScene[collectionName])) {\n if (!isExcludedCollectionEntry(collectionName, entry, excluded)) {\n collectReferencedResources(entry, index, protectedResources);\n }\n }\n for (const entry of asArray(generatedScene[collectionName])) {\n collectReferencedResources(entry, index, protectedResources);\n }\n }\n\n for (const textureId of protectedResources.textures) {\n excluded.textures.delete(textureId);\n }\n for (const imageId of protectedResources.images) {\n excluded.images.delete(imageId);\n }\n}\n\nfunction collectReferencedResources(value: unknown, index: SourceGraphIndex, resources: ResourceIds): void {\n visitDataPathReferences(value, id => {\n const entry = index.entryById.get(id);\n\n if (entry?.collection === 'images') {\n resources.images.add(id);\n } else if (entry?.collection === 'textures' && !resources.textures.has(id)) {\n resources.textures.add(id);\n collectReferencedResources(entry.value, index, resources);\n collectNumericTextureSource(entry.value, index, imageId => resources.images.add(imageId));\n }\n });\n}\n\nfunction collectNumericTextureSource(\n texture: Record<string, unknown>,\n index: SourceGraphIndex,\n collect: (imageId: string) => void,\n): void {\n const source = texture['source'];\n\n if (typeof source !== 'number' || !Number.isSafeInteger(source) || source < 0) {\n return;\n }\n\n const imageId = index.images[source]?.['id'];\n\n if (typeof imageId === 'string') {\n collect(imageId);\n }\n}\n\nfunction buildItemIdsByParentId(items: Record<string, unknown>[]): Map<string, string[]> {\n const itemIdsByParentId = new Map<string, string[]>();\n\n for (const item of items) {\n const itemId = item['id'];\n const parentId = typeof item['parentId'] === 'string'\n ? item['parentId']\n : resolveDataPathId(item['parentId']);\n\n if (typeof itemId !== 'string' || parentId == null) {\n continue;\n }\n\n const childIds = itemIdsByParentId.get(parentId) ?? [];\n\n childIds.push(itemId);\n itemIdsByParentId.set(parentId, childIds);\n }\n\n return itemIdsByParentId;\n}\n\nfunction isExcludedCollectionEntry(\n collectionName: string,\n entry: unknown,\n excluded: RegeneratedGraphIds,\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 (collectionName === 'compositions') {\n return excluded.compositions.has(id);\n }\n if (collectionName === 'components') {\n return excluded.components.has(id);\n }\n if (collectionName === 'images') {\n return excluded.images.has(id);\n }\n if (collectionName === 'items') {\n return excluded.items.has(id);\n }\n if (collectionName === 'miscs') {\n return excluded.miscs.has(id);\n }\n if (collectionName === 'textures') {\n return excluded.textures.has(id);\n }\n\n return false;\n}\n\nfunction mergeCollection(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 = collectionEntryKey(entry);\n\n if (key != null) {\n seen.add(key);\n }\n }\n\n for (const entry of preserved) {\n const key = collectionEntryKey(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 collectionEntryKey(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(\n (entry): entry is Record<string, unknown> =>\n entry != null && typeof entry === 'object' && !Array.isArray(entry),\n )\n : [];\n}\n","import {\n IREndBehavior, type IRComposition, type IRColor, type IRScene,\n} from '@vvfx/animation-ir';\nimport type {\n CompositionComponentData,\n CompositionData,\n DataPath,\n JSONScene,\n RGBAColorValue,\n TimelineAssetData,\n VFXItemData,\n} from '@galacean/effects-specification';\nimport { DataType, EndBehavior, JSONSceneVersion } from '@galacean/effects-specification';\nimport { DEFAULT_CAMERA_FOV, DEFAULT_CAMERA_Z, DEFAULT_CLIP_MODE } from '../common/coordinate-mapping';\nimport { toDataPath } from '../common/data-path';\nimport { createId } from '../common/id';\nimport { normalizeJsonValue } from '../common/json-normalization';\nimport { roundNumber } from '../common/math';\nimport { mergePreservedResources } from './post-process/merge-preserved-resources';\nimport type { GEToIRPreservedData } from '../preserved-data';\nimport type { ECSCollector, GeneratedComponentData, GeneratedCompositionData, GeneratedMiscData } 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 irScene: IRScene,\n collector: ECSCollector,\n generatedCompositions: GeneratedCompositionData[],\n duration?: number,\n preservedData?: GEToIRPreservedData,\n): JSONScene {\n const compositions: Array<CompositionData & Record<string, unknown>> = [];\n\n for (const { id, ir, itemBindings } of generatedCompositions) {\n const timelineAssetId = createId();\n const timelineBindings = itemBindings.filter(\n (binding): binding is typeof binding & { objectBindingTrackId: string } => binding.objectBindingTrackId != null,\n );\n const objectBindingTrackRefs: DataPath[] = timelineBindings.map(binding => toDataPath(binding.objectBindingTrackId));\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 sceneBindings = timelineBindings.map(binding => ({\n key: toDataPath(binding.objectBindingTrackId),\n value: toDataPath(binding.itemId),\n }));\n const allItemRefs: DataPath[] = itemBindings.map(binding => toDataPath(binding.itemId));\n const compositionComponent: CompositionComponentData & GeneratedComponentData = {\n id: compositionComponentId,\n dataType: DataType.CompositionComponent,\n item: toDataPath(id),\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,\n name: ir.name ?? ir.id,\n duration: id === irScene.entryCompositionId && duration != null ? duration : deriveDuration(ir),\n startTime: ir.inPoint / ir.frameRate,\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 compositions.push(composition);\n }\n\n const generatedScene: JSONScene = {\n version: JSONSceneVersion['3_6'],\n playerVersion: DEFAULT_PLAYER_VERSION,\n images: collector.images,\n fonts: collector.fonts,\n plugins: [],\n type: 'ge',\n compositionId: irScene.entryCompositionId,\n compositions,\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(\n mergePreservedResources(generatedScene as unknown as Record<string, unknown>, preservedData),\n ) as unknown as JSONScene;\n}\n\nfunction deriveDuration(ir: IRComposition): number {\n return (ir.outPoint - ir.inPoint) / ir.frameRate;\n}\n\n/** Map the required IR composition end behavior to GE. */\nfunction mapCompositionEndBehavior(endBehavior: IREndBehavior): EndBehavior {\n switch (endBehavior) {\n case IREndBehavior.Loop:\n return EndBehavior.restart;\n case IREndBehavior.Continue:\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 [roundNumber(color[0]), roundNumber(color[1]), roundNumber(color[2]), roundNumber(color[3], 4)];\n}\n","import type { IRAnimatedProperty, IRKeyframe, IRPrecompLayer } from '@vvfx/animation-ir';\nimport type { IRComposition } from '@vvfx/animation-ir';\n\nconst DEFAULT_OPACITY: IRAnimatedProperty<number> = { type: 'static', value: 1 };\n\n/** Multiply two opacity channels in one Composition time domain. */\nexport function multiplyOpacityProperties(\n left: IRAnimatedProperty<number> | undefined,\n right: IRAnimatedProperty<number> | undefined,\n inFrame: number,\n outFrame: number,\n): IRAnimatedProperty<number> | undefined {\n if (left == null) {\n return cloneOpacityProperty(right);\n }\n if (right == null) {\n return cloneOpacityProperty(left);\n }\n if (left.type === 'static' && right.type === 'static') {\n return { type: 'static', value: left.value * right.value };\n }\n if (left.type === 'static') {\n return scaleOpacityProperty(right, left.value);\n }\n if (right.type === 'static') {\n return scaleOpacityProperty(left, right.value);\n }\n\n const frames = new Set<number>([inFrame, outFrame]);\n\n for (const keyframe of left.keyframes) {\n frames.add(keyframe.frame);\n }\n for (const keyframe of right.keyframes) {\n frames.add(keyframe.frame);\n }\n\n const keyframes = [...frames]\n .filter(frame => frame >= inFrame && frame <= outFrame)\n .sort((a, b) => a - b)\n .map(frame => ({\n frame,\n value: evaluateOpacityAtFrame(left.keyframes, frame) * evaluateOpacityAtFrame(right.keyframes, frame),\n }));\n\n return keyframes.length === 1\n ? { type: 'static', value: keyframes[0].value }\n : { type: 'keyframed', keyframes };\n}\n\n/** Map an instance opacity channel from its parent timeline into referenced Composition frames. */\nexport function mapOpacityToReferencedComposition(\n opacity: IRAnimatedProperty<number> | undefined,\n layer: IRPrecompLayer,\n parent: IRComposition,\n referenced: IRComposition,\n): IRAnimatedProperty<number> | undefined {\n if (opacity == null || opacity.type === 'static') {\n return cloneOpacityProperty(opacity);\n }\n\n const parentFrameRate = parent.frameRate;\n const referencedFrameRate = referenced.frameRate;\n const sourceStartFrame = layer.time.sourceStartFrame ?? referenced.inPoint;\n const stretch = layer.time.stretch ?? 1;\n const mapFrame = (frame: number): number =>\n sourceStartFrame + ((frame - layer.time.inFrame) * referencedFrameRate) / (parentFrameRate * stretch);\n\n return {\n type: 'keyframed',\n keyframes: opacity.keyframes.map(keyframe => ({ ...keyframe, frame: mapFrame(keyframe.frame) })),\n };\n}\n\nexport function isDefaultOpacity(opacity: IRAnimatedProperty<number> | undefined): boolean {\n if (opacity == null) {\n return true;\n }\n if (opacity.type === 'static') {\n return opacity.value === 1;\n }\n\n return opacity.keyframes.every(keyframe => keyframe.value === 1 && (keyframe.endValue ?? 1) === 1);\n}\n\nexport function hasAnimatedOpacity(opacity: IRAnimatedProperty<number> | undefined): boolean {\n return opacity?.type === 'keyframed' && opacity.keyframes.length > 1;\n}\n\nfunction cloneOpacityProperty(\n opacity: IRAnimatedProperty<number> | undefined,\n): IRAnimatedProperty<number> | undefined {\n if (opacity == null) {\n return undefined;\n }\n if (opacity.type === 'static') {\n return { ...opacity };\n }\n\n return { type: 'keyframed', keyframes: opacity.keyframes.map(keyframe => ({ ...keyframe })) };\n}\n\nfunction scaleOpacityProperty(\n opacity: IRAnimatedProperty<number> | undefined,\n factor: number,\n): IRAnimatedProperty<number> {\n const resolved = opacity ?? DEFAULT_OPACITY;\n\n if (resolved.type === 'static') {\n return { type: 'static', value: resolved.value * factor };\n }\n\n return {\n type: 'keyframed',\n keyframes: resolved.keyframes.map(keyframe => ({\n ...keyframe,\n value: keyframe.value * factor,\n ...(keyframe.endValue != null && { endValue: keyframe.endValue * factor }),\n })),\n };\n}\n\nfunction evaluateOpacityAtFrame(keyframes: IRKeyframe<number>[], frame: number): number {\n if (keyframes.length === 0) {\n return 1;\n }\n if (frame <= keyframes[0].frame) {\n return keyframes[0].value;\n }\n\n const last = keyframes[keyframes.length - 1];\n\n if (frame >= last.frame) {\n return last.value;\n }\n\n for (let index = 0; index < keyframes.length - 1; index++) {\n const current = keyframes[index];\n const next = keyframes[index + 1];\n\n if (frame < current.frame || frame > next.frame) {\n continue;\n }\n if (current.hold === true || next.frame === current.frame) {\n return current.value;\n }\n\n const progress = (frame - current.frame) / (next.frame - current.frame);\n const endValue = current.endValue ?? next.value;\n\n return current.value + (endValue - current.value) * progress;\n }\n\n return last.value;\n}\n","import {\n type IRAnimatedProperty, type IRComposition, type IRScene, type IRPrecompLayer,\n} from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { createId } from '../../common/id';\nimport {\n hasAnimatedOpacity, isDefaultOpacity, mapOpacityToReferencedComposition, multiplyOpacityProperties,\n} from './opacity';\n\ninterface CompositionGenerationRequest {\n id: string;\n ir: IRComposition;\n inheritedOpacity?: IRAnimatedProperty<number>;\n precompOutputIdByLayerId: Map<string, string>;\n}\n\ninterface CompositionGenerationPlan {\n compositionById: ReadonlyMap<string, IRComposition>;\n requests: CompositionGenerationRequest[];\n}\n\n/** Plan source Compositions and the instance-specific variants required by GE. */\nexport function buildCompositionGenerationPlan(\n irScene: IRScene,\n diagnostics: ConversionDiagnostic[],\n): CompositionGenerationPlan {\n const compositionById = new Map(irScene.compositions.map(composition => [composition.id, composition] as const));\n const requests: CompositionGenerationRequest[] = irScene.compositions.map(ir => ({\n id: ir.id,\n ir,\n precompOutputIdByLayerId: new Map(),\n }));\n const requestById = new Map(requests.map(request => [request.id, request] as const));\n\n for (let requestIndex = 0; requestIndex < requests.length; requestIndex++) {\n const request = requests[requestIndex];\n\n for (const layer of request.ir.layers) {\n if (layer.type !== 'precomp') {\n continue;\n }\n const referenced = compositionById.get(layer.content.compositionId);\n\n if (referenced == null) {\n continue;\n }\n const instanceOpacity = multiplyOpacityProperties(\n request.inheritedOpacity,\n layer.transform?.opacity,\n layer.time.inFrame,\n layer.time.outFrame,\n );\n const referencedOpacity = mapOpacityToReferencedComposition(instanceOpacity, layer, request.ir, referenced);\n const requiresVariant = layer.mask != null || layer.content.clipToBounds || !isDefaultOpacity(referencedOpacity);\n\n if (!requiresVariant) {\n continue;\n }\n const outputId = createId();\n\n request.precompOutputIdByLayerId.set(layer.id, outputId);\n if (!requestById.has(outputId)) {\n const variant: CompositionGenerationRequest = {\n id: outputId,\n ir: referenced,\n inheritedOpacity: referencedOpacity,\n precompOutputIdByLayerId: new Map(),\n };\n\n requests.push(variant);\n requestById.set(outputId, variant);\n }\n collectOpacityApproximationDiagnostic(request, layer, referenced, referencedOpacity, diagnostics);\n }\n }\n\n return { compositionById, requests };\n}\n\nfunction collectOpacityApproximationDiagnostic(\n request: CompositionGenerationRequest,\n layer: IRPrecompLayer,\n referenced: IRComposition,\n referencedOpacity: IRAnimatedProperty<number> | undefined,\n diagnostics: ConversionDiagnostic[],\n): void {\n const hasAnimatedChildOpacity = referenced.layers.some(child =>\n child.type !== 'null' && child.type !== 'precomp' && hasAnimatedOpacity(child.transform?.opacity),\n );\n\n if (!hasAnimatedOpacity(referencedOpacity) || !hasAnimatedChildOpacity) {\n return;\n }\n diagnostics.push({\n code: 'GE_PRECOMP_OPACITY_APPROXIMATED',\n severity: 'warning',\n action: 'approximated',\n path: `$.compositions[id=${JSON.stringify(request.ir.id)}].layers[id=${JSON.stringify(layer.id)}].transform.opacity`,\n sourceId: layer.id,\n feature: 'precomp-opacity',\n message: 'Animated Precomp and child opacity curves were multiplied at their keyframe boundaries.',\n });\n}\n\n/** Report GE runtime limitations that apply to a source Precomp instance. */\nexport function collectPrecompExportDiagnostics(\n layer: IRPrecompLayer,\n compositionById: ReadonlyMap<string, IRComposition>,\n composition: IRComposition,\n diagnostics: ConversionDiagnostic[],\n): void {\n const path = `$.compositions[id=${JSON.stringify(composition.id)}].layers[id=${JSON.stringify(layer.id)}]`;\n\n if (layer.mask != null && layer.content.clipToBounds) {\n diagnostics.push({\n code: 'GE_PRECOMP_CLIP_MASK_CONFLICT',\n severity: 'warning',\n action: 'dropped',\n path: `${path}.content.clipToBounds`,\n sourceId: layer.id,\n feature: 'precomp-clip-to-bounds',\n message: 'GE 2.x has one mask reference; the authored Layer mask was emitted and clipToBounds was omitted.',\n });\n }\n const expectedSourceStartFrame = compositionById.get(layer.content.compositionId)?.inPoint ?? 0;\n\n if (layer.time.sourceStartFrame != null && layer.time.sourceStartFrame < expectedSourceStartFrame) {\n diagnostics.push({\n code: 'GE_PRECOMP_SOURCE_START_UNSUPPORTED',\n severity: 'warning',\n action: 'approximated',\n path: `${path}.time.sourceStartFrame`,\n sourceId: layer.id,\n feature: 'precomp-source-start',\n message: 'GE 2.x cannot evaluate a nested Composition before its inPoint; the earliest source frame is used.',\n });\n }\n if (layer.time.stretch != null && layer.time.stretch !== 1) {\n diagnostics.push({\n code: 'GE_PRECOMP_STRETCH_UNSUPPORTED',\n severity: 'warning',\n action: 'approximated',\n path: `${path}.time.stretch`,\n sourceId: layer.id,\n feature: 'precomp-stretch',\n message: 'GE 2.x has no instance-local Precomp playback-rate field; stretch is emitted as 1.',\n });\n }\n}\n","import type { DataPath, TimelineClipData, TrackAssetData } from '@galacean/effects-specification';\nimport { DataType, type EndBehavior, ItemType } from '@galacean/effects-specification';\nimport { toDataPath } from '../../common/data-path';\nimport { createId } from '../../common/id';\nimport { roundNumber } from '../../common/math';\nimport type { GeneratedMiscData, TransformAnimation } from '../types';\n\ninterface TimelineTrackCollector {\n miscs: Record<string, unknown>[];\n}\n\n/** Build binding, activation, transform, and supported renderer-color tracks for one Item. */\nexport function buildTimelineTracks(\n collector: TimelineTrackCollector,\n delay: number,\n duration: number,\n endBehavior: EndBehavior,\n animation: TransformAnimation,\n itemType: ItemType,\n precompTimeOffset = 0,\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 const sourceOffset = Math.max(precompTimeOffset, 0);\n\n childTrackIds.push(toDataPath(buildSubCompositionTrack(\n collector,\n delay - sourceOffset,\n duration + sourceOffset,\n endBehavior,\n )));\n // GE 2.9's SubComposition mixer writes the same Item active state as Activation.\n // When source time starts early, repeat Activation last so it remains the final\n // visibility decision while the nested Composition clock continues advancing.\n if (sourceOffset > 0) {\n childTrackIds.push(toDataPath(buildActivationTrack(collector, delay, duration, endBehavior)));\n }\n }\n\n if (shouldBuildSpriteColorTrack(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 shouldBuildSpriteColorTrack(itemType: ItemType): boolean {\n return itemType === ItemType.sprite || itemType === ItemType.text || itemType === ItemType.shape;\n}\n\nfunction isPrecompItemType(itemType: ItemType): boolean {\n return itemType === ItemType.composition;\n}\n\nfunction buildActivationTrack(\n collector: TimelineTrackCollector,\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: TimelineTrackCollector,\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: TimelineTrackCollector,\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: TimelineTrackCollector,\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: TimelineTrackCollector,\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","import type { IRLayer } from '@vvfx/animation-ir';\nimport { roundNumber } from '../../common/math';\n\n/**\n * Convert a Layer activation range from parent-Composition frames to GE seconds.\n * Precomp sourceStartFrame/stretch affect source sampling, not activation.\n */\nexport function computeLayerTiming(\n layer: IRLayer,\n frameRate: number,\n compositionInPoint = 0,\n): { delay: number; layerDuration: number } {\n const time = layer.time;\n const delay = roundNumber((time.inFrame - compositionInPoint) / frameRate, 4);\n const rawDuration = (time.outFrame - time.inFrame) / frameRate;\n const layerDuration = rawDuration > 0 ? roundNumber(rawDuration, 4) : 0.0001;\n\n return { delay, layerDuration };\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 inFrame: number;\n /** Layer visible end frame. */\n outFrame: 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.type === 'static' || 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.type === 'static' || 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.type === 'static' || 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.inFrame, timeContext.outFrame);\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 =\n keyframe.hold === true ? startPosition : (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 const nextStart = nextKeyframe.value;\n\n if (i < keyframes.length - 2 && (segmentEnd[0] !== nextStart[0] || segmentEnd[1] !== nextStart[1])) {\n // Coincident times preserve a reset without interpolating across it.\n timingCurvePoints.push({\n normalizedTime: normalizeTime(nextKeyframe.frame, timeContext.inFrame, timeContext.outFrame),\n inTangent: nextKeyframe.inTangent ?? DEFAULT_IN_TANGENT,\n outTangent: DEFAULT_OUT_TANGENT,\n });\n pathPoints.push([[segmentEnd[0], segmentEnd[1]], [nextStart[0], nextStart[1]]]);\n controlPoints.push([[0, 0], [0, 0]]);\n }\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([\n [0, 0],\n [0, 0],\n ]);\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 [\n BezierKeyframeType.EASE_OUT,\n [roundNumber(segment[0], 4), roundNumber(segment[1], 4), roundNumber(segment[2], 4), roundNumber(segment[3], 4)],\n BezierKeyframeType.EASE_OUT,\n ] as BezierKeyframeValue;\n}\n\nfunction makeEaseIn(previousSegment: number[]): BezierKeyframeValue {\n return [\n BezierKeyframeType.EASE_IN,\n [\n roundNumber(previousSegment[4], 4),\n roundNumber(previousSegment[5], 4),\n roundNumber(previousSegment[6], 4),\n roundNumber(previousSegment[7], 4),\n ],\n BezierKeyframeType.EASE_IN,\n ] as BezierKeyframeValue;\n}\n\nfunction makeEase(previousSegment: number[], currentSegment: number[]): BezierKeyframeValue {\n return [\n BezierKeyframeType.EASE,\n [\n roundNumber(previousSegment[4], 4),\n roundNumber(previousSegment[5], 4),\n roundNumber(previousSegment[6], 4),\n roundNumber(previousSegment[7], 4),\n roundNumber(currentSegment[2], 4),\n roundNumber(currentSegment[3], 4),\n ],\n BezierKeyframeType.EASE,\n ] 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.inFrame, timeContext.outFrame);\n const t1 = normalizeTime(nextKeyframe.frame, timeContext.inFrame, timeContext.outFrame);\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 ? { x: 0, y: 0 } : (keyframe.outTangent ?? DEFAULT_OUT_TANGENT);\n // IR stores a segment's incoming tangent on its ending keyframe.\n const inHandle = keyframe.hold === true ? { x: 1, y: 1 } : (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([t0, v0, outControlPointX, outControlPointY, inControlPointX, inControlPointY, t1, v1]);\n const nextValue = getScalarValue(nextKeyframe, dimensionIndex);\n\n if (i < keyframes.length - 2 && v1 !== nextValue) {\n bezierCurves.push([t1, v1, t1, v1, t1, nextValue, t1, nextValue]);\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([0, firstValue, 0, firstValue, firstTime, firstValue, firstTime, firstValue]);\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([t0, t0, outControlPointX, outControlPointY, inControlPointX, inControlPointY, t1, t1]);\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.type === 'keyframed' && property.keyframes != null && property.keyframes.length > 12;\n}\n","import type { IRLayerType, IRTransform } from '@vvfx/animation-ir';\n\n/** Apply GE's parented visual rotation convention to an anchor position offset. */\nexport function rotateAnchorOffsetForParentedVisual(\n layerType: IRLayerType,\n hasParent: boolean,\n transform: IRTransform | undefined,\n offsetX: number,\n offsetY: number,\n): [number, number] {\n if ((layerType !== 'image' && layerType !== 'solid') || !hasParent) {\n return [offsetX, offsetY];\n }\n const rotationZ = transform?.rotation?.z;\n\n if (rotationZ == null || rotationZ.type === 'keyframed' || rotationZ.value === 0) {\n return [offsetX, offsetY];\n }\n const radians = (rotationZ.value * Math.PI) / 180;\n const cosine = Math.cos(radians);\n const sine = Math.sin(radians);\n\n return [offsetX * cosine - offsetY * sine, offsetX * sine + offsetY * cosine];\n}\n","import type { IRLayer, IRLocalBounds } from '@vvfx/animation-ir';\nimport type { IRToGETimeContext } from './bezier';\nimport { rotateAnchorOffsetForParentedVisual } from '../../common/anchor-mapping';\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(layer: IRLayer, fallback: IRLocalBounds = DEFAULT_LOCAL_BOUNDS): IRLocalBounds {\n if (layer.localBounds != null) {\n return layer.localBounds;\n }\n if (layer.type === 'text') {\n const text = layer.content;\n const estimatedWidth = estimateTextWidth(text.text, text.fontSize, text.letterSpacing);\n\n return {\n x: 0,\n y: 0,\n width: Math.max(estimatedWidth, 1),\n height: Math.max(text.lineHeight, text.fontSize * 1.2),\n };\n }\n\n return fallback;\n}\n\nfunction estimateTextWidth(text: string, fontSize: number, letterSpacing: number): number {\n if (text.length === 0) {\n return 0;\n }\n const averageCharacterWidth = fontSize * 0.6;\n\n return text.length * averageCharacterWidth + letterSpacing * (text.length - 1);\n}\n\nexport function computeStaticPosition(\n layer: IRLayer,\n ctx: LayerGenerationContext,\n anchorOffsetX = 0,\n anchorOffsetY = 0,\n): [number, number, number] {\n const transform = layer.transform;\n\n if (transform?.position?.type === 'keyframed' && transform.position.keyframes.length !== 1) {\n return convert2dTo3dPoint(ctx.width / 2 + anchorOffsetX, ctx.height / 2 + anchorOffsetY, 0, ctx.width, ctx.height);\n }\n\n const isNullType = layer.type === 'null' || layer.type === 'precomp';\n\n const positionValue =\n transform?.position?.type === 'keyframed' ? transform.position.keyframes[0]?.value : 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,\n ctx.height,\n );\n }\n\n return convert2dTo3dPoint(anchorOffsetX, anchorOffsetY, 0, ctx.width, ctx.height);\n}\n\nexport function getStaticAnchor(layer: IRLayer): [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: IRLayer): [number, number] {\n const scale = layer.transform?.scale;\n\n if (scale == null) {\n return [1, 1];\n }\n if (scale.type === 'keyframed' && scale.keyframes.length !== 1) {\n return [1, 1];\n }\n const value = scale.type === '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: IRLayer,\n bounds: IRLocalBounds,\n ratio: number,\n): [number, number, number] {\n const [offsetX, offsetY] = computeScalePositionOffset(layer, bounds);\n\n return [position[0] + offsetX * ratio, position[1] - offsetY * ratio, position[2]];\n}\n\nfunction computeScalePositionOffset(layer: IRLayer, bounds: IRLocalBounds): [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 [0, 0];\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 [0, 0];\n }\n\n return [\n anchorDiffX * (1 - staticScale[0]),\n anchorDiffY * (1 - staticScale[1]),\n ];\n}\n\nexport function computeAnchorInfo(\n layer: IRLayer,\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 [anchorOffsetX, anchorOffsetY] = rotateAnchorOffsetForParentedVisual(\n layer.type,\n layer.parentId != null,\n layer.transform,\n anchorOffsetX,\n anchorOffsetY,\n );\n\n return { anchorScaleX, anchorScaleY, anchorOffsetX, anchorOffsetY };\n}\n\nexport function getTimeContext(layer: IRLayer): IRToGETimeContext {\n return {\n inFrame: layer.time.inFrame,\n outFrame: layer.time.outFrame,\n };\n}\n","import type { IRAnimatedProperty, IRLayer, IRTransform, IRVec3 } from '@vvfx/animation-ir';\nimport type {\n BezierCurvePathValue,\n BezierKeyframeValue,\n ColorOverLifetime,\n FixedNumberExpression,\n PositionOverLifetime,\n RotationOverLifetime,\n SizeOverLifetime,\n TransformPlayableAssetData,\n} from '@galacean/effects-specification';\nimport { ValueType } from '@galacean/effects-specification';\nimport {\n convertIRPositionKeyframesToGE,\n convertIRScalarKeyframesToGE,\n 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<\n TransformPlayableAssetData,\n 'positionOverLifetime' | 'rotationOverLifetime' | 'sizeOverLifetime'\n>;\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: IRLayer,\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(transform, timeContext, ctx),\n rotationOverLifetime: buildRotationAnimation(transform, timeContext),\n sizeOverLifetime: buildSizeAnimation(transform, timeContext),\n };\n}\n\nfunction buildPositionAnimation(\n transform: IRTransform,\n timeContext: IRToGETimeContext,\n ctx: NormalizedAnimationContext,\n): PositionOverLifetime | undefined {\n if (transform.position == null || transform.position.type === 'static') {\n return undefined;\n }\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(firstPathPoint[0], firstPathPoint[1], 0, ctx.width, ctx.height);\n\n pathPoints.push(point3d);\n }\n\n for (const pathPoint of positionResult.pathPoints) {\n const endPoint3d = convert2dTo3dPoint(pathPoint[1][0], pathPoint[1][1], 0, ctx.width, ctx.height);\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],\n dy / 3 + pathPointPair[0][1],\n 0,\n ctx.width,\n ctx.height,\n );\n const secondControlPoint = convert2dTo3dPoint(\n -dx / 3 + pathPointPair[1][0],\n -dy / 3 + pathPointPair[1][1],\n 0,\n ctx.width,\n ctx.height,\n );\n\n controlPoints.push(firstControlPoint, secondControlPoint);\n } else {\n const firstControlPoint = convert2dTo3dPoint(\n controlPointPair[0][0] + pathPointPair[0][0],\n controlPointPair[0][1] + pathPointPair[0][1],\n 0,\n ctx.width,\n ctx.height,\n );\n const secondControlPoint = convert2dTo3dPoint(\n controlPointPair[1][0] + pathPointPair[1][0],\n controlPointPair[1][1] + pathPointPair[1][1],\n 0,\n ctx.width,\n ctx.height,\n );\n\n controlPoints.push(firstControlPoint, secondControlPoint);\n }\n }\n\n const curveData = positionResult.curves[0] ?? [];\n const easingData: BezierKeyframeValue[] = curveData.map(\n (keyframeValue: BezierKeyframeValue) => [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 buildRotationAnimation(\n transform: IRTransform,\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) {\n result.x = x;\n }\n if (y != null) {\n result.y = y;\n }\n if (z != null) {\n result.z = z;\n }\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.type === 'static') {\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<IRTransform['rotation']>['x'], { type: 'keyframed' }>,\n): boolean {\n return rotation.keyframes.some(\n keyframe => Math.abs(keyframe.value) > 0.0001 || Math.abs(keyframe.endValue ?? 0) > 0.0001,\n );\n}\n\nfunction buildSizeAnimation(\n transform: IRTransform,\n timeContext: IRToGETimeContext,\n): SizeOverLifetime | undefined {\n if (transform.scale == null) {\n return undefined;\n }\n\n if (transform.scale.type === '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: IRLayer): 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.outFrame - timeContext.inFrame <= 0) {\n return {\n opacity: [ValueType.CONSTANT, 0],\n };\n }\n\n if (transform.opacity.type === '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 { IRAnimatedProperty, IRLayer } from '@vvfx/animation-ir';\nimport type { ColorOverLifetime } from '@galacean/effects-specification';\nimport { buildNormalizedColorAnimation, buildNormalizedTransformAnimation } from './normalized-animation';\nimport { multiplyOpacityProperties } from './opacity';\nimport type { GEAnimationPayload, LayerGenerationContext, TransformAnimation } from '../types';\n\nexport function buildTransformAnimation(layer: IRLayer, ctx: LayerGenerationContext): TransformAnimation {\n if (layer.transform == null) {\n return {};\n }\n\n // Prefer preserved GE payloads; otherwise encode normalized IR channels.\n const layerData = ctx.layerDataById[layer.id];\n const preservedPosition = layerData?.positionOverLifetime;\n const preservedRotation = layerData?.rotationOverLifetime;\n const preservedSize = layerData?.sizeOverLifetime;\n const normalized = buildNormalizedTransformAnimation(layer, ctx);\n\n const positionOverLifetime = preservedPosition ?? normalized.positionOverLifetime;\n const rotationOverLifetime = preservedRotation ?? normalized.rotationOverLifetime;\n const sizeOverLifetime = preservedSize ?? normalized.sizeOverLifetime;\n\n return { positionOverLifetime, rotationOverLifetime, sizeOverLifetime };\n}\n\nexport function buildColorAnimation(\n layer: IRLayer,\n ctx: LayerGenerationContext,\n inheritedOpacity?: IRAnimatedProperty<number>,\n): GEAnimationPayload<ColorOverLifetime> | undefined {\n const preservedColor = ctx.layerDataById[layer.id]?.colorOverLifetime;\n\n if (inheritedOpacity == null) {\n return preservedColor ?? buildNormalizedColorAnimation(layer);\n }\n\n const opacity = multiplyOpacityProperties(\n inheritedOpacity,\n layer.transform?.opacity,\n layer.time.inFrame,\n layer.time.outFrame,\n );\n const normalizedLayer: IRLayer = {\n ...layer,\n transform: { ...layer.transform, opacity },\n };\n const normalized = buildNormalizedColorAnimation(normalizedLayer);\n\n if (preservedColor != null && normalized?.opacity != null) {\n return { ...preservedColor, opacity: normalized.opacity };\n }\n if (preservedColor != null) {\n return preservedColor;\n }\n\n return normalized;\n}\n","import { IRBlendMode, IREndBehavior, type IRLayerType } from '@vvfx/animation-ir';\nimport { BlendingMode, EndBehavior, 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, BlendingMode | undefined> = {\n [IRBlendMode.Normal]: undefined,\n [IRBlendMode.Multiply]: BlendingMode.MULTIPLY,\n [IRBlendMode.Screen]: undefined,\n [IRBlendMode.Overlay]: BlendingMode.SUPERPOSITION,\n [IRBlendMode.Darken]: undefined,\n [IRBlendMode.Lighten]: BlendingMode.BRIGHTNESS,\n [IRBlendMode.ColorDodge]: undefined,\n [IRBlendMode.ColorBurn]: undefined,\n [IRBlendMode.HardLight]: BlendingMode.STRONG_LIGHT,\n [IRBlendMode.SoftLight]: BlendingMode.WEAK_LIGHT,\n [IRBlendMode.Difference]: BlendingMode.SUBTRACTION,\n [IRBlendMode.Exclusion]: undefined,\n [IRBlendMode.Hue]: undefined,\n [IRBlendMode.Saturation]: undefined,\n [IRBlendMode.Color]: undefined,\n [IRBlendMode.Luminosity]: undefined,\n [IRBlendMode.Add]: BlendingMode.ADD,\n};\n\nexport function mapBlendModeToGE(blendMode: IRBlendMode | undefined): BlendingMode | undefined {\n return blendMode != null ? GE_BLENDING_BY_IR_MODE[blendMode] : undefined;\n}\n\nexport function mapEndBehaviorToGE(endBehavior: IREndBehavior): EndBehavior {\n switch (endBehavior) {\n case IREndBehavior.Destroy:\n return EndBehavior.destroy;\n case IREndBehavior.Continue:\n return EndBehavior.forward;\n case IREndBehavior.Freeze:\n return EndBehavior.freeze;\n case IREndBehavior.Loop:\n return EndBehavior.restart;\n }\n}\n\nconst GE_TIMELINE_ITEM_TYPE_BY_IR_LAYER_TYPE: Record<IRLayerType, ItemType> = {\n image: ItemType.sprite,\n solid: ItemType.sprite,\n shape: ItemType.sprite,\n text: ItemType.text,\n particle: ItemType.particle,\n null: ItemType.null,\n precomp: ItemType.null,\n};\n\nconst GE_VFX_ITEM_TYPE_BY_IR_LAYER_TYPE: Record<IRLayerType, ItemType> = {\n image: ItemType.sprite,\n solid: ItemType.sprite,\n shape: ItemType.shape,\n text: ItemType.text,\n particle: ItemType.particle,\n null: ItemType.null,\n precomp: ItemType.null,\n};\n\nexport function mapLayerTypeToGETimelineItemType(type: IRLayerType): ItemType {\n return GE_TIMELINE_ITEM_TYPE_BY_IR_LAYER_TYPE[type];\n}\n\nexport function mapLayerTypeToGEVFXItemType(type: IRLayerType): ItemType {\n return GE_VFX_ITEM_TYPE_BY_IR_LAYER_TYPE[type];\n}\n","import type {\n IRParticleCurveKeyframe, IRParticleCurvePoint, IRParticleScalarExpression,\n} from '@vvfx/animation-ir';\nimport {\n BezierKeyframeType, type BezierKeyframeValue, type NumberExpression, ValueType,\n} from '@galacean/effects-specification';\n\nfunction isFiniteTuple(value: unknown, length: number): value is number[] {\n return Array.isArray(value) && value.length === length && value.every(\n entry => typeof entry === 'number' && Number.isFinite(entry),\n );\n}\n\nfunction createPoint(progress: number, value: number): IRParticleCurvePoint {\n return { progress, value };\n}\n\ninterface ParsedBezierKeyframe {\n keyframe: IRParticleCurveKeyframe;\n holdIn: boolean;\n holdOut: boolean;\n}\n\nfunction createParsedKeyframe(keyframe: IRParticleCurveKeyframe): ParsedBezierKeyframe {\n return { keyframe, holdIn: false, holdOut: false };\n}\n\nfunction parseBezierKeyframe(value: unknown): ParsedBezierKeyframe | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const entry = value as unknown[];\n const type = entry[0];\n const data = entry[1];\n const mark = entry[2];\n\n switch (type) {\n case BezierKeyframeType.EASE:\n return isFiniteTuple(data, 6)\n ? createParsedKeyframe({\n inControl: createPoint(data[0], data[1]),\n progress: data[2],\n value: data[3],\n outControl: createPoint(data[4], data[5]),\n })\n : undefined;\n case BezierKeyframeType.EASE_IN:\n return isFiniteTuple(data, 4)\n ? createParsedKeyframe({\n inControl: createPoint(data[0], data[1]),\n progress: data[2],\n value: data[3],\n })\n : undefined;\n case BezierKeyframeType.EASE_OUT:\n return isFiniteTuple(data, 4)\n ? createParsedKeyframe({\n progress: data[0],\n value: data[1],\n outControl: createPoint(data[2], data[3]),\n })\n : undefined;\n case BezierKeyframeType.LINE:\n return isFiniteTuple(data, 2)\n ? createParsedKeyframe({ progress: data[0], value: data[1] })\n : undefined;\n case BezierKeyframeType.HOLD:\n return parseHoldKeyframe(data, mark);\n default:\n return undefined;\n }\n}\n\nfunction parseHoldKeyframe(data: unknown, mark: unknown): ParsedBezierKeyframe | undefined {\n if (mark === BezierKeyframeType.EASE_IN && isFiniteTuple(data, 4)) {\n return {\n keyframe: {\n inControl: createPoint(data[0], data[1]),\n progress: data[2],\n value: data[3],\n },\n holdIn: false,\n holdOut: true,\n };\n }\n if (mark === BezierKeyframeType.EASE_OUT && isFiniteTuple(data, 4)) {\n return {\n keyframe: {\n progress: data[0],\n value: data[1],\n outControl: createPoint(data[2], data[3]),\n },\n holdIn: true,\n holdOut: false,\n };\n }\n if (!isFiniteTuple(data, 2)) {\n return undefined;\n }\n if (mark === BezierKeyframeType.LINE) {\n return {\n keyframe: { progress: data[0], value: data[1] },\n holdIn: false,\n holdOut: true,\n };\n }\n if (mark === BezierKeyframeType.LINE_OUT) {\n return {\n keyframe: { progress: data[0], value: data[1] },\n holdIn: true,\n holdOut: false,\n };\n }\n if (mark === BezierKeyframeType.HOLD) {\n return {\n keyframe: { progress: data[0], value: data[1] },\n holdIn: true,\n holdOut: true,\n };\n }\n\n return undefined;\n}\n\nfunction parseBezierCurve(value: unknown): IRParticleScalarExpression | undefined {\n if (!Array.isArray(value) || value.length === 0) {\n return undefined;\n }\n const parsedKeyframes = value.map(parseBezierKeyframe);\n\n if (!parsedKeyframes.every((keyframe): keyframe is ParsedBezierKeyframe => keyframe != null)) {\n return undefined;\n }\n\n const keyframes = parsedKeyframes.map(parsed => ({ ...parsed.keyframe }));\n\n for (const [index, keyframe] of keyframes.entries()) {\n const current = parsedKeyframes[index];\n const next = parsedKeyframes[index + 1];\n\n if (current.holdOut || next?.holdIn === true) {\n keyframe.hold = true;\n }\n }\n\n return { type: 'curve', keyframes };\n}\n\nfunction parseLineCurve(value: unknown): IRParticleScalarExpression | undefined {\n if (!Array.isArray(value) || value.length === 0 || !value.every(point => isFiniteTuple(point, 2))) {\n return undefined;\n }\n\n return {\n type: 'curve',\n keyframes: value.map(point => ({ progress: point[0], value: point[1] })),\n };\n}\n\nfunction parseHermiteCurve(value: unknown): IRParticleScalarExpression | undefined {\n if (!Array.isArray(value) || value.length === 0 || !value.every(point => isFiniteTuple(point, 4))) {\n return undefined;\n }\n\n const points = value;\n const keyframes: IRParticleCurveKeyframe[] = points.map(point => ({\n progress: point[0],\n value: point[1],\n }));\n\n for (let index = 0; index < points.length - 1; index++) {\n const point = points[index];\n const nextPoint = points[index + 1];\n const progressDelta = nextPoint[0] - point[0];\n\n keyframes[index].outControl = createPoint(\n point[0] + progressDelta / 3,\n point[1] + point[3] * progressDelta / 3,\n );\n keyframes[index + 1].inControl = createPoint(\n nextPoint[0] - progressDelta / 3,\n nextPoint[1] - nextPoint[2] * progressDelta / 3,\n );\n }\n\n return { type: 'curve', keyframes };\n}\n\nexport function parseGEParticleScalarExpression(value: unknown): IRParticleScalarExpression | undefined {\n if (!Array.isArray(value) || value.length !== 2) {\n return undefined;\n }\n\n switch (value[0]) {\n case ValueType.CONSTANT:\n return typeof value[1] === 'number' && Number.isFinite(value[1])\n ? { type: 'constant', value: value[1] }\n : undefined;\n case ValueType.RANDOM:\n return isFiniteTuple(value[1], 2)\n ? { type: 'randomBetweenConstants', min: value[1][0], max: value[1][1] }\n : undefined;\n case ValueType.LINE:\n return parseLineCurve(value[1]);\n case ValueType.CURVE:\n return parseHermiteCurve(value[1]);\n case ValueType.BEZIER_CURVE: {\n return parseBezierCurve(value[1]);\n }\n default:\n return undefined;\n }\n}\n\nfunction pointValues(point: IRParticleCurvePoint): [number, number] {\n return [point.progress, point.value];\n}\n\nfunction convertIRCurveKeyframeToGE(keyframe: IRParticleCurveKeyframe): BezierKeyframeValue {\n const point = pointValues(keyframe);\n const outgoingHold = keyframe.hold === true;\n\n if (outgoingHold) {\n if (keyframe.inControl != null) {\n return [\n BezierKeyframeType.HOLD,\n [...pointValues(keyframe.inControl), ...point],\n BezierKeyframeType.EASE_IN,\n ];\n }\n\n return [BezierKeyframeType.HOLD, point, BezierKeyframeType.LINE];\n }\n if (keyframe.inControl != null && keyframe.outControl != null) {\n return [\n BezierKeyframeType.EASE,\n [...pointValues(keyframe.inControl), ...point, ...pointValues(keyframe.outControl)],\n BezierKeyframeType.EASE,\n ];\n }\n if (keyframe.inControl != null) {\n return [\n BezierKeyframeType.EASE_IN,\n [...pointValues(keyframe.inControl), ...point],\n BezierKeyframeType.EASE_IN,\n ];\n }\n if (keyframe.outControl != null) {\n return [\n BezierKeyframeType.EASE_OUT,\n [...point, ...pointValues(keyframe.outControl)],\n BezierKeyframeType.EASE_OUT,\n ];\n }\n\n return [BezierKeyframeType.LINE, point, BezierKeyframeType.LINE];\n}\n\nexport function convertIRParticleScalarExpressionToGE(\n expression: IRParticleScalarExpression,\n): NumberExpression {\n switch (expression.type) {\n case 'constant':\n return [ValueType.CONSTANT, expression.value];\n case 'randomBetweenConstants':\n return [ValueType.RANDOM, [expression.min, expression.max]];\n case 'curve':\n return [ValueType.BEZIER_CURVE, expression.keyframes.map(convertIRCurveKeyframeToGE)];\n }\n}\n","import type { IRLayer } from '@vvfx/animation-ir';\nimport { createId } from '../../common/id';\nimport type { GeneratedComponentData, LayerGenerationContext } from '../types';\n\nexport function resolveComponentId(layer: IRLayer, ctx: LayerGenerationContext): string {\n const sourceComponentId = ctx.layerDataById[layer.id]?.sourceComponentId;\n\n if (\n sourceComponentId != null &&\n !ctx.collector.components.some(component => component.id === sourceComponentId)\n ) {\n return sourceComponentId;\n }\n\n return createId();\n}\n\n/** Copy a preserved GE mask whose target references are remapped after generation. */\nexport function copyPreservedMaskToComponent(\n layer: IRLayer,\n component: GeneratedComponentData,\n ctx: LayerGenerationContext,\n): void {\n const preservedMask = ctx.layerDataById[layer.id]?.mask;\n\n if (preservedMask != null && component['mask'] == null) {\n component['mask'] = { ...preservedMask };\n }\n}\n","import type { IRParticleLayer } from '@vvfx/animation-ir';\nimport { DataType, ValueType } from '@galacean/effects-specification';\nimport { toDataPath } from '../../common/data-path';\nimport { convertIRParticleScalarExpressionToGE } from '../../common/particle-expression';\nimport { isRecord, normalizeJsonValue } from '../../common/json-normalization';\nimport { roundNumber } from '../../common/math';\nimport { multiplyOpacityProperties } from '../converter/opacity';\nimport { mapBlendModeToGE } from '../mapping';\nimport type { GeneratedComponentData, LayerGenerationContext } from '../types';\nimport { copyPreservedMaskToComponent, resolveComponentId } from './component-preservation';\n\nexport function buildParticleComponent(\n layer: IRParticleLayer,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string {\n const preservedContent = ctx.layerDataById[layer.id]?.particleContent;\n\n if (preservedContent == null) {\n throw new TypeError(\n `[ge-ir] Particle layer '${layer.id}' cannot be exported without trusted GE particle data ` +\n 'because the source-neutral IR does not contain renderer, shape, or resource bindings.',\n );\n }\n\n const componentId = resolveComponentId(layer, ctx);\n const component = normalizeJsonValue(preservedContent) as GeneratedComponentData;\n const rawOptions = component['options'];\n const rawEmission = component['emission'];\n const rawRenderer = component['renderer'];\n const options = isRecord(rawOptions) ? { ...rawOptions } : {};\n const emission = isRecord(rawEmission) ? { ...rawEmission } : {};\n const renderer = isRecord(rawRenderer) ? { ...rawRenderer } : {};\n const bursts = layer.content.emission.bursts;\n const blending = mapBlendModeToGE(layer.blendMode);\n const opacity = resolveStaticParticleOpacity(layer, ctx);\n\n removeInvalidBurstOffsets(emission, bursts?.length ?? 0);\n options['maxCount'] = layer.content.maxParticles;\n options['startLifetime'] = convertIRParticleScalarExpressionToGE(layer.content.startLifetime);\n emission['rateOverTime'] = convertIRParticleScalarExpressionToGE(layer.content.emission.rateOverTime);\n if (bursts == null) {\n delete emission['bursts'];\n } else {\n emission['bursts'] = bursts.map(burst => ({\n time: burst.frameOffset / ctx.frameRate,\n count: burst.count,\n cycles: burst.cycleCount === 'infinite' ? 0 : burst.cycleCount,\n interval: burst.repeatIntervalFrames / ctx.frameRate,\n }));\n }\n if (blending == null) {\n delete renderer['blending'];\n } else {\n renderer['blending'] = blending;\n }\n renderer['anchor'] = [roundNumber(anchorScaleX, 4), roundNumber(anchorScaleY, 4)];\n if (opacity != null && opacity !== 1) {\n options['startColor'] = scaleParticleStartColor(options['startColor'], opacity, layer.id);\n }\n\n component['id'] = componentId;\n component['dataType'] = DataType.ParticleSystem;\n component['item'] = toDataPath(itemId);\n component['options'] = options;\n component['emission'] = emission;\n component['renderer'] = renderer;\n\n copyPreservedMaskToComponent(layer, component, ctx);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction removeInvalidBurstOffsets(emission: Record<string, unknown>, burstCount: number): void {\n const preservedBursts = emission['bursts'];\n const burstOffsets = emission['burstOffsets'];\n\n if (\n !Array.isArray(burstOffsets) ||\n (Array.isArray(preservedBursts) && preservedBursts.length === burstCount &&\n burstOffsets.every(offset => isValidBurstOffset(offset, burstCount)))\n ) {\n return;\n }\n\n delete emission['burstOffsets'];\n}\n\nfunction isValidBurstOffset(value: unknown, burstCount: number): boolean {\n return isRecord(value) && typeof value['index'] === 'number' && Number.isInteger(value['index']) &&\n value['index'] >= 0 && value['index'] < burstCount;\n}\n\nfunction resolveStaticParticleOpacity(\n layer: IRParticleLayer,\n ctx: LayerGenerationContext,\n): number | undefined {\n const opacity = multiplyOpacityProperties(\n ctx.inheritedOpacity,\n layer.transform?.opacity,\n layer.time.inFrame,\n layer.time.outFrame,\n );\n\n if (opacity == null) {\n return undefined;\n }\n if (opacity.type === 'static') {\n return opacity.value;\n }\n if (opacity.keyframes.length === 1) {\n return opacity.keyframes[0].value;\n }\n\n ctx.diagnostics.push({\n code: 'GE_PARTICLE_OPACITY_ANIMATION_UNSUPPORTED',\n severity: 'warning',\n action: 'unsupported',\n path: `$.compositions[id=${JSON.stringify(ctx.ir.id)}].layers[id=${JSON.stringify(layer.id)}].transform.opacity`,\n sourceId: layer.id,\n feature: 'particle-opacity',\n message: 'GE ParticleSystem has no timeline-compatible Layer opacity target; animated opacity was not emitted.',\n });\n\n return undefined;\n}\n\nfunction scaleParticleStartColor(value: unknown, opacity: number, layerId: string): unknown {\n if (value === undefined) {\n return [ValueType.RGBA_COLOR, [1, 1, 1, roundNumber(opacity, 4)]];\n }\n if (isFiniteNumberTuple(value, 4)) {\n return scaleColorTuple(value, opacity);\n }\n if (!Array.isArray(value) || value.length !== 2) {\n throwInvalidStartColor(layerId);\n }\n\n const expression: unknown[] = value;\n const type = expression[0];\n const payload = expression[1];\n\n if (type === ValueType.RGBA_COLOR && isFiniteNumberTuple(payload, 4)) {\n return [type, scaleColorTuple(payload, opacity)];\n }\n if (type === ValueType.GRADIENT_COLOR && Array.isArray(payload) && payload.every(isGradientStop)) {\n return [type, payload.map(stop => scaleGradientStop(stop, opacity))];\n }\n if (type === ValueType.COLORS && Array.isArray(payload) && payload.every(color => isFiniteNumberTuple(color, 4))) {\n return [type, payload.map(color => scaleColorTuple(color, opacity))];\n }\n\n return throwInvalidStartColor(layerId);\n}\n\nfunction scaleColorTuple(color: number[], opacity: number): number[] {\n return [color[0], color[1], color[2], roundNumber(color[3] * opacity, 4)];\n}\n\nfunction isGradientStop(value: unknown): value is number[] {\n return isFiniteNumberTuple(value, 5);\n}\n\nfunction scaleGradientStop(stop: number[], opacity: number): number[] {\n return [stop[0], stop[1], stop[2], stop[3], roundNumber(stop[4] * opacity, 4)];\n}\n\nfunction isFiniteNumberTuple(value: unknown, length: number): value is number[] {\n return Array.isArray(value) && value.length === length &&\n value.every(entry => typeof entry === 'number' && Number.isFinite(entry));\n}\n\nfunction throwInvalidStartColor(layerId: string): never {\n throw new TypeError(\n `[ge-ir] Particle layer '${layerId}' has an unsupported preserved options.startColor value; ` +\n 'static Layer opacity could not be applied safely.',\n );\n}\n","import type {\n IRColor, IRBezierPath, IRLayer,\n IRShape, IRShapeLayer, IRShapePaint, IRShapeStroke, IRTextLayer,\n} from '@vvfx/animation-ir';\nimport {\n IRPaintType, IRLineCap, IRLineJoin, IRShapePrimitiveType, IRTextureScaleMode,\n} from '@vvfx/animation-ir';\nimport { getIRResourceSourceUrl } from '@vvfx/animation-ir/adapter';\nimport {\n DataType, type DataPath, FillType, LineCap, LineJoin,\n RenderMode, type RGBAColorValue, ShapePrimitiveType, type SplitParameter, TextAlignment,\n TextSizeMode, TextWeight, TexturePaintScaleMode, ValueType,\n} from '@galacean/effects-specification';\nimport { toDataPath } from '../../common/data-path';\nimport { createId } from '../../common/id';\nimport { normalizeJsonValue } from '../../common/json-normalization';\nimport { roundNumber } from '../../common/math';\nimport { mapBlendModeToGE } from '../mapping';\nimport { getLayerLocalBounds } from '../converter/transform';\nimport type { ECSCollector, GeneratedComponentData, LayerGenerationContext } from '../types';\nimport type { EffectsLayerPreservedData, EffectsSpriteSplit } from '../../preserved-data';\nimport { buildParticleComponent } from './build-particle-component';\nimport { copyPreservedMaskToComponent, resolveComponentId } from './component-preservation';\n\nfunction registerTexture(collector: ECSCollector, imageUrl: string, cache: Map<string, DataPath>): 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: IRLayer,\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 case 'particle':\n return buildParticleComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n default:\n return undefined;\n }\n}\n\nfunction buildSpriteComponent(\n layer: IRLayer,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string {\n const componentId = resolveComponentId(layer, ctx);\n const blending = mapBlendModeToGE(layer.blendMode);\n const layerData = ctx.layerDataById[layer.id];\n const spriteSplits = layerData?.spriteSplits;\n const splits = spriteSplits?.map(copySpriteSplit);\n const textureSheetAnimation = layerData?.textureSheetAnimation;\n const normalizedColor = layer.type === 'solid' ? layer.content.color : layerData?.spriteStartColor;\n const startColor: RGBAColorValue =\n normalizedColor != null\n ? [\n roundNumber(normalizedColor[0], 4),\n roundNumber(normalizedColor[1], 4),\n roundNumber(normalizedColor[2], 4),\n roundNumber(normalizedColor[3], 4),\n ]\n : [1, 1, 1, 1];\n\n let textureDataPath: DataPath | undefined;\n\n const imageAsset = layer.type === 'image' ? ctx.imageAssetById.get(layer.content.assetId) : undefined;\n const textureUrl = imageAsset == null ? undefined : getIRResourceSourceUrl(imageAsset.source);\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 ...(splits != null && { splits }),\n ...(textureSheetAnimation != null && {\n textureSheetAnimation: normalizeJsonValue(textureSheetAnimation),\n }),\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 copyPreservedMaskToComponent(layer, component, ctx);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction copySpriteSplit(split: EffectsSpriteSplit): SplitParameter {\n return [split[0], split[1], split[2], split[3], split[4]];\n}\n\nfunction buildTextComponent(\n layer: IRTextLayer,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string {\n const textInfo = layer.content;\n const fontAsset = ctx.fontAssetById.get(textInfo.fontAssetId);\n\n if (fontAsset == null) {\n throw new TypeError(`[ge-ir] Text layer '${layer.id}' references a missing Font Asset: ${textInfo.fontAssetId}`);\n }\n\n const componentId = resolveComponentId(layer, ctx);\n const blending = mapBlendModeToGE(layer.blendMode);\n const textureSheetAnimation = ctx.layerDataById[layer.id]?.textureSheetAnimation;\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 { width: layerWidth, height: layerHeight } = getLayerLocalBounds(layer);\n const textWidth = layerWidth;\n const textHeight = Math.max(layerHeight, textInfo.lineHeight);\n const textSizeW = roundNumber(ctx.ratio * layerWidth, 4);\n const textSizeH = roundNumber(ctx.ratio * layerHeight, 4);\n const textSizeMode = ctx.layerDataById[layer.id]?.textSizeMode ?? 'fixed';\n\n const component: GeneratedComponentData = {\n id: componentId,\n dataType: DataType.TextComponent,\n item: toDataPath(itemId),\n options: {\n text: textInfo.text,\n fontSize: textInfo.fontSize,\n textColor,\n fontFamily: fontAsset.family,\n fontWeight: mapFontWeightToGE(fontAsset.weight),\n textAlign:\n textInfo.textAlign === 'center'\n ? TextAlignment.middle\n : textInfo.textAlign === 'right'\n ? TextAlignment.right\n : TextAlignment.left,\n fontStyle: fontAsset.style,\n letterSpace: textInfo.letterSpacing,\n lineHeight: textInfo.lineHeight,\n textWidth,\n textHeight,\n ...mapTextSizeModeToGE(textSizeMode),\n size: [textSizeW, textSizeH],\n },\n ...(textureSheetAnimation != null && {\n textureSheetAnimation: normalizeJsonValue(textureSheetAnimation),\n }),\n renderer: {\n renderMode: RenderMode.MESH,\n anchor: [anchorScaleX, anchorScaleY],\n ...(blending !== undefined && { blending }),\n },\n };\n\n copyPreservedMaskToComponent(layer, component, ctx);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction mapTextSizeModeToGE(sizeMode: NonNullable<EffectsLayerPreservedData['textSizeMode']>): Record<string, unknown> {\n switch (sizeMode) {\n case 'auto-width':\n return { autoWidth: true, autoHeight: false, autoResize: TextSizeMode.autoWidth };\n case 'auto-height':\n return { autoWidth: false, autoHeight: true, autoResize: TextSizeMode.autoHeight };\n case 'fixed':\n return { autoWidth: false, autoHeight: false, autoResize: TextSizeMode.fixed };\n }\n}\n\nfunction mapFontWeightToGE(weight: number): TextWeight | number {\n if (weight === 400) {\n return TextWeight.normal;\n }\n if (weight === 700) {\n return TextWeight.bold;\n }\n if (weight === 300) {\n return TextWeight.lighter;\n }\n\n return weight;\n}\n\nfunction buildShapeComponent(layer: IRShapeLayer, itemId: string, ctx: LayerGenerationContext): string | undefined {\n const shapeData = layer.content?.shapes[0];\n\n if (shapeData == null) {\n return undefined;\n }\n\n const componentId = resolveComponentId(layer, ctx);\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 copyPreservedMaskToComponent(layer, component, ctx);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nexport function buildShapeOptions(\n shapeData: IRShape,\n ratio: number,\n ctx?: LayerGenerationContext,\n renderStyle?: ShapeRenderStyle,\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'] = mapRectangleCornerRadiusToGERoundness(shapeData);\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 const fills = renderStyle?.fills ?? shapeData.fills;\n const strokes = renderStyle?.strokes ?? shapeData.strokes;\n\n if (fills.length > 0) {\n options['fills'] = 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 (strokes.length > 0) {\n options['strokes'] = strokes\n .map(stroke => mapShapePaint(stroke.paint, ratio, ctx))\n .filter((stroke): stroke is Record<string, unknown> => stroke != null);\n } else {\n options['strokes'] = [];\n }\n const strokeStyle = strokes[0];\n\n if (strokeStyle != null) {\n options['strokeWidth'] = roundNumber(strokeStyle.width * ratio, 4);\n options['strokeCap'] = mapLineCap(strokeStyle.cap);\n options['strokeJoin'] = mapLineJoin(strokeStyle.join);\n }\n\n return options;\n}\n\nexport interface ShapeRenderStyle {\n fills: IRShapePaint[];\n strokes: IRShapeStroke[];\n}\n\n/** Split only when GE's component-level stroke geometry would lose an authored style. */\nexport function buildShapeRenderStyles(shape: IRShape): ShapeRenderStyle[] {\n const styles: ShapeRenderStyle[] = [];\n\n for (const stroke of shape.strokes) {\n const previous = styles[styles.length - 1];\n\n if (previous != null && previous.strokes.length > 0 && hasSameStrokeGeometry(previous.strokes[0], stroke)) {\n previous.strokes.push(stroke);\n } else {\n styles.push({ fills: styles.length === 0 ? shape.fills : [], strokes: [stroke] });\n }\n }\n\n return styles.length > 0 ? styles : [{ fills: shape.fills, strokes: [] }];\n}\n\nfunction hasSameStrokeGeometry(left: IRShapeStroke, right: IRShapeStroke): boolean {\n return left.width === right.width && left.cap === right.cap && left.join === right.join;\n}\n\nfunction mapRectangleCornerRadiusToGERoundness(shape: Extract<IRShape, { primitiveType: 'rectangle' }>): number {\n const maxRadius = Math.min(shape.width, shape.height) / 2;\n\n if (maxRadius <= 0 || shape.cornerRadius == null) {\n return 0;\n }\n\n return roundNumber(Math.min(Math.max(shape.cornerRadius / maxRadius, 0), 1) * 100, 4);\n}\n\nconst SHAPE_PRIMITIVE_TYPE_TO_GE: Record<IRShape['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<IRShapePaint['type'], FillType> = {\n [IRPaintType.Solid]: FillType.Solid,\n [IRPaintType.LinearGradient]: FillType.GradientLinear,\n [IRPaintType.RadialGradient]: FillType.GradientRadial,\n [IRPaintType.AngularGradient]: FillType.GradientAngular,\n [IRPaintType.Texture]: FillType.Texture,\n};\n\nconst TEXTURE_SCALE_MODE_TO_GE: Record<IRTextureScaleMode, TexturePaintScaleMode> = {\n [IRTextureScaleMode.Fill]: TexturePaintScaleMode.Fill,\n [IRTextureScaleMode.Fit]: TexturePaintScaleMode.Fit,\n [IRTextureScaleMode.Crop]: TexturePaintScaleMode.Crop,\n [IRTextureScaleMode.Tile]: TexturePaintScaleMode.Tile,\n};\n\nconst LINE_CAP_TO_GE: Record<string, LineCap> = {\n [IRLineCap.Butt]: LineCap.Butt,\n [IRLineCap.Round]: LineCap.Round,\n [IRLineCap.Square]: LineCap.Square,\n};\n\nconst LINE_JOIN_TO_GE: Record<string, LineJoin> = {\n [IRLineJoin.Round]: LineJoin.Round,\n [IRLineJoin.Bevel]: LineJoin.Bevel,\n [IRLineJoin.Miter]: LineJoin.Miter,\n};\n\nfunction mapShapePrimitiveType(primitiveType: IRShape['primitiveType']): ShapePrimitiveType {\n return SHAPE_PRIMITIVE_TYPE_TO_GE[primitiveType];\n}\n\nfunction mapLineCap(lineCap: string): LineCap {\n return LINE_CAP_TO_GE[lineCap] ?? LineCap.Butt;\n}\n\nfunction mapLineJoin(lineJoin: string): LineJoin {\n return LINE_JOIN_TO_GE[lineJoin] ?? LineJoin.Miter;\n}\n\nfunction mapShapePaint(\n paint: IRShapePaint,\n ratio: number,\n ctx: LayerGenerationContext | undefined,\n): Record<string, unknown> | undefined {\n if (paint.type === IRPaintType.Solid) {\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n color: colorToGE(paint.color),\n };\n }\n\n if (\n paint.type === IRPaintType.LinearGradient ||\n paint.type === IRPaintType.RadialGradient ||\n paint.type === IRPaintType.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 === IRPaintType.Texture) {\n const imageAsset = ctx?.imageAssetById.get(paint.assetId);\n const textureUrl = imageAsset == null ? undefined : getIRResourceSourceUrl(imageAsset.source);\n const texture =\n textureUrl != null && ctx != null ? registerTexture(ctx.collector, textureUrl, ctx.textureCache) : undefined;\n\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n ...(texture != null && { texture }),\n scaleMode: TEXTURE_SCALE_MODE_TO_GE[paint.scaleMode ?? IRTextureScaleMode.Fill],\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(value: [number, number], ratio: number): { x: number; y: number } {\n return {\n x: roundNumber(value[0] * ratio, 4),\n y: roundNumber(-value[1] * ratio, 4),\n };\n}\n\nfunction mapCustomPaths(paths: IRBezierPath[], 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 { IRAnimatedProperty, IRLayer, IRLocalBounds } from '@vvfx/animation-ir';\nimport type { EffectsLayerPreservedData } from '../../preserved-data';\nimport { computeAnchorInfo, getLayerLocalBounds, getStaticAnchor } from '../converter/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 layer: IRLayer,\n preservedData?: EffectsLayerPreservedData,\n): LayerGenerationStrategy {\n const sourceHierarchy = preservedData?.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: IRLayer, bounds: IRLocalBounds): boolean {\n if (layer.type !== 'image' && layer.type !== 'solid' && layer.type !== 'text') {\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 || 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 =\n layer.type === 'text'\n ? hasMultipleKeyframes(rotation?.x) || hasMultipleKeyframes(rotation?.y) || hasMultipleKeyframes(rotation?.z)\n : rotation?.x?.type === 'keyframed' || rotation?.y?.type === 'keyframed' || rotation?.z?.type === 'keyframed';\n const hasScaleAnimation =\n layer.type === 'text' ? hasMultipleKeyframes(transform?.scale) : transform?.scale?.type === 'keyframed';\n const hasStaticTextRotation =\n layer.type === 'text' &&\n (hasNonZeroStaticValue(rotation?.x) ||\n hasNonZeroStaticValue(rotation?.y) ||\n hasNonZeroStaticValue(rotation?.z));\n\n return hasRotationAnimation || hasScaleAnimation || hasStaticTextRotation;\n}\n\nfunction hasMultipleKeyframes(property: IRAnimatedProperty | undefined): boolean {\n return property?.type === 'keyframed' && property.keyframes.length > 1;\n}\n\nfunction hasNonZeroStaticValue(property: IRAnimatedProperty<number> | undefined): boolean {\n if (property == null) {\n return false;\n }\n let value: number | undefined;\n\n if (property.type === 'keyframed') {\n value = property.keyframes?.length === 1 ? property.keyframes[0]?.value : undefined;\n } else {\n value = property.value;\n }\n\n return value != null && Math.abs(value) > 1e-6;\n}\n","import type { IRLayer, IRPrecompLayer, IRShapeLayer } from '@vvfx/animation-ir';\nimport {\n DataType,\n EndBehavior,\n ItemType,\n RenderLevel,\n RenderMode,\n type TransformData,\n} from '@galacean/effects-specification';\nimport { get2dTo3dRatio } from '../../common/coordinate-mapping';\nimport { toDataPath } from '../../common/data-path';\nimport { createId } from '../../common/id';\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 {\n buildComponent, buildShapeOptions, buildShapeRenderStyles,\n} from './component';\nimport { copyPreservedMaskToComponent } from './component-preservation';\nimport {\n mapBlendModeToGE, mapEndBehaviorToGE, mapLayerTypeToGETimelineItemType, mapLayerTypeToGEVFXItemType,\n} from '../mapping';\nimport {\n applyScalePositionAdjust,\n computeAnchorInfo,\n computeStaticPosition,\n getLayerLocalBounds,\n getStaticAnchor,\n} from '../converter/transform';\nimport { resolveLayerGenerationStrategy } from './layer-strategy';\nimport type {\n GeneratedComponentData,\n GeneratedVFXItemData,\n LayerGenerationContext,\n 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\nfunction resolveLayerEndBehavior(layer: IRLayer): EndBehavior {\n return layer.endBehavior == null ? EndBehavior.destroy : mapEndBehaviorToGE(layer.endBehavior);\n}\n\nfunction resolveTimelineEndBehavior(\n layer: IRLayer,\n ctx: LayerGenerationContext,\n itemEndBehavior: EndBehavior,\n): EndBehavior {\n return ctx.layerDataById[layer.id]?.timelineEndBehavior ?? itemEndBehavior;\n}\n\nfunction createItemId(layer: IRLayer, ctx: LayerGenerationContext, sourceIndex = -1): string {\n const sourceItemIds = ctx.layerDataById[layer.id]?.sourceItemIds ?? [];\n const resolvedIndex = sourceIndex < 0 ? sourceItemIds.length + sourceIndex : sourceIndex;\n const sourceItemId = sourceItemIds[resolvedIndex];\n\n if (sourceItemId != null && !ctx.collector.items.some(item => item.id === sourceItemId)) {\n return sourceItemId;\n }\n\n return createId();\n}\n\nfunction resolvePreservedItemAnchor(\n layer: IRLayer,\n itemId: string,\n ctx: LayerGenerationContext,\n): { x: number; y: number } | undefined {\n const anchor = ctx.layerDataById[layer.id]?.itemAnchorById?.[itemId];\n\n return anchor == null ? undefined : { x: anchor[0], y: anchor[1] };\n}\n\nfunction resolvePreservedItemEulerHint(\n layer: IRLayer,\n itemId: string,\n ctx: LayerGenerationContext,\n): [number, number, number] {\n return ctx.layerDataById[layer.id]?.itemEulerHintById?.[itemId] ?? [0, 0, 0];\n}\n\nexport function appendNullLayer(layer: IRLayer, ctx: LayerGenerationContext): void {\n const itemId = createItemId(layer, ctx);\n const layerId = layer.id;\n const itemAnchor = resolvePreservedItemAnchor(layer, itemId, ctx);\n\n ctx.layerToItemId[layerId] = itemId;\n ctx.layerToMaskParentItemId[layerId] = itemId;\n ctx.layerToMaskCoordinateOrigin[layerId] = getStaticAnchor(layer);\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,\n delay,\n layerDuration,\n EndBehavior.freeze,\n animation,\n ItemType.null,\n );\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\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: {\n ...buildGETransform(position, resolvePreservedItemEulerHint(layer, itemId, ctx), [1, 1, 1]),\n ...(itemAnchor != null && { anchor: itemAnchor }),\n },\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerId });\n}\n\nexport function appendPrecompLayer(layer: IRPrecompLayer, ctx: LayerGenerationContext): void {\n const isTransformParent = ctx.parentLayerIdSet.has(layer.id);\n const itemId = isTransformParent ? createId() : createItemId(layer, ctx);\n const layerId = layer.id;\n\n ctx.layerToItemId[layerId] = itemId;\n ctx.layerToMaskParentItemId[layerId] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const animation = buildTransformAnimation(layer, ctx);\n const referencedComposition = ctx.compositionById.get(layer.content.compositionId);\n const referencedRatio = referencedComposition == null\n ? ctx.ratio\n : get2dTo3dRatio(referencedComposition.width, referencedComposition.height);\n const fallbackBounds = referencedComposition == null\n ? undefined\n : { x: 0, y: 0, width: referencedComposition.width, height: referencedComposition.height };\n const bounds = getLayerLocalBounds(layer, fallbackBounds);\n const hasAnchor = layer.transform?.anchor != null;\n const anchor = getStaticAnchor(layer);\n const localAnchorX = hasAnchor ? referencedRatio * (anchor[0] - (bounds.x + bounds.width / 2)) : 0;\n const localAnchorY = hasAnchor ? -referencedRatio * (anchor[1] - (bounds.y + bounds.height / 2)) : 0;\n const position = computeStaticPosition(layer, ctx);\n // Referenced Composition children already use canvas-centered coordinates. Only\n // compensate an Anchor that is explicitly present in the source-neutral model;\n // an absent channel must not synthesize a corner Anchor for GE-origin Precomps.\n const precompPosition: [number, number, number] = [\n position[0] - localAnchorX,\n position[1] - localAnchorY,\n position[2],\n ];\n const intrinsicScale = ctx.ratio / referencedRatio;\n const sourceStartFrame = layer.time.sourceStartFrame ?? referencedComposition?.inPoint ?? 0;\n const referencedInPoint = referencedComposition?.inPoint ?? 0;\n const referencedFrameRate = referencedComposition?.frameRate ?? ctx.frameRate;\n const precompTimeOffset = (sourceStartFrame - referencedInPoint) / referencedFrameRate;\n const endBehavior = mapEndBehaviorToGE(\n layer.content.endBehavior ?? referencedComposition?.endBehavior ?? ctx.ir.endBehavior,\n );\n const layerData = ctx.layerDataById[layer.id];\n const outputCompositionId = ctx.precompOutputIdByLayerId.get(layer.id) ?? layer.content.compositionId;\n const content = buildPrecompContent(layerData?.precompContent, outputCompositionId);\n\n ctx.layerToMaskCoordinateOrigin[layerId] = [\n bounds.x + bounds.width / 2,\n bounds.y + bounds.height / 2,\n ];\n\n if (isTransformParent) {\n appendParentPrecompItems({\n layer,\n ctx,\n itemId,\n layerId,\n delay,\n layerDuration,\n animation,\n position,\n localAnchorX,\n localAnchorY,\n intrinsicScale,\n precompTimeOffset,\n endBehavior,\n content,\n });\n\n return;\n }\n\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n endBehavior,\n animation,\n ItemType.composition,\n precompTimeOffset,\n );\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: ItemType.composition,\n visible: layer.visible,\n endBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n content,\n components: [],\n transform: {\n ...buildGETransform(\n precompPosition,\n resolvePreservedItemEulerHint(layer, itemId, ctx),\n [intrinsicScale, intrinsicScale, 1],\n ),\n anchor: resolvePreservedItemAnchor(layer, itemId, ctx) ?? { x: localAnchorX, y: localAnchorY },\n },\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerId });\n}\n\ninterface ParentPrecompItemsOptions {\n layer: IRPrecompLayer;\n ctx: LayerGenerationContext;\n itemId: string;\n layerId: string;\n delay: number;\n layerDuration: number;\n animation: TransformAnimation;\n position: [number, number, number];\n localAnchorX: number;\n localAnchorY: number;\n intrinsicScale: number;\n precompTimeOffset: number;\n endBehavior: EndBehavior;\n content: Record<string, unknown>;\n}\n\n/**\n * Keep a Precomp's layer transform separate from its internal canvas scale.\n * External Lottie children inherit the former, while referenced Composition\n * content inherits both nodes. The wrapper stays at the authored Position;\n * both content and external children are offset from the authored Anchor.\n */\nfunction appendParentPrecompItems(options: ParentPrecompItemsOptions): void {\n const {\n layer, ctx, itemId, layerId, delay,\n layerDuration, animation, position, localAnchorX, localAnchorY,\n intrinsicScale, precompTimeOffset, endBehavior, content,\n } = options;\n const layerTrackId = buildTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n endBehavior,\n animation,\n ItemType.null,\n );\n const layerItem: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: ItemType.null,\n visible: layer.visible,\n endBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: {\n ...buildGETransform(position, resolvePreservedItemEulerHint(layer, itemId, ctx), [1, 1, 1]),\n anchor: resolvePreservedItemAnchor(layer, itemId, ctx) ?? { x: 0, y: 0 },\n },\n };\n\n const compositionItemId = createItemId(layer, ctx);\n\n ctx.layerToMaskParentItemId[layerId] = compositionItemId;\n const compositionTrackId = buildTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n endBehavior,\n {},\n ItemType.composition,\n precompTimeOffset,\n );\n const compositionItem: GeneratedVFXItemData = {\n id: compositionItemId,\n dataType: DataType.VFXItemData,\n name: `${layer.name ?? layer.id} content`,\n duration: layerDuration,\n type: ItemType.composition,\n visible: true,\n endBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n content,\n components: [],\n transform: {\n ...buildGETransform(\n [-intrinsicScale * localAnchorX, -intrinsicScale * localAnchorY, 0],\n resolvePreservedItemEulerHint(layer, compositionItemId, ctx),\n [intrinsicScale, intrinsicScale, 1],\n ),\n anchor: resolvePreservedItemAnchor(layer, compositionItemId, ctx) ?? { x: 0, y: 0 },\n },\n parentId: itemId,\n };\n\n ctx.collector.items.push(layerItem, compositionItem);\n ctx.itemBindings.push(\n { itemId, objectBindingTrackId: layerTrackId, layerId },\n { itemId: compositionItemId, objectBindingTrackId: compositionTrackId },\n );\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(layer: IRLayer, ctx: LayerGenerationContext): void {\n const layerId = layer.id;\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 = createItemId(layer, ctx, 0);\n const nullItemAnchor = resolvePreservedItemAnchor(layer, nullItemId, ctx);\n\n ctx.layerToItemId[layerId] = nullItemId;\n\n const nullAnimation = buildTransformAnimation(layer, ctx);\n const nullPosition = computeStaticPosition(layer, ctx);\n\n const nullTrackId = buildTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n EndBehavior.freeze,\n nullAnimation,\n ItemType.null,\n );\n\n const nullItem: GeneratedVFXItemData = {\n id: nullItemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\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: {\n ...buildGETransform(nullPosition, resolvePreservedItemEulerHint(layer, nullItemId, ctx), [1, 1, 1]),\n ...(nullItemAnchor != null && { anchor: nullItemAnchor }),\n },\n };\n\n ctx.collector.items.push(nullItem);\n ctx.itemBindings.push({ itemId: nullItemId, objectBindingTrackId: nullTrackId, layerId });\n\n const childItemId = createItemId(layer, ctx);\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 ctx.layerToMaskCoordinateOrigin[layerId] = anchor;\n\n const childColorAnimation = buildColorAnimation(layer, ctx, ctx.inheritedOpacity);\n const itemEndBehavior = resolveLayerEndBehavior(layer);\n const timelineEndBehavior = resolveTimelineEndBehavior(layer, ctx, itemEndBehavior);\n const childTrackId = buildTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n timelineEndBehavior,\n { colorOverLifetime: childColorAnimation },\n mapLayerTypeToGETimelineItemType(layer.type),\n );\n\n const componentId = buildComponent(layer, childItemId, 0.5, 0.5, ctx);\n\n if (componentId != null) {\n ctx.layerToComponentId[layerId] = 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' ? [scaledW, scaledH, 1] : [1, 1, 1];\n\n const childItem: GeneratedVFXItemData = {\n id: childItemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: mapLayerTypeToGEVFXItemType(layer.type),\n visible: layer.visible,\n endBehavior: itemEndBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(childPosition, resolvePreservedItemEulerHint(layer, childItemId, ctx), childScale),\n anchor: resolvePreservedItemAnchor(layer, childItemId, ctx) ?? { x: 0, y: 0 },\n ...(layer.type !== 'text' || ctx.layerDataById[layer.id]?.textSizeMode !== 'auto-width'\n ? { size: { x: scaledW, y: scaledH } }\n : {}),\n },\n parentId: nullItemId,\n };\n\n ctx.collector.items.push(childItem);\n ctx.itemBindings.push({ itemId: childItemId, objectBindingTrackId: childTrackId, layerId });\n}\n\nexport function appendParentLayer(layer: IRLayer, ctx: LayerGenerationContext): void {\n appendNullSpritePair(layer, ctx);\n}\n\nexport function appendVisualLayer(layer: IRLayer, ctx: LayerGenerationContext): void {\n const strategy = resolveLayerGenerationStrategy(layer, ctx.layerDataById[layer.id]);\n\n if (strategy.kind === 'split-null-sprite') {\n appendNullSpritePair(layer, ctx);\n\n return;\n }\n\n if (layer.type === 'shape' && (layer.content?.shapes.length ?? 0) > 0) {\n appendShapeLayerItems(layer, ctx);\n\n return;\n }\n\n const itemId = createItemId(layer, ctx);\n const layerId = layer.id;\n\n ctx.layerToItemId[layerId] = 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, ctx.inheritedOpacity);\n const fullAnimation: TransformAnimation = {\n ...animation,\n colorOverLifetime: colorAnimation,\n };\n\n const rawPosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n // Particle bounds describe the effect region; scaling the emitter must not translate it like a sprite rectangle.\n const position = layer.type === 'particle' ? rawPosition : applyScalePositionAdjust(rawPosition, layer, bounds, ctx.ratio);\n\n const timelineItemType = mapLayerTypeToGETimelineItemType(layer.type);\n const itemEndBehavior = resolveLayerEndBehavior(layer);\n const timelineEndBehavior = resolveTimelineEndBehavior(layer, ctx, itemEndBehavior);\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n timelineEndBehavior,\n fullAnimation,\n timelineItemType,\n );\n\n const componentId = buildComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n\n ctx.layerToMaskCoordinateOrigin[layerId] = [\n bounds.x + layerWidth / 2,\n bounds.y + layerHeight / 2,\n ];\n\n if (componentId != null) {\n ctx.layerToComponentId[layerId] = 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' ? [scaledW, scaledH, 1] : [1, 1, 1];\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: mapLayerTypeToGEVFXItemType(layer.type),\n visible: layer.visible,\n endBehavior: itemEndBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(position, resolvePreservedItemEulerHint(layer, itemId, ctx), itemScale),\n anchor: resolvePreservedItemAnchor(layer, itemId, ctx) ?? { x: 0, y: 0 },\n ...(layer.type !== 'text' || ctx.layerDataById[layer.id]?.textSizeMode !== 'auto-width'\n ? { size: { x: roundNumber(scaledW, 4), y: roundNumber(scaledH, 4) } }\n : {}),\n },\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerId });\n}\n\nfunction appendShapeLayerItems(layer: IRShapeLayer, ctx: LayerGenerationContext): void {\n const layerId = layer.id;\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, ctx.inheritedOpacity);\n const fullAnimation: TransformAnimation = { ...animation, colorOverLifetime: colorAnimation };\n const basePosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n const blending = mapBlendModeToGE(layer.blendMode);\n const itemEndBehavior = resolveLayerEndBehavior(layer);\n const timelineEndBehavior = resolveTimelineEndBehavior(layer, ctx, itemEndBehavior);\n let renderIndex = 0;\n\n ctx.layerToMaskCoordinateOrigin[layerId] = anchor;\n\n // Composition assembly reverses generated Items once. Generate the Shape-local\n // stack top-first so the final GE Item order remains IR bottom-first.\n for (let shapeIndex = layer.content.shapes.length - 1; shapeIndex >= 0; shapeIndex -= 1) {\n const shapeData = layer.content.shapes[shapeIndex];\n const renderStyles = buildShapeRenderStyles(shapeData);\n\n for (let styleIndex = renderStyles.length - 1; styleIndex >= 0; styleIndex -= 1) {\n const renderStyle = renderStyles[styleIndex];\n const currentRenderIndex = renderIndex;\n const shapeItemId = createItemId(layer, ctx, currentRenderIndex);\n\n renderIndex += 1;\n if (currentRenderIndex === 0) {\n ctx.layerToItemId[layerId] = 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 sourceComponentId = currentRenderIndex === 0\n ? ctx.layerDataById[layer.id]?.sourceComponentId\n : undefined;\n const shapeComponentId = sourceComponentId != null &&\n !ctx.collector.components.some(component => component.id === sourceComponentId)\n ? sourceComponentId\n : createId();\n\n const component: GeneratedComponentData = {\n id: shapeComponentId,\n dataType: DataType.ShapeComponent,\n item: toDataPath(shapeItemId),\n ...buildShapeOptions(shapeData, ctx.ratio, ctx, renderStyle),\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 (currentRenderIndex === 0) {\n copyPreservedMaskToComponent(layer, component, ctx);\n }\n\n ctx.collector.components.push(component);\n if (currentRenderIndex === 0) {\n ctx.layerToComponentId[layerId] = shapeComponentId;\n }\n\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n timelineEndBehavior,\n fullAnimation,\n ItemType.shape,\n );\n\n const shapeItem: GeneratedVFXItemData = {\n id: shapeItemId,\n dataType: DataType.VFXItemData,\n name: currentRenderIndex === 0\n ? (layer.name ?? layer.id)\n : `${layer.name ?? layer.id}_shape_${currentRenderIndex}`,\n duration: layerDuration,\n type: ItemType.shape,\n visible: layer.visible,\n endBehavior: itemEndBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: [toDataPath(shapeComponentId)],\n transform: {\n ...buildGETransform(\n shapePosition,\n resolvePreservedItemEulerHint(layer, shapeItemId, ctx),\n [1, 1, 1],\n ),\n anchor: resolvePreservedItemAnchor(layer, shapeItemId, ctx) ?? { x: 0, y: 0 },\n },\n };\n\n ctx.collector.items.push(shapeItem);\n ctx.itemBindings.push({ itemId: shapeItemId, objectBindingTrackId, layerId });\n }\n }\n}\n","import type { IRLayer } from '@vvfx/animation-ir';\nimport { getStaticAnchor } from '../converter/transform';\nimport type { GeneratedVFXItemData } from '../types';\n\nexport function applyParenting(\n layers: IRLayer[],\n items: GeneratedVFXItemData[],\n layerToItemId: Record<string, string>,\n ratio: number,\n width: number,\n height: number,\n): void {\n const layerById = new Map<string, IRLayer>();\n\n for (const layer of layers) {\n layerById.set(layer.id, 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.parentId == null) {\n continue;\n }\n\n const childItemId = layerToItemId[layer.id];\n const parentLayer = layerById.get(layer.parentId);\n\n if (parentLayer == null || childItemId == null) {\n continue;\n }\n\n const parentItemId = layerToItemId[parentLayer.id];\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","import { IRMaskMode, type IRMask } from '@vvfx/animation-ir';\nimport { DataType } from '@galacean/effects-specification';\nimport { isRecord } from '../../common/json-normalization';\nimport type { GeneratedCompositionData, GeneratedMiscData, GeneratedVFXItemData } from '../types';\n\ninterface Point2D {\n x: number;\n y: number;\n}\n\ninterface Affine2D {\n a: number;\n b: number;\n c: number;\n d: number;\n tx: number;\n ty: number;\n}\n\n/** A positive, closed mask boundary expressed in one Composition's local space. */\nexport interface RuntimeMaskGeometry {\n points: Point2D[];\n}\n\nexport type MaskContainment = 'equal' | 'existing-contains-source' | 'source-contains-existing' | 'none';\n\nconst NUMERIC_EPSILON = 1e-8;\n// Lottie paths commonly extend a fraction of a source pixel beyond a Precomp\n// viewport. Treat that export noise as the same boundary when proving containment.\nconst CONTAINMENT_TOLERANCE = 0.025;\nconst CURVE_FLATNESS = 0.002;\nconst MAX_CURVE_DEPTH = 10;\n\nexport function buildRuntimeMaskGeometry(\n mask: IRMask,\n ratio: number,\n coordinateOrigin: [number, number],\n): RuntimeMaskGeometry | undefined {\n const path = mask.path;\n\n const effectiveInverted = mask.mode === IRMaskMode.Subtract ? mask.inverted !== true : mask.inverted === true;\n\n if (effectiveInverted || !path.closed || path.points.length < 3) {\n return undefined;\n }\n\n const points = path.points.map(point => convertPoint(point, ratio, coordinateOrigin));\n const easingIns = path.inTangents.map(point => convertVector(point, ratio));\n const easingOuts = path.outTangents.map(point => convertVector(point, ratio));\n const flattened: Point2D[] = [points[0]];\n\n for (let index = 0; index < points.length; index++) {\n const nextIndex = (index + 1) % points.length;\n const start = points[index];\n const end = points[nextIndex];\n const control1 = addPoints(start, easingOuts[index] ?? { x: 0, y: 0 });\n const control2 = addPoints(end, easingIns[nextIndex] ?? { x: 0, y: 0 });\n\n flattenCubic(start, control1, control2, end, flattened, 0);\n }\n\n if (pointsEqual(flattened[0], flattened[flattened.length - 1])) {\n flattened.pop();\n }\n\n return flattened.length >= 3 ? { points: flattened } : undefined;\n}\n\nexport function mapMaskGeometryIntoPrecomp(\n geometry: RuntimeMaskGeometry | undefined,\n precompItem: GeneratedVFXItemData,\n items: GeneratedVFXItemData[],\n animatedItemIds: ReadonlySet<string>,\n): RuntimeMaskGeometry | undefined {\n if (geometry == null) {\n return undefined;\n }\n const itemById = new Map(items.map(item => [item.id, item] as const));\n const chain: GeneratedVFXItemData[] = [];\n const visited = new Set<string>();\n let current: GeneratedVFXItemData | undefined = precompItem;\n\n while (current != null && !visited.has(current.id)) {\n if (animatedItemIds.has(current.id)) {\n return undefined;\n }\n visited.add(current.id);\n chain.unshift(current);\n current = current.parentId == null ? undefined : itemById.get(current.parentId);\n }\n\n let world = identityMatrix();\n\n for (const item of chain) {\n world = multiplyMatrices(world, buildItemMatrix(item));\n }\n const inverse = invertMatrix(world);\n\n if (inverse == null) {\n return undefined;\n }\n\n return { points: geometry.points.map(point => transformPoint(inverse, point)) };\n}\n\nexport function collectAnimatedTransformItemIds(\n generatedCompositions: GeneratedCompositionData[],\n miscs: GeneratedMiscData[],\n): Set<string> {\n const miscById = new Map(miscs.map(misc => [misc.id, misc] as const));\n const animatedItemIds = new Set<string>();\n\n for (const generated of generatedCompositions) {\n for (const binding of generated.itemBindings) {\n if (binding.objectBindingTrackId == null) {\n continue;\n }\n const objectBindingTrack = miscById.get(binding.objectBindingTrackId);\n const childReferences = objectBindingTrack?.['children'];\n\n if (!Array.isArray(childReferences)) {\n continue;\n }\n for (const childReference of childReferences) {\n if (!isRecord(childReference) || typeof childReference['id'] !== 'string') {\n continue;\n }\n const track = miscById.get(childReference['id']);\n\n if (track?.dataType !== DataType.TransformTrack || !transformTrackHasAnimation(track, miscById)) {\n continue;\n }\n animatedItemIds.add(binding.itemId);\n\n break;\n }\n }\n }\n\n return animatedItemIds;\n}\n\nexport function compareMaskContainment(\n existing: RuntimeMaskGeometry | undefined,\n source: RuntimeMaskGeometry | undefined,\n): MaskContainment {\n if (existing == null || source == null) {\n return 'none';\n }\n const sourceInsideExisting = containsPolygon(existing.points, source.points);\n const existingInsideSource = containsPolygon(source.points, existing.points);\n\n if (sourceInsideExisting && existingInsideSource) {\n return 'equal';\n }\n if (sourceInsideExisting) {\n return 'existing-contains-source';\n }\n if (existingInsideSource) {\n return 'source-contains-existing';\n }\n\n return 'none';\n}\n\nfunction convertPoint(point: Point2D, ratio: number, coordinateOrigin: [number, number]): Point2D {\n return {\n x: (point.x - coordinateOrigin[0]) * ratio,\n y: -(point.y - coordinateOrigin[1]) * ratio,\n };\n}\n\nfunction convertVector(point: Point2D, ratio: number): Point2D {\n return { x: point.x * ratio, y: -point.y * ratio };\n}\n\nfunction addPoints(left: Point2D, right: Point2D): Point2D {\n return { x: left.x + right.x, y: left.y + right.y };\n}\n\nfunction flattenCubic(\n start: Point2D,\n control1: Point2D,\n control2: Point2D,\n end: Point2D,\n output: Point2D[],\n depth: number,\n): void {\n if (depth >= MAX_CURVE_DEPTH || isCubicFlat(start, control1, control2, end)) {\n output.push(end);\n\n return;\n }\n const startControl = midpoint(start, control1);\n const controls = midpoint(control1, control2);\n const controlEnd = midpoint(control2, end);\n const leftControl = midpoint(startControl, controls);\n const rightControl = midpoint(controls, controlEnd);\n const center = midpoint(leftControl, rightControl);\n\n flattenCubic(start, startControl, leftControl, center, output, depth + 1);\n flattenCubic(center, rightControl, controlEnd, end, output, depth + 1);\n}\n\nfunction isCubicFlat(start: Point2D, control1: Point2D, control2: Point2D, end: Point2D): boolean {\n return Math.max(\n distanceToLine(control1, start, end),\n distanceToLine(control2, start, end),\n ) <= CURVE_FLATNESS;\n}\n\nfunction distanceToLine(point: Point2D, start: Point2D, end: Point2D): number {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const length = Math.hypot(dx, dy);\n\n if (length <= NUMERIC_EPSILON) {\n return Math.hypot(point.x - start.x, point.y - start.y);\n }\n\n return Math.abs(dy * point.x - dx * point.y + end.x * start.y - end.y * start.x) / length;\n}\n\nfunction midpoint(left: Point2D, right: Point2D): Point2D {\n return { x: (left.x + right.x) / 2, y: (left.y + right.y) / 2 };\n}\n\nfunction pointsEqual(left: Point2D | undefined, right: Point2D | undefined): boolean {\n return left != null && right != null &&\n Math.abs(left.x - right.x) <= NUMERIC_EPSILON &&\n Math.abs(left.y - right.y) <= NUMERIC_EPSILON;\n}\n\nfunction containsPolygon(container: Point2D[], inner: Point2D[]): boolean {\n if (\n container.length < 3 ||\n inner.length < 3 ||\n !inner.every(point => pointInPolygonOrBoundary(point, container))\n ) {\n return false;\n }\n\n if (isConvexPolygon(container)) {\n return true;\n }\n\n for (let innerIndex = 0; innerIndex < inner.length; innerIndex++) {\n const innerStart = inner[innerIndex];\n const innerEnd = inner[(innerIndex + 1) % inner.length];\n\n for (let outerIndex = 0; outerIndex < container.length; outerIndex++) {\n const outerStart = container[outerIndex];\n const outerEnd = container[(outerIndex + 1) % container.length];\n\n if (segmentsProperlyIntersect(innerStart, innerEnd, outerStart, outerEnd)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isConvexPolygon(points: Point2D[]): boolean {\n let direction = 0;\n\n for (let index = 0; index < points.length; index++) {\n const cross = orientation(\n points[index],\n points[(index + 1) % points.length],\n points[(index + 2) % points.length],\n );\n\n if (Math.abs(cross) <= NUMERIC_EPSILON) {\n continue;\n }\n const currentDirection = Math.sign(cross);\n\n if (direction !== 0 && currentDirection !== direction) {\n return false;\n }\n direction = currentDirection;\n }\n\n return direction !== 0;\n}\n\nfunction pointInPolygonOrBoundary(point: Point2D, polygon: Point2D[]): boolean {\n let inside = false;\n\n for (let index = 0, previous = polygon.length - 1; index < polygon.length; previous = index++) {\n const start = polygon[previous];\n const end = polygon[index];\n\n if (pointOnSegment(point, start, end)) {\n return true;\n }\n const crossesRay = (start.y > point.y) !== (end.y > point.y) &&\n point.x < ((end.x - start.x) * (point.y - start.y)) / (end.y - start.y) + start.x;\n\n if (crossesRay) {\n inside = !inside;\n }\n }\n\n return inside;\n}\n\nfunction pointOnSegment(point: Point2D, start: Point2D, end: Point2D): boolean {\n if (distanceToLine(point, start, end) > CONTAINMENT_TOLERANCE) {\n return false;\n }\n\n return point.x >= Math.min(start.x, end.x) - CONTAINMENT_TOLERANCE &&\n point.x <= Math.max(start.x, end.x) + CONTAINMENT_TOLERANCE &&\n point.y >= Math.min(start.y, end.y) - CONTAINMENT_TOLERANCE &&\n point.y <= Math.max(start.y, end.y) + CONTAINMENT_TOLERANCE;\n}\n\nfunction segmentsProperlyIntersect(\n firstStart: Point2D,\n firstEnd: Point2D,\n secondStart: Point2D,\n secondEnd: Point2D,\n): boolean {\n const firstSideStart = orientation(firstStart, firstEnd, secondStart);\n const firstSideEnd = orientation(firstStart, firstEnd, secondEnd);\n const secondSideStart = orientation(secondStart, secondEnd, firstStart);\n const secondSideEnd = orientation(secondStart, secondEnd, firstEnd);\n\n return firstSideStart * firstSideEnd < -NUMERIC_EPSILON &&\n secondSideStart * secondSideEnd < -NUMERIC_EPSILON;\n}\n\nfunction orientation(start: Point2D, end: Point2D, point: Point2D): number {\n return (end.x - start.x) * (point.y - start.y) - (end.y - start.y) * (point.x - start.x);\n}\n\nfunction identityMatrix(): Affine2D {\n return { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 };\n}\n\nfunction buildItemMatrix(item: GeneratedVFXItemData): Affine2D {\n const transform = item.transform;\n const angle = (transform.eulerHint.z * Math.PI) / 180;\n const cosine = Math.cos(angle);\n const sine = Math.sin(angle);\n const anchorX = transform.anchor?.x ?? 0;\n const anchorY = transform.anchor?.y ?? 0;\n const a = cosine * transform.scale.x;\n const b = sine * transform.scale.x;\n const c = -sine * transform.scale.y;\n const d = cosine * transform.scale.y;\n\n return {\n a,\n b,\n c,\n d,\n tx: transform.position.x + anchorX - a * anchorX - c * anchorY,\n ty: transform.position.y + anchorY - b * anchorX - d * anchorY,\n };\n}\n\nfunction multiplyMatrices(parent: Affine2D, child: Affine2D): Affine2D {\n return {\n a: parent.a * child.a + parent.c * child.b,\n b: parent.b * child.a + parent.d * child.b,\n c: parent.a * child.c + parent.c * child.d,\n d: parent.b * child.c + parent.d * child.d,\n tx: parent.a * child.tx + parent.c * child.ty + parent.tx,\n ty: parent.b * child.tx + parent.d * child.ty + parent.ty,\n };\n}\n\nfunction invertMatrix(matrix: Affine2D): Affine2D | undefined {\n const determinant = matrix.a * matrix.d - matrix.b * matrix.c;\n\n if (Math.abs(determinant) <= NUMERIC_EPSILON) {\n return undefined;\n }\n const inverseDeterminant = 1 / determinant;\n const a = matrix.d * inverseDeterminant;\n const b = -matrix.b * inverseDeterminant;\n const c = -matrix.c * inverseDeterminant;\n const d = matrix.a * inverseDeterminant;\n\n return {\n a,\n b,\n c,\n d,\n tx: -(a * matrix.tx + c * matrix.ty),\n ty: -(b * matrix.tx + d * matrix.ty),\n };\n}\n\nfunction transformPoint(matrix: Affine2D, point: Point2D): Point2D {\n return {\n x: matrix.a * point.x + matrix.c * point.y + matrix.tx,\n y: matrix.b * point.x + matrix.d * point.y + matrix.ty,\n };\n}\n\nfunction transformTrackHasAnimation(\n track: GeneratedMiscData,\n miscById: ReadonlyMap<string, GeneratedMiscData>,\n): boolean {\n const clips = track['clips'];\n\n if (!Array.isArray(clips)) {\n return false;\n }\n\n return clips.some(clip => {\n if (!isRecord(clip)) {\n return false;\n }\n const assetReference = clip['asset'];\n\n if (!isRecord(assetReference) || typeof assetReference['id'] !== 'string') {\n return false;\n }\n const asset = miscById.get(assetReference['id']);\n\n return asset?.dataType === DataType.TransformPlayableAsset && [\n asset['positionOverLifetime'],\n asset['rotationOverLifetime'],\n asset['sizeOverLifetime'],\n ].some(hasAnimationPayload);\n });\n}\n\nfunction hasAnimationPayload(value: unknown): boolean {\n return Array.isArray(value) ? value.length > 0 : isRecord(value) && Object.keys(value).length > 0;\n}\n","/**\n * Generate GE mask items for masked IR layers and attach references to direct\n * or descendant renderer components.\n */\nimport { IRMaskMode, type IRComposition, type IRLayer, type IRMask } from '@vvfx/animation-ir';\nimport {\n DataType,\n EndBehavior,\n FillType,\n ItemType,\n LineCap,\n LineJoin,\n type MaskOptions,\n RenderLevel,\n RenderMode,\n ShapePrimitiveType,\n} from '@galacean/effects-specification';\nimport { toDataPath } from '../../common/data-path';\nimport { get2dTo3dRatio } from '../../common/coordinate-mapping';\nimport { createId } from '../../common/id';\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 { buildRuntimeMaskGeometry, type RuntimeMaskGeometry } from './mask-geometry';\nimport type { ECSCollector, GeneratedComponentData, GeneratedItemBinding, GeneratedVFXItemData } from '../types';\n\n/** Resolve stable IR Layer IDs to generated items and components. */\nexport interface MaskLayerLookup {\n getItemId(layerId: string): string | undefined;\n getMaskParentItemId(layerId: string): string | undefined;\n getMaskCoordinateOrigin(layerId: string): [number, number] | undefined;\n getComponentId(layerId: string): string | undefined;\n isParentLayer(layerId: string): boolean;\n}\n\ntype MaskOrigin = 'authored' | 'clip';\n\n/** Internal ownership metadata for each renderer's single Runtime mask slot. */\nexport interface RuntimeMaskSourceMeta {\n origin: MaskOrigin;\n area: number;\n geometry?: RuntimeMaskGeometry;\n specificity: number; // Higher values identify masks closer to the renderer.\n}\n\n/** Shared single-mask arbitration state across every generated Composition. */\nexport interface RuntimeMaskState {\n slots: Map<string, RuntimeMaskSourceMeta>;\n sources: Map<string, RuntimeMaskSourceMeta>;\n}\n\nexport function createRuntimeMaskState(): RuntimeMaskState {\n return { slots: new Map(), sources: new Map() };\n}\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 compositionById: ReadonlyMap<string, IRComposition> = new Map([[ir.id, ir]]),\n runtimeMaskState: RuntimeMaskState = createRuntimeMaskState(),\n): void {\n const layers = ir.layers;\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 // Resolve masks in the same bottom-to-top order as the IR painter stack so\n // mask-slot precedence remains deterministic when layers overlap.\n for (const layer of layers) {\n const resolved = resolveLayerMask(layer, compositionById);\n\n if (resolved == null) {\n continue;\n }\n\n const layerItemId = lookup.getItemId(layer.id);\n\n if (layerItemId == null) {\n continue;\n }\n\n const layerComponentId = lookup.getComponentId(layer.id);\n const maskParentItemId = lookup.getMaskParentItemId(layer.id) ?? layerItemId;\n const maskRatio = resolveMaskCoordinateRatio(layer, compositionById, ratio);\n const maskCoordinateOrigin = lookup.getMaskCoordinateOrigin(layer.id) ??\n resolveMaskCoordinateOrigin(layer, compositionById);\n\n buildMaskForLayer(\n layer,\n layerItemId,\n maskParentItemId,\n layerComponentId,\n collector,\n itemBindings,\n maskRatio,\n frameRate,\n ir.inPoint,\n lookup,\n runtimeMaskState,\n componentById,\n resolved.mask,\n resolved.origin,\n maskCoordinateOrigin,\n );\n }\n}\n\nfunction resolveMaskCoordinateOrigin(\n layer: IRLayer,\n compositionById: ReadonlyMap<string, IRComposition>,\n): [number, number] {\n if (layer.type !== 'precomp') {\n return getStaticAnchor(layer);\n }\n const referenced = compositionById.get(layer.content.compositionId);\n const bounds = layer.localBounds ?? (referenced == null\n ? undefined\n : { x: 0, y: 0, width: referenced.width, height: referenced.height });\n\n if (bounds == null) {\n return [0, 0];\n }\n\n // Precomp children and masks use the referenced canvas' centered coordinate\n // space. The Precomp item's Transform.anchor already maps that canvas pivot\n // to the authored Layer anchor, so a mask must not subtract it again.\n return [bounds.x + bounds.width / 2, bounds.y + bounds.height / 2];\n}\n\nfunction resolveMaskCoordinateRatio(\n layer: IRLayer,\n compositionById: ReadonlyMap<string, IRComposition>,\n fallbackRatio: number,\n): number {\n if (layer.type !== 'precomp') {\n return fallbackRatio;\n }\n const referenced = compositionById.get(layer.content.compositionId);\n\n if (referenced == null || referenced.width <= 0 || referenced.height <= 0) {\n return fallbackRatio;\n }\n\n // A Precomp mask is expressed in the referenced canvas' local pixels. The\n // mask item inherits the Precomp instance's intrinsic scale, so generating\n // it with the parent canvas ratio would apply that scale twice.\n return get2dTo3dRatio(referenced.width, referenced.height);\n}\n\nfunction resolveLayerMask(\n layer: IRLayer,\n compositionById: ReadonlyMap<string, IRComposition>,\n): { mask: IRMask; origin: MaskOrigin } | undefined {\n if (layer.mask != null) {\n return { mask: layer.mask, origin: 'authored' };\n }\n if (layer.type !== 'precomp' || !layer.content.clipToBounds) {\n return undefined;\n }\n const referenced = compositionById.get(layer.content.compositionId);\n const width = layer.localBounds?.width ?? referenced?.width;\n const height = layer.localBounds?.height ?? referenced?.height;\n\n if (width == null || height == null || width <= 0 || height <= 0) {\n return undefined;\n }\n\n return { mask: buildClipMask(width, height), origin: 'clip' };\n}\n\nfunction buildClipMask(width: number, height: number): IRMask {\n return {\n mode: IRMaskMode.Add,\n path: {\n points: [{ x: 0, y: 0 }, { x: width, y: 0 }, { x: width, y: height }, { x: 0, y: height }],\n inTangents: Array.from({ length: 4 }, () => ({ x: 0, y: 0 })),\n outTangents: Array.from({ length: 4 }, () => ({ x: 0, y: 0 })),\n closed: true,\n },\n };\n}\n\nfunction buildMaskForLayer(\n layer: IRLayer,\n layerItemId: string,\n maskParentItemId: string,\n layerComponentId: string | undefined,\n collector: ECSCollector,\n itemBindings: GeneratedItemBinding[],\n ratio: number,\n frameRate: number,\n compositionInPoint: number,\n lookup: MaskLayerLookup,\n runtimeMaskState: RuntimeMaskState,\n componentById: Map<string, GeneratedComponentData>,\n mask: IRMask,\n origin: MaskOrigin,\n coordinateOrigin: [number, number],\n): void {\n const maskItemId = createId();\n const maskComponentId = createId();\n const maskBounds = getMaskBounds(mask);\n\n const maskPosX = roundNumber((maskBounds.cx - coordinateOrigin[0]) * ratio, 4);\n const maskPosY = roundNumber(-(maskBounds.cy - coordinateOrigin[1]) * 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.id) || layer.type === 'null' || layer.type === 'precomp';\n\n const maskArea = maskBounds.width * maskBounds.height;\n const descendantTargets = layerIsParent && layer.type !== 'precomp'\n ? collectClaimableRendererDescendants(\n collector.items,\n componentById,\n layerItemId,\n origin,\n maskArea,\n runtimeMaskState.slots,\n )\n : undefined;\n\n if (descendantTargets?.length === 0 && layer.type !== 'precomp') {\n return;\n }\n\n const maskItem: GeneratedVFXItemData = {\n id: maskItemId,\n dataType: DataType.VFXItemData,\n name: `${layer.name ?? layer.id}_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: maskParentItemId,\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 const sourceMeta: RuntimeMaskSourceMeta = {\n origin,\n area: maskArea,\n geometry: buildRuntimeMaskGeometry(mask, ratio, coordinateOrigin),\n specificity: 0,\n };\n\n runtimeMaskState.sources.set(maskComponentId, sourceMeta);\n\n if (descendantTargets != null) {\n applyMaskReferenceToTargets(\n descendantTargets,\n maskComponentId,\n mask,\n runtimeMaskState.slots,\n sourceMeta,\n );\n } else if (layerComponentId != null) {\n const targetComponent = componentById.get(layerComponentId);\n\n if (targetComponent != null) {\n targetComponent['mask'] = buildMaskRef(maskComponentId, mask);\n runtimeMaskState.slots.set(layerComponentId, sourceMeta);\n }\n }\n\n if (layer.type === 'precomp') {\n // GE Runtime stops its scene-order DFS at Composition items. Keep the mask\n // instantiated as a child, but do not bind it to the parent Timeline where\n // it would displace every following root-layer binding.\n itemBindings.push({ itemId: maskItemId, layerId: layer.id });\n } else {\n const maskTrackId = buildTimelineTracks(collector, delay, maskDuration, EndBehavior.destroy, {}, ItemType.shape);\n\n itemBindings.push({ itemId: maskItemId, objectBindingTrackId: maskTrackId, layerId: layer.id });\n }\n}\n\nfunction buildMaskRef(maskComponentId: string, mask: IRMask): MaskOptions {\n return {\n isMask: false,\n reference: toDataPath(maskComponentId),\n inverted: resolveGEMaskInverted(mask),\n };\n}\n\n/** Fold the source-neutral Mask operation and path polarity into GE's single inversion flag. */\nexport function resolveGEMaskInverted(mask: Pick<IRMask, 'mode' | 'inverted'>): boolean {\n return mask.mode === IRMaskMode.Subtract ? mask.inverted !== true : mask.inverted === true;\n}\n\nfunction applyMaskReferenceToTargets(\n targets: MaskTarget[],\n maskComponentId: string,\n mask: IRMask,\n maskSlotMeta: Map<string, RuntimeMaskSourceMeta>,\n sourceMeta: RuntimeMaskSourceMeta,\n): void {\n for (const target of targets) {\n target.component['mask'] = buildMaskRef(maskComponentId, mask);\n maskSlotMeta.set(target.componentId, sourceMeta);\n }\n}\n\n/**\n * Claim an empty slot without replacing an authored mask. A Precomp clip\n * yields to an authored mask or a smaller nested clip.\n */\nfunction shouldClaimMaskSlot(\n hasExistingMask: boolean,\n existing: RuntimeMaskSourceMeta | undefined,\n origin: MaskOrigin,\n maskArea: number,\n): boolean {\n if (!hasExistingMask) {\n return true;\n }\n\n if (existing?.origin !== 'clip') {\n return false;\n }\n\n if (origin === 'authored') {\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 currentOrigin: MaskOrigin,\n currentMaskArea: number,\n maskSlotMeta: Map<string, RuntimeMaskSourceMeta>,\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,\n maskSlotMeta.get(componentReference.id),\n currentOrigin,\n 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(points: Array<{ x: number; y: number }>): {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n} {\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n 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 getMaskBounds(mask: IRMask): {\n cx: number;\n cy: number;\n width: number;\n height: number;\n} {\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: IRMask): boolean {\n const path = mask.path;\n\n if (\n path.points.length !== 4 ||\n !path.inTangents.every(isZeroTangent) ||\n !path.outTangents.every(isZeroTangent)\n ) {\n return false;\n }\n\n return path.points.every((point, index) => {\n const next = path.points[(index + 1) % path.points.length];\n const deltaX = Math.abs(next.x - point.x);\n const deltaY = Math.abs(next.y - point.y);\n\n return (deltaX < 0.01 && deltaY >= 0.01) || (deltaY < 0.01 && deltaX >= 0.01);\n });\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: IRMask,\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 { IRMatteMode, type IRComposition } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { isRecord } from '../../common/json-normalization';\nimport type { ECSCollector, GeneratedComponentData } from '../types';\n\n/** Lower Layer-reference mattes to GE's component mask source/target relationship. */\nexport function applyLayerMattes(\n ir: IRComposition,\n collector: ECSCollector,\n layerToComponentId: Readonly<Record<string, string>>,\n diagnostics: ConversionDiagnostic[],\n): void {\n const componentById = new Map(collector.components.map(component => [component.id, component] as const));\n\n for (const layer of ir.layers) {\n const matte = layer.matte;\n\n if (matte == null) {\n continue;\n }\n if (matte.mode === IRMatteMode.Luminance) {\n diagnostics.push(createMatteDiagnostic(\n layer.id,\n 'GE_MATTE_MODE_UNSUPPORTED',\n 'luminance-matte',\n 'GE does not expose a luminance matte mode; the Layer matte was not generated.',\n ));\n continue;\n }\n const targetComponent = resolveLayerComponent(layer.id, layerToComponentId, componentById);\n const sourceComponent = resolveLayerComponent(matte.sourceLayerId, layerToComponentId, componentById);\n\n if (targetComponent == null || sourceComponent == null) {\n diagnostics.push(createMatteDiagnostic(\n layer.id,\n 'GE_MATTE_COMPONENT_UNSUPPORTED',\n 'missing-render-component',\n 'The Layer matte source and target must both lower to one GE render component.',\n ));\n continue;\n }\n if (targetComponent['mask'] != null) {\n diagnostics.push(createMatteDiagnostic(\n layer.id,\n 'GE_MASK_MATTE_CONFLICT',\n 'single-mask-slot-conflict',\n 'GE exposes one mask slot per component; the authored path Mask was kept and the Layer matte was skipped.',\n ));\n continue;\n }\n const alphaMaskEnabled = matte.mode === IRMatteMode.Alpha;\n const sourceMask = sourceComponent['mask'];\n\n if (!canClaimMatteSource(sourceMask, alphaMaskEnabled)) {\n diagnostics.push(createMatteDiagnostic(\n layer.id,\n 'GE_MATTE_SOURCE_CONFLICT',\n 'source-mask-slot-conflict',\n 'The matte source component already owns an incompatible GE mask role.',\n ));\n continue;\n }\n\n sourceComponent['mask'] = { isMask: true, alphaMaskEnabled };\n targetComponent['mask'] = {\n isMask: false,\n reference: { id: sourceComponent.id },\n inverted: matte.inverted === true,\n };\n }\n}\n\nfunction resolveLayerComponent(\n layerId: string,\n layerToComponentId: Readonly<Record<string, string>>,\n componentById: ReadonlyMap<string, GeneratedComponentData>,\n): GeneratedComponentData | undefined {\n const componentId = layerToComponentId[layerId];\n\n return componentId == null ? undefined : componentById.get(componentId);\n}\n\nfunction canClaimMatteSource(value: unknown, alphaMaskEnabled: boolean): boolean {\n if (value == null) {\n return true;\n }\n\n return isRecord(value) &&\n value['isMask'] === true &&\n value['alphaMaskEnabled'] === alphaMaskEnabled;\n}\n\nfunction createMatteDiagnostic(\n sourceId: string,\n code: string,\n feature: string,\n message: string,\n): ConversionDiagnostic {\n return {\n code,\n severity: 'warning',\n action: 'unsupported',\n path: `$.layers[id=${JSON.stringify(sourceId)}].matte`,\n sourceId,\n feature,\n message,\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(collector: ECSCollector, GEComponentIdToNewId: Record<string, string>): void {\n const currentComponentIds = new Set(collector.components.map(component => component.id));\n\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 if (currentComponentIds.has(oldId)) {\n // Core IR masks are generated before this compatibility pass and already\n // reference a live component in the current collector.\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 /** Generated item IDs corresponding to IR Layers with a Transform Parent. */\n transformParentChildItemIds?: Set<string>;\n roundNumber: (value: number, precision: number) => number;\n}\n\n/**\n * Keep IR Transform Parents active across every descendant's interval, then\n * normalize internal generated child items in parent-first order. Parent\n * activation changes do not alter Transform keyframe time domains.\n */\nexport function normalizeChildVisibilityByParentDelays({\n items,\n miscs,\n itemBindings,\n transformParentChildItemIds = 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 extendTransformParentActivations(\n items,\n itemById,\n bindingByItemId,\n miscById,\n transformParentChildItemIds,\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 && 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\ninterface ActivationInterval {\n start: number;\n end: number;\n}\n\nfunction extendTransformParentActivations(\n items: VisibilityItem[],\n itemById: Map<string, VisibilityItem>,\n bindingByItemId: Map<string, GeneratedItemBindingRef>,\n miscById: Map<string, GeneratedMiscData>,\n transformParentChildItemIds: Set<string>,\n roundNumber: (value: number, precision: number) => number,\n): void {\n if (transformParentChildItemIds.size === 0) {\n return;\n }\n\n const activationIntervalByItemId = new Map<string, ActivationInterval>();\n\n for (const item of items) {\n const start = item.delay ?? 0;\n\n activationIntervalByItemId.set(item.id, { start, end: start + item.duration });\n }\n\n for (const childItemId of transformParentChildItemIds) {\n const childInterval = activationIntervalByItemId.get(childItemId);\n\n if (childInterval == null) {\n continue;\n }\n\n const visited = new Set<string>();\n let currentChildItemId: string | undefined = childItemId;\n\n while (currentChildItemId != null && transformParentChildItemIds.has(currentChildItemId)) {\n if (visited.has(currentChildItemId)) {\n break;\n }\n visited.add(currentChildItemId);\n\n const currentChildItem = itemById.get(currentChildItemId);\n const parentItemId = currentChildItem?.parentId;\n\n if (parentItemId == null || parentItemId === '') {\n break;\n }\n\n const parentInterval = activationIntervalByItemId.get(parentItemId);\n\n if (parentInterval == null) {\n break;\n }\n\n parentInterval.start = Math.min(parentInterval.start, childInterval.start);\n parentInterval.end = Math.max(parentInterval.end, childInterval.end);\n currentChildItemId = parentItemId;\n }\n }\n\n for (const [itemId, interval] of activationIntervalByItemId) {\n const item = itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n\n const originalStart = item.delay ?? 0;\n const originalEnd = originalStart + item.duration;\n\n if (interval.start === originalStart && interval.end === originalEnd) {\n continue;\n }\n\n const newDelay = roundNumber(interval.start, 4);\n const newDuration = roundNumber(interval.end - interval.start, 4);\n\n item.delay = newDelay;\n item.duration = newDuration;\n syncActivationClips(itemId, newDelay, newDuration, bindingByItemId, miscById);\n }\n}\n\nfunction syncActivationClips(\n itemId: string,\n delay: number,\n duration: number,\n bindingByItemId: Map<string, GeneratedItemBindingRef>,\n miscById: Map<string, GeneratedMiscData>,\n): void {\n const binding = bindingByItemId.get(itemId);\n\n if (binding?.objectBindingTrackId == 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?.['dataType'] === DataType.ActivationTrack && Array.isArray(childTrack['clips'])) {\n for (const clip of childTrack['clips'] as TimelineClipData[]) {\n clip.start = delay;\n clip.duration = duration;\n }\n }\n }\n}\n\n/** Sort items parent-first while preserving order among unrelated items. */\nfunction topologicalSort(items: VisibilityItem[], itemById: Map<string, VisibilityItem>): 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?.objectBindingTrackId == 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 (\n 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 type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { roundNumber } from '../../common/math';\nimport type { ECSCollector, GeneratedItemBinding } from '../types';\nimport type { EffectsLayerPreservedData } from '../../preserved-data';\nimport { applyParenting } from './parenting';\nimport { applyMasks, type MaskLayerLookup, type RuntimeMaskState } from './mask';\nimport { applyLayerMattes } from './matte';\nimport { applyGEMaskRemap } from './ge-mask-remap';\nimport { normalizeChildVisibilityByParentDelays } from './visibility';\n\n/** Complete generation state consumed by the ordered post-processing pipeline. */\ninterface PostProcessState {\n collector: ECSCollector;\n itemBindings: GeneratedItemBinding[];\n compositionById: ReadonlyMap<string, IRComposition>;\n maskLookup: MaskLayerLookup; // Per-layer lookups used during mask generation.\n runtimeMaskState: RuntimeMaskState;\n layerToItemId: Record<string, string>;\n layerToComponentId: Record<string, string>;\n ratio: number;\n width: number;\n height: number;\n frameRate: number;\n geComponentIdToNewId: Record<string, string>; // Remaps preserved mask references.\n layerDataById: Readonly<Record<string, EffectsLayerPreservedData>>;\n diagnostics: ConversionDiagnostic[];\n}\n\n/** Run ordered post-generation passes before scene assembly. */\nexport function applyPostProcess(ir: IRComposition, state: PostProcessState): void {\n const { collector, itemBindings, layerToItemId, ratio, width, height } = state;\n\n applyParenting(ir.layers, collector.items, layerToItemId, ratio, width, height);\n applyMasks(\n ir,\n collector,\n itemBindings,\n ratio,\n width,\n height,\n state.frameRate,\n state.maskLookup,\n state.compositionById,\n state.runtimeMaskState,\n );\n applyLayerMattes(ir, collector, state.layerToComponentId, state.diagnostics);\n // Generated IR masks already use regenerated IDs; only preserved Effects masks need remapping.\n if (Object.values(state.layerDataById).some(layerData => layerData.mask != null)) {\n applyGEMaskRemap(collector, state.geComponentIdToNewId);\n }\n const transformParentChildItemIds = new Set<string>();\n\n for (const layer of ir.layers) {\n if (layer.parentId != null) {\n const itemId = layerToItemId[layer.id];\n\n if (itemId != null) {\n transformParentChildItemIds.add(itemId);\n }\n }\n }\n\n normalizeChildVisibilityByParentDelays({\n items: collector.items,\n miscs: collector.miscs,\n itemBindings,\n transformParentChildItemIds,\n roundNumber,\n });\n}\n","import { ItemType } from '@galacean/effects-specification';\nimport { isRecord } from '../../common/json-normalization';\nimport type { ECSCollector, GeneratedCompositionData, GeneratedVFXItemData } from '../types';\nimport { resolveGEMaskInverted, type RuntimeMaskSourceMeta, type RuntimeMaskState } from './mask';\nimport {\n collectAnimatedTransformItemIds, compareMaskContainment, mapMaskGeometryIntoPrecomp,\n} from './mask-geometry';\n\n/** Propagate Precomp mask sources through generated Composition boundaries. */\nexport function applyCrossCompositionMasks(\n generatedCompositions: GeneratedCompositionData[],\n collector: ECSCollector,\n runtimeMaskState: RuntimeMaskState,\n): void {\n const generatedById = new Map(generatedCompositions.map(generated => [generated.id, generated] as const));\n const componentById = new Map(collector.components.map(component => [component.id, component] as const));\n const animatedItemIds = collectAnimatedTransformItemIds(generatedCompositions, collector.miscs);\n\n for (const generated of generatedCompositions) {\n const itemById = new Map(generated.items.map(item => [item.id, item] as const));\n\n for (const layer of generated.ir.layers) {\n if (layer.type !== 'precomp' || (layer.mask == null && !layer.content.clipToBounds)) {\n continue;\n }\n const outputCompositionId = generated.precompOutputIdByLayerId.get(layer.id) ?? layer.content.compositionId;\n const referenced = generatedById.get(outputCompositionId);\n const maskComponentId = findLayerMaskComponentId(generated.itemBindings, itemById, layer.id);\n const sourceMeta = maskComponentId == null ? undefined : runtimeMaskState.sources.get(maskComponentId);\n\n if (referenced == null || maskComponentId == null || sourceMeta == null) {\n continue;\n }\n applyAncestorMaskThroughNestedCompositions({\n generated: referenced,\n maskComponentId,\n inverted: layer.mask == null ? false : resolveGEMaskInverted(layer.mask),\n generatedById,\n componentById,\n runtimeMaskState,\n animatedItemIds,\n sourceMeta: { ...sourceMeta, specificity: sourceMeta.specificity - 1 },\n ancestorIds: new Set([generated.id, referenced.id]),\n });\n }\n }\n}\n\ninterface AncestorMaskContext {\n generated: GeneratedCompositionData;\n maskComponentId: string;\n inverted: boolean;\n generatedById: ReadonlyMap<string, GeneratedCompositionData>;\n componentById: ReadonlyMap<string, ECSCollector['components'][number]>;\n runtimeMaskState: RuntimeMaskState;\n animatedItemIds: ReadonlySet<string>;\n sourceMeta: RuntimeMaskSourceMeta;\n ancestorIds: ReadonlySet<string>;\n}\n\nfunction applyAncestorMaskThroughNestedCompositions(context: AncestorMaskContext): void {\n const {\n generated, maskComponentId, inverted, generatedById, componentById,\n runtimeMaskState, animatedItemIds, sourceMeta, ancestorIds,\n } = context;\n\n applyMaskToCompositionRenderers(generated, maskComponentId, inverted, componentById, runtimeMaskState, sourceMeta);\n\n for (const precompItem of generated.items) {\n const outputCompositionId = readPrecompReferenceId(precompItem);\n\n if (outputCompositionId == null || ancestorIds.has(outputCompositionId)) {\n continue;\n }\n const nested = generatedById.get(outputCompositionId);\n\n if (nested == null) {\n continue;\n }\n applyAncestorMaskThroughNestedCompositions({\n ...context,\n generated: nested,\n sourceMeta: {\n ...sourceMeta,\n geometry: mapMaskGeometryIntoPrecomp(sourceMeta.geometry, precompItem, generated.items, animatedItemIds),\n specificity: sourceMeta.specificity - 1,\n },\n ancestorIds: new Set([...ancestorIds, outputCompositionId]),\n });\n }\n}\n\nfunction findLayerMaskComponentId(\n bindings: GeneratedCompositionData['itemBindings'],\n itemById: ReadonlyMap<string, GeneratedVFXItemData>,\n layerId: string,\n): string | undefined {\n for (const binding of bindings) {\n if (binding.layerId !== layerId) {\n continue;\n }\n const item = itemById.get(binding.itemId);\n\n if (item?.type === ItemType.shape) {\n return item.components?.[0]?.id;\n }\n }\n\n return undefined;\n}\n\nfunction readPrecompReferenceId(item: GeneratedVFXItemData): string | undefined {\n if (item.type !== ItemType.composition || !isRecord(item.content)) {\n return undefined;\n }\n const options = item.content['options'];\n\n return isRecord(options) && typeof options['refId'] === 'string' ? options['refId'] : undefined;\n}\n\n/** Keep a source attached to its hierarchy so Runtime applies every animated ancestor transform. */\nfunction applyMaskToCompositionRenderers(\n generated: GeneratedCompositionData,\n maskComponentId: string,\n inverted: boolean,\n componentById: ReadonlyMap<string, ECSCollector['components'][number]>,\n runtimeMaskState: RuntimeMaskState,\n sourceMeta: RuntimeMaskSourceMeta,\n): void {\n for (const item of generated.items) {\n for (const componentRef of item.components ?? []) {\n const component = componentById.get(componentRef.id);\n\n if (component?.['renderer'] != null) {\n setRendererMaskReference(component, maskComponentId, inverted, sourceMeta, runtimeMaskState);\n }\n }\n }\n}\n\nfunction setRendererMaskReference(\n component: ECSCollector['components'][number],\n maskComponentId: string,\n inverted: boolean,\n sourceMeta: RuntimeMaskSourceMeta,\n runtimeMaskState: RuntimeMaskState,\n): void {\n const existing = component['mask'];\n\n if (isRecord(existing) && existing['isMask'] === true) {\n return;\n }\n const existingMeta = runtimeMaskState.slots.get(component.id);\n\n if (existing != null && !shouldReplaceMask(existingMeta, sourceMeta)) {\n return;\n }\n component['mask'] = {\n isMask: false,\n reference: { id: maskComponentId },\n inverted,\n };\n runtimeMaskState.slots.set(component.id, sourceMeta);\n}\n\nfunction shouldReplaceMask(\n existing: RuntimeMaskSourceMeta | undefined,\n source: RuntimeMaskSourceMeta,\n): boolean {\n if (existing == null) {\n return false;\n }\n const containment = compareMaskContainment(existing.geometry, source.geometry);\n\n if (containment === 'existing-contains-source') {\n return true;\n }\n if (containment === 'source-contains-existing') {\n return false;\n }\n if (existing.origin === 'clip' && source.origin === 'clip') {\n return source.area < existing.area || source.area === existing.area && source.specificity > existing.specificity;\n }\n\n return source.specificity > existing.specificity;\n}\n","import type { IRColor, IRScene } from '@vvfx/animation-ir';\nimport { EndBehavior } from '@galacean/effects-specification';\n\nexport const GE_PRESERVED_DATA_VERSION = '1.0.0';\n\nexport type EffectsSpriteSplit = [sourceX: number, sourceY: number, width: number, height: number, flip: 0 | 1];\n\nexport interface EffectsTextureSheetAnimation {\n row: number;\n col: number;\n total?: number;\n animate: boolean;\n loop?: boolean;\n}\n\nexport type EffectsTextSizeMode = 'auto-width' | 'auto-height' | 'fixed';\n\nexport type GEParticleAuthoringBounds = [x: number, y: number, width: number, height: number];\ninterface GEParticleEffectGroupSourceData {\n id: string;\n irCompositionId: string;\n sourcePreviewSize: [width: number, height: number];\n authoringBounds: GEParticleAuthoringBounds;\n}\n\nexport interface GEParticleSourceLayerData {\n effectGroupId: string;\n irCompositionId: string;\n irLayerId: string;\n sourceOrder: number;\n}\n\nexport interface GEParticleSourceData {\n particleEffectGroups: GEParticleEffectGroupSourceData[];\n layers: GEParticleSourceLayerData[];\n}\n\n/** GE Layer payloads that normalized Animation IR cannot represent losslessly. */\nexport interface EffectsLayerPreservedData {\n positionOverLifetime?: Record<string, unknown>;\n rotationOverLifetime?: Record<string, unknown>;\n sizeOverLifetime?: Record<string, unknown>;\n colorOverLifetime?: Record<string, unknown>;\n spriteStartColor?: IRColor;\n spriteSplits?: EffectsSpriteSplit[];\n textureSheetAnimation?: EffectsTextureSheetAnimation;\n textSizeMode?: EffectsTextSizeMode;\n sourceItemIds?: string[];\n itemAnchorById?: Record<string, [x: number, y: number]>;\n itemEulerHintById?: Record<string, [x: number, y: number, z: number]>;\n sourceComponentId?: string;\n mask?: Record<string, unknown>;\n precompContent?: Record<string, unknown>;\n /** GE ParticleSystem payload excluding identity and generic mask fields; normalized IR fields override it on export. */\n particleContent?: Record<string, unknown>;\n /** Activation clip behavior retained independently from the normalized GE Item behavior. */\n timelineEndBehavior?: EndBehavior;\n sourceHierarchy?: 'single-item' | 'null-sprite-pair';\n}\n\nexport interface GECompositionSourceBinding {\n sourceCompositionId: string; // Original GE Composition ID.\n sourceItemOrder: string[]; // CompositionComponent Item IDs in source painter order.\n layerDataById: Record<string, EffectsLayerPreservedData>; // IR Layer ID -> GE-owned Layer data.\n}\n\n/** GE-owned data retained outside the source-neutral Animation IR contract. */\nexport interface GEToIRPreservedData {\n version: typeof GE_PRESERVED_DATA_VERSION;\n sourceScene?: Record<string, unknown>; // One normalized copy used to restore GE objects outside regenerated graphs.\n compositionBindings: Record<string, GECompositionSourceBinding>; // IR Composition ID -> source GE Composition.\n particleSourceData: GEParticleSourceData; // ParticleSystem bindings and source layout used by final host placement.\n}\n\n/** Reject preserved data whose version or Composition bindings do not match the supplied IR Scene. */\nexport function assertGEToIRPreservedDataMatchesScene(scene: IRScene, preservedData: GEToIRPreservedData): void {\n if (preservedData.version !== GE_PRESERVED_DATA_VERSION) {\n throw new TypeError(`[ge-ir:preserved-data] Unsupported preserved data version '${String(preservedData.version)}'.`);\n }\n if (!isRecord(preservedData.compositionBindings)) {\n throw new TypeError('[ge-ir:preserved-data] compositionBindings must be an object.');\n }\n if (preservedData.sourceScene !== undefined && !isRecord(preservedData.sourceScene)) {\n throw new TypeError('[ge-ir:preserved-data] sourceScene must be an object when present.');\n }\n assertGEParticleSourceData(preservedData.particleSourceData);\n const compositionIdSet = new Set(scene.compositions.map(composition => composition.id));\n const compositionById = new Map(scene.compositions.map(composition => [composition.id, composition] as const));\n const sourceCompositionIdSet = new Set<string>();\n\n for (const [compositionId, binding] of Object.entries(preservedData.compositionBindings)) {\n if (!compositionIdSet.has(compositionId)) {\n throw new TypeError(\n `[ge-ir:preserved-data] Composition binding '${compositionId}' does not exist in the IR Scene.`,\n );\n }\n if (\n !isRecord(binding) ||\n typeof binding['sourceCompositionId'] !== 'string' ||\n binding['sourceCompositionId'].length === 0\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Composition binding '${compositionId}' is invalid.`);\n }\n if (!isRecord(binding['layerDataById'])) {\n throw new TypeError(\n `[ge-ir:preserved-data] Composition binding '${compositionId}' layerDataById must be an object.`,\n );\n }\n if (\n !Array.isArray(binding['sourceItemOrder']) ||\n binding['sourceItemOrder'].some(itemId => typeof itemId !== 'string')\n ) {\n throw new TypeError(\n `[ge-ir:preserved-data] Composition binding '${compositionId}' sourceItemOrder must be an array of strings.`,\n );\n }\n if (sourceCompositionIdSet.has(binding['sourceCompositionId'])) {\n throw new TypeError(\n `[ge-ir:preserved-data] Source Composition '${binding['sourceCompositionId']}' is bound more than once.`,\n );\n }\n sourceCompositionIdSet.add(binding['sourceCompositionId']);\n\n const layerIdSet = new Set(compositionById.get(compositionId)?.layers.map(layer => layer.id) ?? []);\n\n for (const [layerId, layerData] of Object.entries(binding['layerDataById'])) {\n if (!layerIdSet.has(layerId)) {\n throw new TypeError(\n `[ge-ir:preserved-data] Layer data '${compositionId}/${layerId}' does not exist in the IR Scene.`,\n );\n }\n assertEffectsLayerPreservedData(layerData, compositionId, layerId);\n }\n }\n\n for (const compositionId of compositionIdSet) {\n if (preservedData.compositionBindings[compositionId] == null) {\n throw new TypeError(`[ge-ir:preserved-data] IR Composition '${compositionId}' has no source binding.`);\n }\n }\n\n for (const layerBinding of preservedData.particleSourceData.layers) {\n const particleLayer = compositionById.get(layerBinding.irCompositionId)?.layers.find(\n layer => layer.id === layerBinding.irLayerId,\n );\n\n if (particleLayer?.type !== 'particle') {\n throw new TypeError(\n `[ge-ir:preserved-data] Particle source Layer '${layerBinding.irCompositionId}/` +\n `${layerBinding.irLayerId}' does not reference an IR Particle Layer.`,\n );\n }\n }\n}\n\nfunction assertGEParticleSourceData(value: unknown): asserts value is GEParticleSourceData {\n if (!isRecord(value) || !Array.isArray(value['particleEffectGroups']) || !Array.isArray(value['layers'])) {\n throw new TypeError(\n '[ge-ir:preserved-data] particleSourceData.particleEffectGroups and layers must be arrays.',\n );\n }\n\n const groupCompositionIdById = new Map<string, string>();\n\n for (const [index, group] of value.particleEffectGroups.entries()) {\n const path = `particleSourceData.particleEffectGroups[${index}]`;\n\n if (!isRecord(group)) {\n throw new TypeError(`[ge-ir:preserved-data] ${path} must be an object.`);\n }\n const id = group['id'];\n const irCompositionId = group['irCompositionId'];\n\n if (typeof id !== 'string' || id.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.id must be a non-empty string.`);\n }\n if (typeof irCompositionId !== 'string' || irCompositionId.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.irCompositionId must be a non-empty string.`);\n }\n if (!isPositiveSize(group['sourcePreviewSize'])) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.sourcePreviewSize must be a positive finite size.`);\n }\n if (!isAuthoringBounds(group['authoringBounds'], group['sourcePreviewSize'])) {\n throw new TypeError(\n `[ge-ir:preserved-data] ${path}.authoringBounds must be a positive rectangle inside sourcePreviewSize.`,\n );\n }\n if (groupCompositionIdById.has(id)) {\n throw new TypeError(`[ge-ir:preserved-data] Particle effect group '${id}' is defined more than once.`);\n }\n groupCompositionIdById.set(id, irCompositionId);\n }\n\n const layerIdsByComposition = new Map<string, Set<string>>();\n const sourceOrdersByGroup = new Map<string, Set<number>>();\n const referencedGroupIds = new Set<string>();\n\n for (const [index, layer] of value.layers.entries()) {\n const path = `particleSourceData.layers[${index}]`;\n\n if (!isRecord(layer)) {\n throw new TypeError(`[ge-ir:preserved-data] ${path} must be an object.`);\n }\n const effectGroupId = layer['effectGroupId'];\n const irCompositionId = layer['irCompositionId'];\n const irLayerId = layer['irLayerId'];\n\n if (typeof effectGroupId !== 'string' || effectGroupId.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.effectGroupId must be a non-empty string.`);\n }\n if (typeof irCompositionId !== 'string' || irCompositionId.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.irCompositionId must be a non-empty string.`);\n }\n if (typeof irLayerId !== 'string' || irLayerId.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.irLayerId must be a non-empty string.`);\n }\n if (!isNonNegativeSafeInteger(layer['sourceOrder'])) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.sourceOrder must be a non-negative safe integer.`);\n }\n\n const groupCompositionId = groupCompositionIdById.get(effectGroupId);\n\n if (groupCompositionId == null) {\n throw new TypeError(`[ge-ir:preserved-data] ${path} references unknown effect group '${effectGroupId}'.`);\n }\n if (groupCompositionId !== irCompositionId) {\n throw new TypeError(`[ge-ir:preserved-data] ${path} must use the same IR Composition as its effect group.`);\n }\n\n const compositionLayerIds = layerIdsByComposition.get(irCompositionId) ?? new Set<string>();\n const groupSourceOrders = sourceOrdersByGroup.get(effectGroupId) ?? new Set<number>();\n\n if (compositionLayerIds.has(irLayerId)) {\n throw new TypeError(\n `[ge-ir:preserved-data] Particle source Layer '${irCompositionId}/${irLayerId}' is bound more than once.`,\n );\n }\n if (groupSourceOrders.has(layer['sourceOrder'])) {\n throw new TypeError(\n `[ge-ir:preserved-data] Particle effect group '${effectGroupId}' uses sourceOrder ` +\n `${String(layer['sourceOrder'])} more than once.`,\n );\n }\n compositionLayerIds.add(irLayerId);\n groupSourceOrders.add(layer['sourceOrder']);\n layerIdsByComposition.set(irCompositionId, compositionLayerIds);\n sourceOrdersByGroup.set(effectGroupId, groupSourceOrders);\n referencedGroupIds.add(effectGroupId);\n }\n\n for (const groupId of groupCompositionIdById.keys()) {\n if (!referencedGroupIds.has(groupId)) {\n throw new TypeError(`[ge-ir:preserved-data] Particle effect group '${groupId}' has no ParticleSystem binding.`);\n }\n }\n}\n\nfunction assertEffectsLayerPreservedData(value: unknown, compositionId: string, layerId: string): void {\n const path = `${compositionId}/${layerId}`;\n\n if (!isRecord(value)) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}' must be an object.`);\n }\n\n for (const field of [\n 'positionOverLifetime', 'rotationOverLifetime', 'sizeOverLifetime', 'colorOverLifetime', 'mask',\n 'precompContent', 'particleContent',\n ]) {\n if (value[field] !== undefined && !isRecord(value[field])) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.${field}' must be an object.`);\n }\n }\n if (value['sourceComponentId'] !== undefined && typeof value['sourceComponentId'] !== 'string') {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.sourceComponentId' must be a string.`);\n }\n if (value['timelineEndBehavior'] !== undefined && !isGEEndBehavior(value['timelineEndBehavior'])) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.timelineEndBehavior' is invalid.`);\n }\n if (value['spriteStartColor'] !== undefined && !isNormalizedColor(value['spriteStartColor'])) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.spriteStartColor' must be a normalized color.`);\n }\n if (\n value['spriteSplits'] !== undefined &&\n (!Array.isArray(value['spriteSplits']) || value['spriteSplits'].some(split => !isEffectsSpriteSplit(split)))\n ) {\n throw new TypeError(\n `[ge-ir:preserved-data] Layer data '${path}.spriteSplits' must contain valid split tuples.`,\n );\n }\n if (\n value['textureSheetAnimation'] !== undefined &&\n !isEffectsTextureSheetAnimation(value['textureSheetAnimation'])\n ) {\n throw new TypeError(\n `[ge-ir:preserved-data] Layer data '${path}.textureSheetAnimation' is invalid.`,\n );\n }\n if (\n value['sourceItemIds'] !== undefined &&\n (!Array.isArray(value['sourceItemIds']) || value['sourceItemIds'].some(itemId => typeof itemId !== 'string'))\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.sourceItemIds' must be an array of strings.`);\n }\n if (\n value['itemAnchorById'] !== undefined &&\n (!isRecord(value['itemAnchorById']) || Object.values(value['itemAnchorById']).some(anchor => !isItemAnchor(anchor)))\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.itemAnchorById' must contain finite vec2 values.`);\n }\n if (\n value['itemEulerHintById'] !== undefined &&\n (!isRecord(value['itemEulerHintById']) ||\n Object.values(value['itemEulerHintById']).some(eulerHint => !isItemEulerHint(eulerHint)))\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.itemEulerHintById' must contain finite vec3 values.`);\n }\n if (\n value['sourceHierarchy'] !== undefined &&\n value['sourceHierarchy'] !== 'single-item' &&\n value['sourceHierarchy'] !== 'null-sprite-pair'\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.sourceHierarchy' is invalid.`);\n }\n if (\n value['textSizeMode'] !== undefined &&\n value['textSizeMode'] !== 'auto-width' &&\n value['textSizeMode'] !== 'auto-height' &&\n value['textSizeMode'] !== 'fixed'\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.textSizeMode' is invalid.`);\n }\n}\n\nfunction isGEEndBehavior(value: unknown): value is EndBehavior {\n return value === EndBehavior.destroy || value === EndBehavior.forward ||\n value === EndBehavior.freeze || value === EndBehavior.restart;\n}\n\nfunction isEffectsSpriteSplit(value: unknown): value is EffectsSpriteSplit {\n return Array.isArray(value) && value.length === 5 && value.slice(0, 4).every(isFiniteNumber) &&\n (value[4] === 0 || value[4] === 1);\n}\n\nfunction isEffectsTextureSheetAnimation(value: unknown): value is EffectsTextureSheetAnimation {\n return isRecord(value) && isPositiveSafeInteger(value['row']) && isPositiveSafeInteger(value['col']) &&\n (value['total'] === undefined || isPositiveSafeInteger(value['total'])) &&\n typeof value['animate'] === 'boolean' &&\n (value['loop'] === undefined || typeof value['loop'] === 'boolean');\n}\n\nfunction isItemAnchor(value: unknown): value is [number, number] {\n return Array.isArray(value) && value.length === 2 && value.every(isFiniteNumber);\n}\n\nfunction isItemEulerHint(value: unknown): value is [number, number, number] {\n return Array.isArray(value) && value.length === 3 && value.every(isFiniteNumber);\n}\n\nfunction isNormalizedColor(value: unknown): value is IRColor {\n return Array.isArray(value) && value.length === 4 && value.every(channel => isFiniteNumber(channel) &&\n channel >= 0 && channel <= 1);\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction isPositiveSafeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value > 0;\n}\n\nfunction isNonNegativeSafeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;\n}\n\nfunction isPositiveSize(value: unknown): value is [number, number] {\n return Array.isArray(value) && value.length === 2 && value.every(entry => isFiniteNumber(entry) && entry > 0);\n}\n\nfunction isAuthoringBounds(value: unknown, previewSize: [number, number]): value is GEParticleAuthoringBounds {\n return Array.isArray(value) && value.length === 4 && value.every(isFiniteNumber) &&\n value[0] >= 0 && value[1] >= 0 && value[2] > 0 && value[3] > 0 &&\n value[0] + value[2] <= previewSize[0] && value[1] + value[3] <= previewSize[1];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n","import {\n assertIRScene, type IRScene, type IRFontAsset, type IRLayer,\n} from '@vvfx/animation-ir';\nimport {\n getIRResourceSourceUrl, type ConversionDiagnostic,\n} from '@vvfx/animation-ir/adapter';\nimport type { DataPath } from '@galacean/effects-specification';\nimport { get2dTo3dRatio } from '../common/coordinate-mapping';\nimport { assembleGEScene } from './assemble';\nimport { buildCompositionGenerationPlan, collectPrecompExportDiagnostics } from './converter/precomp';\nimport { appendNullLayer, appendParentLayer, appendPrecompLayer, appendVisualLayer } from './generator/layer';\nimport { applyPostProcess } from './post-process/pipeline';\nimport { applyCrossCompositionMasks } from './post-process/cross-composition-mask';\nimport { createRuntimeMaskState } from './post-process/mask';\nimport type { ECSCollector, GeneratedCompositionData, GeneratedItemBinding, LayerGenerationContext } from './types';\nimport type { IRToGEOptions, IRToGEResult } from '../conversion';\nimport { assertGEToIRPreservedDataMatchesScene, type GEToIRPreservedData } from '../preserved-data';\n\n/**\n * Convert the entry Composition of an IR Scene to a GE JSONScene.\n *\n * `options.preservedData` restores compatible GE-owned data when supplied.\n * `options.duration` overrides the range derived from the IR frame bounds.\n */\nexport function convertIRToGE(irScene: IRScene, options: IRToGEOptions = {}): IRToGEResult {\n if (options == null || typeof options !== 'object' || Array.isArray(options)) {\n throw new TypeError('[ge-ir:ir2ge] options must be an object.');\n }\n\n assertIRScene(irScene);\n\n if (options.preservedData != null) {\n assertGEToIRPreservedDataMatchesScene(irScene, options.preservedData);\n }\n\n return convertIRToGEInternal(irScene, options.duration, options.preservedData);\n}\n\nfunction convertIRToGEInternal(\n irScene: IRScene,\n duration?: number,\n preservedData?: GEToIRPreservedData,\n): IRToGEResult {\n const itemLayerIds = new Map<string, string>();\n const fontAssets = irScene.assets.filter((asset): asset is IRFontAsset => asset.type === 'font');\n\n const collector: ECSCollector = {\n images: [],\n fonts: fontAssets.flatMap(asset =>\n asset.source.kind !== 'system'\n ? [{ fontFamily: asset.family, fontURL: getIRResourceSourceUrl(asset.source) }]\n : [],\n ),\n components: [],\n items: [],\n textures: [],\n miscs: [],\n };\n const textureCache = new Map<string, DataPath>();\n const imageAssetById = new Map(\n irScene.assets.filter(asset => asset.type === 'image').map(asset => [asset.id, asset] as const),\n );\n const fontAssetById = new Map(fontAssets.map(asset => [asset.id, asset] as const));\n const diagnostics: ConversionDiagnostic[] = [];\n const runtimeMaskState = createRuntimeMaskState();\n const { compositionById, requests: generationRequests } = buildCompositionGenerationPlan(irScene, diagnostics);\n const generatedCompositions: GeneratedCompositionData[] = [];\n\n for (const request of generationRequests) {\n const { ir } = request;\n const { width, height } = ir;\n const frameRate = ir.frameRate;\n const ratio = get2dTo3dRatio(width, height);\n const itemBindings: GeneratedItemBinding[] = [];\n const layerToItemId: Record<string, string> = {};\n const layerToComponentId: Record<string, string> = {};\n const layerToMaskParentItemId: Record<string, string> = {};\n const layerToMaskCoordinateOrigin: Record<string, [number, number]> = {};\n const parentLayerIdSet = new Set<string>();\n const itemStartIndex = collector.items.length;\n\n for (const layer of ir.layers) {\n if (layer.parentId != null) {\n parentLayerIdSet.add(layer.parentId);\n }\n }\n\n const ctx: LayerGenerationContext = {\n ir,\n layerDataById: preservedData?.compositionBindings[ir.id]?.layerDataById ?? {},\n compositionById,\n inheritedOpacity: request.inheritedOpacity,\n precompOutputIdByLayerId: request.precompOutputIdByLayerId,\n collector,\n itemBindings,\n layerToItemId,\n layerToComponentId,\n layerToMaskParentItemId,\n layerToMaskCoordinateOrigin,\n textureCache,\n imageAssetById,\n fontAssetById,\n parentLayerIdSet,\n ratio,\n width,\n height,\n frameRate,\n diagnostics,\n };\n const layersInLoweringOrder = [...ir.layers].reverse();\n\n for (const layer of layersInLoweringOrder) {\n appendLayer(layer, ctx);\n if (request.id === ir.id && layer.type === 'precomp') {\n collectPrecompExportDiagnostics(layer, compositionById, ir, diagnostics);\n }\n }\n\n const geComponentIdToNewId: Record<string, string> = {};\n\n for (const layer of ir.layers) {\n const GEComponentId = ctx.layerDataById[layer.id]?.sourceComponentId;\n const newId = layerToComponentId[layer.id];\n\n if (GEComponentId != null && newId != null) {\n geComponentIdToNewId[GEComponentId] = newId;\n }\n }\n\n applyPostProcess(ir, {\n collector,\n itemBindings,\n compositionById,\n layerToItemId,\n layerToComponentId,\n ratio,\n width,\n height,\n frameRate,\n geComponentIdToNewId,\n layerDataById: ctx.layerDataById,\n runtimeMaskState,\n diagnostics,\n maskLookup: {\n getItemId: layerId => layerToItemId[layerId],\n getMaskParentItemId: layerId => layerToMaskParentItemId[layerId],\n getMaskCoordinateOrigin: layerId => layerToMaskCoordinateOrigin[layerId],\n getComponentId: layerId => layerToComponentId[layerId],\n isParentLayer: layerId => parentLayerIdSet.has(layerId),\n },\n });\n\n const generatedItems = collector.items.splice(itemStartIndex);\n\n generatedItems.reverse();\n itemBindings.reverse();\n restorePreservedItemOrder(\n generatedItems,\n itemBindings,\n preservedData?.compositionBindings[ir.id]?.sourceItemOrder,\n );\n for (const binding of itemBindings) {\n if (binding.layerId != null) {\n itemLayerIds.set(binding.itemId, binding.layerId);\n }\n }\n collector.items.push(...generatedItems);\n generatedCompositions.push({\n id: request.id,\n ir,\n itemBindings,\n items: generatedItems,\n precompOutputIdByLayerId: request.precompOutputIdByLayerId,\n });\n }\n\n applyCrossCompositionMasks(generatedCompositions, collector, runtimeMaskState);\n\n return {\n itemLayerIds: Object.fromEntries(itemLayerIds),\n scene: assembleGEScene(irScene, collector, generatedCompositions, duration, preservedData),\n diagnostics,\n };\n}\n\nfunction restorePreservedItemOrder(\n items: GeneratedCompositionData['items'],\n bindings: GeneratedItemBinding[],\n sourceItemOrder: readonly string[] | undefined,\n): void {\n if (sourceItemOrder == null) {\n return;\n }\n const orderByItemId = new Map(sourceItemOrder.map((itemId, index) => [itemId, index]));\n const fallbackOrder = sourceItemOrder.length;\n const orderByLayerId = new Map<string, number>();\n\n for (const binding of bindings) {\n const order = orderByItemId.get(binding.itemId);\n\n if (binding.layerId != null && order != null) {\n orderByLayerId.set(binding.layerId, Math.max(orderByLayerId.get(binding.layerId) ?? order, order));\n }\n }\n // Split visuals share their source layer's painter slot, including Timeline bindings.\n for (const binding of bindings) {\n const order = binding.layerId != null ? orderByLayerId.get(binding.layerId) : undefined;\n\n if (!orderByItemId.has(binding.itemId) && order != null) {\n orderByItemId.set(binding.itemId, order);\n }\n }\n\n items.sort((left, right) =>\n (orderByItemId.get(left.id) ?? fallbackOrder) - (orderByItemId.get(right.id) ?? fallbackOrder),\n );\n bindings.sort((left, right) =>\n (orderByItemId.get(left.itemId) ?? fallbackOrder) - (orderByItemId.get(right.itemId) ?? fallbackOrder),\n );\n}\n\nfunction appendLayer(layer: IRLayer, ctx: LayerGenerationContext): void {\n if (layer.type === 'precomp') {\n appendPrecompLayer(layer, ctx);\n } else if (layer.type === 'null') {\n appendNullLayer(layer, ctx);\n } else if (ctx.parentLayerIdSet.has(layer.id)) {\n appendParentLayer(layer, ctx);\n } else {\n appendVisualLayer(layer, ctx);\n }\n}\n","import type { IRComposition, IRLayer } from '@vvfx/animation-ir';\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(layers: IRLayer[], ctx: GESceneContext): IRComposition {\n return normalizeJsonValue({\n id: ctx.irCompositionId,\n ...(ctx.compositionName != null && { 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 });\n}\n","import type { IRScene } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { DataType, ItemType } from '@galacean/effects-specification';\nimport { buildSceneCollectionIndex, resolveDataPathId } from '../common/data-path';\nimport { isRecord } from '../common/json-normalization';\nimport type { GEParticleSourceData, GEParticleSourceLayerData, GEToIRPreservedData } from '../preserved-data';\n\n/** Extract source bindings and layout metadata needed to place restored ParticleSystems in a host scene. */\nexport function extractGEParticleSourceData(\n scene: IRScene,\n preservedData: GEToIRPreservedData,\n diagnostics: ConversionDiagnostic[],\n): GEParticleSourceData {\n const sourceScene = preservedData.sourceScene;\n\n if (sourceScene == null) {\n if (!scene.compositions.some(composition => composition.layers.some(layer => layer.type === 'particle'))) {\n return { particleEffectGroups: [], layers: [] };\n }\n throw new TypeError('[ge-ir:particle-source] GE sourceScene is required.');\n }\n\n const itemById = buildSceneCollectionIndex(readRecordArray(sourceScene['items']));\n const componentById = buildSceneCollectionIndex(readRecordArray(sourceScene['components']));\n const compositionById = buildSceneCollectionIndex(readRecordArray(sourceScene['compositions']));\n const particleComponentIds = collectReferencedParticleComponentIds(\n preservedData,\n itemById,\n componentById,\n );\n const representedComponentIds = new Set<string>();\n const particleEffectGroups: GEParticleSourceData['particleEffectGroups'] = [];\n const layers: GEParticleSourceLayerData[] = [];\n\n for (const composition of scene.compositions) {\n const particleLayers = composition.layers.filter(layer => layer.type === 'particle');\n\n if (particleLayers.length === 0) {\n continue;\n }\n const binding = preservedData.compositionBindings[composition.id];\n\n if (binding == null) {\n throw new TypeError(`[ge-ir:particle-source] ${composition.id}: source Composition binding is missing.`);\n }\n const sourceComposition = compositionById.get(binding.sourceCompositionId);\n const previewSize = readPreviewSize(sourceComposition);\n\n if (previewSize == null) {\n for (const layer of particleLayers) {\n const source = resolveParticleLayerSource(\n composition.id,\n layer.id,\n binding,\n itemById,\n componentById,\n representedComponentIds,\n );\n\n representedComponentIds.add(source.componentId);\n }\n diagnostics.push({\n code: 'GE_PARTICLE_SOURCE_LAYOUT_UNAVAILABLE',\n severity: 'warning',\n action: 'unsupported',\n path: `$.compositions[id=${JSON.stringify(binding.sourceCompositionId)}].previewSize`,\n sourceId: binding.sourceCompositionId,\n feature: 'particle-layout',\n message: 'Particle source layout was not prepared because the source Composition previewSize is missing or invalid.',\n });\n\n continue;\n }\n const effectGroupId = binding.sourceCompositionId;\n\n particleEffectGroups.push({\n id: effectGroupId,\n irCompositionId: composition.id,\n sourcePreviewSize: [previewSize.width, previewSize.height],\n authoringBounds: [0, 0, previewSize.width, previewSize.height],\n });\n\n for (const layer of particleLayers) {\n const source = resolveParticleLayerSource(\n composition.id,\n layer.id,\n binding,\n itemById,\n componentById,\n representedComponentIds,\n );\n\n representedComponentIds.add(source.componentId);\n\n layers.push({\n effectGroupId,\n irCompositionId: composition.id,\n irLayerId: layer.id,\n sourceOrder: source.order,\n });\n }\n }\n\n const unboundComponentIds = Array.from(particleComponentIds)\n .filter(componentId => !representedComponentIds.has(componentId));\n\n if (unboundComponentIds.length > 0) {\n throw new TypeError(\n `[ge-ir:particle-source] ParticleSystem components were not represented in Animation IR: ` +\n unboundComponentIds.map(componentId => `'${componentId}'`).join(', '),\n );\n }\n\n return { particleEffectGroups, layers };\n}\n\ninterface ResolvedParticleLayerSource {\n componentId: string;\n order: number;\n}\n\nfunction resolveParticleLayerSource(\n compositionId: string,\n layerId: string,\n binding: GEToIRPreservedData['compositionBindings'][string],\n itemById: ReadonlyMap<string, Record<string, unknown>>,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n representedComponentIds: ReadonlySet<string>,\n): ResolvedParticleLayerSource {\n const layerData = binding.layerDataById[layerId];\n const sourceComponentId = layerData?.sourceComponentId;\n\n if (sourceComponentId == null || sourceComponentId === '') {\n throwParticleSourceError(compositionId, layerId, 'source ParticleSystem component binding is missing');\n }\n const component = componentById.get(sourceComponentId);\n\n if (component?.['dataType'] !== DataType.ParticleSystem) {\n throwParticleSourceError(\n compositionId,\n layerId,\n `source component '${sourceComponentId}' is not a ParticleSystem`,\n );\n }\n const sourceItemId = resolveDataPathId(component['item']);\n const sourceItem = sourceItemId != null ? itemById.get(sourceItemId) : undefined;\n\n if (sourceItemId == null || sourceItem == null) {\n throwParticleSourceError(compositionId, layerId, 'source ParticleSystem Item is missing');\n }\n if (layerData.sourceItemIds?.includes(sourceItemId) !== true) {\n throwParticleSourceError(\n compositionId,\n layerId,\n `source ParticleSystem Item '${sourceItemId}' does not match the preserved Layer binding`,\n );\n }\n const sourceOrder = binding.sourceItemOrder.indexOf(sourceItemId);\n\n if (sourceOrder < 0) {\n throwParticleSourceError(\n compositionId,\n layerId,\n `source ParticleSystem Item '${sourceItemId}' is missing from source Item order`,\n );\n }\n if (representedComponentIds.has(sourceComponentId)) {\n throwParticleSourceError(\n compositionId,\n layerId,\n `source ParticleSystem component '${sourceComponentId}' is bound more than once`,\n );\n }\n\n return { componentId: sourceComponentId, order: sourceOrder };\n}\n\nfunction readRecordArray(value: unknown): Record<string, unknown>[] | undefined {\n return Array.isArray(value) ? value.filter(isRecord) : undefined;\n}\n\nfunction collectReferencedParticleComponentIds(\n preservedData: GEToIRPreservedData,\n itemById: ReadonlyMap<string, Record<string, unknown>>,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n): Set<string> {\n const particleComponentIds = new Set<string>();\n\n for (const binding of Object.values(preservedData.compositionBindings)) {\n for (const itemId of binding.sourceItemOrder) {\n const item = itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n const componentIds = Array.isArray(item['components'])\n ? item['components'].map(resolveDataPathId).filter((id): id is string => id != null)\n : [];\n const itemParticleComponentIds = componentIds.filter(\n componentId => componentById.get(componentId)?.['dataType'] === DataType.ParticleSystem,\n );\n\n if (item['type'] === ItemType.particle && itemParticleComponentIds.length === 0) {\n throw new TypeError(\n `[ge-ir:particle-source] Particle Item '${itemId}' has no valid ParticleSystem component.`,\n );\n }\n for (const componentId of itemParticleComponentIds) {\n particleComponentIds.add(componentId);\n }\n }\n }\n\n return particleComponentIds;\n}\n\nfunction readPreviewSize(\n composition: Record<string, unknown> | undefined,\n): { width: number; height: number } | undefined {\n const previewSize = composition?.['previewSize'];\n\n return Array.isArray(previewSize) && previewSize.length >= 2 &&\n isPositiveFiniteNumber(previewSize[0]) && isPositiveFiniteNumber(previewSize[1])\n ? { width: previewSize[0], height: previewSize[1] }\n : undefined;\n}\n\nfunction isPositiveFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value > 0;\n}\n\nfunction throwParticleSourceError(compositionId: string, layerId: string, message: string): never {\n throw new TypeError(`[ge-ir:particle-source] ${compositionId}/${layerId}: ${message}.`);\n}\n","// Value-level mappings used by the GE-to-IR conversion pipeline.\nimport { IRBlendMode, IREndBehavior, type IRLayerTime } from '@vvfx/animation-ir';\nimport { BlendingMode, EndBehavior } from '@galacean/effects-specification';\n\nconst IR_BLEND_MODE_BY_GE: Record<number, IRBlendMode> = {\n [BlendingMode.ADD]: IRBlendMode.Add,\n [BlendingMode.MULTIPLY]: IRBlendMode.Multiply,\n [BlendingMode.BRIGHTNESS]: IRBlendMode.Lighten,\n [BlendingMode.SUBTRACTION]: IRBlendMode.Difference,\n [BlendingMode.STRONG_LIGHT]: IRBlendMode.HardLight,\n [BlendingMode.WEAK_LIGHT]: IRBlendMode.SoftLight,\n [BlendingMode.SUPERPOSITION]: IRBlendMode.Overlay,\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.Continue;\n case EndBehavior.freeze:\n return IREndBehavior.Freeze;\n case EndBehavior.restart:\n return IREndBehavior.Loop;\n default:\n return undefined;\n }\n}\n\nexport function mapLayerTimingToIR(\n delay: number,\n duration: number,\n frameRate: number,\n compositionInPoint = 0,\n): IRLayerTime {\n const inFrame = Math.round((compositionInPoint + delay * frameRate) * 1000) / 1000;\n const outFrame = Math.round((compositionInPoint + (delay + duration) * frameRate) * 1000) / 1000;\n\n return { inFrame, outFrame };\n}\n","import { IREndBehavior, type IRColor } from '@vvfx/animation-ir';\nimport { resolveIRResourceUrl, type ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { DataType, type DataPath, type EndBehavior, type SceneBindingData } from '@galacean/effects-specification';\nimport { get2dTo3dRatio } from '../../common/coordinate-mapping';\nimport { buildSceneCollectionIndex, resolveDataPath, resolveDataPathId } from '../../common/data-path';\nimport { mapEndBehaviorToIR } from '../mapping';\nimport type { GEAssetRegistry, GEToIROptions, GESceneContext } from '../types';\n\nexport function buildSceneContext(\n scene: Record<string, unknown>,\n options: GEToIROptions,\n compositionId = scene['compositionId'] as string,\n compositionIdBySourceId: ReadonlyMap<string, string> = new Map(),\n compositionStartFrameBySourceId: ReadonlyMap<string, number> = new Map(),\n assetRegistry: GEAssetRegistry = createGEAssetRegistry(),\n diagnostics: ConversionDiagnostic[] = [],\n): GESceneContext {\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 compositionStartTime = (composition['startTime'] as number) ?? 0;\n const frameRate = options.frameRate;\n const ratio = get2dTo3dRatio(width, height);\n\n const inPoint = compositionStartTime * frameRate;\n // Preserve fractional frames because GE durations need not end on a frame boundary.\n const outPoint = (compositionStartTime + duration) * frameRate;\n\n const endBehavior =\n mapEndBehaviorToIR(composition['endBehavior'] as EndBehavior | undefined) ?? IREndBehavior.Loop;\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 = typeof composition['name'] === 'string' ? composition['name'] : undefined;\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 const fonts = scene['fonts'] as Record<string, unknown>[] | undefined;\n\n const itemById = buildSceneCollectionIndex(items);\n const componentById = buildSceneCollectionIndex(components);\n const miscById = buildSceneCollectionIndex(miscs);\n const imageById = buildSceneCollectionIndex(images);\n const textureById = buildSceneCollectionIndex(textures);\n const fontDefinitionByFamily = buildFontDefinitionIndex(fonts);\n\n const itemIdToTrackId = buildSceneBindings(componentById, miscById, composition);\n\n return {\n diagnostics,\n compositionId,\n irCompositionId: compositionIdBySourceId.get(compositionId) ?? compositionId,\n compositionIdBySourceId,\n compositionStartFrameBySourceId,\n compositionStartTime,\n resourceBaseUrl: options.resourceBaseUrl == null\n ? undefined\n : resolveIRResourceUrl(options.resourceBaseUrl),\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 imageAssetById: assetRegistry.imageAssetById,\n imageAssetIdBySourceId: assetRegistry.imageAssetIdBySourceId,\n fontDefinitionByFamily,\n fontAssetById: assetRegistry.fontAssetById,\n fontAssetIdByIdentity: assetRegistry.fontAssetIdByIdentity,\n itemIdToTrackId,\n };\n}\n\nfunction createGEAssetRegistry(): GEAssetRegistry {\n return {\n imageAssetById: new Map(),\n imageAssetIdBySourceId: new Map(),\n fontAssetById: new Map(),\n fontAssetIdByIdentity: new Map(),\n };\n}\n\nfunction buildFontDefinitionIndex(fonts: Record<string, unknown>[] | undefined): Map<string, Record<string, unknown>> {\n const fontDefinitionByFamily = new Map<string, Record<string, unknown>>();\n\n for (const font of fonts ?? []) {\n const family = typeof font['fontFamily'] === 'string' ? font['fontFamily'] : font['family'];\n\n if (typeof family === 'string' && family !== '' && !fontDefinitionByFamily.has(family)) {\n fontDefinitionByFamily.set(family, font);\n }\n }\n\n return fontDefinitionByFamily;\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(\n scene: Record<string, unknown>,\n compositionId = scene['compositionId'] as string,\n): 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 = buildSceneCollectionIndex(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.map(itemReference => itemReference.id).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(curves: unknown[], startFrame: number, endFrame: number): 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 =\n 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 =\n Math.abs(v0 - v1) < 1e-6 && Math.abs(outControlPointY - v0) < 1e-6 && 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([data[0], data[1], data[2], data[3], nextData[0], nextData[1], nextData[2], nextData[3]]);\n } else if (nextType === BezierKeyframeType.EASE) {\n segments.push([data[0], data[1], data[2], data[3], nextData[0], nextData[1], nextData[2], nextData[3]]);\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([data[2], data[3], data[4], data[5], nextData[0], nextData[1], nextData[2], nextData[3]]);\n } else if (nextType === BezierKeyframeType.EASE) {\n segments.push([data[2], data[3], data[4], data[5], nextData[0], nextData[1], nextData[2], nextData[3]]);\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 =\n 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 (\n 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/**\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,\n IRBezierHandle,\n IRKeyframe,\n IRRotation,\n IRSpatialTangent,\n IRTransform,\n IRVec3,\n} from '@vvfx/animation-ir';\nimport { ValueType } from '@galacean/effects-specification';\nimport { convert3dTo2dPoint } from '../../common/coordinate-mapping';\nimport { parseBezierKeyframes, parsePositionTimingKeyframes } from './keyframe';\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<IRTransform> {\n const channels: Partial<IRTransform> = {};\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(timingKeyframes, pathPoints, controlPointsRaw, startFrame) ? 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(pathPoint[0], pathPoint[1], pathPoint[2] ?? 0, ctx.width, ctx.height);\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],\n startPathPoint[1],\n startPathPoint[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n const endPathPoint2d = convert3dTo2dPoint(\n endPathPoint[0],\n endPathPoint[1],\n endPathPoint[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n const firstControlPoint2d = convert3dTo2dPoint(\n firstControlPoint[0],\n firstControlPoint[1],\n firstControlPoint[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n const secondControlPoint2d = convert3dTo2dPoint(\n secondControlPoint[0],\n secondControlPoint[1],\n secondControlPoint[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n\n keyframe.spatialOut = [\n firstControlPoint2d[0] - startPathPoint2d[0],\n firstControlPoint2d[1] - startPathPoint2d[1],\n ];\n\n pendingSpatialIn.set(keyframeIndex + 1, [\n secondControlPoint2d[0] - endPathPoint2d[0],\n 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 { type: 'keyframed', 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 ||\n secondTiming == null ||\n firstPathPoint == null ||\n 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 =\n 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) && pointNearlyEquals(controlPoints[1], secondPathPoint);\n}\n\nfunction bezierHandleNearlyEquals(handle: IRBezierHandle | undefined, x: number, y: number): boolean {\n return handle != null && Math.abs(handle.x - x) < POSITION_EPSILON && 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 (\n left != null &&\n 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}\n\nfunction parseRotationAnimation(\n rotationOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRRotation | 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 type: 'static',\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 && {\n inTangent: segmentHandles[index - 1].inTangent,\n }),\n ...(segmentHandles[index]?.outTangent != null && {\n outTangent: segmentHandles[index].outTangent,\n }),\n }));\n\n return { type: 'keyframed', keyframes };\n}\n\ntype ScalarKeyframedProperty = Extract<IRAnimatedProperty<number>, { type: 'keyframed' }>;\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.type === 'static') {\n return { staticValue: property.value };\n }\n\n const firstValue = property.keyframes[0]?.value ?? 1;\n const constant = property.keyframes.every(\n keyframe =>\n scalarValuesEqual(keyframe.value, firstValue) &&\n (keyframe.endValue == null || scalarValuesEqual(keyframe.endValue, firstValue)),\n );\n\n return constant ? { staticValue: firstValue } : { 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 ? keyframe.value : (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(\n animation =>\n animation.keyframes.length === template.keyframes.length &&\n animation.keyframes.every((keyframe, index) => Math.abs(keyframe.frame - template.keyframes[index].frame) < 1e-6),\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) && 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) ? { type: 'static', value } : 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 { type: 'keyframed', keyframes };\n }\n }\n\n return undefined;\n}\n","function _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n\n var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n\n return target;\n}\nexport { _object_without_properties_loose as _ };\n","import type { IRParticleBurst, IRParticleContent } from '@vvfx/animation-ir';\nimport { parseGEParticleScalarExpression } from '../../common/particle-expression';\nimport { isRecord, normalizeJsonValue } from '../../common/json-normalization';\n\nexport interface ParsedGEParticleComponent {\n particle: IRParticleContent;\n rawParticleContent: Record<string, unknown>;\n normalizedBurstRuntimeDefaults: boolean;\n}\n\ninterface ParsedParticleBursts {\n bursts: IRParticleBurst[];\n normalizedRuntimeDefaults: boolean;\n}\n\nexport function parseParticleComponent(\n component: Record<string, unknown>,\n frameRate: number,\n): ParsedGEParticleComponent | undefined {\n const options = component['options'];\n const emission = component['emission'];\n\n if (!isRecord(options) || !isRecord(emission)) {\n return undefined;\n }\n\n const maxCount = options['maxCount'];\n const startLifetime = parseGEParticleScalarExpression(options['startLifetime']);\n const rateOverTime = parseGEParticleScalarExpression(emission['rateOverTime']);\n const parsedBursts = parseParticleBursts(emission['bursts'], frameRate);\n\n if (!Number.isInteger(maxCount) || (maxCount as number) <= 0 || startLifetime == null || rateOverTime == null) {\n return undefined;\n }\n if (emission['bursts'] !== undefined && parsedBursts == null) {\n return undefined;\n }\n\n const rawParticleContent = normalizeJsonValue(component);\n\n delete rawParticleContent['id'];\n delete rawParticleContent['item'];\n delete rawParticleContent['dataType'];\n delete rawParticleContent['mask'];\n\n return {\n particle: {\n maxParticles: maxCount as number,\n startLifetime,\n emission: {\n rateOverTime,\n ...(parsedBursts != null && { bursts: parsedBursts.bursts }),\n },\n },\n rawParticleContent,\n normalizedBurstRuntimeDefaults: parsedBursts?.normalizedRuntimeDefaults ?? false,\n };\n}\n\nfunction parseParticleBursts(\n value: unknown,\n frameRate: number,\n): ParsedParticleBursts | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const bursts: IRParticleBurst[] = [];\n let normalizedRuntimeDefaults = false;\n\n for (const burst of value) {\n if (!isRecord(burst)) {\n return undefined;\n }\n const time = parseLegacyParticleNumber(burst['time']);\n const count = parseLegacyParticleNumber(burst['count']);\n const rawCycleCount = parseLegacyParticleNumber(burst['cycles']);\n const rawRepeatInterval = parseLegacyParticleNumber(burst['interval']);\n\n if (\n time == null || time < 0 ||\n count == null || !Number.isInteger(count) || count < 0 ||\n (burst['cycles'] !== undefined && rawCycleCount === undefined) ||\n (rawCycleCount !== undefined && (!Number.isInteger(rawCycleCount) || rawCycleCount < 0)) ||\n (burst['interval'] !== undefined && rawRepeatInterval === undefined) ||\n (rawRepeatInterval !== undefined && rawRepeatInterval < 0)\n ) {\n return undefined;\n }\n\n const cycleCount = rawCycleCount == null || rawCycleCount === 0 ? 'infinite' : rawCycleCount;\n const repeatIntervalSeconds = rawRepeatInterval == null || rawRepeatInterval === 0\n ? (cycleCount === 1 ? 0 : 1)\n : rawRepeatInterval;\n\n normalizedRuntimeDefaults ||= rawCycleCount == null || rawCycleCount === 0 ||\n ((rawRepeatInterval == null || rawRepeatInterval === 0) && cycleCount !== 1);\n\n bursts.push({\n frameOffset: time * frameRate,\n count,\n cycleCount,\n repeatIntervalFrames: repeatIntervalSeconds * frameRate,\n });\n }\n\n return { bursts, normalizedRuntimeDefaults };\n}\n\nfunction parseLegacyParticleNumber(value: unknown): number | undefined {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value !== 'string' || value.trim() === '') {\n return undefined;\n }\n\n const parsed = Number(value);\n\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n","import type {\n IRBlendMode, IRColor, IRBezierPath,\n IRFontAsset, IRLocalBounds, IRParticleContent, IRShape, IRShapePaint, IRShapeStyle, IRTextContent,\n} from '@vvfx/animation-ir';\nimport {\n IRPaintType, IRLineCap, IRLineJoin, IRShapePrimitiveType, IRTextureScaleMode, isIRId,\n} from '@vvfx/animation-ir';\nimport {\n createIRResourceSource, resolveIRResourceUrl,\n} from '@vvfx/animation-ir/adapter';\nimport {\n DataType, type DataPath, FillType, LineCap, LineJoin,\n ItemType, ShapePrimitiveType, TextAlignment, TextSizeMode, TexturePaintScaleMode,\n} from '@galacean/effects-specification';\nimport { resolveDataPath, resolveDataPathId } from '../../common/data-path';\nimport { createId } from '../../common/id';\nimport { isRecord, normalizeJsonValue } from '../../common/json-normalization';\nimport { mapBlendModeToIR } from '../mapping';\nimport type { GESceneContext } from '../types';\nimport type { EffectsSpriteSplit, EffectsTextSizeMode, EffectsTextureSheetAnimation } from '../../preserved-data';\nimport { parseParticleComponent } from './parse-particle-component';\n\ninterface ParsedComponentData {\n type: 'image' | 'solid' | 'text' | 'shape' | 'particle';\n imageAssetId?: string;\n spriteStartColor?: IRColor;\n text?: IRTextContent;\n textBounds?: IRLocalBounds;\n shapes?: IRShape[];\n blendMode?: IRBlendMode;\n anchorScale?: [number, number];\n spriteSplits?: EffectsSpriteSplit[];\n textureSheetAnimation?: EffectsTextureSheetAnimation;\n textSizeMode?: EffectsTextSizeMode;\n GEComponentId?: string; // Source identity used to remap cross-component references.\n rawMask?: Record<string, unknown>; // Preserved for source and target reconstruction.\n particle?: IRParticleContent;\n rawParticleContent?: Record<string, unknown>;\n}\n\nexport function parseComponent(item: Record<string, unknown>, ctx: GESceneContext): ParsedComponentData | undefined {\n const componentRefs = item['components'] as DataPath[] | undefined;\n\n if (componentRefs == null || componentRefs.length === 0) {\n return undefined;\n }\n const componentIds = componentRefs.map(resolveDataPathId).filter((id): id is string => id != null);\n // A declared Particle Item may list auxiliary render components before its ParticleSystem.\n const orderedComponentIds = item['type'] === ItemType.particle\n ? [\n ...componentIds.filter(componentId => ctx.componentById.get(componentId)?.['dataType'] === DataType.ParticleSystem),\n ...componentIds.filter(componentId => ctx.componentById.get(componentId)?.['dataType'] !== DataType.ParticleSystem),\n ]\n : componentIds;\n\n for (const componentId of orderedComponentIds) {\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, ctx);\n } else if (dataType === DataType.ShapeComponent) {\n result = parseShapeComponent(component, ctx);\n } else if (dataType === DataType.ParticleSystem) {\n const parsedParticle = parseParticleComponent(component, ctx.frameRate);\n\n if (parsedParticle != null) {\n const { normalizedBurstRuntimeDefaults, ...particleData } = parsedParticle;\n\n result = {\n type: 'particle',\n ...particleData,\n ...parseRendererLayerProperties(component['renderer'], [0, 0]),\n };\n if (normalizedBurstRuntimeDefaults) {\n ctx.diagnostics.push({\n code: 'GE_PARTICLE_BURST_RUNTIME_DEFAULTS_NORMALIZED',\n severity: 'info',\n action: 'normalized',\n path: `$.components[id=${JSON.stringify(componentId)}].emission.bursts`,\n sourceId: componentId,\n feature: 'particle-bursts',\n message: 'GE burst cycles or interval used zero/omitted runtime defaults and were made explicit in IR.',\n });\n }\n }\n }\n\n if (result == null) {\n continue;\n }\n\n if (dataType === DataType.SpriteComponent || dataType === DataType.TextComponent) {\n result.textureSheetAnimation = parseTextureSheetAnimation(component['textureSheetAnimation']);\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(component: Record<string, unknown>, ctx: GESceneContext): ParsedComponentData {\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n const options = component['options'] as Record<string, unknown> | undefined;\n\n let imageAssetId: string | undefined;\n let spriteStartColor: IRColor | undefined;\n const spriteSplits = parseSpriteSplits(component['splits']);\n const rendererLayerProperties = parseRendererLayerProperties(renderer);\n\n if (renderer != null) {\n imageAssetId = resolveImageAssetIdFromTexture(renderer['texture'], ctx);\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 =\n 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 spriteStartColor = [startColor[0], startColor[1], startColor[2], startColor[3]];\n }\n }\n }\n\n const type = imageAssetId != null ? ('image' as const) : ('solid' as const);\n\n return {\n type,\n imageAssetId,\n spriteStartColor,\n ...rendererLayerProperties,\n spriteSplits,\n };\n}\n\nfunction parseRendererLayerProperties(\n value: unknown,\n defaultAnchorScale?: [number, number],\n): Pick<ParsedComponentData, 'blendMode' | 'anchorScale'> {\n if (!isRecord(value)) {\n return defaultAnchorScale == null ? {} : { anchorScale: defaultAnchorScale };\n }\n\n const blending = value['blending'];\n const blendMode = typeof blending === 'number' && Number.isFinite(blending)\n ? mapBlendModeToIR(blending)\n : undefined;\n const anchor = value['anchor'];\n const anchorScale = Array.isArray(anchor) && anchor.length >= 2 &&\n typeof anchor[0] === 'number' && Number.isFinite(anchor[0]) &&\n typeof anchor[1] === 'number' && Number.isFinite(anchor[1])\n ? [anchor[0], anchor[1]] satisfies [number, number]\n : defaultAnchorScale;\n\n return {\n ...(blendMode != null && { blendMode }),\n ...(anchorScale != null && { anchorScale }),\n };\n}\n\nfunction parseSpriteSplits(value: unknown): EffectsSpriteSplit[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const splits: EffectsSpriteSplit[] = [];\n\n for (const split of value) {\n if (!isSpriteSplit(split)) {\n return undefined;\n }\n splits.push([split[0], split[1], split[2], split[3], split[4]]);\n }\n\n return splits;\n}\n\nfunction isSpriteSplit(value: unknown): value is EffectsSpriteSplit {\n return (\n Array.isArray(value) &&\n value.length === 5 &&\n value.slice(0, 4).every(entry => typeof entry === 'number' && Number.isFinite(entry)) &&\n (value[4] === 0 || value[4] === 1)\n );\n}\n\nfunction parseTextureSheetAnimation(value: unknown): EffectsTextureSheetAnimation | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n const row = value['row'];\n const col = value['col'];\n const total = value['total'];\n const animate = value['animate'];\n const loop = value['loop'];\n\n if (\n !isPositiveSafeInteger(row) ||\n !isPositiveSafeInteger(col) ||\n (total !== undefined && !isPositiveSafeInteger(total)) ||\n typeof animate !== 'boolean' ||\n (loop !== undefined && typeof loop !== 'boolean')\n ) {\n return undefined;\n }\n\n return {\n ...normalizeJsonValue(value),\n row,\n col,\n ...(total !== undefined && { total }),\n animate,\n ...(loop !== undefined && { loop }),\n };\n}\n\nfunction isPositiveSafeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value > 0;\n}\n\nfunction parseTextComponent(component: Record<string, unknown>, ctx: GESceneContext): 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 =\n 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 =\n textAlignCode === TextAlignment.middle ? 'center' : textAlignCode === TextAlignment.right ? 'right' : 'left';\n const fontFamily = (options['fontFamily'] as string) || 'sans-serif';\n const fontWeight = normalizeFontAssetWeight(options['fontWeight']);\n const fontStyle = normalizeFontAssetStyle(options['fontStyle']);\n const fontAssetId = registerFontAsset(ctx, fontFamily, fontStyle, fontWeight);\n const fontSize = readPositiveNumber(options['fontSize']) ?? 12;\n const lineHeight = readPositiveNumber(options['lineHeight']) ?? fontSize;\n const textWidth = readPositiveNumber(options['textWidth']);\n const textHeight = readPositiveNumber(options['textHeight']);\n\n const text: IRTextContent = {\n text: (options['text'] as string) ?? '',\n fontAssetId,\n fontSize,\n color,\n textAlign,\n letterSpacing: (options['letterSpace'] as number) ?? 0,\n lineHeight,\n };\n const textBounds =\n textWidth != null && textHeight != null\n ? { x: 0, y: 0, width: textWidth, height: textHeight }\n : undefined;\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 {\n type: 'text',\n text,\n textBounds,\n blendMode,\n anchorScale,\n textSizeMode: parseTextSizeMode(options),\n };\n}\n\nfunction parseTextSizeMode(options: Record<string, unknown>): EffectsTextSizeMode {\n switch (options['autoResize']) {\n case TextSizeMode.autoWidth:\n return 'auto-width';\n case TextSizeMode.autoHeight:\n return 'auto-height';\n case TextSizeMode.fixed:\n return 'fixed';\n }\n\n return 'fixed';\n}\n\nfunction registerFontAsset(\n ctx: GESceneContext,\n family: string,\n style: IRFontAsset['style'],\n weight: number,\n): string {\n const definition = ctx.fontDefinitionByFamily.get(family);\n const rawUrl = definition?.['fontURL'] ?? definition?.['url'];\n const source = typeof rawUrl === 'string' && rawUrl !== ''\n ? createIRResourceSource(resolveIRResourceUrl(rawUrl, ctx.resourceBaseUrl))\n : { kind: 'system' as const };\n const identity = JSON.stringify([family, style, weight, source]);\n const existingId = ctx.fontAssetIdByIdentity.get(identity);\n\n if (existingId != null) {\n return existingId;\n }\n const assetId = createId();\n\n ctx.fontAssetIdByIdentity.set(identity, assetId);\n ctx.fontAssetById.set(assetId, { id: assetId, type: 'font', family, style, weight, source });\n\n return assetId;\n}\n\nfunction normalizeFontAssetWeight(weight: unknown): number {\n if (typeof weight === 'number') {\n return Number.isInteger(weight) && weight >= 1 && weight <= 1000 ? weight : 400;\n }\n\n switch (weight) {\n case 'bold':\n case 'bolder':\n return 700;\n case 'lighter':\n return 300;\n default:\n return 400;\n }\n}\n\nfunction normalizeFontAssetStyle(style: unknown): IRFontAsset['style'] {\n return style === 'italic' || style === 'oblique' ? style : 'normal';\n}\n\nfunction readPositiveNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : undefined;\n}\n\nfunction parseShapeComponent(component: Record<string, unknown>, ctx: GESceneContext): 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): IRShape | undefined {\n const GEType = component['type'] as ShapePrimitiveType | undefined;\n const primitiveType = mapShapePrimitiveTypeToIR(GEType ?? ShapePrimitiveType.Custom);\n const style: IRShapeStyle = {\n position: [0, 0],\n fills: [],\n strokes: [],\n };\n\n const GEFills = component['fills'] as Record<string, unknown>[] | undefined;\n const sourceComponentId = typeof component['id'] === 'string' ? component['id'] : undefined;\n const componentPath = sourceComponentId == null\n ? '$.components[shape]'\n : `$.components[id=${JSON.stringify(sourceComponentId)}]`;\n\n if (GEFills != null) {\n style.fills = GEFills.map((fill, index) =>\n parseShapePaint(fill, ctx, `${componentPath}.fills[${index}]`, sourceComponentId),\n ).filter(\n (fill): fill is IRShapePaint => fill != null,\n );\n }\n\n const GEStrokes = component['strokes'] as Record<string, unknown>[] | undefined;\n const GEStrokeWidth = component['strokeWidth'];\n const strokeWidth = typeof GEStrokeWidth === 'number' && Number.isFinite(GEStrokeWidth) && GEStrokeWidth >= 0\n ? GEStrokeWidth / ctx.ratio\n : 1 / ctx.ratio;\n const strokeCap = mapLineCapToIR(\n typeof component['strokeCap'] === 'number' ? component['strokeCap'] : LineCap.Butt,\n );\n const strokeJoin = mapLineJoinToIR(\n typeof component['strokeJoin'] === 'number' ? component['strokeJoin'] : LineJoin.Miter,\n );\n\n if (GEStrokes != null) {\n style.strokes = GEStrokes.flatMap((stroke, index) => {\n const paint = parseShapePaint(\n stroke,\n ctx,\n `${componentPath}.strokes[${index}]`,\n sourceComponentId,\n );\n\n return paint == null ? [] : [{ paint, width: strokeWidth, cap: strokeCap, join: strokeJoin }];\n });\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 ? {\n ...style,\n primitiveType,\n width,\n height,\n ...readRectangleCornerRadius(component, width, height),\n }\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 ? {\n ...style,\n primitiveType,\n pointCount,\n radius,\n ...readOptionalNumberField(component, 'roundness'),\n }\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,\n primitiveType,\n pointCount,\n innerRadius,\n outerRadius,\n ...readOptionalNumberField(component, 'innerRoundness'),\n ...readOptionalNumberField(component, 'outerRoundness'),\n }\n : undefined;\n }\n }\n}\n\nconst GE_TO_SHAPE_PRIMITIVE_TYPE: Record<ShapePrimitiveType, IRShape['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): IRShape['primitiveType'] {\n return GE_TO_SHAPE_PRIMITIVE_TYPE[GEType] ?? IRShapePrimitiveType.Custom;\n}\n\nfunction parseShapePaint(\n paint: Record<string, unknown>,\n ctx: GESceneContext,\n path: string,\n sourceId?: string,\n): IRShapePaint | 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: IRPaintType.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, IRShapePaint['type']> = {\n [FillType.GradientLinear]: IRPaintType.LinearGradient,\n [FillType.GradientRadial]: IRPaintType.RadialGradient,\n [FillType.GradientAngular]: IRPaintType.AngularGradient,\n };\n\n const gradientStopsRaw = paint['gradientStops'] as [number, unknown] | undefined;\n const stops =\n Array.isArray(gradientStopsRaw) && gradientStopsRaw.length >= 2\n ? (gradientStopsRaw[1] as [number, number, number, number, number][])\n : [];\n\n const startPoint = readFinitePoint(paint['startPoint']);\n const endPoint = readFinitePoint(paint['endPoint']);\n\n if (startPoint == null || endPoint == null) {\n ctx.diagnostics.push({\n code: 'GE_SHAPE_GRADIENT_ENDPOINT_MISSING',\n severity: 'warning',\n action: 'dropped',\n path,\n ...(sourceId != null && { sourceId }),\n feature: 'gradient-endpoints',\n message: 'GE gradient paint requires finite startPoint and endPoint values before it can enter Animation IR.',\n });\n\n return undefined;\n }\n\n return {\n type: typeMap[GEType] as 'linear-gradient' | 'radial-gradient' | 'angular-gradient',\n gradientStops: stops,\n gradientStart: [startPoint.x / ctx.ratio, -startPoint.y / ctx.ratio],\n gradientEnd: [endPoint.x / ctx.ratio, -endPoint.y / ctx.ratio],\n };\n }\n\n if (GEType === FillType.Texture) {\n const assetId = resolveImageAssetIdFromTexture(paint['texture'], ctx);\n\n if (assetId == null) {\n return undefined;\n }\n\n const scaleMode = mapTextureScaleModeToIR(paint['scaleMode']);\n\n return {\n type: IRPaintType.Texture,\n assetId,\n ...(scaleMode != null && { scaleMode }),\n };\n }\n\n return undefined;\n}\n\nfunction readFinitePoint(value: unknown): { x: number; y: number } | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n const x = value['x'];\n const y = value['y'];\n\n return typeof x === 'number' && Number.isFinite(x) && typeof y === 'number' && Number.isFinite(y)\n ? { x, y }\n : undefined;\n}\n\nfunction mapLineCapToIR(GECode: number): IRLineCap {\n const lineCapByCode: Record<number, IRLineCap> = {\n [LineCap.Butt]: IRLineCap.Butt,\n [LineCap.Round]: IRLineCap.Round,\n [LineCap.Square]: IRLineCap.Square,\n };\n\n return lineCapByCode[GECode] ?? IRLineCap.Butt;\n}\n\nfunction mapLineJoinToIR(GECode: number): IRLineJoin {\n const lineJoinByCode: Record<number, IRLineJoin> = {\n [LineJoin.Round]: IRLineJoin.Round,\n [LineJoin.Bevel]: IRLineJoin.Bevel,\n [LineJoin.Miter]: IRLineJoin.Miter,\n };\n\n return lineJoinByCode[GECode] ?? IRLineJoin.Miter;\n}\n\nfunction parseCustomPaths(component: Record<string, unknown>, ratio: number): IRBezierPath[] {\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\n | Array<{\n close: boolean;\n indexes: Array<{ point: number; easingIn: number; easingOut: number }>;\n }>\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(component: Record<string, unknown>, key: string, ratio: number): 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 readRectangleCornerRadius(\n component: Record<string, unknown>,\n width: number,\n height: number,\n): { cornerRadius?: number } {\n const roundness = component['roundness'];\n\n if (typeof roundness !== 'number' || !Number.isFinite(roundness)) {\n return {};\n }\n const percentage = Math.min(Math.max(roundness, 0), 100) / 100;\n\n return { cornerRadius: percentage * Math.min(width, height) / 2 };\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 resolveImageAssetIdFromTexture(textureReference: unknown, ctx: GESceneContext): string | 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 sourceId = resolveDataPathId(sourceReference);\n const url = image?.['url'];\n\n if (sourceId == null || typeof url !== 'string' || url.trim() === '') {\n return undefined;\n }\n const existingId = ctx.imageAssetIdBySourceId.get(sourceId);\n const assetId = isIRId(sourceId) ? sourceId : existingId ?? createId();\n\n if (!isIRId(sourceId) && existingId == null) {\n ctx.imageAssetIdBySourceId.set(sourceId, assetId);\n }\n\n ctx.imageAssetById.set(assetId, {\n id: assetId,\n type: 'image',\n source: createIRResourceSource(resolveIRResourceUrl(url, ctx.resourceBaseUrl)),\n });\n\n return assetId;\n}\n\nfunction mapTextureScaleModeToIR(value: unknown): IRTextureScaleMode | undefined {\n switch (value) {\n case TexturePaintScaleMode.Fill:\n return IRTextureScaleMode.Fill;\n case TexturePaintScaleMode.Fit:\n return IRTextureScaleMode.Fit;\n case TexturePaintScaleMode.Crop:\n return IRTextureScaleMode.Crop;\n case TexturePaintScaleMode.Tile:\n return IRTextureScaleMode.Tile;\n default:\n return undefined;\n }\n}\n","import { DataType, type DataPath, EndBehavior, type TimelineClipData } 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 activationEndBehavior?: EndBehavior;\n transformAsset?: Record<string, unknown>;\n spriteColorAsset?: Record<string, unknown>;\n}\n\nexport function parseTimeline(itemId: string, ctx: GESceneContext): 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 activationEndBehavior: EndBehavior | undefined;\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 activationEndBehavior = 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, activationEndBehavior, transformAsset, spriteColorAsset };\n}\n","import type { IRTransform, IRVec3 } from '@vvfx/animation-ir';\nimport { convert3dTo2dPoint } from '../../common/coordinate-mapping';\nimport type { GESceneContext } from '../types';\n\nexport function parseStaticTransform(\n itemTransform: Record<string, unknown>,\n ctx: GESceneContext,\n): Partial<IRTransform> {\n const channels: Partial<IRTransform> = {};\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 = { type: 'static', 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 = { type: 'static', 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 ? { type: 'static' as const, value: eulerHint.x } : undefined;\n const y = Math.abs(eulerHint.y) > 1e-6 ? { type: 'static' as const, value: eulerHint.y } : undefined;\n const z = Math.abs(eulerHint.z) > 1e-6 ? { type: 'static' 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 {\n isIRId, type IRColor, type IRImageLayer, type IRLayer, type IRLayerType,\n type IRParticleLayer, type IRShapeLayer, type IRSolidLayer, type IRTextLayer, type IRTransform,\n} from '@vvfx/animation-ir';\nimport { ItemType, type EndBehavior } from '@galacean/effects-specification';\nimport { rotateAnchorOffsetForParentedVisual } from '../../common/anchor-mapping';\nimport { createId } from '../../common/id';\nimport { isRecord, normalizeJsonValue } from '../../common/json-normalization';\nimport { mapEndBehaviorToIR, 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';\nimport type { EffectsLayerPreservedData } from '../../preserved-data';\n\nexport interface ParsedItemLayer {\n layer: IRLayer;\n preservedData: EffectsLayerPreservedData;\n}\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 ctx: GESceneContext,\n): ParsedItemLayer | undefined {\n const name = typeof item['name'] === 'string' ? item['name'] : undefined;\n const GEType = item['type'] as ItemType;\n const visible = (item['visible'] as boolean) ?? true;\n let rawTransformPreservedData: EffectsLayerPreservedData | 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, ctx.inPoint);\n\n const componentData = parseComponent(item, ctx);\n let type: IRLayerType | undefined;\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 === 'particle' || GEType === ItemType.particle) {\n type = 'particle';\n } else if (componentData?.type === 'image') {\n type = 'image';\n } else if (GEType === ItemType.composition) {\n type = 'precomp';\n } else if (componentData?.spriteStartColor != null) {\n type = 'solid';\n } else if (GEType === ItemType.sprite) {\n type = 'solid';\n }\n\n if (type == null) {\n return undefined;\n }\n if (type === 'particle' && componentData?.particle == null) {\n return undefined;\n }\n const layerEndBehavior = type === 'precomp'\n ? undefined\n : mapEndBehaviorToIR(item['endBehavior'] as EndBehavior | undefined);\n\n const itemTransform = item['transform'] as Record<string, unknown> | undefined;\n const itemAnchor = readItemAnchor(itemTransform);\n const itemEulerHint = readItemEulerHint(itemTransform);\n const itemSize = readItemSize(itemTransform);\n const textBounds = type === 'text' && itemSize == null ? componentData?.textBounds : undefined;\n const localBounds: IRLayer['localBounds'] =\n itemSize != null\n ? {\n x: 0,\n y: 0,\n width: itemSize.x / ctx.ratio,\n height: itemSize.y / ctx.ratio,\n }\n : textBounds ?? (type === 'particle'\n ? { x: 0, y: 0, width: ctx.width, height: ctx.height }\n : undefined);\n\n if (type === 'particle' && itemSize == null) {\n ctx.diagnostics.push({\n code: 'GE_PARTICLE_BOUNDS_DEFAULTED',\n severity: 'info',\n action: 'approximated',\n path: `$.items[id=${JSON.stringify(itemId)}].transform.size`,\n sourceId: itemId,\n feature: 'localBounds',\n message: 'Particle item has no display size; Composition bounds were used as source-neutral authoring bounds.',\n });\n }\n let transform: IRTransform | 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 rawPositionOverLifetime = transformAsset['positionOverLifetime'] as Record<string, unknown> | undefined;\n const animationChannels = parseTransformAnimation(transformAsset, time.inFrame, time.outFrame, ctx);\n\n if (transform == null) {\n transform = {};\n }\n\n if (animationChannels.rotation != null) {\n transform.rotation = animationChannels.rotation;\n }\n // GE position paths are additive contributions on top of the item transform. Keep\n // the item base as normalized Position while the raw path is retained; treating\n // both values as an absolute Position loses that base when generating GE again.\n if (animationChannels.position != null && rawPositionOverLifetime?.['path'] == null) {\n transform.position = animationChannels.position;\n }\n if (animationChannels.scale != null) {\n transform.scale = animationChannels.scale;\n }\n\n const preservedTransformData: EffectsLayerPreservedData = {};\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 preservedTransformData.positionOverLifetime = rawPositionOverLifetime;\n }\n if (rawRotationOverLifetime != null && Object.keys(rawRotationOverLifetime).length > 0) {\n preservedTransformData.rotationOverLifetime = rawRotationOverLifetime;\n }\n if (rawSizeOverLifetime != null && Object.keys(rawSizeOverLifetime).length > 0) {\n preservedTransformData.sizeOverLifetime = rawSizeOverLifetime;\n }\n\n if (Object.keys(preservedTransformData).length > 0) {\n rawTransformPreservedData = preservedTransformData;\n }\n }\n\n let rawColorOverLifetime: Record<string, unknown> | undefined;\n\n if (type !== 'particle' && timeline?.spriteColorAsset != null) {\n const opacity = parseOpacityAnimation(timeline.spriteColorAsset, time.inFrame, time.outFrame);\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 anchor metadata preserves the IR anchor relative to normalized local bounds.\n // Item position carries GE's bounds-center compensation for every visual layer, including Text.\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, localBounds);\n const { anchorX, anchorY } = anchorInfo;\n const [anchorOffsetX, anchorOffsetY] = rotateAnchorOffsetForParentedVisual(\n type,\n typeof item['parentId'] === 'string',\n transform,\n anchorInfo.anchorOffsetX,\n anchorInfo.anchorOffsetY,\n );\n\n if (transform == null) {\n transform = {};\n }\n\n transform.anchor = {\n type: 'static',\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.type === 'static') {\n const scale =\n transform.scale?.type === 'static' && 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 - (localBounds.x + layerWidth / 2);\n const anchorDiffY = anchorY - (localBounds.y + 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 = subtractStaticPositionOffset(position, totalX, totalY);\n }\n }\n }\n\n const text = componentData?.text;\n const solidLayerColor: IRColor | undefined =\n type === 'solid' ? (componentData?.spriteStartColor ?? [1, 1, 1, 1]) : undefined;\n\n const layer = {\n id: isIRId(itemId) ? itemId : createId(),\n ...(name != null && { name }),\n type,\n time,\n ...(layerEndBehavior != null && { endBehavior: layerEndBehavior }),\n visible,\n transform,\n localBounds,\n } as IRLayer;\n\n if (type === 'image' && componentData?.imageAssetId != null) {\n (layer as IRImageLayer).content = { assetId: componentData.imageAssetId };\n }\n if (solidLayerColor != null) {\n (layer as IRSolidLayer).content = { color: solidLayerColor };\n }\n if (type === 'text' && text != null) {\n (layer as IRTextLayer).content = text;\n }\n if (type === 'shape') {\n (layer as IRShapeLayer).content = { shapes: componentData?.shapes ?? [] };\n }\n if (type === 'particle' && componentData?.particle != null) {\n (layer as IRParticleLayer).content = componentData.particle;\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 =\n GEType === ItemType.composition ? (item['content'] as Record<string, unknown> | undefined) : undefined;\n const precompReferenceId = isRecord(precompContent?.['options']) ? precompContent['options']['refId'] : undefined;\n const precompCompositionId = typeof precompReferenceId === 'string'\n ? ctx.compositionIdBySourceId.get(precompReferenceId)\n : undefined;\n\n if (type === 'precomp' && precompCompositionId == null) {\n return undefined;\n }\n\n if (type === 'precomp' && precompCompositionId != null) {\n const sourceStartFrame = typeof precompReferenceId === 'string'\n ? ctx.compositionStartFrameBySourceId.get(precompReferenceId)\n : undefined;\n\n const precompEndBehavior = mapEndBehaviorToIR(item['endBehavior'] as EndBehavior | undefined);\n\n (layer as Extract<IRLayer, { type: 'precomp' }>).content = {\n compositionId: precompCompositionId,\n clipToBounds: false,\n ...(precompEndBehavior != null && { endBehavior: precompEndBehavior }),\n };\n if (sourceStartFrame != null && sourceStartFrame !== 0) {\n (layer as Extract<IRLayer, { type: 'precomp' }>).time.sourceStartFrame = sourceStartFrame;\n }\n }\n\n const preservedData: EffectsLayerPreservedData = {\n sourceHierarchy: 'single-item',\n sourceItemIds: [itemId],\n ...(itemAnchor != null && { itemAnchorById: { [itemId]: itemAnchor } }),\n ...(itemEulerHint != null && rawTransformPreservedData?.rotationOverLifetime != null && {\n itemEulerHintById: { [itemId]: itemEulerHint },\n }),\n ...(rawTransformPreservedData ?? {}),\n ...(rawColorOverLifetime != null && { colorOverLifetime: rawColorOverLifetime }),\n ...(type !== 'solid' && componentData?.spriteStartColor != null && {\n spriteStartColor: componentData.spriteStartColor,\n }),\n ...(componentData?.spriteSplits != null && { spriteSplits: componentData.spriteSplits }),\n ...(componentData?.textureSheetAnimation != null && {\n textureSheetAnimation: componentData.textureSheetAnimation,\n }),\n ...(componentData?.textSizeMode != null && componentData.textSizeMode !== 'fixed' && {\n textSizeMode: componentData.textSizeMode,\n }),\n ...(GEComponentId != null && { sourceComponentId: GEComponentId }),\n ...(rawMask != null && { mask: rawMask }),\n ...(precompContent != null && { precompContent: normalizeJsonValue(precompContent) }),\n ...(componentData?.rawParticleContent != null && {\n particleContent: componentData.rawParticleContent,\n }),\n ...(timeline?.activationEndBehavior != null && {\n timelineEndBehavior: timeline.activationEndBehavior,\n }),\n };\n\n return { layer, preservedData };\n}\n\ninterface DerivedAnchorInfo {\n anchorX: number;\n anchorY: number;\n anchorOffsetX: number;\n anchorOffsetY: number;\n}\n\nexport function readItemSize(itemTransform: Record<string, unknown> | undefined): { 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 && typeof y === 'number' && Number.isFinite(y) && y > 0\n ? { x, y }\n : undefined;\n}\n\nfunction readItemAnchor(itemTransform: Record<string, unknown> | undefined): [number, number] | undefined {\n const anchor = itemTransform?.['anchor'];\n\n if (!isRecord(anchor)) {\n return undefined;\n }\n\n const x = anchor['x'];\n const y = anchor['y'];\n\n if (typeof x !== 'number' || !Number.isFinite(x) || typeof y !== 'number' || !Number.isFinite(y)) {\n return undefined;\n }\n\n return Math.abs(x) > 1e-6 || Math.abs(y) > 1e-6 ? [x, y] : undefined;\n}\n\nfunction readItemEulerHint(itemTransform: Record<string, unknown> | undefined): [number, number, number] | undefined {\n const eulerHint = itemTransform?.['eulerHint'];\n\n if (!isRecord(eulerHint)) {\n return undefined;\n }\n\n const x = eulerHint['x'];\n const y = eulerHint['y'];\n const z = eulerHint['z'];\n\n if (\n typeof x !== 'number' || !Number.isFinite(x) ||\n typeof y !== 'number' || !Number.isFinite(y) ||\n typeof z !== 'number' || !Number.isFinite(z)\n ) {\n return undefined;\n }\n\n return Math.abs(x) > 1e-6 || Math.abs(y) > 1e-6 || Math.abs(z) > 1e-6 ? [x, y, z] : undefined;\n}\n\nfunction deriveAnchorFromScale(\n anchorScale: [number, number],\n bounds: NonNullable<IRLayer['localBounds']>,\n): DerivedAnchorInfo {\n const { x, y, width, height } = bounds;\n const localAnchorX = anchorScale[0] * width;\n const localAnchorY = anchorScale[1] * height;\n\n return {\n anchorX: x + localAnchorX,\n anchorY: y + localAnchorY,\n anchorOffsetX: -(localAnchorX - width / 2),\n anchorOffsetY: -(localAnchorY - height / 2),\n };\n}\n\nfunction subtractStaticPositionOffset(\n position: Extract<NonNullable<IRTransform['position']>, { type: 'static' }>,\n offsetX: number,\n offsetY: number,\n): Extract<NonNullable<IRTransform['position']>, { type: 'static' }> {\n return {\n type: 'static',\n value: [position.value[0] - offsetX, position.value[1] - offsetY, position.value[2] ?? 0],\n };\n}\n","// Restore cross-item layer structures after individual GE items are parsed.\nimport type { IRLayer } from '@vvfx/animation-ir';\nimport { DataType, EndBehavior, ItemType } from '@galacean/effects-specification';\nimport type { GESceneContext } from './types';\nimport type { EffectsLayerPreservedData } from '../preserved-data';\nimport { DEFAULT_CAMERA_Z } from '../common/coordinate-mapping';\nimport { resolveDataPathId } from '../common/data-path';\nimport { isRecord } from '../common/json-normalization';\nimport { readItemSize } from './parser/layer';\nimport { parseTimeline } from './parser/timeline';\n\nexport interface RawLayerDescriptor {\n itemId: string;\n item: Record<string, unknown>;\n layer: IRLayer;\n preservedData: EffectsLayerPreservedData;\n}\n\nexport function mergeNullSpritePairs(descriptors: RawLayerDescriptor[], ctx: GESceneContext): 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 if (!hasNoComponents(descriptor.item) || !hasParentTransformSignal(descriptor, ctx)) {\n continue;\n }\n\n const pivotChildren = children.filter(child => {\n const childType = child.item['type'] as ItemType;\n const isVisual =\n childType === ItemType.sprite ||\n childType === ItemType.text ||\n childType === ItemType.shape ||\n childType === ItemType.particle;\n const sameName = (child.item['name'] as string) === (descriptor.item['name'] as string);\n const childTransform = isRecord(child.item['transform']) ? child.item['transform'] : undefined;\n\n return (\n isVisual &&\n sameName &&\n readItemSize(childTransform) != null &&\n hasVisualComponent(child, ctx) &&\n hasSplitPairTiming(descriptor, child, ctx) &&\n hasNoIndependentChildTransform(child, ctx)\n );\n });\n\n // Generated pivot children always have a positive display size. Authored Shape\n // hierarchies may use a zero-size same-name child and must remain separate.\n if (pivotChildren.length !== 1) {\n continue;\n }\n\n const sameNameChild = pivotChildren[0];\n\n mergedChildIds.add(sameNameChild.itemId);\n mergedDescriptorByParentId.set(descriptor.itemId, mergeNullAndSprite(descriptor, sameNameChild, ctx));\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 (\n dataType === DataType.SpriteComponent ||\n dataType === DataType.TextComponent ||\n dataType === DataType.ShapeComponent ||\n dataType === DataType.ParticleSystem\n );\n });\n}\n\nfunction hasSplitPairTiming(parent: RawLayerDescriptor, child: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const parentTimeline = parseTimeline(parent.itemId, ctx);\n const childTimeline = parseTimeline(child.itemId, ctx);\n const parentEndBehavior = parentTimeline?.activationEndBehavior ?? readItemEndBehavior(parent.item);\n const childEndBehavior = childTimeline?.activationEndBehavior ?? readItemEndBehavior(child.item);\n\n if (parentEndBehavior !== EndBehavior.freeze || !isSupportedEndBehavior(childEndBehavior)) {\n return false;\n }\n\n if (parentTimeline == null || childTimeline == null) {\n return true;\n }\n\n return (\n nearlyEqual(parentTimeline.delay, childTimeline.delay) &&\n nearlyEqual(parentTimeline.duration, childTimeline.duration)\n );\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 (\n hasNonEmptyRecord(asset['positionOverLifetime']) ||\n hasNonEmptyRecord(asset['rotationOverLifetime']) ||\n hasNonEmptyRecord(asset['sizeOverLifetime'])\n );\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 isSupportedEndBehavior(endBehavior) ? endBehavior : undefined;\n}\n\nfunction isSupportedEndBehavior(endBehavior: unknown): endBehavior is EndBehavior {\n return endBehavior === EndBehavior.destroy ||\n endBehavior === EndBehavior.forward ||\n endBehavior === EndBehavior.freeze ||\n endBehavior === EndBehavior.restart;\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 childLayer = childDescriptor.layer;\n const merged = {\n ...nullDescriptor.layer,\n type: childLayer.type,\n ...(childLayer.type === 'image' && { content: childLayer.content }),\n ...(childLayer.type === 'solid' && { content: childLayer.content }),\n ...(childLayer.type === 'text' && { content: childLayer.content }),\n ...(childLayer.type === 'shape' && { content: childLayer.content }),\n ...(childLayer.type === 'precomp' && { content: childLayer.content }),\n ...(childLayer.type === 'particle' && { content: childLayer.content }),\n } as IRLayer;\n\n if (childLayer.type === 'image' || childLayer.type === 'solid' || childLayer.type === 'particle') {\n // Display bounds belong to the visual child, never to its pivot Null parent.\n merged.localBounds = childLayer.localBounds;\n }\n merged.blendMode = childDescriptor.layer.blendMode;\n\n merged.visible = childDescriptor.layer.visible;\n if (childLayer.endBehavior == null) {\n delete merged.endBehavior;\n } else {\n merged.endBehavior = childLayer.endBehavior;\n }\n\n const childTransform = isRecord(childDescriptor.item['transform'])\n ? childDescriptor.item['transform']\n : undefined;\n const childPosition = childTransform?.['position'] as { x: number; y: number; z: number } | undefined;\n const childSize = readItemSize(childTransform);\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 = { type: 'static', 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 const preservedData: EffectsLayerPreservedData = {\n ...nullDescriptor.preservedData,\n ...childDescriptor.preservedData,\n sourceItemIds: [\n ...(nullDescriptor.preservedData.sourceItemIds ?? [nullDescriptor.itemId]),\n ...(childDescriptor.preservedData.sourceItemIds ?? [childDescriptor.itemId]),\n ],\n sourceHierarchy: 'null-sprite-pair',\n };\n\n return {\n itemId: nullDescriptor.itemId,\n item: nullDescriptor.item,\n layer: merged,\n preservedData,\n };\n}\n\nexport function resolveHierarchy(descriptors: RawLayerDescriptor[], ctx: GESceneContext): void {\n const layerIdByItemId = new Map<string, string>();\n const descriptorByItemId = new Map<string, RawLayerDescriptor>();\n\n for (const descriptor of descriptors) {\n layerIdByItemId.set(descriptor.itemId, descriptor.layer.id);\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 parentLayerId = layerIdByItemId.get(parentId);\n const parentDescriptor = descriptorByItemId.get(parentId);\n\n if (parentLayerId == null || parentDescriptor == null) {\n continue;\n }\n\n descriptor.layer.parentId = parentLayerId;\n\n const parentAnchor = getDescriptorAnchor(parentDescriptor);\n const position = descriptor.layer.transform?.position;\n\n if (position != null && position.type === 'static' && position.value != null) {\n const position2d = position.value;\n // Parenting offsets are world-space translations, outside the child perspective projection.\n const depthScale = (DEFAULT_CAMERA_Z - (position2d[2] ?? 0)) / DEFAULT_CAMERA_Z;\n const effectiveDepthScale = Math.abs(depthScale) > 1e-10 ? depthScale : 1;\n\n descriptor.layer.transform!.position = {\n type: 'static',\n value: [\n position2d[0] + (parentAnchor[0] - ctx.width / 2) / effectiveDepthScale,\n position2d[1] + (parentAnchor[1] - ctx.height / 2) / effectiveDepthScale,\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.type === 'static' && 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 { IRMaskMode, IRMatteMode, type IRLayer, type IRMask } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { DataType, ShapePrimitiveType } from '@galacean/effects-specification';\nimport { resolveDataPathId } from '../../common/data-path';\nimport { isRecord } from '../../common/json-normalization';\nimport type { RawLayerDescriptor } from '../post-process';\nimport type { GESceneContext } from '../types';\nimport { parseTimeline } from '../parser/timeline';\n\ninterface MaskTarget {\n descriptor: RawLayerDescriptor;\n ctx: GESceneContext;\n targetItemId: string;\n inverted: boolean;\n}\n\ninterface MaskOwner {\n descriptor: RawLayerDescriptor;\n ctx: GESceneContext;\n}\n\ninterface ParsedMaskSource {\n sourceItemId: string;\n path: IRMask['path'];\n}\n\nexport interface GEMaskNormalizationComposition {\n sourceCompositionId: string;\n ctx: GESceneContext;\n descriptors: RawLayerDescriptor[];\n}\n\n/** Normalize GE component mask references into Layer mattes or a strict cross-Composition path fallback. */\nexport function normalizeSingleGEMasks(\n compositions: GEMaskNormalizationComposition[],\n diagnostics: ConversionDiagnostic[],\n): void {\n const ownerBySourceItemId = indexMaskOwnersBySourceItemId(compositions);\n const compositionByIRId = new Map(compositions.map(composition => [composition.ctx.irCompositionId, composition]));\n const targetsBySourceComponentId = new Map<string, MaskTarget[]>();\n\n for (const composition of compositions) {\n for (const descriptor of composition.descriptors) {\n const rawMask = descriptor.preservedData.mask;\n\n if (rawMask == null || rawMask['isMask'] === true) {\n continue;\n }\n const rawReferences = rawMask['references'];\n const references = readMaskReferences(rawMask);\n\n if ((Array.isArray(rawReferences) && rawReferences.length > 1) || references.length > 1) {\n diagnostics.push(createUnsupportedMaskDiagnostic(\n descriptor,\n 'GE_MULTIPLE_MASK_REFERENCES_UNSUPPORTED',\n 'multiple-mask-references',\n 'Multiple GE mask references were retained in GE preserved data but not normalized into V1 IR.',\n 'references',\n ));\n continue;\n }\n const sourceComponentId = references[0];\n const targetItemId = resolveTargetItemId(descriptor, composition.ctx);\n const inverted = readMaskInverted(rawMask);\n\n if (\n sourceComponentId == null || targetItemId == null || inverted == null ||\n rawMask['alphaMaskEnabled'] === true\n ) {\n diagnostics.push(createUnsupportedMaskDiagnostic(\n descriptor,\n 'GE_MASK_UNSUPPORTED',\n 'single-mask-reference',\n 'The GE mask was retained in GE preserved data because its reference options cannot enter V1 IR.',\n ));\n continue;\n }\n const targets = targetsBySourceComponentId.get(sourceComponentId) ?? [];\n\n targets.push({ descriptor, ctx: composition.ctx, targetItemId, inverted });\n targetsBySourceComponentId.set(sourceComponentId, targets);\n }\n }\n\n const normalizedSourceItemIds = new Set<string>();\n\n for (const [sourceComponentId, targets] of targetsBySourceComponentId) {\n const targetContext = targets[0]?.ctx;\n const sourceComponent = targetContext?.componentById.get(sourceComponentId);\n const sourceItemId = resolveDataPathId(sourceComponent?.['item']);\n const sourceItem = sourceItemId == null ? undefined : targetContext?.itemById.get(sourceItemId);\n const sourceLayerOwner = sourceItemId == null ? undefined : ownerBySourceItemId.get(sourceItemId);\n const parentItemId = typeof sourceItem?.['parentId'] === 'string' ? sourceItem['parentId'] : undefined;\n const owner = parentItemId == null ? undefined : ownerBySourceItemId.get(parentItemId);\n const inversion = targets[0]?.inverted;\n const hasConflictingInversion = targets.some(target => target.inverted !== inversion);\n const sourceTargetsBelongToOwner = owner != null && targets.every(target =>\n target.ctx.irCompositionId === owner.ctx.irCompositionId\n ? isItemAtOrBelowOwner(target.targetItemId, owner.descriptor, target.ctx)\n : owner.descriptor.layer.type === 'precomp' && isCompositionReachable(\n owner.descriptor.layer.content.compositionId,\n target.ctx.irCompositionId,\n compositionByIRId,\n ),\n );\n const referencedComposition = owner?.descriptor.layer.type === 'precomp'\n ? compositionByIRId.get(owner.descriptor.layer.content.compositionId)\n : undefined;\n const maskRatio = referencedComposition?.ctx.ratio ?? owner?.ctx.ratio;\n const parsedSource = sourceComponent == null || sourceItemId == null || owner == null\n ? undefined\n : parseMaskSource(\n sourceComponent,\n sourceItemId,\n owner.descriptor.layer,\n owner.ctx,\n maskRatio,\n referencedComposition?.ctx,\n );\n\n // GE mask.reference is semantically a Layer matte whenever both source and\n // target can be represented as Layers in the same Composition. Preserve\n // that identity before considering a path-only cross-Composition fallback.\n if (normalizeLayerMatteSource(sourceComponent, sourceLayerOwner, targets)) {\n continue;\n }\n if (\n parsedSource != null &&\n !hasConflictingInversion &&\n sourceTargetsBelongToOwner &&\n owner?.descriptor.layer.mask == null\n ) {\n owner.descriptor.layer.mask = {\n path: parsedSource.path,\n mode: IRMaskMode.Add,\n ...(inversion === true && { inverted: true }),\n };\n normalizedSourceItemIds.add(parsedSource.sourceItemId);\n\n for (const target of targets) {\n delete target.descriptor.preservedData.mask;\n }\n continue;\n }\n for (const target of targets) {\n diagnostics.push(createUnsupportedMaskDiagnostic(\n target.descriptor,\n 'GE_MASK_UNSUPPORTED',\n 'mask-source-geometry',\n 'The GE mask source was retained because it is neither one static path nor a supported Layer matte.',\n ));\n }\n }\n\n for (const composition of compositions) {\n composition.descriptors = composition.descriptors.filter(\n descriptor => !descriptorContainsAnyItem(descriptor, normalizedSourceItemIds),\n );\n }\n}\n\nfunction normalizeLayerMatteSource(\n sourceComponent: Record<string, unknown> | undefined,\n sourceLayerOwner: MaskOwner | undefined,\n targets: MaskTarget[],\n): boolean {\n const sourceMask = sourceComponent?.['mask'];\n\n if (\n sourceComponent == null ||\n !isRecord(sourceMask) ||\n sourceMask['isMask'] !== true ||\n sourceLayerOwner == null ||\n (sourceMask['alphaMaskEnabled'] !== undefined && typeof sourceMask['alphaMaskEnabled'] !== 'boolean')\n ) {\n return false;\n }\n const sourceLayerId = sourceLayerOwner.descriptor.layer.id;\n\n if (targets.some(target =>\n target.ctx.irCompositionId !== sourceLayerOwner.ctx.irCompositionId ||\n target.descriptor.layer.id === sourceLayerId ||\n target.descriptor.layer.matte != null,\n )) {\n return false;\n }\n const mode = sourceMask['alphaMaskEnabled'] === true ? IRMatteMode.Alpha : IRMatteMode.Geometry;\n\n for (const target of targets) {\n target.descriptor.layer.matte = {\n sourceLayerId,\n mode,\n ...(target.inverted && { inverted: true }),\n };\n delete target.descriptor.preservedData.mask;\n }\n delete sourceLayerOwner.descriptor.preservedData.mask;\n\n return true;\n}\n\nfunction indexMaskOwnersBySourceItemId(compositions: GEMaskNormalizationComposition[]): Map<string, MaskOwner> {\n const ownerBySourceItemId = new Map<string, MaskOwner>();\n\n for (const composition of compositions) {\n for (const descriptor of composition.descriptors) {\n for (const sourceItemId of descriptor.preservedData.sourceItemIds ?? [descriptor.itemId]) {\n ownerBySourceItemId.set(sourceItemId, { descriptor, ctx: composition.ctx });\n }\n }\n }\n\n return ownerBySourceItemId;\n}\n\nfunction readMaskReferences(mask: Record<string, unknown>): string[] {\n const references = new Set<string>();\n const directReferenceId = resolveDataPathId(mask['reference']);\n\n if (directReferenceId != null) {\n references.add(directReferenceId);\n }\n if (Array.isArray(mask['references'])) {\n for (const reference of mask['references']) {\n const referenceId = resolveDataPathId(reference);\n\n if (referenceId != null) {\n references.add(referenceId);\n }\n }\n }\n\n return Array.from(references);\n}\n\nfunction readMaskInverted(mask: Record<string, unknown>): boolean | undefined {\n const inverted = mask['inverted'];\n\n return inverted === undefined || inverted === false ? false : inverted === true ? true : undefined;\n}\n\nfunction resolveTargetItemId(descriptor: RawLayerDescriptor, ctx: GESceneContext): string | undefined {\n const sourceComponentId = descriptor.preservedData.sourceComponentId;\n const sourceComponent = sourceComponentId == null ? undefined : ctx.componentById.get(sourceComponentId);\n\n return resolveDataPathId(sourceComponent?.['item']) ?? descriptor.itemId;\n}\n\nfunction isItemAtOrBelowOwner(itemId: string, owner: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const ownerItemIds = new Set(owner.preservedData.sourceItemIds ?? [owner.itemId]);\n let currentItemId: string | undefined = itemId;\n const visited = new Set<string>();\n\n while (currentItemId != null && !visited.has(currentItemId)) {\n if (ownerItemIds.has(currentItemId)) {\n return true;\n }\n visited.add(currentItemId);\n const item = ctx.itemById.get(currentItemId);\n\n currentItemId = typeof item?.['parentId'] === 'string' ? item['parentId'] : undefined;\n }\n\n return false;\n}\n\nfunction isCompositionReachable(\n compositionId: string,\n targetCompositionId: string,\n compositionByIRId: ReadonlyMap<string, GEMaskNormalizationComposition>,\n visited = new Set<string>(),\n): boolean {\n if (compositionId === targetCompositionId) {\n return true;\n }\n if (visited.has(compositionId)) {\n return false;\n }\n visited.add(compositionId);\n const composition = compositionByIRId.get(compositionId);\n\n return composition?.descriptors.some(descriptor =>\n descriptor.layer.type === 'precomp' && isCompositionReachable(\n descriptor.layer.content.compositionId,\n targetCompositionId,\n compositionByIRId,\n visited,\n ),\n ) === true;\n}\n\nfunction parseMaskSource(\n sourceComponent: Record<string, unknown>,\n sourceItemId: string,\n ownerLayer: IRLayer,\n ctx: GESceneContext,\n ratio: number | undefined,\n referencedCtx: GESceneContext | undefined,\n): ParsedMaskSource | undefined {\n const sourceMask = sourceComponent['mask'];\n const sourceItem = ctx.itemById.get(sourceItemId);\n\n if (\n sourceComponent['dataType'] !== DataType.ShapeComponent ||\n !isRecord(sourceMask) ||\n sourceMask['isMask'] !== true ||\n sourceMask['alphaMaskEnabled'] === true ||\n sourceItem == null ||\n ratio == null ||\n typeof sourceItem['parentId'] !== 'string' ||\n !hasStaticIdentityMaskTransform(sourceItem) ||\n !hasMatchingMaskTiming(sourceItemId, sourceItem['parentId'], ctx)\n ) {\n return undefined;\n }\n const position = readVector2((sourceItem['transform'] as Record<string, unknown> | undefined)?.['position'], [0, 0]);\n\n if (position == null) {\n return undefined;\n }\n const coordinateOrigin = getMaskCoordinateOrigin(ownerLayer, referencedCtx);\n const centerX = coordinateOrigin[0] + position[0] / ratio;\n const centerY = coordinateOrigin[1] - position[1] / ratio;\n const path = parseMaskPath(sourceComponent, centerX, centerY, ratio);\n\n return path == null\n ? undefined\n : { sourceItemId, path };\n}\n\nfunction hasStaticIdentityMaskTransform(item: Record<string, unknown>): boolean {\n const transform = item['transform'];\n\n if (!isRecord(transform)) {\n return true;\n }\n\n return isMaskPlanePosition(transform['position']) &&\n isVector(transform['scale'], [1, 1, 1]) &&\n isVector(transform['eulerHint'], [0, 0, 0]) &&\n isVector(transform['anchor'], [0, 0]);\n}\n\nfunction isMaskPlanePosition(value: unknown): boolean {\n if (value === undefined) {\n return true;\n }\n if (!isRecord(value)) {\n return false;\n }\n const x = readFiniteNumber(value['x']);\n const y = readFiniteNumber(value['y']);\n const z = readFiniteNumber(value['z']) ?? 0;\n\n return x != null && y != null && nearlyEqual(z, 0);\n}\n\nfunction hasMatchingMaskTiming(sourceItemId: string, ownerItemId: string, ctx: GESceneContext): boolean {\n const sourceItem = ctx.itemById.get(sourceItemId);\n const ownerItem = ctx.itemById.get(ownerItemId);\n const sourceTimeline = parseTimeline(sourceItemId, ctx);\n const ownerTimeline = parseTimeline(ownerItemId, ctx);\n\n if (hasAnimationPayload(sourceTimeline?.transformAsset)) {\n return false;\n }\n const sourceDelay = sourceTimeline?.delay ?? readFiniteNumber(sourceItem?.['delay']) ?? 0;\n const ownerDelay = ownerTimeline?.delay ?? readFiniteNumber(ownerItem?.['delay']) ?? 0;\n const sourceDuration = sourceTimeline?.duration ?? readFiniteNumber(sourceItem?.['duration']) ?? 0;\n const ownerDuration = ownerTimeline?.duration ?? readFiniteNumber(ownerItem?.['duration']) ?? 0;\n\n return nearlyEqual(sourceDelay, ownerDelay) && nearlyEqual(sourceDuration, ownerDuration);\n}\n\nfunction hasAnimationPayload(value: Record<string, unknown> | undefined): boolean {\n return value != null && [\n value['positionOverLifetime'], value['rotationOverLifetime'], value['sizeOverLifetime'],\n ].some(entry => isRecord(entry) && Object.keys(entry).length > 0);\n}\n\nfunction getMaskCoordinateOrigin(layer: IRLayer, referencedCtx: GESceneContext | undefined): [number, number] {\n if (layer.type === 'precomp') {\n const bounds = layer.localBounds ?? (referencedCtx == null\n ? undefined\n : { x: 0, y: 0, width: referencedCtx.width, height: referencedCtx.height });\n\n if (bounds != null) {\n return [\n bounds.x + bounds.width / 2,\n bounds.y + bounds.height / 2,\n ];\n }\n }\n const anchor = layer.transform?.anchor?.value;\n\n return Array.isArray(anchor) && anchor.length >= 2 ? [anchor[0], anchor[1]] : [0, 0];\n}\n\nfunction parseMaskPath(\n component: Record<string, unknown>,\n centerX: number,\n centerY: number,\n ratio: number,\n): IRMask['path'] | undefined {\n if (component['type'] === ShapePrimitiveType.Rectangle) {\n return parseRectangleMaskPath(component, centerX, centerY, ratio);\n }\n if (component['type'] === ShapePrimitiveType.Custom) {\n return parseCustomMaskPath(component, centerX, centerY, ratio);\n }\n\n return undefined;\n}\n\nfunction parseRectangleMaskPath(\n component: Record<string, unknown>,\n centerX: number,\n centerY: number,\n ratio: number,\n): IRMask['path'] | undefined {\n const width = readFiniteNumber(component['width']);\n const height = readFiniteNumber(component['height']);\n const roundness = component['roundness'];\n\n if (width == null || height == null || width < 0 || height < 0 || roundness !== undefined && roundness !== 0) {\n return undefined;\n }\n const halfWidth = width / ratio / 2;\n const halfHeight = height / ratio / 2;\n const points = [\n { x: centerX - halfWidth, y: centerY - halfHeight },\n { x: centerX + halfWidth, y: centerY - halfHeight },\n { x: centerX + halfWidth, y: centerY + halfHeight },\n { x: centerX - halfWidth, y: centerY + halfHeight },\n ];\n const tangents = points.map(() => ({ x: 0, y: 0 }));\n\n return { points, inTangents: tangents, outTangents: tangents.map(tangent => ({ ...tangent })), closed: true };\n}\n\nfunction parseCustomMaskPath(\n component: Record<string, unknown>,\n centerX: number,\n centerY: number,\n ratio: number,\n): IRMask['path'] | undefined {\n const points = component['points'];\n const easingIns = component['easingIns'];\n const easingOuts = component['easingOuts'];\n const shapes = component['shapes'];\n\n if (!Array.isArray(points) || !Array.isArray(easingIns) || !Array.isArray(easingOuts) || !Array.isArray(shapes)) {\n return undefined;\n }\n if (shapes.length !== 1 || !isRecord(shapes[0]) || shapes[0]['close'] !== true) {\n return undefined;\n }\n const indexes = shapes[0]['indexes'];\n\n if (!Array.isArray(indexes) || indexes.length === 0) {\n return undefined;\n }\n const IRPoints: IRMask['path']['points'] = [];\n const IRInTangents: IRMask['path']['inTangents'] = [];\n const IROutTangents: IRMask['path']['outTangents'] = [];\n\n for (const index of indexes) {\n if (!isRecord(index)) {\n return undefined;\n }\n const point = readIndexedVector(points, index['point']);\n const easingIn = readIndexedVector(easingIns, index['easingIn']);\n const easingOut = readIndexedVector(easingOuts, index['easingOut']);\n\n if (point == null || easingIn == null || easingOut == null) {\n return undefined;\n }\n IRPoints.push({ x: centerX + point[0] / ratio, y: centerY - point[1] / ratio });\n IRInTangents.push({ x: easingIn[0] / ratio, y: -easingIn[1] / ratio });\n IROutTangents.push({ x: easingOut[0] / ratio, y: -easingOut[1] / ratio });\n }\n\n return { points: IRPoints, inTangents: IRInTangents, outTangents: IROutTangents, closed: true };\n}\n\nfunction readIndexedVector(values: unknown[], index: unknown): [number, number] | undefined {\n return Number.isInteger(index) && typeof index === 'number' ? readVector2(values[index]) : undefined;\n}\n\nfunction readVector2(value: unknown, fallback?: [number, number]): [number, number] | undefined {\n if (value === undefined) {\n return fallback;\n }\n if (!isRecord(value)) {\n return undefined;\n }\n const x = readFiniteNumber(value['x']);\n const y = readFiniteNumber(value['y']);\n\n return x == null || y == null ? undefined : [x, y];\n}\n\nfunction isVector(value: unknown, expected: [number, number] | [number, number, number]): boolean {\n if (value === undefined) {\n return true;\n }\n if (!isRecord(value)) {\n return false;\n }\n const keys = ['x', 'y', 'z'] as const;\n\n return expected.every((expectedValue, index) => {\n const valueAtAxis = value[keys[index]];\n\n return typeof valueAtAxis === 'number' && nearlyEqual(valueAtAxis, expectedValue);\n });\n}\n\nfunction readFiniteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction nearlyEqual(left: number, right: number): boolean {\n return Math.abs(left - right) <= 1e-6;\n}\n\nfunction descriptorContainsAnyItem(descriptor: RawLayerDescriptor, itemIds: ReadonlySet<string>): boolean {\n return (descriptor.preservedData.sourceItemIds ?? [descriptor.itemId]).some(itemId => itemIds.has(itemId));\n}\n\nfunction createUnsupportedMaskDiagnostic(\n descriptor: RawLayerDescriptor,\n code: string,\n feature: string,\n message: string,\n field?: string,\n): ConversionDiagnostic {\n const path = `$.components[item=${JSON.stringify(descriptor.itemId)}].mask`;\n\n return {\n code,\n severity: 'warning',\n action: 'unsupported',\n path: field == null ? path : `${path}.${field}`,\n sourceId: descriptor.layer.id,\n feature,\n message,\n };\n}\n","import {\n ANIMATION_IR_SCHEMA_VERSION, assertIRScene, isIRId, type IRComposition, type IRAsset, type IRScene,\n type IRFontAsset, type IRImageAsset,\n} from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { DataType, ItemType } from '@galacean/effects-specification';\nimport { assembleIRComposition } from './assemble';\nimport { extractGEParticleSourceData } from './extract-particle-source-data';\nimport { resolveDataPathId } from '../common/data-path';\nimport { normalizeJsonValue } from '../common/json-normalization';\nimport { createId } from '../common/id';\nimport { buildSceneContext, getCompositionItemIds } from './parser/scene';\nimport { parseItemToLayer } from './parser/layer';\nimport { mergeNullSpritePairs, resolveHierarchy, type RawLayerDescriptor } from './post-process';\nimport { normalizeSingleGEMasks, type GEMaskNormalizationComposition } from './post-process/mask';\nimport type { GEAssetRegistry, GEToIROptions } from './types';\nimport type { GEToIRResult } from '../conversion';\nimport {\n GE_PRESERVED_DATA_VERSION, type GECompositionSourceBinding, type GEToIRPreservedData,\n} from '../preserved-data';\n\n/** Convert a GE scene to normalized IR plus adapter-owned preserved data. */\nexport function convertGEToIR(scene: Record<string, unknown>, options: GEToIROptions): GEToIRResult {\n const sourceCompositions = Array.isArray(scene['compositions'])\n ? scene['compositions'].filter(\n (value): value is Record<string, unknown> => value != null && typeof value === 'object' && !Array.isArray(value),\n )\n : [];\n const compositionIdBySourceId = new Map<string, string>();\n const compositionStartFrameBySourceId = new Map<string, number>();\n\n for (const [index, composition] of sourceCompositions.entries()) {\n const sourceId = typeof composition['id'] === 'string' ? composition['id'] : `composition-${index}`;\n const compositionId = isIRId(sourceId)\n ? sourceId\n : createId();\n const startTime = typeof composition['startTime'] === 'number' && Number.isFinite(composition['startTime'])\n ? composition['startTime']\n : 0;\n\n compositionIdBySourceId.set(sourceId, compositionId);\n compositionStartFrameBySourceId.set(sourceId, startTime * options.frameRate);\n }\n\n const diagnostics: ConversionDiagnostic[] = [];\n const compositions: IRComposition[] = [];\n const compositionBindings: Record<string, GECompositionSourceBinding> = {};\n const parsedCompositions: Array<GEMaskNormalizationComposition & { sourceItemOrder: string[] }> = [];\n const assetRegistry: GEAssetRegistry = {\n imageAssetById: new Map<string, IRImageAsset>(),\n imageAssetIdBySourceId: new Map(),\n fontAssetById: new Map<string, IRFontAsset>(),\n fontAssetIdByIdentity: new Map(),\n };\n let shouldPreserveSourceScene = false;\n\n for (const sourceComposition of sourceCompositions) {\n const sourceCompositionId = sourceComposition['id'];\n\n if (typeof sourceCompositionId !== 'string') {\n continue;\n }\n const ctx = buildSceneContext(\n scene,\n options,\n sourceCompositionId,\n compositionIdBySourceId,\n compositionStartFrameBySourceId,\n assetRegistry,\n diagnostics,\n );\n const itemIds = getCompositionItemIds(scene, sourceCompositionId);\n\n // Source Item types and referenced ParticleSystems cover unsupported items even when parsing yields no descriptor.\n shouldPreserveSourceScene ||= itemIds.some(\n itemId => {\n const item = ctx.itemById.get(itemId);\n const itemType = item?.['type'];\n\n return itemType === ItemType.composition || itemType === ItemType.particle ||\n referencesParticleSystem(item, ctx.componentById);\n },\n );\n const descriptors: RawLayerDescriptor[] = [];\n\n // GE 2.x CompositionComponent.items and IR layers both use back-to-front painter order.\n for (const itemId of itemIds) {\n const item = ctx.itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n const parsedLayer = parseItemToLayer(item, itemId, ctx);\n\n if (parsedLayer == null) {\n diagnostics.push({\n code: 'GE_UNSUPPORTED_ITEM',\n severity: 'warning',\n action: 'unsupported',\n path: `$.items[id=${JSON.stringify(itemId)}]`,\n sourceId: itemId,\n feature: String(item['type'] ?? 'unknown-item-type'),\n message: `GE item '${itemId}' cannot be represented by a supported Animation IR Layer and was omitted.`,\n });\n continue;\n }\n descriptors.push({ itemId, item, ...parsedLayer });\n }\n // Parsed types catch ParticleSystem components attached to Items whose declared type is not Particle.\n shouldPreserveSourceScene ||= descriptors.some(descriptor => descriptor.layer.type === 'particle');\n\n const mergedDescriptors = mergeNullSpritePairs(descriptors, ctx);\n\n parsedCompositions.push({\n sourceCompositionId,\n sourceItemOrder: itemIds,\n ctx,\n descriptors: mergedDescriptors,\n });\n }\n\n normalizeSingleGEMasks(parsedCompositions, diagnostics);\n\n for (const { sourceCompositionId, sourceItemOrder, ctx, descriptors } of parsedCompositions) {\n const layerDataById = Object.fromEntries(\n descriptors.map(descriptor => [descriptor.layer.id, descriptor.preservedData]),\n );\n\n resolveHierarchy(descriptors, ctx);\n compositionBindings[ctx.irCompositionId] = {\n sourceCompositionId,\n sourceItemOrder,\n layerDataById,\n };\n compositions.push(assembleIRComposition(descriptors.map(descriptor => descriptor.layer), ctx));\n }\n\n const sourceEntryCompositionId = scene['compositionId'];\n const entryCompositionId = typeof sourceEntryCompositionId === 'string'\n ? compositionIdBySourceId.get(sourceEntryCompositionId)\n : undefined;\n\n if (entryCompositionId == null) {\n throw new Error('[ge2ir] entry composition was not found');\n }\n const assets: IRAsset[] = [\n ...Array.from(assetRegistry.imageAssetById.values()),\n ...Array.from(assetRegistry.fontAssetById.values()),\n ];\n const irScene: IRScene = {\n format: 'animation-ir',\n schemaVersion: ANIMATION_IR_SCHEMA_VERSION,\n entryCompositionId,\n compositions,\n assets,\n };\n const preservedData: GEToIRPreservedData = {\n version: GE_PRESERVED_DATA_VERSION,\n ...(shouldPreserveSourceScene && { sourceScene: normalizeJsonValue(scene) }),\n compositionBindings,\n particleSourceData: { particleEffectGroups: [], layers: [] },\n };\n\n assertIRScene(irScene);\n preservedData.particleSourceData = extractGEParticleSourceData(irScene, preservedData, diagnostics);\n\n return { scene: irScene, preservedData, diagnostics };\n}\n\nfunction referencesParticleSystem(\n item: Record<string, unknown> | undefined,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n): boolean {\n const componentReferences = item?.['components'];\n\n return Array.isArray(componentReferences) && componentReferences.some(reference => {\n const componentId = resolveDataPathId(reference);\n\n return componentId != null && componentById.get(componentId)?.['dataType'] === DataType.ParticleSystem;\n });\n}\n","import type { EffectsLayerPreservedData, GEToIRPreservedData } from './preserved-data';\n\n/** Normalized field whose conflicting GE-owned Layer data should be removed. */\nexport type EffectsLayerPreservedDataInvalidationTarget =\n 'position' | 'rotation' | 'scale' | 'color' | 'opacity' | 'anchor' | 'asset' | 'mask' | 'precomp' | 'particle';\n\n/** Resolve GE-owned data by its scoped IR Composition and Layer identities. */\nexport function getEffectsLayerPreservedData(\n preservedData: GEToIRPreservedData | undefined,\n compositionId: string,\n layerId: string,\n): EffectsLayerPreservedData | undefined {\n return preservedData?.compositionBindings[compositionId]?.layerDataById[layerId];\n}\n\nconst EFFECTS_ANIMATION_DATA_KEYS = [\n 'positionOverLifetime',\n 'rotationOverLifetime',\n 'sizeOverLifetime',\n 'colorOverLifetime',\n 'textureSheetAnimation',\n] as const satisfies readonly (keyof EffectsLayerPreservedData)[];\n\nconst KEYS_BY_INVALIDATION_TARGET: Record<\n EffectsLayerPreservedDataInvalidationTarget,\n readonly (keyof EffectsLayerPreservedData)[]\n> = {\n position: ['positionOverLifetime'],\n rotation: ['rotationOverLifetime', 'itemEulerHintById', 'sourceHierarchy'],\n scale: ['sizeOverLifetime', 'sourceHierarchy'],\n color: ['colorOverLifetime', 'spriteStartColor'],\n opacity: ['colorOverLifetime'],\n anchor: ['sourceHierarchy', 'itemAnchorById'],\n asset: ['spriteSplits', 'textureSheetAnimation'],\n mask: ['mask'],\n precomp: ['precompContent'],\n particle: ['particleContent'],\n};\n\n/** Remove raw GE values that would otherwise shadow an edited normalized field. */\nexport function invalidateEffectsLayerPreservedData(\n preservedData: GEToIRPreservedData | undefined,\n compositionId: string,\n layerId: string,\n target: EffectsLayerPreservedDataInvalidationTarget,\n): (keyof EffectsLayerPreservedData)[] {\n const layerDataById = preservedData?.compositionBindings[compositionId]?.layerDataById;\n const layerData = layerDataById?.[layerId];\n\n if (layerData == null) {\n return [];\n }\n\n const removed: (keyof EffectsLayerPreservedData)[] = [];\n\n for (const key of KEYS_BY_INVALIDATION_TARGET[target]) {\n if (key in layerData) {\n delete layerData[key];\n removed.push(key);\n }\n }\n\n if (Object.keys(layerData).length === 0 && layerDataById != null) {\n delete layerDataById[layerId];\n }\n\n return removed;\n}\n\n/** Whether invalidating opacity would also discard a preserved GE color animation. */\nexport function hasEffectsColorAnimationPreservedData(layerData: EffectsLayerPreservedData | undefined): boolean {\n const color = layerData?.colorOverLifetime;\n\n return color != null && Object.keys(color).some(channelKey => channelKey !== 'opacity');\n}\n\n/** Whether the Layer retains any raw GE animation payload. */\nexport function hasEffectsAnimationPreservedData(layerData: EffectsLayerPreservedData | undefined): boolean {\n return layerData != null && EFFECTS_ANIMATION_DATA_KEYS.some(key => layerData[key] != null);\n}\n","import type { IRAsset, IRLayer, IRScene } from '@vvfx/animation-ir';\nimport {\n invalidateEffectsLayerPreservedData,\n type EffectsLayerPreservedDataInvalidationTarget,\n} from './layer-preserved-data';\nimport {\n assertGEToIRPreservedDataMatchesScene,\n type GEToIRPreservedData,\n} from './preserved-data';\n\nexport interface GEToIRPreservedDataChange {\n compositionId: string;\n layerId: string;\n field: string;\n}\n\nexport interface UpdateGEToIRPreservedDataOptions {\n onChange?: (change: GEToIRPreservedDataChange) => void;\n}\n\n/** Update a cloned GE preservation bundle to match edits made to normalized Animation IR. */\nexport function updateGEToIRPreservedData(\n baselineScene: IRScene,\n updatedScene: IRScene,\n preservedData: GEToIRPreservedData,\n options: UpdateGEToIRPreservedDataOptions = {},\n): GEToIRPreservedData {\n assertGEToIRPreservedDataMatchesScene(baselineScene, preservedData);\n\n const updatedPreservedData = structuredClone(preservedData);\n const updatedCompositionById = new Map(\n updatedScene.compositions.map(composition => [composition.id, composition] as const),\n );\n\n for (const baselineComposition of baselineScene.compositions) {\n const updatedComposition = updatedCompositionById.get(baselineComposition.id);\n const binding = updatedPreservedData.compositionBindings[baselineComposition.id];\n\n if (updatedComposition == null) {\n delete updatedPreservedData.compositionBindings[baselineComposition.id];\n\n continue;\n }\n if (binding == null) {\n continue;\n }\n\n const retainedIds = new Set(updatedComposition.layers.map(layer => layer.id));\n const baselineIds = baselineComposition.layers.map(layer => layer.id).filter(id => retainedIds.has(id));\n const baselineIdSet = new Set(baselineIds);\n const updatedIds = updatedComposition.layers.map(layer => layer.id).filter(id => baselineIdSet.has(id));\n\n if (baselineIds.some((id, index) => id !== updatedIds[index])) {\n const ownerByItemId = new Map<string, string>();\n\n for (const id of updatedIds) {\n for (const itemId of binding.layerDataById[id]?.sourceItemIds ?? []) {\n ownerByItemId.set(itemId, id);\n }\n }\n const itemsByLayer = new Map<string, string[]>();\n\n for (const itemId of binding.sourceItemOrder) {\n const owner = ownerByItemId.get(itemId);\n\n if (owner != null) {\n const items = itemsByLayer.get(owner) ?? [];\n\n items.push(itemId);\n itemsByLayer.set(owner, items);\n }\n }\n const orderedItems = updatedIds.flatMap(id => itemsByLayer.get(id) ?? []);\n let index = 0;\n\n binding.sourceItemOrder = binding.sourceItemOrder.map(id => ownerByItemId.has(id) ? orderedItems[index++] : id);\n }\n\n const updatedLayerById = new Map(updatedComposition.layers.map(layer => [layer.id, layer] as const));\n\n for (const baselineLayer of baselineComposition.layers) {\n const updatedLayer = updatedLayerById.get(baselineLayer.id);\n\n if (updatedLayer == null) {\n delete binding.layerDataById[baselineLayer.id];\n\n continue;\n }\n\n invalidateChangedLayerData(\n baselineScene,\n updatedScene,\n baselineComposition.id,\n baselineLayer,\n updatedLayer,\n updatedPreservedData,\n options,\n );\n }\n }\n\n reconcileParticleSourceData(updatedScene, updatedPreservedData);\n assertGEToIRPreservedDataMatchesScene(updatedScene, updatedPreservedData);\n\n return updatedPreservedData;\n}\n\nfunction reconcileParticleSourceData(scene: IRScene, preservedData: GEToIRPreservedData): void {\n const particleLayerIdsByComposition = new Map<string, Set<string>>();\n\n for (const composition of scene.compositions) {\n particleLayerIdsByComposition.set(\n composition.id,\n new Set(composition.layers.filter(layer => layer.type === 'particle').map(layer => layer.id)),\n );\n }\n\n preservedData.particleSourceData.layers = preservedData.particleSourceData.layers.filter(layer =>\n particleLayerIdsByComposition.get(layer.irCompositionId)?.has(layer.irLayerId) === true,\n );\n const referencedGroupIds = new Set(\n preservedData.particleSourceData.layers.map(layer => layer.effectGroupId),\n );\n\n preservedData.particleSourceData.particleEffectGroups =\n preservedData.particleSourceData.particleEffectGroups.filter(group => referencedGroupIds.has(group.id));\n}\n\nfunction invalidateChangedLayerData(\n baselineScene: IRScene,\n updatedScene: IRScene,\n compositionId: string,\n baselineLayer: IRLayer,\n updatedLayer: IRLayer,\n preservedData: GEToIRPreservedData,\n options: UpdateGEToIRPreservedDataOptions,\n): void {\n const targets = new Set<EffectsLayerPreservedDataInvalidationTarget>();\n\n if (baselineLayer.type !== updatedLayer.type) {\n targets.add('position');\n targets.add('rotation');\n targets.add('scale');\n targets.add('color');\n targets.add('opacity');\n targets.add('anchor');\n targets.add('asset');\n targets.add('mask');\n targets.add('precomp');\n targets.add('particle');\n } else {\n collectChangedTransformTargets(baselineLayer, updatedLayer, targets);\n\n if (!isValueEqual(baselineLayer.mask, updatedLayer.mask) || !isValueEqual(baselineLayer.matte, updatedLayer.matte)) {\n targets.add('mask');\n }\n if (baselineLayer.type === 'solid' && updatedLayer.type === 'solid' &&\n !isValueEqual(baselineLayer.content.color, updatedLayer.content.color)) {\n targets.add('color');\n }\n if (baselineLayer.type === 'image' && updatedLayer.type === 'image' &&\n hasImageAssetChanged(baselineScene.assets, updatedScene.assets, baselineLayer, updatedLayer)) {\n targets.add('asset');\n }\n if (baselineLayer.type === 'precomp' && updatedLayer.type === 'precomp' &&\n !isValueEqual(baselineLayer.content, updatedLayer.content)) {\n targets.add('precomp');\n }\n if (baselineLayer.type === 'particle' && updatedLayer.type === 'particle' &&\n hasParticleBurstStructureChanged(baselineLayer, updatedLayer)) {\n removeParticleBurstOffsets(preservedData, compositionId, baselineLayer.id, options);\n }\n }\n\n for (const target of targets) {\n const removedFields = invalidateEffectsLayerPreservedData(\n preservedData,\n compositionId,\n baselineLayer.id,\n target,\n );\n\n for (const field of removedFields) {\n options.onChange?.({ compositionId, layerId: baselineLayer.id, field });\n }\n }\n}\n\nfunction hasParticleBurstStructureChanged(\n baselineLayer: Extract<IRLayer, { type: 'particle' }>,\n updatedLayer: Extract<IRLayer, { type: 'particle' }>,\n): boolean {\n const baselineBursts = baselineLayer.content.emission.bursts ?? [];\n const updatedBursts = updatedLayer.content.emission.bursts ?? [];\n\n if (baselineBursts.length !== updatedBursts.length) {\n return true;\n }\n\n const matchedUpdatedIndices = new Set<number>();\n\n for (let baselineIndex = 0; baselineIndex < baselineBursts.length; baselineIndex++) {\n const matchingUpdatedIndex = updatedBursts.findIndex((updatedBurst, updatedIndex) =>\n !matchedUpdatedIndices.has(updatedIndex) && isValueEqual(baselineBursts[baselineIndex], updatedBurst),\n );\n\n if (matchingUpdatedIndex === -1) {\n continue;\n }\n if (matchingUpdatedIndex !== baselineIndex) {\n return true;\n }\n matchedUpdatedIndices.add(matchingUpdatedIndex);\n }\n\n return false;\n}\n\nfunction removeParticleBurstOffsets(\n preservedData: GEToIRPreservedData,\n compositionId: string,\n layerId: string,\n options: UpdateGEToIRPreservedDataOptions,\n): void {\n const particleContent = preservedData.compositionBindings[compositionId]?.layerDataById[layerId]?.particleContent;\n const emission = particleContent?.['emission'];\n\n if (!isRecord(emission) || !Object.hasOwn(emission, 'burstOffsets')) {\n return;\n }\n\n delete emission['burstOffsets'];\n options.onChange?.({\n compositionId,\n layerId,\n field: 'particleContent.emission.burstOffsets',\n });\n}\n\nfunction collectChangedTransformTargets(\n baselineLayer: IRLayer,\n updatedLayer: IRLayer,\n targets: Set<EffectsLayerPreservedDataInvalidationTarget>,\n): void {\n const baselineTransform = baselineLayer.transform;\n const updatedTransform = updatedLayer.transform;\n\n if (!isValueEqual(baselineTransform?.position, updatedTransform?.position)) {\n targets.add('position');\n }\n if (!isValueEqual(baselineTransform?.rotation, updatedTransform?.rotation)) {\n targets.add('rotation');\n }\n if (!isValueEqual(baselineTransform?.scale, updatedTransform?.scale)) {\n targets.add('scale');\n }\n if (!isValueEqual(baselineTransform?.anchor, updatedTransform?.anchor)) {\n targets.add('anchor');\n }\n if (!isValueEqual(baselineTransform?.opacity, updatedTransform?.opacity)) {\n targets.add('opacity');\n }\n}\n\nfunction hasImageAssetChanged(\n baselineAssets: IRAsset[],\n updatedAssets: IRAsset[],\n baselineLayer: Extract<IRLayer, { type: 'image' }>,\n updatedLayer: Extract<IRLayer, { type: 'image' }>,\n): boolean {\n if (baselineLayer.content.assetId !== updatedLayer.content.assetId) {\n return true;\n }\n\n const baselineAsset = baselineAssets.find(asset => asset.id === baselineLayer.content.assetId);\n const updatedAsset = updatedAssets.find(asset => asset.id === updatedLayer.content.assetId);\n\n return !isValueEqual(baselineAsset, updatedAsset);\n}\n\nfunction isValueEqual(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) {\n return true;\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n return Array.isArray(left) && Array.isArray(right) && left.length === right.length &&\n left.every((entry, index) => isValueEqual(entry, right[index]));\n }\n if (!isRecord(left) || !isRecord(right)) {\n return false;\n }\n\n const leftKeys = Object.keys(left).sort();\n const rightKeys = Object.keys(right).sort();\n\n return leftKeys.length === rightKeys.length && leftKeys.every(\n (key, index) => key === rightKeys[index] && isValueEqual(left[key], right[key]),\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n","import { DataType, ItemType } from '@galacean/effects-specification';\nimport { buildSceneCollectionIndex, resolveDataPathId, toDataPath, visitDataPathReferences } from '../common/data-path';\nimport { isRecord } from '../common/json-normalization';\nimport type { GEToIRPreservedData } from '../preserved-data';\nimport type { ResolvedGEParticlePlacement } from './merge-particle-scenes';\n\nconst FRAGMENT_COLLECTIONS = [\n 'images', 'fonts', 'plugins', 'components', 'geometries', 'materials',\n 'items', 'shaders', 'bins', 'textures', 'animations', 'miscs',\n] as const;\nconst OPTIONAL_FRAGMENT_COLLECTIONS = new Set<string>(['fonts', 'bins', 'textures']);\n\nexport interface ParticleFragment {\n scene: Record<string, unknown>;\n sourceCompositionId: string;\n rootItemIds: string[];\n}\n\n/** Extract one complete particle effect group from a restored GE scene. */\nexport function buildParticleFragment(\n sourceScene: Record<string, unknown>,\n preservedData: GEToIRPreservedData,\n placement: ResolvedGEParticlePlacement,\n): ParticleFragment {\n const compositionBinding = preservedData.compositionBindings[placement.irCompositionId];\n\n if (compositionBinding == null || compositionBinding.sourceCompositionId !== placement.effectGroupId) {\n throw new TypeError(\n `[ge-ir:particle-merge] Particle effect group '${placement.effectGroupId}' has no source GE binding.`,\n );\n }\n\n const sourceComposition = findComposition(sourceScene, compositionBinding.sourceCompositionId);\n const components = readRequiredRecordArray(sourceScene, 'components');\n const items = readRequiredRecordArray(sourceScene, 'items');\n const miscs = readRequiredRecordArray(sourceScene, 'miscs');\n const componentById = buildSceneCollectionIndex(components);\n const itemById = buildSceneCollectionIndex(items);\n const sourceRuntime = resolveCompositionRuntime(sourceComposition, componentById);\n const runtimeItemIds = readDataPathIds(sourceRuntime['items'], 'Source Composition items');\n const runtimeItemIdSet = new Set(runtimeItemIds);\n\n if (runtimeItemIdSet.size !== runtimeItemIds.length) {\n throw new TypeError('[ge-ir:particle-merge] Source Composition contains duplicate Item references.');\n }\n for (const itemId of runtimeItemIds) {\n if (!itemById.has(itemId)) {\n throw new TypeError(`[ge-ir:particle-merge] Source Composition references missing Item '${itemId}'.`);\n }\n }\n const particleComponentIds = components\n .filter(component => component['dataType'] === DataType.ParticleSystem)\n .filter(component => {\n const itemId = resolveDataPathId(component['item']);\n\n return itemId != null && runtimeItemIdSet.has(itemId);\n })\n .map(component => component['id'])\n .filter((id): id is string => typeof id === 'string');\n const boundComponentIds = preservedData.particleSourceData.layers\n .filter(binding => binding.effectGroupId === placement.effectGroupId)\n .map(binding =>\n preservedData.compositionBindings[binding.irCompositionId]?.layerDataById[binding.irLayerId]?.sourceComponentId,\n )\n .filter((id): id is string => id != null);\n\n if (\n new Set(boundComponentIds).size !== particleComponentIds.length ||\n particleComponentIds.some(id => !boundComponentIds.includes(id))\n ) {\n throw new TypeError(\n '[ge-ir:particle-merge] Trusted particle bindings must cover every source ParticleSystem exactly once.',\n );\n }\n const nestedCompositionItem = runtimeItemIds\n .map(itemId => itemById.get(itemId))\n .find(item => item?.['type'] === ItemType.composition);\n\n if (nestedCompositionItem != null) {\n throw new TypeError(\n `[ge-ir:particle-merge] Particle source Composition must be self-contained; Item ` +\n `'${readId(nestedCompositionItem, 'Composition Item')}' references another Composition.`,\n );\n }\n\n const sourceRuntimeId = sourceRuntime === sourceComposition ? undefined : readId(sourceRuntime, 'CompositionComponent');\n const hasNestedCompositionComponent = components.some(component => {\n const id = typeof component['id'] === 'string' ? component['id'] : undefined;\n const itemId = resolveDataPathId(component['item']);\n\n return component['dataType'] === DataType.CompositionComponent && id !== sourceRuntimeId &&\n itemId != null && runtimeItemIdSet.has(itemId);\n });\n\n if (hasNestedCompositionComponent) {\n throw new TypeError(\n '[ge-ir:particle-merge] Particle source Composition must not contain nested CompositionComponents.',\n );\n }\n const { retainedItemIds, ownedItemIds } = selectParticleItems(\n runtimeItemIds, itemById, componentById, preservedData, placement,\n );\n const retainedItemIdSet = new Set(retainedItemIds);\n const includedComponents: Record<string, unknown>[] = [];\n const includedComponentIds = new Set<string>();\n\n for (const component of components) {\n const id = typeof component['id'] === 'string' ? component['id'] : undefined;\n const itemId = resolveDataPathId(component['item']);\n const include = component['dataType'] === DataType.CompositionComponent\n ? id === sourceRuntimeId\n : itemId != null && ownedItemIds.has(itemId);\n\n if (include) {\n includedComponents.push(structuredClone(component));\n if (id != null) {\n includedComponentIds.add(id);\n }\n }\n }\n\n const includedItems = retainedItemIds.map(itemId => {\n const item = itemById.get(itemId);\n\n if (item == null) {\n throw new TypeError(`[ge-ir:particle-merge] Source Composition references missing Item '${itemId}'.`);\n }\n const copy = structuredClone(item);\n\n if (!ownedItemIds.has(itemId)) {\n copy['type'] = ItemType.null;\n copy['components'] = [];\n }\n\n if (copy['components'] !== undefined) {\n assertDataPathList(copy['components'], `Particle effect Item '${itemId}' components`);\n const missingComponentIds = copy['components']\n .map(resolveDataPathId)\n .filter((id): id is string => id != null && !includedComponentIds.has(id));\n\n if (missingComponentIds.length > 0) {\n throw new TypeError(\n `[ge-ir:particle-merge] Particle effect Item '${itemId}' references Components outside its group: ` +\n missingComponentIds.map(id => `'${id}'`).join(', '),\n );\n }\n }\n\n return copy;\n });\n const compositionCopy = structuredClone(sourceComposition);\n const runtimeCopy = sourceRuntimeId == null\n ? compositionCopy\n : includedComponents.find(component => component['id'] === sourceRuntimeId);\n\n if (runtimeCopy == null) {\n throw new TypeError('[ge-ir:particle-merge] Source CompositionComponent was not retained.');\n }\n\n runtimeCopy['items'] = retainedItemIds.map(toDataPath);\n const sourceSceneBindings = readOptionalRecordArray(\n sourceRuntime['sceneBindings'],\n 'Source Composition sceneBindings',\n );\n\n if (sourceSceneBindings.some(binding =>\n resolveDataPathId(binding['key']) == null || resolveDataPathId(binding['value']) == null)) {\n throw new TypeError(\n '[ge-ir:particle-merge] Source Composition sceneBindings must contain DataPath key/value pairs.',\n );\n }\n\n if (sourceSceneBindings.some(binding => !runtimeItemIdSet.has(resolveDataPathId(binding['value']) ?? ''))) {\n throw new TypeError('[ge-ir:particle-merge] Source sceneBindings reference Items outside the effect group.');\n }\n\n const sceneBindings = sourceSceneBindings.filter(binding => {\n const itemId = resolveDataPathId(binding['value']);\n\n return itemId != null && retainedItemIdSet.has(itemId);\n }).map(binding => {\n const trackId = resolveDataPathId(binding['key']);\n const itemId = resolveDataPathId(binding['value']);\n\n if (trackId == null || itemId == null || !runtimeItemIdSet.has(itemId)) {\n throw new TypeError(\n '[ge-ir:particle-merge] Source Composition sceneBindings must reference Items inside the effect group.',\n );\n }\n\n return structuredClone(binding);\n });\n\n runtimeCopy['sceneBindings'] = sceneBindings;\n const bindingTrackIds = sceneBindings.map(binding => resolveDataPathId(binding['key']));\n\n if (bindingTrackIds.some(id => id == null)) {\n throw new TypeError('[ge-ir:particle-merge] Source sceneBinding contains an invalid Timeline track reference.');\n }\n\n const timelineId = resolveDataPathId(sourceRuntime['timelineAsset']);\n const retainedMiscs = collectMiscClosure(\n miscs,\n timelineId,\n bindingTrackIds as string[],\n [...includedItems, ...includedComponents],\n );\n\n if (timelineId != null && bindingTrackIds.length > 0) {\n runtimeCopy['timelineAsset'] = toDataPath(timelineId);\n } else {\n delete runtimeCopy['timelineAsset'];\n }\n\n const fragmentScene: Record<string, unknown> = {\n ...structuredClone(sourceScene),\n compositionId: compositionCopy['id'],\n compositions: [compositionCopy],\n };\n\n for (const collectionName of FRAGMENT_COLLECTIONS) {\n fragmentScene[collectionName] = collectionName === 'components'\n ? includedComponents\n : collectionName === 'items'\n ? includedItems\n : collectionName === 'miscs'\n ? retainedMiscs\n : structuredClone(readFragmentCollection(sourceScene, collectionName));\n }\n\n if (placement.irLayerId != null) {\n visitDataPathReferences([includedItems, includedComponents, retainedMiscs], id => {\n if ((itemById.has(id) && !retainedItemIdSet.has(id)) ||\n (componentById.has(id) && !includedComponentIds.has(id))) {\n throw new TypeError(\n `[ge-ir:particle-merge] Independent placement references another system's object '${id}'; ` +\n 'use a shared group placement for coupled systems.',\n );\n }\n });\n }\n\n return {\n scene: fragmentScene,\n sourceCompositionId: compositionBinding.sourceCompositionId,\n rootItemIds: collectRootItemIds(includedItems),\n };\n}\n\nfunction selectParticleItems(\n runtimeItemIds: string[],\n itemById: ReadonlyMap<string, Record<string, unknown>>,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n preservedData: GEToIRPreservedData,\n placement: ResolvedGEParticlePlacement,\n): { retainedItemIds: string[]; ownedItemIds: Set<string> } {\n if (placement.irLayerId == null) {\n return { retainedItemIds: runtimeItemIds, ownedItemIds: new Set(runtimeItemIds) };\n }\n const bindings = preservedData.particleSourceData.layers\n .filter(layer => layer.effectGroupId === placement.effectGroupId)\n .sort((left, right) => left.sourceOrder - right.sourceOrder);\n const particleItemByLayer = new Map(bindings.map(binding => {\n const componentId = preservedData.compositionBindings[binding.irCompositionId]\n ?.layerDataById[binding.irLayerId]?.sourceComponentId;\n const component = componentId == null ? undefined : componentById.get(componentId);\n const itemId = resolveDataPathId(component?.['item']);\n\n if (itemId == null) {\n throw new TypeError(`[ge-ir:particle-merge] Missing ParticleSystem Item for '${binding.irLayerId}'.`);\n }\n\n return [binding.irLayerId, itemId] as const;\n }));\n const selectedItemId = particleItemByLayer.get(placement.irLayerId);\n const defaultOwner = particleItemByLayer.values().next().value;\n const particleItemIds = new Set(particleItemByLayer.values());\n const ownedItemIds = new Set<string>();\n const retained = new Set<string>();\n\n for (const itemId of runtimeItemIds) {\n const ancestors: string[] = [];\n let current: string | undefined = itemId;\n let owner: string | undefined;\n\n while (current != null) {\n if (ancestors.includes(current) || !itemById.has(current)) {\n throw new TypeError('[ge-ir:particle-merge] Particle Item hierarchy contains a cycle or missing parent.');\n }\n ancestors.push(current);\n if (owner == null && particleItemIds.has(current)) {\n owner = current;\n }\n current = readParentId(itemById.get(current)?.['parentId']);\n }\n // Group-level auxiliary renderers follow the first system exactly once.\n if ((owner ?? defaultOwner) === selectedItemId) {\n ownedItemIds.add(itemId);\n ancestors.forEach(id => retained.add(id));\n }\n }\n\n return { retainedItemIds: runtimeItemIds.filter(id => retained.has(id)), ownedItemIds };\n}\n\nexport function resolveCompositionRuntime(\n composition: Record<string, unknown>,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n): Record<string, unknown> {\n const componentIds = composition['components'] === undefined\n ? []\n : readDataPathIds(composition['components'], 'Composition components');\n\n if (componentIds.length === 0) {\n return composition;\n }\n const matches = componentIds\n .map(id => componentById.get(id))\n .filter(component => component?.['dataType'] === DataType.CompositionComponent);\n\n if (matches.length !== 1 || matches[0] == null) {\n throw new TypeError('[ge-ir:particle-merge] Composition must reference exactly one CompositionComponent.');\n }\n\n return matches[0];\n}\n\nfunction collectMiscClosure(\n miscs: Record<string, unknown>[],\n timelineId: string | undefined,\n bindingTrackIds: string[],\n seeds: Record<string, unknown>[],\n): Record<string, unknown>[] {\n const miscById = buildSceneCollectionIndex(miscs);\n\n if (timelineId != null && !miscById.has(timelineId)) {\n throw new TypeError(`[ge-ir:particle-merge] Source TimelineAsset '${timelineId}' is missing.`);\n }\n\n const pending = [...bindingTrackIds];\n\n for (const seed of seeds) {\n visitDataPathReferences(seed, id => {\n if (id !== timelineId && miscById.has(id)) {\n pending.push(id);\n }\n });\n }\n\n const retainedIds = new Set<string>();\n\n while (pending.length > 0) {\n const id = pending.shift();\n\n if (id == null || retainedIds.has(id)) {\n continue;\n }\n const misc = miscById.get(id);\n\n if (misc == null) {\n throw new TypeError(`[ge-ir:particle-merge] Source Timeline references missing misc '${id}'.`);\n }\n retainedIds.add(id);\n visitDataPathReferences(misc, referenceId => {\n if (miscById.has(referenceId) && !retainedIds.has(referenceId)) {\n pending.push(referenceId);\n }\n });\n }\n\n let timelineCopy: Record<string, unknown> | undefined;\n\n if (timelineId != null) {\n const sourceTimeline = miscById.get(timelineId);\n\n if (sourceTimeline == null) {\n throw new TypeError(`[ge-ir:particle-merge] Source TimelineAsset '${timelineId}' is missing.`);\n }\n timelineCopy = structuredClone(sourceTimeline);\n timelineCopy['tracks'] = bindingTrackIds.map(toDataPath);\n retainedIds.add(timelineId);\n }\n\n return miscs.flatMap(misc => {\n const id = typeof misc['id'] === 'string' ? misc['id'] : undefined;\n\n if (id == null || !retainedIds.has(id)) {\n return [];\n }\n\n return [id === timelineId && timelineCopy != null ? timelineCopy : structuredClone(misc)];\n });\n}\n\nfunction collectRootItemIds(items: Record<string, unknown>[]): string[] {\n const itemIds = new Set(items.map(item => item['id']).filter((id): id is string => typeof id === 'string'));\n\n return items.flatMap(item => {\n const id = typeof item['id'] === 'string' ? item['id'] : undefined;\n const parentId = readParentId(item['parentId']);\n\n return id != null && (parentId == null || !itemIds.has(parentId)) ? [id] : [];\n });\n}\n\nfunction findComposition(scene: Record<string, unknown>, compositionId: string): Record<string, unknown> {\n const composition = readRequiredRecordArray(scene, 'compositions').find(value => value['id'] === compositionId);\n\n if (composition == null) {\n throw new TypeError(`[ge-ir:particle-merge] Source Composition '${compositionId}' is missing.`);\n }\n\n return composition;\n}\n\nfunction readRequiredRecordArray(scene: Record<string, unknown>, field: string): Record<string, unknown>[] {\n const value = scene[field];\n\n if (!Array.isArray(value) || !value.every(isRecord)) {\n throw new TypeError(`[ge-ir:particle-merge] GE scene ${field} must be an array of objects.`);\n }\n\n return value;\n}\n\nfunction readOptionalRecordArray(value: unknown, label: string): Record<string, unknown>[] {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value) || !value.every(isRecord)) {\n throw new TypeError(`[ge-ir:particle-merge] ${label} must be an array of objects.`);\n }\n\n return value;\n}\n\nfunction readFragmentCollection(scene: Record<string, unknown>, field: string): unknown[] {\n const value = scene[field];\n\n if (value === undefined && OPTIONAL_FRAGMENT_COLLECTIONS.has(field)) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`[ge-ir:particle-merge] GE scene ${field} must be an array.`);\n }\n\n return value;\n}\n\nfunction readDataPathIds(value: unknown, label: string): string[] {\n assertDataPathList(value, label);\n\n return value.map(reference => resolveDataPathId(reference) as string);\n}\n\nfunction assertDataPathList(value: unknown, label: string): asserts value is unknown[] {\n if (!Array.isArray(value) || value.some(reference => resolveDataPathId(reference) == null)) {\n throw new TypeError(`[ge-ir:particle-merge] ${label} must contain DataPath references.`);\n }\n}\n\nfunction readParentId(value: unknown): string | undefined {\n return typeof value === 'string' ? value : resolveDataPathId(value);\n}\n\nfunction readId(value: Record<string, unknown>, label: string): string {\n const id = value['id'];\n\n if (typeof id !== 'string' || id === '') {\n throw new TypeError(`[ge-ir:particle-merge] ${label} must have a non-empty ID.`);\n }\n\n return id;\n}\n","import { DEFAULT_CAMERA_FOV, DEFAULT_CAMERA_Z } from '../common/coordinate-mapping';\nimport type { GEParticleAuthoringBounds } from '../preserved-data';\n\nexport interface GEParticleTargetRegion {\n width: number;\n height: number;\n center: readonly [x: number, y: number];\n}\n\nexport interface ParticleLayoutMappingOptions {\n targetRegion: GEParticleTargetRegion;\n hostComposition: Record<string, unknown>;\n sourceComposition: Record<string, unknown>;\n authoringBounds: readonly [x: number, y: number, width: number, height: number];\n}\n\nexport interface GEParticleLayoutTransform {\n position: { x: number; y: number; z: 0 };\n eulerHint: { x: 0; y: 0; z: 0 };\n scale: { x: number; y: number; z: 1 };\n}\n\ninterface CompositionViewport {\n previewSize: [width: number, height: number];\n worldSize: [width: number, height: number];\n}\n\n/** Map one planned particle region from pixel layout into a GE transform. */\nexport function mapParticleLayoutToGETransform(\n options: ParticleLayoutMappingOptions,\n): GEParticleLayoutTransform {\n const targetRegion = readTargetRegion(options.targetRegion);\n const hostViewport = readCompositionViewport(options.hostComposition, 'options.hostComposition');\n const sourceViewport = readCompositionViewport(options.sourceComposition, 'options.sourceComposition');\n const authoringBounds = readAuthoringBounds(\n options.authoringBounds,\n sourceViewport.previewSize,\n 'options.authoringBounds',\n );\n const targetCenter = pixelToWorld(hostViewport, targetRegion.center[0], targetRegion.center[1]);\n const targetSize = pixelSizeToWorld(hostViewport, targetRegion.width, targetRegion.height);\n const sourceSize = pixelSizeToWorld(sourceViewport, authoringBounds[2], authoringBounds[3]);\n const layoutScale = Math.min(targetSize[0] / sourceSize[0], targetSize[1] / sourceSize[1]);\n const sourceCenter = pixelToWorld(\n sourceViewport,\n authoringBounds[0] + authoringBounds[2] / 2,\n authoringBounds[1] + authoringBounds[3] / 2,\n );\n\n return {\n position: {\n x: targetCenter[0] - sourceCenter[0] * layoutScale,\n y: targetCenter[1] - sourceCenter[1] * layoutScale,\n z: 0,\n },\n eulerHint: { x: 0, y: 0, z: 0 },\n scale: { x: layoutScale, y: layoutScale, z: 1 },\n };\n}\n\nfunction readTargetRegion(value: GEParticleTargetRegion): GEParticleTargetRegion {\n if (!isPositiveFiniteNumber(value.width) || !isPositiveFiniteNumber(value.height)) {\n throw new TypeError('[ge-ir:particle-layout] options.targetRegion width and height must be positive and finite.');\n }\n if (!isFiniteVec2(value.center)) {\n throw new TypeError('[ge-ir:particle-layout] options.targetRegion.center must be a finite vec2.');\n }\n\n return value;\n}\n\nfunction readCompositionViewport(value: Record<string, unknown>, path: string): CompositionViewport {\n const previewSize = value['previewSize'];\n\n if (!isPositiveSize(previewSize)) {\n throw new TypeError(`[ge-ir:particle-layout] ${path}.previewSize must be a positive finite size.`);\n }\n const cameraValue = value['camera'];\n\n if (cameraValue !== undefined && !isRecord(cameraValue)) {\n throw new TypeError(`[ge-ir:particle-layout] ${path}.camera must be an object when present.`);\n }\n const camera = cameraValue ?? {};\n const position = camera['position'] ?? [0, 0, DEFAULT_CAMERA_Z];\n const fov = camera['fov'] ?? DEFAULT_CAMERA_FOV;\n\n if (!isFiniteVec3(position) || position[2] === 0) {\n throw new TypeError(`[ge-ir:particle-layout] ${path}.camera.position must be a finite vec3 with non-zero z.`);\n }\n if (!isFiniteNumber(fov) || fov <= 0 || fov >= 180) {\n throw new TypeError(`[ge-ir:particle-layout] ${path}.camera.fov must be finite and between 0 and 180.`);\n }\n const aspect = previewSize[0] / previewSize[1];\n const worldHeight = 2 * Math.abs(position[2]) * Math.tan((fov / 2) * Math.PI / 180);\n const worldSize: [number, number] = [worldHeight * aspect, worldHeight];\n\n return { previewSize, worldSize };\n}\n\nfunction readAuthoringBounds(\n value: readonly number[],\n previewSize: readonly [number, number],\n path: string,\n): GEParticleAuthoringBounds {\n if (\n value.length !== 4 || value.some(entry => !isFiniteNumber(entry)) ||\n value[0] < 0 || value[1] < 0 || value[2] <= 0 || value[3] <= 0 ||\n value[0] + value[2] > previewSize[0] || value[1] + value[3] > previewSize[1]\n ) {\n throw new TypeError(`[ge-ir:particle-layout] ${path} must be a positive rectangle inside source previewSize.`);\n }\n\n return [value[0], value[1], value[2], value[3]];\n}\n\nfunction pixelToWorld(viewport: CompositionViewport, x: number, y: number): [number, number] {\n return [\n (x - viewport.previewSize[0] / 2) * viewport.worldSize[0] / viewport.previewSize[0],\n (viewport.previewSize[1] / 2 - y) * viewport.worldSize[1] / viewport.previewSize[1],\n ];\n}\n\nfunction pixelSizeToWorld(viewport: CompositionViewport, width: number, height: number): [number, number] {\n return [\n width * viewport.worldSize[0] / viewport.previewSize[0],\n height * viewport.worldSize[1] / viewport.previewSize[1],\n ];\n}\n\nfunction isPositiveSize(value: unknown): value is [number, number] {\n return Array.isArray(value) && value.length === 2 && value.every(isPositiveFiniteNumber);\n}\n\nfunction isFiniteVec2(value: unknown): value is readonly [number, number] {\n return Array.isArray(value) && value.length === 2 && value.every(isFiniteNumber);\n}\n\nfunction isFiniteVec3(value: unknown): value is [number, number, number] {\n return Array.isArray(value) && value.length === 3 && value.every(isFiniteNumber);\n}\n\nfunction isPositiveFiniteNumber(value: unknown): value is number {\n return isFiniteNumber(value) && value > 0;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(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 {\n CameraClipMode, DataType, EndBehavior, ItemType, RenderLevel,\n ValueType,\n} from '@galacean/effects-specification';\nimport { DEFAULT_CAMERA_FOV } from '../common/coordinate-mapping';\nimport { buildSceneCollectionIndex, resolveDataPathId, toDataPath } from '../common/data-path';\nimport { createId } from '../common/id';\nimport { isRecord } from '../common/json-normalization';\nimport { buildTimelineTracks } from '../ir2ge/generator/timeline';\nimport { mapParticleLayoutToGETransform } from '../ir2ge/map-particle-layout-to-ge-transform';\nimport type { ResolvedGEParticlePlacement } from './merge-particle-scenes';\nimport { resolveCompositionRuntime, type ParticleFragment } from './particle-fragment';\n\nconst MERGED_COLLECTIONS = [\n 'images', 'fonts', 'plugins', 'components', 'geometries', 'materials',\n 'items', 'shaders', 'bins', 'textures', 'animations', 'miscs',\n] as const;\nconst OPTIONAL_MERGED_COLLECTIONS = new Set<string>(['fonts', 'bins', 'textures']);\n\ninterface AppendParticleFragmentOptions {\n usedIds: Set<string>;\n itemZById: Map<string, number>;\n wrapperItemIds: Set<string>;\n}\n\n/** Append one dependency-closed particle effect fragment to a GE host. */\nexport function appendParticleFragmentToGE(\n hostScene: Record<string, unknown>,\n fragment: ParticleFragment,\n placement: ResolvedGEParticlePlacement,\n options: AppendParticleFragmentOptions,\n): void {\n assertMatchingVersions(hostScene, fragment.scene);\n const namespaced = namespaceParticleFragment(fragment, options.usedIds);\n const sourceScene = namespaced.scene;\n const hostComposition = findEntryComposition(hostScene);\n const sourceComposition = findComposition(sourceScene, namespaced.sourceCompositionId);\n const hostComponents = readRecordArrayField(hostScene, 'components');\n const sourceComponents = readRecordArrayField(sourceScene, 'components');\n const hostRuntime = resolveCompositionRuntime(hostComposition, buildSceneCollectionIndex(hostComponents));\n const sourceRuntime = resolveCompositionRuntime(sourceComposition, buildSceneCollectionIndex(sourceComponents));\n const sourceRuntimeId = sourceRuntime === sourceComposition ? undefined : readRequiredId(sourceRuntime);\n const rootTransform = mapParticleLayoutToGETransform({\n targetRegion: {\n width: placement.width,\n height: placement.height,\n center: [placement.position[0], placement.position[1]],\n },\n hostComposition: mapCameraToVerticalFOV(hostComposition),\n sourceComposition: mapCameraToVerticalFOV(sourceComposition),\n authoringBounds: placement.authoringBounds,\n });\n const wrapperId = createUniqueId(options.usedIds);\n const hostDuration = readNonNegativeFiniteNumber(hostComposition['duration'], 'Host Composition duration');\n const sourceDuration = readNonNegativeFiniteNumber(sourceComposition['duration'], 'Particle Composition duration');\n const mergedDuration = Math.max(hostDuration, sourceDuration);\n const wrapper = createWrapperItem(wrapperId, placement.effectGroupId, mergedDuration, rootTransform);\n const sourceItems = readRecordArrayField(sourceScene, 'items');\n\n for (const item of sourceItems) {\n if (namespaced.rootItemIds.includes(readRequiredId(item))) {\n item['parentId'] = wrapperId;\n }\n }\n\n const sourceTimeline = resolveTimelineAsset(sourceScene, sourceRuntime);\n const hostTimeline = resolveTimelineAsset(hostScene, hostRuntime);\n const imageOffset = readArrayField(hostScene, 'images').length;\n\n adjustNumericTextureSources(readRecordArrayField(sourceScene, 'textures'), imageOffset);\n adjustBinaryPointers(sourceScene, hostScene['bins'] === undefined ? 0 : readArrayField(hostScene, 'bins').length);\n\n for (const collectionName of MERGED_COLLECTIONS) {\n const sourceValues = readArrayField(sourceScene, collectionName).filter(value => {\n if (collectionName === 'components' && sourceRuntimeId != null && isRecord(value)) {\n return value['id'] !== sourceRuntimeId;\n }\n if (collectionName === 'miscs' && sourceTimeline != null && isRecord(value)) {\n return value['id'] !== sourceTimeline['id'];\n }\n\n return true;\n });\n\n appendCollectionValues(hostScene, collectionName, sourceValues, options.usedIds);\n }\n\n readArrayField(hostScene, 'items').push(wrapper);\n const particleRefs = [...readDataPaths(sourceRuntime['items']), toDataPath(wrapperId)];\n const particleZ = placement.position[2];\n\n for (const reference of particleRefs) {\n const itemId = resolveDataPathId(reference);\n\n if (itemId != null) {\n options.itemZById.set(itemId, particleZ);\n }\n }\n\n const hostItemRefs = readMutableDataPaths(hostRuntime, 'items');\n const insertAt = findItemInsertionIndex(hostItemRefs, particleZ, options.itemZById);\n\n hostItemRefs.splice(insertAt, 0, ...particleRefs);\n const sourceBindings = readRecordArray(sourceRuntime['sceneBindings']).map(binding => structuredClone(binding));\n const hostBindings = readMutableRecordArray(hostRuntime, 'sceneBindings');\n\n hostBindings.push(...sourceBindings);\n mergeTimelineTracks(hostScene, hostRuntime, hostTimeline, sourceTimeline);\n const mergedTimeline = resolveTimelineAsset(hostScene, hostRuntime) ?? createTimelineAsset(\n hostScene,\n hostRuntime,\n options.usedIds,\n );\n const hostMiscs = readRecordArrayField(hostScene, 'miscs');\n const wrapperMiscStart = hostMiscs.length;\n const wrapperTrackId = buildTimelineTracks(\n { miscs: hostMiscs },\n 0,\n mergedDuration,\n EndBehavior.restart,\n {},\n ItemType.null,\n );\n\n for (const misc of hostMiscs.slice(wrapperMiscStart)) {\n options.usedIds.add(readRequiredId(misc));\n }\n hostBindings.push({ key: toDataPath(wrapperTrackId), value: toDataPath(wrapperId) });\n insertTimelineTracksByItemOrder(hostRuntime, mergedTimeline, [toDataPath(wrapperTrackId)]);\n\n hostComposition['duration'] = mergedDuration;\n options.wrapperItemIds.add(wrapperId);\n updateWrapperDurations(hostScene, options.wrapperItemIds, mergedDuration);\n synchronizeEntryItemPoolOrder(hostScene, hostRuntime);\n mergeGEPlayerVersion(hostScene, sourceScene);\n}\n\n// The layout formula consumes vertical FOV; GE portrait cameras store horizontal FOV.\nfunction mapCameraToVerticalFOV(composition: Record<string, unknown>): Record<string, unknown> {\n const camera = composition['camera'];\n const size = composition['previewSize'];\n\n if (!isRecord(camera) || camera['clipMode'] !== CameraClipMode.portrait ||\n !Array.isArray(size) || size.length !== 2 ||\n typeof size[0] !== 'number' || typeof size[1] !== 'number' ||\n !Number.isFinite(size[0]) || !Number.isFinite(size[1]) || size[0] <= 0 || size[1] <= 0) {\n return composition;\n }\n const fov = camera['fov'] ?? DEFAULT_CAMERA_FOV;\n\n if (typeof fov !== 'number' || !Number.isFinite(fov) || fov <= 0 || fov >= 180) {\n return composition;\n }\n const verticalFOV = 2 * Math.atan(Math.tan(fov * Math.PI / 360) * size[1] / size[0]) * 180 / Math.PI;\n\n return { ...composition, camera: { ...camera, fov: verticalFOV } };\n}\n\nexport function collectGEIds(value: unknown, ids = new Set<string>(), visited = new WeakSet<object>()): Set<string> {\n if (value == null || typeof value !== 'object' || visited.has(value)) {\n return ids;\n }\n visited.add(value);\n\n if (Array.isArray(value)) {\n value.forEach(entry => collectGEIds(entry, ids, visited));\n\n return ids;\n }\n\n const id = (value as Record<string, unknown>)['id'];\n\n if (typeof id === 'string' && id !== '') {\n ids.add(id);\n }\n Object.values(value).forEach(entry => collectGEIds(entry, ids, visited));\n\n return ids;\n}\n\nfunction namespaceParticleFragment(fragment: ParticleFragment, usedIds: Set<string>): ParticleFragment {\n const sourceIds = collectGEIds(fragment.scene);\n const idMap = new Map<string, string>();\n\n for (const sourceId of Array.from(sourceIds).sort()) {\n idMap.set(sourceId, createUniqueId(usedIds));\n }\n\n const scene = rewriteGEIds(fragment.scene, idMap) as Record<string, unknown>;\n const sourceCompositionId = idMap.get(fragment.sourceCompositionId);\n\n if (sourceCompositionId == null) {\n throw new TypeError('[ge-ir:particle-merge] Particle Fragment Composition ID was not namespaced.');\n }\n\n return {\n scene,\n sourceCompositionId,\n rootItemIds: fragment.rootItemIds.map(id => {\n const mapped = idMap.get(id);\n\n if (mapped == null) {\n throw new TypeError(`[ge-ir:particle-merge] Particle Fragment root Item '${id}' was not namespaced.`);\n }\n\n return mapped;\n }),\n };\n}\n\nfunction rewriteGEIds(value: unknown, idMap: ReadonlyMap<string, string>, visited = new WeakMap<object, unknown>()): unknown {\n if (value == null || typeof value !== 'object') {\n return value;\n }\n const existing = visited.get(value);\n\n if (existing !== undefined) {\n return existing;\n }\n if (Array.isArray(value)) {\n const output: unknown[] = [];\n\n visited.set(value, output);\n value.forEach(entry => output.push(rewriteGEIds(entry, idMap, visited)));\n\n return output;\n }\n\n const output: Record<string, unknown> = {};\n\n visited.set(value, output);\n for (const [key, entry] of Object.entries(value)) {\n if ((key === 'id' || key === 'parentId') && typeof entry === 'string') {\n output[key] = idMap.get(entry) ?? entry;\n } else {\n output[key] = rewriteGEIds(entry, idMap, visited);\n }\n }\n\n return output;\n}\n\nfunction createWrapperItem(\n id: string,\n effectGroupId: string,\n duration: number,\n transform: ReturnType<typeof mapParticleLayoutToGETransform>,\n): Record<string, unknown> {\n return {\n id,\n name: `particle_root:${effectGroupId}`,\n duration,\n type: ItemType.null,\n visible: true,\n endBehavior: EndBehavior.restart,\n delay: 0,\n renderLevel: RenderLevel.BPlus,\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform,\n dataType: DataType.VFXItemData,\n };\n}\n\nfunction mergeTimelineTracks(\n hostScene: Record<string, unknown>,\n hostRuntime: Record<string, unknown>,\n hostTimeline: Record<string, unknown> | undefined,\n sourceTimeline: Record<string, unknown> | undefined,\n): void {\n if (sourceTimeline == null) {\n return;\n }\n\n const sourceTracks = readDataPaths(sourceTimeline['tracks']);\n\n if (sourceTracks.length === 0) {\n return;\n }\n if (hostTimeline == null) {\n readArrayField(hostScene, 'miscs').push(sourceTimeline);\n hostRuntime['timelineAsset'] = toDataPath(readRequiredId(sourceTimeline));\n\n return;\n }\n\n insertTimelineTracksByItemOrder(hostRuntime, hostTimeline, sourceTracks);\n}\n\nfunction insertTimelineTracksByItemOrder(\n runtime: Record<string, unknown>,\n timeline: Record<string, unknown>,\n tracks: unknown[],\n): void {\n const hostTracks = readMutableDataPaths(timeline, 'tracks');\n\n const hostItemOrder = new Map(\n readDataPaths(runtime['items']).flatMap((reference, index) => {\n const id = resolveDataPathId(reference);\n\n return id == null ? [] : [[id, index] as const];\n }),\n );\n const trackToItem = new Map(\n readRecordArray(runtime['sceneBindings']).flatMap(binding => {\n const trackId = resolveDataPathId(binding['key']);\n const itemId = resolveDataPathId(binding['value']);\n\n return trackId == null || itemId == null ? [] : [[trackId, itemId] as const];\n }),\n );\n const sourcePositions = tracks.flatMap(track => {\n const trackId = resolveDataPathId(track);\n const itemId = trackId == null ? undefined : trackToItem.get(trackId);\n const position = itemId == null ? undefined : hostItemOrder.get(itemId);\n\n return position == null ? [] : [position];\n });\n\n if (sourcePositions.length === 0) {\n hostTracks.push(...tracks);\n\n return;\n }\n\n const sourcePosition = Math.min(...sourcePositions);\n let insertAt = hostTracks.length;\n\n for (const [index, track] of hostTracks.entries()) {\n const trackId = resolveDataPathId(track);\n const itemId = trackId == null ? undefined : trackToItem.get(trackId);\n const itemPosition = itemId == null ? undefined : hostItemOrder.get(itemId);\n\n if (itemPosition != null && itemPosition > sourcePosition) {\n insertAt = index;\n\n break;\n }\n }\n hostTracks.splice(insertAt, 0, ...tracks);\n}\n\nfunction createTimelineAsset(\n hostScene: Record<string, unknown>,\n hostRuntime: Record<string, unknown>,\n usedIds: Set<string>,\n): Record<string, unknown> {\n const id = createUniqueId(usedIds);\n const timeline: Record<string, unknown> = {\n id,\n dataType: DataType.TimelineAsset,\n tracks: [],\n };\n\n readArrayField(hostScene, 'miscs').push(timeline);\n hostRuntime['timelineAsset'] = toDataPath(id);\n\n return timeline;\n}\n\nfunction updateWrapperDurations(\n scene: Record<string, unknown>,\n wrapperItemIds: ReadonlySet<string>,\n duration: number,\n): void {\n for (const item of readRecordArrayField(scene, 'items')) {\n if (typeof item['id'] === 'string' && wrapperItemIds.has(item['id'])) {\n item['duration'] = duration;\n }\n }\n}\n\n/** Keep the entry Composition order consistent in both GE Item order signals. */\nfunction synchronizeEntryItemPoolOrder(\n scene: Record<string, unknown>,\n runtime: Record<string, unknown>,\n): void {\n const itemRefs = readDataPaths(runtime['items']);\n const items = readRecordArrayField(scene, 'items');\n const itemById = buildSceneCollectionIndex(items);\n const orderedItemIds = itemRefs.map(reference => {\n const itemId = resolveDataPathId(reference);\n\n if (itemId == null || !itemById.has(itemId)) {\n throw new TypeError(`[ge-ir:particle-merge] Entry Composition Item '${String(itemId)}' is missing.`);\n }\n\n return itemId;\n });\n const entryItemIds = new Set(orderedItemIds);\n\n if (entryItemIds.size !== orderedItemIds.length) {\n throw new TypeError('[ge-ir:particle-merge] Entry Composition contains duplicate Item references.');\n }\n\n let orderedIndex = 0;\n\n scene['items'] = items.map(item => {\n const itemId = readRequiredId(item);\n\n if (!entryItemIds.has(itemId)) {\n return item;\n }\n const nextId = orderedItemIds[orderedIndex];\n const nextItem = nextId == null ? undefined : itemById.get(nextId);\n\n orderedIndex += 1;\n if (nextItem == null) {\n throw new TypeError(`[ge-ir:particle-merge] Entry Composition Item '${String(nextId)}' is missing.`);\n }\n\n return nextItem;\n });\n}\n\nfunction findItemInsertionIndex(\n itemRefs: unknown[],\n particleZ: number,\n itemZById: ReadonlyMap<string, number>,\n): number {\n for (const [index, reference] of itemRefs.entries()) {\n const itemId = resolveDataPathId(reference);\n const itemZ = itemId == null ? 0 : (itemZById.get(itemId) ?? 0);\n\n if (particleZ < itemZ) {\n return index;\n }\n }\n\n return itemRefs.length;\n}\n\nfunction appendCollectionValues(\n hostScene: Record<string, unknown>,\n collectionName: string,\n values: unknown[],\n usedIds: Set<string>,\n): void {\n const target = readMutableCollection(hostScene, collectionName);\n\n for (const value of values) {\n const id = isRecord(value) && typeof value['id'] === 'string' ? value['id'] : undefined;\n\n if (id != null && target.some(entry => isRecord(entry) && entry['id'] === id)) {\n throw new TypeError(`[ge-ir:particle-merge] GE ID '${id}' collides in ${collectionName}.`);\n }\n target.push(value);\n if (id != null) {\n usedIds.add(id);\n }\n }\n}\n\nfunction readMutableCollection(scene: Record<string, unknown>, field: string): unknown[] {\n if (scene[field] === undefined && OPTIONAL_MERGED_COLLECTIONS.has(field)) {\n scene[field] = [];\n }\n\n return readArrayField(scene, field);\n}\n\nfunction adjustBinaryPointers(value: unknown, binOffset: number, visited = new WeakSet<object>()): void {\n if (value == null || typeof value !== 'object' || visited.has(value)) {\n return;\n }\n visited.add(value);\n if (Array.isArray(value) && value.length === 2 && value[0] === ValueType.BINARY && Array.isArray(value[1])) {\n const pointer: unknown[] = value[1];\n const index = pointer[0];\n\n if (typeof index === 'number' && Number.isInteger(index) && index >= 0) {\n pointer[0] = index + binOffset;\n\n return;\n }\n }\n for (const child of Object.values(value)) {\n adjustBinaryPointers(child, binOffset, visited);\n }\n}\n\nfunction adjustNumericTextureSources(textures: Record<string, unknown>[], imageOffset: number): void {\n for (const texture of textures) {\n const source = texture['source'];\n\n if (typeof source === 'number' && Number.isSafeInteger(source) && source >= 0) {\n texture['source'] = source + imageOffset;\n }\n }\n}\n\nfunction resolveTimelineAsset(\n scene: Record<string, unknown>,\n runtime: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const timelineId = resolveDataPathId(runtime['timelineAsset']);\n\n if (timelineId == null) {\n return undefined;\n }\n const matches = readRecordArrayField(scene, 'miscs').filter(value => value['id'] === timelineId);\n\n if (matches.length !== 1 || matches[0]['dataType'] !== DataType.TimelineAsset) {\n throw new TypeError(`[ge-ir:particle-merge] TimelineAsset '${timelineId}' does not resolve exactly once.`);\n }\n if (!Array.isArray(matches[0]['tracks'])) {\n throw new TypeError(`[ge-ir:particle-merge] TimelineAsset '${timelineId}' tracks must be an array.`);\n }\n\n return matches[0];\n}\n\nfunction findEntryComposition(scene: Record<string, unknown>): Record<string, unknown> {\n const compositionId = scene['compositionId'];\n\n if (typeof compositionId !== 'string' || compositionId === '') {\n throw new TypeError('[ge-ir:particle-merge] Host scene compositionId must be a non-empty string.');\n }\n\n return findComposition(scene, compositionId);\n}\n\nfunction findComposition(scene: Record<string, unknown>, id: string): Record<string, unknown> {\n const composition = readRecordArrayField(scene, 'compositions').find(value => value['id'] === id);\n\n if (composition == null) {\n throw new TypeError(`[ge-ir:particle-merge] Composition '${id}' is missing.`);\n }\n\n return composition;\n}\n\nfunction assertMatchingVersions(hostScene: Record<string, unknown>, sourceScene: Record<string, unknown>): void {\n const hostVersion = hostScene['version'];\n const sourceVersion = sourceScene['version'];\n\n if (typeof hostVersion !== 'string' || hostVersion === '' || hostVersion !== sourceVersion) {\n throw new TypeError(\n `[ge-ir:particle-merge] Host and Particle Fragment GE versions must match ` +\n `(host=${String(hostVersion)}, particle=${String(sourceVersion)}).`,\n );\n }\n}\n\nexport function mergeGEPlayerVersion(\n hostScene: Record<string, unknown>,\n sourceScene: Record<string, unknown>,\n): void {\n const hostPlayer = isRecord(hostScene['playerVersion']) ? hostScene['playerVersion'] : {};\n const sourcePlayer = isRecord(sourceScene['playerVersion']) ? sourceScene['playerVersion'] : {};\n const hostWeb = typeof hostPlayer['web'] === 'string' ? hostPlayer['web'] : '';\n const sourceWeb = typeof sourcePlayer['web'] === 'string' ? sourcePlayer['web'] : '';\n\n hostScene['playerVersion'] = {\n ...sourcePlayer,\n ...hostPlayer,\n ...(sourceWeb !== '' && compareNumericVersions(sourceWeb, hostWeb) > 0 && { web: sourceWeb }),\n };\n}\n\nfunction compareNumericVersions(left: string, right: string): number {\n const leftParts = left.split(/\\D+/).filter(Boolean).map(Number);\n const rightParts = right.split(/\\D+/).filter(Boolean).map(Number);\n const length = Math.max(leftParts.length, rightParts.length);\n\n for (let index = 0; index < length; index++) {\n const difference = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);\n\n if (difference !== 0) {\n return difference;\n }\n }\n\n return 0;\n}\n\nfunction createUniqueId(usedIds: Set<string>): string {\n let id = createId();\n\n while (usedIds.has(id)) {\n id = createId();\n }\n usedIds.add(id);\n\n return id;\n}\n\nfunction readRequiredId(value: Record<string, unknown>): string {\n const id = value['id'];\n\n if (typeof id !== 'string' || id === '') {\n throw new TypeError('[ge-ir:particle-merge] GE object must have a non-empty ID.');\n }\n\n return id;\n}\n\nfunction readNonNegativeFiniteNumber(value: unknown, label: string): number {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 0) {\n throw new TypeError(`[ge-ir:particle-merge] ${label} must be a non-negative finite number.`);\n }\n\n return value;\n}\n\nfunction readArrayField(scene: Record<string, unknown>, field: string): unknown[] {\n const value = scene[field];\n\n if (!Array.isArray(value)) {\n throw new TypeError(`[ge-ir:particle-merge] GE scene ${field} must be an array.`);\n }\n\n return value;\n}\n\nfunction readRecordArrayField(scene: Record<string, unknown>, field: string): Record<string, unknown>[] {\n const value = readArrayField(scene, field);\n\n if (!value.every(isRecord)) {\n throw new TypeError(`[ge-ir:particle-merge] GE scene ${field} must contain objects.`);\n }\n\n return value;\n}\n\nfunction readRecordArray(value: unknown): Record<string, unknown>[] {\n return Array.isArray(value) ? value.filter(isRecord) : [];\n}\n\nfunction readDataPaths(value: unknown): unknown[] {\n if (!Array.isArray(value) || value.some(entry => resolveDataPathId(entry) == null)) {\n throw new TypeError('[ge-ir:particle-merge] GE DataPath list is invalid.');\n }\n\n return value;\n}\n\nfunction readMutableDataPaths(owner: Record<string, unknown>, field: string): unknown[] {\n const value = owner[field];\n\n if (!Array.isArray(value)) {\n owner[field] = [];\n\n return owner[field] as unknown[];\n }\n if (value.some(entry => resolveDataPathId(entry) == null)) {\n throw new TypeError(`[ge-ir:particle-merge] ${field} must contain DataPath references.`);\n }\n\n return value;\n}\n\nfunction readMutableRecordArray(owner: Record<string, unknown>, field: string): Record<string, unknown>[] {\n const value = owner[field];\n\n if (!Array.isArray(value)) {\n owner[field] = [];\n\n return owner[field] as Record<string, unknown>[];\n }\n if (!value.every(isRecord)) {\n throw new TypeError(`[ge-ir:particle-merge] ${field} must contain objects.`);\n }\n\n return value;\n}\n","import type { JSONScene } from '@galacean/effects-specification';\nimport { resolveDataPathId } from '../common/data-path';\nimport { isRecord } from '../common/json-normalization';\nimport type { GEParticleAuthoringBounds, GEToIRPreservedData } from '../preserved-data';\nimport { buildParticleFragment } from './particle-fragment';\nimport { appendParticleFragmentToGE, collectGEIds, mergeGEPlayerVersion } from './merge-particle-fragment';\n\n/** Host-canvas placement for an effect group or one bound particle system. */\nexport interface GEParticlePlacement {\n effectGroupId: string;\n irLayerId?: string;\n width: number;\n height: number;\n position: readonly [x: number, y: number, z: number];\n}\n\nexport interface ParticleSceneMergeInput {\n scene: unknown;\n preservedData: GEToIRPreservedData;\n placements: readonly GEParticlePlacement[];\n}\n\nexport interface ResolvedGEParticlePlacement extends GEParticlePlacement {\n irCompositionId: string;\n authoringBounds: Readonly<GEParticleAuthoringBounds>;\n}\n\n/** Merge multiple restored particle GE scenes while preserving one shared painter-order calculation. */\nexport function mergeParticleScenes(\n hostScene: unknown,\n sources: readonly ParticleSceneMergeInput[],\n hostStackingOrder?: ReadonlyMap<string, number>,\n): JSONScene {\n if (!isRecord(hostScene)) {\n throw new TypeError('[ge-ir:particle-merge] hostScene must be an object.');\n }\n if (!Array.isArray(sources)) {\n throw new TypeError('[ge-ir:particle-merge] sources must be an array.');\n }\n\n const mergedScene = structuredClone(hostScene);\n const usedIds = collectGEIds(mergedScene);\n const itemZById = hostStackingOrder != null ? new Map(hostStackingOrder) : collectHostItemZValues(mergedScene);\n const wrapperItemIds = new Set<string>();\n\n for (const [sourceIndex, input] of sources.entries()) {\n const path = `sources[${String(sourceIndex)}]`;\n\n if (!isRecord(input)) {\n throw new TypeError(`[ge-ir:particle-merge] ${path} must be an object.`);\n }\n if (!isRecord(input.scene)) {\n throw new TypeError(`[ge-ir:particle-merge] ${path}.scene must be an object.`);\n }\n if (!isRecord(input.preservedData)) {\n throw new TypeError(`[ge-ir:particle-merge] ${path}.preservedData must be an object.`);\n }\n\n const preservedData = input.preservedData as unknown as GEToIRPreservedData;\n const placements = resolveParticlePlacements(input.placements, preservedData);\n const sourceScene = preservedData.sourceScene;\n\n if (sourceScene == null) {\n throw new TypeError('[ge-ir:particle-merge] Particle preserved data must contain its source GE scene.');\n }\n assertMatchingParticleVersions(sourceScene, input.scene);\n const restoredParticleScene = structuredClone(input.scene);\n\n mergeGEPlayerVersion(restoredParticleScene, sourceScene);\n\n for (const placement of placements) {\n const fragment = buildParticleFragment(restoredParticleScene, preservedData, placement);\n\n appendParticleFragmentToGE(mergedScene, fragment, placement, {\n usedIds,\n itemZById,\n wrapperItemIds,\n });\n }\n }\n\n return mergedScene as unknown as JSONScene;\n}\n\nfunction assertMatchingParticleVersions(\n sourceScene: Record<string, unknown>,\n particleScene: Record<string, unknown>,\n): void {\n const sourceVersion = sourceScene['version'];\n const particleVersion = particleScene['version'];\n\n if (typeof sourceVersion !== 'string' || sourceVersion === '' || sourceVersion !== particleVersion) {\n throw new TypeError(\n '[ge-ir:particle-merge] Restored and preserved particle GE versions must match ' +\n `(restored=${String(particleVersion)}, preserved=${String(sourceVersion)}).`,\n );\n }\n}\n\nfunction resolveParticlePlacements(\n value: unknown,\n preservedData: GEToIRPreservedData,\n): ResolvedGEParticlePlacement[] {\n if (!Array.isArray(value)) {\n throw new TypeError('[ge-ir:particle-merge] options.placements must be an array.');\n }\n\n const sourceData = preservedData.particleSourceData;\n\n if (!Array.isArray(sourceData?.particleEffectGroups) || !Array.isArray(sourceData.layers)) {\n throw new TypeError('[ge-ir:particle-merge] options.preservedData.particleSourceData is invalid.');\n }\n const groups = new Map(sourceData.particleEffectGroups.map(group => [group.id, group]));\n const placements: ResolvedGEParticlePlacement[] = [];\n\n for (const [index, entry] of value.entries()) {\n const path = `options.placements[${String(index)}]`;\n\n if (!isRecord(entry) || typeof entry['effectGroupId'] !== 'string') {\n throw new TypeError(`[ge-ir:particle-merge] ${path} must identify a particle effect group.`);\n }\n const group = groups.get(entry['effectGroupId']);\n const irLayerId = entry['irLayerId'];\n\n if (group == null) {\n throw new TypeError(`[ge-ir:particle-merge] ${path} does not match trusted particle effect group.`);\n }\n if (irLayerId !== undefined && (typeof irLayerId !== 'string' || !sourceData.layers.some(layer =>\n layer.effectGroupId === group.id && layer.irLayerId === irLayerId))) {\n throw new TypeError(`[ge-ir:particle-merge] ${path}.irLayerId does not match a trusted Particle Layer.`);\n }\n if (!isPositiveFiniteNumber(entry['width']) || !isPositiveFiniteNumber(entry['height']) ||\n !isFiniteTuple(entry['position'], 3)) {\n throw new TypeError(`[ge-ir:particle-merge] ${path} requires positive dimensions and a finite position.`);\n }\n placements.push({\n effectGroupId: group.id,\n ...(typeof irLayerId === 'string' && { irLayerId }),\n irCompositionId: group.irCompositionId,\n authoringBounds: [...group.authoringBounds],\n width: entry['width'],\n height: entry['height'],\n position: [entry['position'][0], entry['position'][1], entry['position'][2]],\n });\n }\n\n return sourceData.particleEffectGroups.flatMap(group => {\n const selected = placements.filter(placement => placement.effectGroupId === group.id);\n const layers = sourceData.layers.filter(layer => layer.effectGroupId === group.id)\n .sort((left, right) => left.sourceOrder - right.sourceOrder);\n\n if (selected.length === 1 && selected[0].irLayerId == null) {\n return selected;\n }\n if (selected.length !== layers.length || selected.some(placement => placement.irLayerId == null) ||\n new Set(selected.map(placement => placement.irLayerId)).size !== layers.length) {\n throw new TypeError(\n `[ge-ir:particle-merge] Group '${group.id}' requires one group placement or exactly one placement per system.`,\n );\n }\n\n return layers.map(layer => {\n const placement = selected.find(entry => entry.irLayerId === layer.irLayerId);\n\n if (placement == null) {\n throw new TypeError(`[ge-ir:particle-merge] Missing placement for Particle Layer '${layer.irLayerId}'.`);\n }\n\n return placement;\n });\n });\n}\n\nfunction collectHostItemZValues(scene: Record<string, unknown>): Map<string, number> {\n const itemById = new Map<string, Record<string, unknown>>();\n\n for (const item of readRecordArray(scene['items'])) {\n const id = item['id'];\n\n if (typeof id === 'string') {\n itemById.set(id, item);\n }\n }\n\n const itemZById = new Map<string, number>();\n\n for (const itemId of itemById.keys()) {\n resolveItemZ(itemId, itemById, itemZById, new Set());\n }\n\n return itemZById;\n}\n\nfunction resolveItemZ(\n itemId: string,\n itemById: ReadonlyMap<string, Record<string, unknown>>,\n itemZById: Map<string, number>,\n pending: Set<string>,\n): number {\n const cached = itemZById.get(itemId);\n\n if (cached != null) {\n return cached;\n }\n if (pending.has(itemId)) {\n throw new TypeError(`[ge-ir:particle-merge] Host Item parent cycle contains '${itemId}'.`);\n }\n pending.add(itemId);\n const item = itemById.get(itemId);\n const transform = isRecord(item?.['transform']) ? item['transform'] : undefined;\n const position = isRecord(transform?.['position']) ? transform['position'] : undefined;\n const localZ = typeof position?.['z'] === 'number' && Number.isFinite(position['z']) ? position['z'] : 0;\n const parentId = readParentId(item?.['parentId']);\n\n if (parentId != null && !itemById.has(parentId)) {\n throw new TypeError(`[ge-ir:particle-merge] Host Item '${itemId}' references missing parent '${parentId}'.`);\n }\n const parentZ = parentId != null && itemById.has(parentId)\n ? resolveItemZ(parentId, itemById, itemZById, pending)\n : 0;\n const z = localZ + parentZ;\n\n pending.delete(itemId);\n itemZById.set(itemId, z);\n\n return z;\n}\n\nfunction readRecordArray(value: unknown): Record<string, unknown>[] {\n if (!Array.isArray(value) || !value.every(isRecord)) {\n throw new TypeError('[ge-ir:particle-merge] Host scene items must be an array of objects.');\n }\n\n return value;\n}\n\nfunction readParentId(value: unknown): string | undefined {\n return typeof value === 'string' ? value : resolveDataPathId(value);\n}\n\nfunction isFiniteTuple(value: unknown, length: number): value is number[] {\n return Array.isArray(value) && value.length === length && value.every(\n entry => typeof entry === 'number' && Number.isFinite(entry),\n );\n}\n\nfunction isPositiveFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value > 0;\n}\n"],"names":["_type_of","obj","Symbol","_array_like_to_array","arr","len","length","i","arr2","Array","_unsupported_iterable_to_array","o","minLen","n","Object","prototype","toString","call","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","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","convert3dTo2dPoint","effectiveRatio","abs","pixelX","pixelY","OMIT","isRecord","normalizeJsonValue","normalized","normalize","path","inArray","undefined","Number","isFinite","is","map","item","index","normalizedItem","Reflect","getPrototypeOf","result","entries","key","toDataPath","id","buildSceneCollectionIndex","collection","entryById","Map","entry","set","resolveDataPath","collectionIndex","reference","resolveDataPathId","get","visitDataPathReferences","visit","visited","WeakSet","has","add","referenceId","values","createId","v4","replaceAll","roundNumber","precision","factor","round","lerp","a","b","_extends","assign","target","arguments","source","hasOwnProperty","apply","mergePreservedResources","generated","preservedData","collectionName","mergeCollection","asArray","sourceScene","filter","isExcludedCollectionEntry","excluded","sourceCompositionIds","Set","compositionBindings","binding","sourceCompositionId","collectRegeneratedGraphIds","collectionNames","asRecordArray","REGENERATED_GRAPH_COLLECTIONS","REFERENCE_OWNER_COLLECTIONS","generatedScene","buildSourceGraphIndex","compositions","components","images","items","miscs","textures","collectSourceGraph","protectRetainedResourceReferences","itemIdsByParentId","buildItemIdsByParentId","collected","childId","collectNumericTextureSource","imageId","protectedResources","collectReferencedResources","textureId","delete","resources","texture","collect","isSafeInteger","itemId","parentId","childIds","push","preserved","seen","collectionEntryKey","JSON","stringify","DEFAULT_PLAYER_VERSION","web","native","assembleGEScene","irScene","collector","generatedCompositions","duration","ir","itemBindings","timelineAssetId","timelineBindings","objectBindingTrackId","objectBindingTrackRefs","timelineAsset","dataType","TimelineAsset","tracks","compositionComponentId","sceneBindings","allItemRefs","compositionComponent","CompositionComponent","composition","entryCompositionId","deriveDuration","startTime","inPoint","frameRate","endBehavior","mapCompositionEndBehavior","previewSize","camera","fov","far","near","clipMode","position","rotation","backgroundColor","color","colorToRoundedRgba","version","playerVersion","fonts","plugins","type","compositionId","geometries","materials","shaders","bins","animations","outPoint","IREndBehavior","Loop","restart","Continue","forward","Freeze","freeze","Destroy","destroy","DEFAULT_OPACITY","multiplyOpacityProperties","left","right","inFrame","outFrame","cloneOpacityProperty","scaleOpacityProperty","frames","keyframes","keyframe","frame","sort","evaluateOpacityAtFrame","mapOpacityToReferencedComposition","opacity","layer","parent","referenced","parentFrameRate","referencedFrameRate","sourceStartFrame","time","stretch","mapFrame","isDefaultOpacity","every","endValue","hasAnimatedOpacity","resolved","last","current","hold","progress","buildCompositionGenerationPlan","diagnostics","compositionById","requests","precompOutputIdByLayerId","requestById","request","requestIndex","layers","content","instanceOpacity","inheritedOpacity","transform","referencedOpacity","requiresVariant","mask","clipToBounds","outputId","variant","collectOpacityApproximationDiagnostic","hasAnimatedChildOpacity","some","child","code","severity","action","sourceId","feature","message","collectPrecompExportDiagnostics","expectedSourceStartFrame","buildTimelineTracks","delay","animation","itemType","precompTimeOffset","childTrackIds","buildActivationTrack","buildTransformTrack","isPrecompItemType","sourceOffset","max","buildSubCompositionTrack","shouldBuildSpriteColorTrack","buildSpriteColorTrack","objectBindingTrack","ObjectBindingTrack","children","clips","sprite","text","shape","appendPlayableTrack","assetDataType","ActivationPlayableAsset","trackDataType","ActivationTrack","assetFields","positionOverLifetime","rotationOverLifetime","sizeOverLifetime","TransformPlayableAsset","TransformTrack","startColor","colorOverLifetime","SpriteColorPlayableAsset","SpriteColorTrack","SubCompositionPlayableAsset","SubCompositionTrack","spec","assetId","playableAsset","trackId","clip","start","asset","track","computeLayerTiming","compositionInPoint","rawDuration","layerDuration","DEFAULT_OUT_TANGENT","DEFAULT_IN_TANGENT","normalizeTime","frameTime","startFrame","endFrame","getScalarValue","dimensionIndex","convertIRScalarKeyframesToGE","property","timeContext","curve","buildCurveForDimension","convertIRVectorKeyframesToGE","firstValue","dimensions","curves","convertIRPositionKeyframesToGE","pathPoints","controlPoints","timingCurvePoints","normalizedTime","outTangent","inTangent","startPosition","segmentEnd","nextKeyframe","outgoingControlPoint","incomingControlPoint","spatialOut","spatialIn","startX","startY","endX","endY","nextStart","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","nextValue","firstTime","points","currentPoint","nextPoint","shouldUseKeyframeMode","rotateAnchorOffsetForParentedVisual","layerType","hasParent","rotationZ","radians","cosine","cos","sine","sin","DEFAULT_LOCAL_BOUNDS","getLayerLocalBounds","fallback","localBounds","estimatedWidth","estimateTextWidth","fontSize","letterSpacing","lineHeight","averageCharacterWidth","computeStaticPosition","ctx","anchorOffsetX","anchorOffsetY","isNullType","positionValue","getStaticAnchor","anchor","getStaticScaleFromIR","scale","applyScalePositionAdjust","bounds","computeScalePositionOffset","staticScale","anchorDiffX","anchorDiffY","computeAnchorInfo","localAnchorX","localAnchorY","anchorScaleX","anchorScaleY","getTimeContext","buildNormalizedTransformAnimation","buildPositionAnimation","buildRotationAnimation","buildSizeAnimation","positionResult","useKeyframeMode","firstPathPoint","point3d","pathPoint","endPoint3d","controlPointPair","pathPointPair","dx","dy","firstControlPoint","secondControlPoint","curveData","easingData","keyframeValue","roundedPathPoints","roundPathPoint","roundedControlPoints","pathPayload","BEZIER_CURVE_PATH","point","buildRotationAxis","hasX","hasY","hasZ","asRotation","axisCount","separateAxes","CONSTANT","axisHasRotationValue","BEZIER_CURVE","buildConstantSizeAnimation","buildNormalizedColorAnimation","opacityValue","buildTransformAnimation","layerData","layerDataById","preservedPosition","preservedRotation","preservedSize","buildColorAnimation","preservedColor","normalizedLayer","_obj","GE_BLENDING_BY_IR_MODE","IRBlendMode","Normal","Multiply","MULTIPLY","Screen","Overlay","SUPERPOSITION","Darken","Lighten","BRIGHTNESS","ColorDodge","ColorBurn","HardLight","STRONG_LIGHT","SoftLight","WEAK_LIGHT","Difference","SUBTRACTION","Exclusion","Hue","Saturation","Color","Luminosity","Add","ADD","mapBlendModeToGE","blendMode","mapEndBehaviorToGE","GE_TIMELINE_ITEM_TYPE_BY_IR_LAYER_TYPE","image","solid","particle","null","precomp","GE_VFX_ITEM_TYPE_BY_IR_LAYER_TYPE","mapLayerTypeToGETimelineItemType","mapLayerTypeToGEVFXItemType","isFiniteTuple","createPoint","createParsedKeyframe","holdIn","holdOut","parseBezierKeyframe","data","mark","inControl","outControl","LINE","HOLD","parseHoldKeyframe","LINE_OUT","parseBezierCurve","parsedKeyframes","parsed","parseLineCurve","parseHermiteCurve","progressDelta","parseGEParticleScalarExpression","RANDOM","min","CURVE","pointValues","convertIRCurveKeyframeToGE","outgoingHold","convertIRParticleScalarExpressionToGE","expression","resolveComponentId","sourceComponentId","component","copyPreservedMaskToComponent","preservedMask","buildParticleComponent","preservedContent","particleContent","componentId","rawOptions","rawEmission","rawRenderer","options","emission","renderer","bursts","blending","resolveStaticParticleOpacity","removeInvalidBurstOffsets","maxParticles","startLifetime","rateOverTime","burst","frameOffset","count","cycles","cycleCount","interval","repeatIntervalFrames","scaleParticleStartColor","ParticleSystem","burstCount","preservedBursts","burstOffsets","offset","isValidBurstOffset","isInteger","layerId","RGBA_COLOR","isFiniteNumberTuple","scaleColorTuple","throwInvalidStartColor","payload","GRADIENT_COLOR","isGradientStop","stop","scaleGradientStop","COLORS","registerTexture","imageUrl","cache","cached","url","Texture","flipY","dataPathRef","buildComponent","buildSpriteComponent","buildTextComponent","buildShapeComponent","spriteSplits","splits","copySpriteSplit","textureSheetAnimation","normalizedColor","spriteStartColor","textureDataPath","imageAsset","imageAssetById","textureUrl","getIRResourceSourceUrl","textureCache","SpriteComponent","renderMode","MESH","isNonDefaultAnchor","split","textInfo","fontAsset","fontAssetById","fontAssetId","textColor","layerWidth","layerHeight","textWidth","textHeight","textSizeW","textSizeH","textSizeMode","TextComponent","fontFamily","family","fontWeight","mapFontWeightToGE","weight","textAlign","middle","fontStyle","style","letterSpace","mapTextSizeModeToGE","size","sizeMode","autoWidth","autoHeight","autoResize","fixed","normal","bold","lighter","shapeData","shapes","ShapeComponent","buildShapeOptions","renderStyle","mapShapePrimitiveType","primitiveType","IRShapePrimitiveType","Custom","mapCustomPaths","customPaths","Rectangle","mapRectangleCornerRadiusToGERoundness","Ellipse","xRadius","yRadius","Polygon","pointCount","radius","roundness","Star","innerRadius","outerRadius","innerRoundness","outerRoundness","fills","strokes","fill","mapShapePaint","stroke","paint","strokeStyle","mapLineCap","cap","mapLineJoin","join","buildShapeRenderStyles","styles","previous","hasSameStrokeGeometry","maxRadius","cornerRadius","SHAPE_PRIMITIVE_TYPE_TO_GE","FILL_TYPE_TO_GE","IRPaintType","Solid","LinearGradient","GradientLinear","RadialGradient","GradientRadial","AngularGradient","GradientAngular","TEXTURE_SCALE_MODE_TO_GE","IRTextureScaleMode","Fill","Fit","Crop","Tile","LINE_CAP_TO_GE","IRLineCap","Butt","Round","Square","LINE_JOIN_TO_GE","IRLineJoin","Bevel","Miter","lineCap","lineJoin","colorToGE","gradientStops","startPoint","vec2ToGE","gradientStart","endPoint","gradientEnd","scaleMode","r","g","paths","easingIns","easingOuts","indexes","easingIn","inTangents","easingOut","outTangents","pointIndex","close","closed","resolveLayerGenerationStrategy","sourceHierarchy","kind","needsPivotContainer","info","anchorScale","anchorOffset","anchorOffCenter","hasRotationAnimation","hasMultipleKeyframes","hasScaleAnimation","hasStaticTextRotation","hasNonZeroStaticValue","buildGETransform","eulerHint","resolveLayerEndBehavior","resolveTimelineEndBehavior","itemEndBehavior","timelineEndBehavior","createItemId","sourceIndex","sourceItemIds","resolvedIndex","sourceItemId","resolvePreservedItemAnchor","itemAnchorById","resolvePreservedItemEulerHint","itemEulerHintById","appendNullLayer","itemAnchor","layerToItemId","layerToMaskParentItemId","layerToMaskCoordinateOrigin","VFXItemData","visible","renderLevel","BPlus","appendPrecompLayer","isTransformParent","parentLayerIdSet","referencedComposition","referencedRatio","fallbackBounds","hasAnchor","precompPosition","intrinsicScale","referencedInPoint","outputCompositionId","buildPrecompContent","precompContent","appendParentPrecompItems","layerTrackId","layerItem","compositionItemId","compositionTrackId","compositionItem","rawContent","refId","appendNullSpritePair","nullItemId","nullItemAnchor","nullAnimation","nullPosition","nullTrackId","nullItem","childItemId","centerX","centerY","childPosition","childColorAnimation","childTrackId","layerToComponentId","scaledW","scaledH","childScale","childItem","appendParentLayer","appendVisualLayer","strategy","appendShapeLayerItems","colorAnimation","fullAnimation","rawPosition","timelineItemType","itemScale","basePosition","renderIndex","shapeIndex","renderStyles","styleIndex","currentRenderIndex","shapeItemId","shapeOffsetX","shapeOffsetY","shapePosition","shapeComponentId","shapeItem","applyParenting","layerById","itemById","parentLayer","parentItemId","parentAnchor","adjustX","adjustY","NUMERIC_EPSILON","CONTAINMENT_TOLERANCE","CURVE_FLATNESS","MAX_CURVE_DEPTH","buildRuntimeMaskGeometry","coordinateOrigin","effectiveInverted","mode","IRMaskMode","Subtract","inverted","convertPoint","convertVector","flattened","nextIndex","end","control1","addPoints","control2","flattenCubic","pointsEqual","pop","mapMaskGeometryIntoPrecomp","geometry","precompItem","animatedItemIds","chain","world","identityMatrix","multiplyMatrices","buildItemMatrix","inverse","invertMatrix","transformPoint","collectAnimatedTransformItemIds","miscById","misc","childReferences","childReference","transformTrackHasAnimation","compareMaskContainment","existing","sourceInsideExisting","containsPolygon","existingInsideSource","output","depth","isCubicFlat","startControl","midpoint","controls","controlEnd","leftControl","rightControl","center","distanceToLine","hypot","container","inner","pointInPolygonOrBoundary","isConvexPolygon","innerIndex","innerStart","innerEnd","outerIndex","outerStart","outerEnd","segmentsProperlyIntersect","direction","cross","orientation","currentDirection","sign","polygon","inside","pointOnSegment","crossesRay","firstStart","firstEnd","secondStart","secondEnd","firstSideStart","firstSideEnd","secondSideStart","secondSideEnd","c","d","tx","ty","angle","anchorX","anchorY","matrix","determinant","inverseDeterminant","assetReference","hasAnimationPayload","keys","createRuntimeMaskState","slots","sources","applyMasks","_width","_height","lookup","runtimeMaskState","componentById","comp","resolveLayerMask","layerItemId","getItemId","layerComponentId","getComponentId","maskParentItemId","getMaskParentItemId","maskRatio","resolveMaskCoordinateRatio","maskCoordinateOrigin","getMaskCoordinateOrigin","resolveMaskCoordinateOrigin","buildMaskForLayer","origin","fallbackRatio","buildClipMask","maskItemId","maskComponentId","maskBounds","getMaskBounds","maskPosX","cx","maskPosY","cy","timing","maskDuration","layerIsParent","isParentLayer","maskArea","descendantTargets","collectClaimableRendererDescendants","maskItem","maskComponent","isSimpleRectMask","strokeWidth","strokeCap","strokeJoin","isMask","alphaMaskEnabled","buildPolygonMaskComponent","sourceMeta","area","specificity","applyMaskReferenceToTargets","targetComponent","buildMaskRef","maskTrackId","resolveGEMaskInverted","targets","maskSlotMeta","shouldClaimMaskSlot","hasExistingMask","currentOrigin","currentMaskArea","targetParentId","componentRefs","componentReference","isMaskSourceComponent","computePointBounds","minX","Infinity","minY","maxX","maxY","isZeroTangent","deltaX","deltaY","tangent","customPoints","customEasingIns","customEasingOuts","customIndexes","applyLayerMattes","matte","IRMatteMode","Luminance","createMatteDiagnostic","resolveLayerComponent","sourceComponent","sourceLayerId","Alpha","sourceMask","canClaimMatteSource","applyGEMaskRemap","GEComponentIdToNewId","currentComponentIds","oldId","newId","normalizeChildVisibilityByParentDelays","transformParentChildItemIds","bindingByItemId","extendTransformParentActivations","effectiveDelayCache","getEffectiveDelay","sortedItems","topologicalSort","originalDelay","originalDuration","effectiveDelay","parentItem","parentDuration","isPrecompChild","newDuration","timeDiff","syncTimelineClips","activationIntervalByItemId","childInterval","currentChildItemId","currentChildItem","parentInterval","originalStart","originalEnd","newDelay","syncActivationClips","childRef","childTrack","sorted","trackType","applyPostProcess","state","maskLookup","geComponentIdToNewId","applyCrossCompositionMasks","generatedById","findLayerMaskComponentId","applyAncestorMaskThroughNestedCompositions","ancestorIds","context","applyMaskToCompositionRenderers","readPrecompReferenceId","nested","bindings","componentRef","setRendererMaskReference","existingMeta","shouldReplaceMask","containment","GE_PRESERVED_DATA_VERSION","assertGEToIRPreservedDataMatchesScene","scene","layerBinding","particleLayer","irCompositionId","find","irLayerId","String","assertGEParticleSourceData","particleSourceData","compositionIdSet","sourceCompositionIdSet","layerIdSet","assertEffectsLayerPreservedData","groupCompositionIdById","particleEffectGroups","group","isPositiveSize","isAuthoringBounds","layerIdsByComposition","sourceOrdersByGroup","referencedGroupIds","effectGroupId","isNonNegativeSafeInteger","groupCompositionId","compositionLayerIds","groupSourceOrders","groupId","field","isGEEndBehavior","isNormalizedColor","isEffectsSpriteSplit","isEffectsTextureSheetAnimation","isItemAnchor","isItemEulerHint","isFiniteNumber","isPositiveSafeInteger","channel","convertIRToGE","assertIRScene","convertIRToGEInternal","itemStartIndex","layersInLoweringOrder","reverse","appendLayer","GEComponentId","generatedItems","splice","restorePreservedItemOrder","sourceItemOrder","itemLayerIds","fontAssets","assets","flatMap","fontURL","generationRequests","fromEntries","orderByItemId","fallbackOrder","orderByLayerId","order","assembleIRComposition","compositionName","extractGEParticleSourceData","readRecordArray","particleComponentIds","collectReferencedParticleComponentIds","representedComponentIds","particleLayers","sourceComposition","readPreviewSize","resolveParticleLayerSource","sourcePreviewSize","authoringBounds","sourceOrder","unboundComponentIds","throwParticleSourceError","sourceItem","includes","indexOf","componentIds","itemParticleComponentIds","isPositiveFiniteNumber","IR_BLEND_MODE_BY_GE","mapBlendModeToIR","GECode","mapEndBehaviorToIR","GEBehavior","mapLayerTimingToIR","buildSceneContext","compositionIdBySourceId","compositionStartFrameBySourceId","assetRegistry","createGEAssetRegistry","candidate","Error","compositionStartTime","background","imageById","textureById","fontDefinitionByFamily","buildFontDefinitionIndex","itemIdToTrackId","buildSceneBindings","resourceBaseUrl","resolveIRResourceUrl","imageAssetIdBySourceId","fontAssetIdByIdentity","font","trackIdByItemId","findCompositionComponent","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","nextEntry","nextType","nextData","expectedType","expectedLength","outTangentX","inTangentX","parsePositionTimingKeyframes","valueDomain","controlPointIndex","valueStart","valueEnd","POSITION_EPSILON","parseTransformAnimation","channels","positionAnimation","parsePositionAnimation","parseRotationAnimation","scaleAnimation","parseScaleAnimation","parseOpacityAnimation","parseScalarChannel","pathData","valueType","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","_object_without_properties_loose","sourceKeys","getOwnPropertyNames","propertyIsEnumerable","parseParticleComponent","maxCount","parsedBursts","parseParticleBursts","rawParticleContent","normalizedBurstRuntimeDefaults","normalizedRuntimeDefaults","parseLegacyParticleNumber","rawCycleCount","rawRepeatInterval","repeatIntervalSeconds","trim","parseComponent","orderedComponentIds","parseSpriteComponent","parseTextComponent","parseShapeComponent","parsedParticle","particleData","parseRendererLayerProperties","parseTextureSheetAnimation","rawMask","imageAssetId","parseSpriteSplits","rendererLayerProperties","resolveImageAssetIdFromTexture","isWhite","defaultAnchorScale","isSpriteSplit","row","col","total","animate","loop","readPositiveNumber","textAlignCode","normalizeFontAssetWeight","normalizeFontAssetStyle","registerFontAsset","textBounds","parseTextSizeMode","definition","rawUrl","createIRResourceSource","identity","existingId","parseShapeOptions","GEType","mapShapePrimitiveTypeToIR","GEFills","componentPath","parseShapePaint","GEStrokes","GEStrokeWidth","mapLineCapToIR","mapLineJoinToIR","parseCustomPaths","firstPath","readScaledNumber","readRectangleCornerRadius","readPointCount","readOptionalNumberField","GE_TO_SHAPE_PRIMITIVE_TYPE","typeMap","gradientStopsRaw","stops","readFinitePoint","mapTextureScaleModeToIR","lineCapByCode","lineJoinByCode","pathInTangents","pathOutTangents","pathIndex","percentage","textureReference","sourceReference","isIRId","parseTimeline","activationEndBehavior","transformAsset","spriteColorAsset","parseStaticTransform","itemTransform","scaleValue","isDefault","parseItemToLayer","timeline","rawTransformPreservedData","componentData","layerEndBehavior","readItemAnchor","itemEulerHint","readItemEulerHint","itemSize","readItemSize","staticChannels","rawPositionOverLifetime","animationChannels","preservedTransformData","rawRotationOverLifetime","rawSizeOverLifetime","rawColorOverLifetime","rawColor","anchorInfo","deriveAnchorFromScale","scaleX","scaleY","hasStaticScale","scaleAdjustX","scaleAdjustY","totalX","totalY","subtractStaticPositionOffset","solidLayerColor","precompReferenceId","precompCompositionId","precompEndBehavior","mergeNullSpritePairs","descriptors","descriptor","isNullItem","childByParentId","hasNoComponents","hasParentTransformSignal","pivotChildren","childType","isVisual","sameName","childTransform","hasVisualComponent","hasSplitPairTiming","hasNoIndependentChildTransform","sameNameChild","mergedChildIds","mergedDescriptorByParentId","mergeNullAndSprite","merged","parentTimeline","childTimeline","parentEndBehavior","readItemEndBehavior","childEndBehavior","isSupportedEndBehavior","nearlyEqual","hasTransformPayload","hasNonDefaultScale","hasNonDefaultEulerHint","hasNonEmptyRecord","nullDescriptor","childDescriptor","childLayer","childSize","resolveHierarchy","layerIdByItemId","descriptorByItemId","parentLayerId","parentDescriptor","getDescriptorAnchor","depthScale","effectiveDepthScale","normalizeSingleGEMasks","targetContext","sourceLayerOwner","ownerBySourceItemId","owner","inversion","hasConflictingInversion","sourceTargetsBelongToOwner","isItemAtOrBelowOwner","targetItemId","isCompositionReachable","compositionByIRId","parsedSource","parseMaskSource","normalizeLayerMatteSource","normalizedSourceItemIds","createUnsupportedMaskDiagnostic","indexMaskOwnersBySourceItemId","targetsBySourceComponentId","rawReferences","references","readMaskReferences","resolveTargetItemId","readMaskInverted","descriptorContainsAnyItem","Geometry","directReferenceId","ownerItemIds","currentItemId","targetCompositionId","ownerLayer","referencedCtx","hasStaticIdentityMaskTransform","hasMatchingMaskTiming","readVector2","parseMaskPath","isMaskPlanePosition","isVector","readFiniteNumber","ownerItemId","sourceTimeline","ownerTimeline","ownerItem","sourceDelay","ownerDelay","sourceDuration","ownerDuration","parseRectangleMaskPath","parseCustomMaskPath","halfWidth","halfHeight","tangents","IRPoints","IRInTangents","IROutTangents","readIndexedVector","expected","expectedValue","valueAtAxis","itemIds","convertGEToIR","shouldPreserveSourceScene","referencesParticleSystem","parsedLayer","mergedDescriptors","parsedCompositions","sourceCompositions","sourceEntryCompositionId","format","schemaVersion","ANIMATION_IR_SCHEMA_VERSION","KEYS_BY_INVALIDATION_TARGET","invalidateEffectsLayerPreservedData","removed","updateGEToIRPreservedData","baselineScene","updatedScene","baselineComposition","updatedComposition","updatedCompositionById","updatedPreservedData","retainedIds","baselineIds","baselineIdSet","updatedIds","ownerByItemId","itemsByLayer","orderedItems","updatedLayerById","baselineLayer","updatedLayer","invalidateChangedLayerData","structuredClone","reconcileParticleSourceData","particleLayerIdsByComposition","collectChangedTransformTargets","isValueEqual","hasImageAssetChanged","hasParticleBurstStructureChanged","removeParticleBurstOffsets","removedFields","onChange","matchingUpdatedIndex","updatedBursts","findIndex","updatedBurst","updatedIndex","matchedUpdatedIndices","baselineBursts","baselineIndex","hasOwn","baselineTransform","updatedTransform","baselineAssets","updatedAssets","baselineAsset","updatedAsset","leftKeys","rightKeys","FRAGMENT_COLLECTIONS","OPTIONAL_FRAGMENT_COLLECTIONS","buildParticleFragment","placement","compositionBinding","findComposition","readRequiredRecordArray","sourceRuntime","resolveCompositionRuntime","runtimeItemIds","readDataPathIds","runtimeItemIdSet","boundComponentIds","nestedCompositionItem","readId","sourceRuntimeId","hasNestedCompositionComponent","selectParticleItems","retainedItemIds","ownedItemIds","retainedItemIdSet","includedComponents","includedComponentIds","include","includedItems","copy","assertDataPathList","missingComponentIds","compositionCopy","runtimeCopy","sourceSceneBindings","readOptionalRecordArray","bindingTrackIds","timelineId","retainedMiscs","collectMiscClosure","fragmentScene","readFragmentCollection","rootItemIds","collectRootItemIds","particleItemByLayer","selectedItemId","defaultOwner","particleItemIds","retained","ancestors","readParentId","forEach","matches","seeds","pending","seed","timelineCopy","label","mapParticleLayoutToGETransform","targetRegion","readTargetRegion","hostViewport","readCompositionViewport","hostComposition","sourceViewport","readAuthoringBounds","targetCenter","pixelToWorld","targetSize","pixelSizeToWorld","sourceSize","layoutScale","sourceCenter","isFiniteVec2","cameraValue","isFiniteVec3","aspect","worldHeight","worldSize","viewport","MERGED_COLLECTIONS","OPTIONAL_MERGED_COLLECTIONS","appendParticleFragmentToGE","hostScene","fragment","sourceValues","readArrayField","appendCollectionValues","usedIds","hostItemRefs","hostBindings","resolveTimelineAsset","assertMatchingVersions","namespaced","namespaceParticleFragment","findEntryComposition","hostComponents","readRecordArrayField","sourceComponents","hostRuntime","readRequiredId","rootTransform","mapCameraToVerticalFOV","wrapperId","createUniqueId","hostDuration","readNonNegativeFiniteNumber","mergedDuration","wrapper","createWrapperItem","sourceItems","hostTimeline","imageOffset","adjustNumericTextureSources","adjustBinaryPointers","particleRefs","readDataPaths","particleZ","itemZById","readMutableDataPaths","insertAt","findItemInsertionIndex","sourceBindings","readMutableRecordArray","mergeTimelineTracks","mergedTimeline","createTimelineAsset","hostMiscs","wrapperMiscStart","wrapperTrackId","insertTimelineTracksByItemOrder","wrapperItemIds","updateWrapperDurations","synchronizeEntryItemPoolOrder","mergeGEPlayerVersion","verticalFOV","atan","collectGEIds","ids","sourceIds","idMap","rewriteGEIds","mapped","WeakMap","sourceTracks","runtime","hostTracks","hostItemOrder","trackToItem","sourcePositions","sourcePosition","itemPosition","itemRefs","orderedItemIds","entryItemIds","orderedIndex","nextId","nextItem","itemZ","readMutableCollection","binOffset","BINARY","pointer","hostVersion","sourceVersion","hostPlayer","sourcePlayer","hostWeb","sourceWeb","compareNumericVersions","leftParts","Boolean","rightParts","difference","mergeParticleScenes","hostStackingOrder","mergedScene","collectHostItemZValues","input","placements","resolveParticlePlacements","assertMatchingParticleVersions","restoredParticleScene","particleScene","particleVersion","groups","sourceData","resolveItemZ","localZ","parentZ"],"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,30,65]}
1
+ {"version":3,"file":"index.js","sources":["../../../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","../../../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/common/coordinate-mapping.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_extends.js","../src/common/json-normalization.ts","../src/preserved-data.ts","../src/common/data-path.ts","../src/layer-preserved-data.ts","../src/update-preserved-data.ts","../src/particle/particle-fragment.ts","../src/common/id.ts","../src/ir2ge/post-process/merge-preserved-resources.ts","../src/particle/assemble-particle-source-data.ts","../src/ir2ge/assemble-source-preserved-data.ts","../src/common/math.ts","../src/ir2ge/generator/append-timeline-tracks.ts","../src/ir2ge/post-process/restore-runtime-graph.ts","../src/ir2ge/assemble.ts","../src/ir2ge/converter/opacity.ts","../src/ir2ge/converter/precomp.ts","../src/ir2ge/converter/timing.ts","../src/ir2ge/converter/bezier.ts","../src/common/anchor-mapping.ts","../src/ir2ge/converter/transform.ts","../src/ir2ge/converter/normalized-animation.ts","../src/ir2ge/converter/animation.ts","../src/ir2ge/mapping.ts","../src/common/particle-expression.ts","../src/ir2ge/generator/component-preservation.ts","../src/ir2ge/generator/append-particle-component.ts","../src/ir2ge/generator/append-component.ts","../src/ir2ge/generator/layer-strategy.ts","../src/ir2ge/generator/append-layer-items.ts","../src/ir2ge/post-process/parenting.ts","../src/ir2ge/post-process/mask-geometry.ts","../src/ir2ge/post-process/mask.ts","../src/ir2ge/post-process/matte.ts","../src/ir2ge/post-process/ge-mask-remap.ts","../src/ir2ge/post-process/normalize-activation-intervals.ts","../src/ir2ge/post-process/pipeline.ts","../src/ir2ge/post-process/cross-composition-mask.ts","../src/ir2ge/convert.ts","../src/ge2ir/assemble.ts","../src/ge2ir/extract-particle-source-data.ts","../src/ge2ir/preserve-scene.ts","../src/ge2ir/mapping.ts","../src/ge2ir/parser/build-scene-context.ts","../src/ge2ir/parser/keyframe.ts","../src/ge2ir/parser/animation.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_object_without_properties_loose.js","../src/ge2ir/parser/parse-particle-component.ts","../src/ge2ir/parser/component.ts","../src/ge2ir/parser/timeline.ts","../src/ge2ir/parser/transform.ts","../src/ge2ir/parser/parse-item-layer.ts","../src/ge2ir/post-process.ts","../src/ge2ir/post-process/mask.ts","../src/ge2ir/convert.ts"],"sourcesContent":["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","/**\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","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/** GE 3.7 text layout converts glyph pixels to world units before applying item scale. */\nexport const TEXT_WORLD_UNITS_PER_PIXEL = 0.0123;\n\n/** Return the pixel-to-world scale for the given canvas. */\nexport function get2dTo3dRatio(width: number, height: number): number {\n let ratio = (2 / height) * DEFAULT_CAMERA_Z * Math.tan((DEFAULT_CAMERA_FOV / 2) * (Math.PI / 180)) + 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\n/**\n * Convert a GE world-space point to a top-left canvas coordinate while\n * preserving its perspective-adjusted Z value.\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 pixelX = x / effectiveRatio + width / 2;\n const pixelY = height / 2 - y / effectiveRatio;\n\n return [pixelX, pixelY, z];\n}\n","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","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 { IRColor, IRScene } from '@vvfx/animation-ir';\nimport { DataType, EndBehavior } from '@galacean/effects-specification';\n\nexport const GE_PRESERVED_DATA_VERSION = '1.0.0';\n\nexport type EffectsSpriteSplit = [sourceX: number, sourceY: number, width: number, height: number, flip: 0 | 1];\n\nexport interface EffectsTextureSheetAnimation {\n row: number;\n col: number;\n total?: number;\n animate: boolean;\n loop?: boolean;\n}\n\nexport type EffectsTextSizeMode = 'auto-width' | 'auto-height' | 'fixed';\n\nexport type GEParticleAuthoringBounds = [x: number, y: number, width: number, height: number];\ninterface GEParticleEffectGroupSourceData {\n id: string;\n irCompositionId: string;\n sourcePreviewSize: [width: number, height: number];\n authoringBounds: GEParticleAuthoringBounds;\n}\n\nexport interface GEParticleSourceLayerData {\n effectGroupId: string;\n irCompositionId: string;\n irLayerId: string;\n sourceOrder: number;\n}\n\nexport interface GEParticleSourceData {\n particleEffectGroups: GEParticleEffectGroupSourceData[];\n layers: GEParticleSourceLayerData[];\n}\n\n/** GE Layer payloads that normalized Animation IR cannot represent losslessly. */\nexport interface EffectsLayerPreservedData {\n positionOverLifetime?: Record<string, unknown>;\n rotationOverLifetime?: Record<string, unknown>;\n sizeOverLifetime?: Record<string, unknown>;\n transformBaseScale?: [number, number, number];\n colorOverLifetime?: Record<string, unknown>;\n spriteStartColor?: IRColor;\n spriteTexture?: { image: Record<string, unknown>; texture: Record<string, unknown> };\n renderer?: Record<string, unknown>;\n geometry?: Record<string, unknown>;\n componentTimeline?: { root: { id: string }; objects: Record<string, unknown>[] };\n spriteSplits?: EffectsSpriteSplit[];\n textureSheetAnimation?: EffectsTextureSheetAnimation;\n textSizeMode?: EffectsTextSizeMode;\n sourceItemIds?: string[];\n itemAnchorById?: Record<string, [x: number, y: number]>;\n itemEulerHintById?: Record<string, [x: number, y: number, z: number]>;\n sourceComponentId?: string;\n /** Additional runtime components owned by the source item, such as FFD or AnimationComponent. */\n additionalComponentIds?: string[];\n /** Parent outside the editable IR graph. */\n runtimeParentId?: string;\n mask?: Record<string, unknown>;\n precompContent?: Record<string, unknown>;\n /** GE ParticleSystem payload excluding identity and generic mask fields; normalized IR fields override it on export. */\n particleContent?: Record<string, unknown>;\n /** Activation clip behavior retained independently from the normalized GE Item behavior. */\n timelineEndBehavior?: EndBehavior;\n itemTiming?: { delay: number; duration: number };\n sourceHierarchy?: 'single-item' | 'null-sprite-pair';\n}\n\nexport interface GECompositionSourceBinding {\n sourceCompositionId: string; // Original GE Composition ID.\n camera?: Record<string, unknown>;\n sourceItemOrder: string[]; // CompositionComponent Item IDs in source painter order.\n /** GE-only items and composition components restored from sourceScene. */\n runtimeItemIds?: string[];\n runtimeComponentIds?: string[];\n layerDataById: Record<string, EffectsLayerPreservedData>; // IR Layer ID -> GE-owned Layer data.\n}\n\n/** GE-owned data retained outside the source-neutral Animation IR contract. */\nexport interface GEToIRPreservedData {\n version: typeof GE_PRESERVED_DATA_VERSION;\n sourceScene?: Record<string, unknown>; // One normalized copy used to restore GE objects outside regenerated graphs.\n compositionBindings: Record<string, GECompositionSourceBinding>; // Imported IR Composition ID -> source GE Composition.\n particleSourceData: GEParticleSourceData; // ParticleSystem bindings and source layout used by final host placement.\n}\n\n/** Reject preserved data whose version or Composition bindings do not match the supplied IR Scene. */\nexport function assertGEToIRPreservedDataMatchesScene(scene: IRScene, preservedData: GEToIRPreservedData): void {\n if (preservedData.version !== GE_PRESERVED_DATA_VERSION) {\n throw new TypeError(`[ge-ir:preserved-data] Unsupported preserved data version '${String(preservedData.version)}'.`);\n }\n if (!isRecord(preservedData.compositionBindings)) {\n throw new TypeError('[ge-ir:preserved-data] compositionBindings must be an object.');\n }\n if (preservedData.sourceScene !== undefined && !isRecord(preservedData.sourceScene)) {\n throw new TypeError('[ge-ir:preserved-data] sourceScene must be an object when present.');\n }\n assertGEParticleSourceData(preservedData.particleSourceData);\n const compositionIdSet = new Set(scene.compositions.map(composition => composition.id));\n const compositionById = new Map(scene.compositions.map(composition => [composition.id, composition] as const));\n const sourceCompositionIdSet = new Set<string>();\n\n for (const [compositionId, binding] of Object.entries(preservedData.compositionBindings)) {\n if (!compositionIdSet.has(compositionId)) {\n throw new TypeError(\n `[ge-ir:preserved-data] Composition binding '${compositionId}' does not exist in the IR Scene.`,\n );\n }\n if (\n !isRecord(binding) ||\n typeof binding['sourceCompositionId'] !== 'string' ||\n binding['sourceCompositionId'].length === 0\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Composition binding '${compositionId}' is invalid.`);\n }\n if (binding['camera'] !== undefined && !isRecord(binding['camera'])) {\n throw new TypeError(`[ge-ir:preserved-data] Composition binding '${compositionId}' camera must be an object.`);\n }\n for (const field of ['runtimeItemIds', 'runtimeComponentIds']) {\n const ids = binding[field];\n\n if (ids !== undefined && (!Array.isArray(ids) || ids.some(id => typeof id !== 'string') ||\n preservedData.sourceScene == null)) {\n throw new TypeError(`[ge-ir:preserved-data] ${field} requires string IDs and sourceScene.`);\n }\n }\n if (!isRecord(binding['layerDataById'])) {\n throw new TypeError(\n `[ge-ir:preserved-data] Composition binding '${compositionId}' layerDataById must be an object.`,\n );\n }\n if (\n !Array.isArray(binding['sourceItemOrder']) ||\n binding['sourceItemOrder'].some(itemId => typeof itemId !== 'string')\n ) {\n throw new TypeError(\n `[ge-ir:preserved-data] Composition binding '${compositionId}' sourceItemOrder must be an array of strings.`,\n );\n }\n if (sourceCompositionIdSet.has(binding['sourceCompositionId'])) {\n throw new TypeError(\n `[ge-ir:preserved-data] Source Composition '${binding['sourceCompositionId']}' is bound more than once.`,\n );\n }\n sourceCompositionIdSet.add(binding['sourceCompositionId']);\n\n const layerIdSet = new Set(compositionById.get(compositionId)?.layers.map(layer => layer.id) ?? []);\n\n for (const [layerId, layerData] of Object.entries(binding['layerDataById'])) {\n if (!layerIdSet.has(layerId)) {\n throw new TypeError(\n `[ge-ir:preserved-data] Layer data '${compositionId}/${layerId}' does not exist in the IR Scene.`,\n );\n }\n assertEffectsLayerPreservedData(layerData, compositionId, layerId);\n }\n }\n\n for (const layerBinding of preservedData.particleSourceData.layers) {\n const particleLayer = compositionById.get(layerBinding.irCompositionId)?.layers.find(\n layer => layer.id === layerBinding.irLayerId,\n );\n\n if (particleLayer?.type !== 'particle') {\n throw new TypeError(\n `[ge-ir:preserved-data] Particle source Layer '${layerBinding.irCompositionId}/` +\n `${layerBinding.irLayerId}' does not reference an IR Particle Layer.`,\n );\n }\n }\n}\n\nfunction assertGEParticleSourceData(value: unknown): asserts value is GEParticleSourceData {\n if (!isRecord(value) || !Array.isArray(value['particleEffectGroups']) || !Array.isArray(value['layers'])) {\n throw new TypeError(\n '[ge-ir:preserved-data] particleSourceData.particleEffectGroups and layers must be arrays.',\n );\n }\n\n const groupCompositionIdById = new Map<string, string>();\n\n for (const [index, group] of value.particleEffectGroups.entries()) {\n const path = `particleSourceData.particleEffectGroups[${index}]`;\n\n if (!isRecord(group)) {\n throw new TypeError(`[ge-ir:preserved-data] ${path} must be an object.`);\n }\n const id = group['id'];\n const irCompositionId = group['irCompositionId'];\n\n if (typeof id !== 'string' || id.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.id must be a non-empty string.`);\n }\n if (typeof irCompositionId !== 'string' || irCompositionId.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.irCompositionId must be a non-empty string.`);\n }\n if (!isPositiveSize(group['sourcePreviewSize'])) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.sourcePreviewSize must be a positive finite size.`);\n }\n if (!isAuthoringBounds(group['authoringBounds'], group['sourcePreviewSize'])) {\n throw new TypeError(\n `[ge-ir:preserved-data] ${path}.authoringBounds must be a positive rectangle inside sourcePreviewSize.`,\n );\n }\n if (groupCompositionIdById.has(id)) {\n throw new TypeError(`[ge-ir:preserved-data] Particle effect group '${id}' is defined more than once.`);\n }\n groupCompositionIdById.set(id, irCompositionId);\n }\n\n const layerIdsByComposition = new Map<string, Set<string>>();\n const sourceOrdersByGroup = new Map<string, Set<number>>();\n const referencedGroupIds = new Set<string>();\n\n for (const [index, layer] of value.layers.entries()) {\n const path = `particleSourceData.layers[${index}]`;\n\n if (!isRecord(layer)) {\n throw new TypeError(`[ge-ir:preserved-data] ${path} must be an object.`);\n }\n const effectGroupId = layer['effectGroupId'];\n const irCompositionId = layer['irCompositionId'];\n const irLayerId = layer['irLayerId'];\n\n if (typeof effectGroupId !== 'string' || effectGroupId.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.effectGroupId must be a non-empty string.`);\n }\n if (typeof irCompositionId !== 'string' || irCompositionId.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.irCompositionId must be a non-empty string.`);\n }\n if (typeof irLayerId !== 'string' || irLayerId.length === 0) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.irLayerId must be a non-empty string.`);\n }\n if (!isNonNegativeSafeInteger(layer['sourceOrder'])) {\n throw new TypeError(`[ge-ir:preserved-data] ${path}.sourceOrder must be a non-negative safe integer.`);\n }\n\n const groupCompositionId = groupCompositionIdById.get(effectGroupId);\n\n if (groupCompositionId == null) {\n throw new TypeError(`[ge-ir:preserved-data] ${path} references unknown effect group '${effectGroupId}'.`);\n }\n if (groupCompositionId !== irCompositionId) {\n throw new TypeError(`[ge-ir:preserved-data] ${path} must use the same IR Composition as its effect group.`);\n }\n\n const compositionLayerIds = layerIdsByComposition.get(irCompositionId) ?? new Set<string>();\n const groupSourceOrders = sourceOrdersByGroup.get(effectGroupId) ?? new Set<number>();\n\n if (compositionLayerIds.has(irLayerId)) {\n throw new TypeError(\n `[ge-ir:preserved-data] Particle source Layer '${irCompositionId}/${irLayerId}' is bound more than once.`,\n );\n }\n if (groupSourceOrders.has(layer['sourceOrder'])) {\n throw new TypeError(\n `[ge-ir:preserved-data] Particle effect group '${effectGroupId}' uses sourceOrder ` +\n `${String(layer['sourceOrder'])} more than once.`,\n );\n }\n compositionLayerIds.add(irLayerId);\n groupSourceOrders.add(layer['sourceOrder']);\n layerIdsByComposition.set(irCompositionId, compositionLayerIds);\n sourceOrdersByGroup.set(effectGroupId, groupSourceOrders);\n referencedGroupIds.add(effectGroupId);\n }\n\n for (const groupId of groupCompositionIdById.keys()) {\n if (!referencedGroupIds.has(groupId)) {\n throw new TypeError(`[ge-ir:preserved-data] Particle effect group '${groupId}' has no ParticleSystem binding.`);\n }\n }\n}\n\nfunction assertEffectsLayerPreservedData(value: unknown, compositionId: string, layerId: string): void {\n const path = `${compositionId}/${layerId}`;\n\n if (!isRecord(value)) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}' must be an object.`);\n }\n\n for (const field of [\n 'positionOverLifetime', 'rotationOverLifetime', 'sizeOverLifetime', 'colorOverLifetime', 'mask',\n 'precompContent', 'particleContent', 'renderer', 'geometry', 'componentTimeline', 'spriteTexture', 'itemTiming',\n ]) {\n if (value[field] !== undefined && !isRecord(value[field])) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.${field}' must be an object.`);\n }\n }\n const baseScale = value['transformBaseScale'];\n\n if (baseScale !== undefined && (!Array.isArray(baseScale) || baseScale.length !== 3 ||\n baseScale.some(axis => typeof axis !== 'number' || !Number.isFinite(axis)))) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.transformBaseScale' must be a finite Vec3.`);\n }\n const itemTiming = value['itemTiming'];\n\n if (isRecord(itemTiming) && ['delay', 'duration'].some(field =>\n typeof itemTiming[field] !== 'number' || !Number.isFinite(itemTiming[field]),\n )) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.itemTiming' must contain finite timing values.`);\n }\n const timeline = value['componentTimeline'];\n\n if (isRecord(timeline) && (\n !isRecord(timeline['root']) || typeof timeline['root']['id'] !== 'string' ||\n !Array.isArray(timeline['objects']) || timeline['objects'].some(object =>\n !isRecord(object) || typeof object['id'] !== 'string' ||\n !Object.values(DataType).some(type => type === object['dataType']),\n )\n )) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.componentTimeline' must contain GE timeline objects.`);\n }\n const texture = value['spriteTexture'];\n\n if (isRecord(texture) && (!isRecord(texture['image']) || !isRecord(texture['texture']))) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.spriteTexture' must contain image and texture objects.`);\n }\n if (value['sourceComponentId'] !== undefined && typeof value['sourceComponentId'] !== 'string') {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.sourceComponentId' must be a string.`);\n }\n if (value['runtimeParentId'] !== undefined && typeof value['runtimeParentId'] !== 'string') {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.runtimeParentId' must be a string.`);\n }\n const additionalComponentIds = value['additionalComponentIds'];\n\n if (additionalComponentIds !== undefined && (!Array.isArray(additionalComponentIds) ||\n additionalComponentIds.some(id => typeof id !== 'string'))) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.additionalComponentIds' must contain string IDs.`);\n }\n if (value['timelineEndBehavior'] !== undefined && !isGEEndBehavior(value['timelineEndBehavior'])) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.timelineEndBehavior' is invalid.`);\n }\n if (value['spriteStartColor'] !== undefined && !isNormalizedColor(value['spriteStartColor'])) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.spriteStartColor' must be a normalized color.`);\n }\n if (\n value['spriteSplits'] !== undefined &&\n (!Array.isArray(value['spriteSplits']) || value['spriteSplits'].some(split => !isEffectsSpriteSplit(split)))\n ) {\n throw new TypeError(\n `[ge-ir:preserved-data] Layer data '${path}.spriteSplits' must contain valid split tuples.`,\n );\n }\n if (\n value['textureSheetAnimation'] !== undefined &&\n !isEffectsTextureSheetAnimation(value['textureSheetAnimation'])\n ) {\n throw new TypeError(\n `[ge-ir:preserved-data] Layer data '${path}.textureSheetAnimation' is invalid.`,\n );\n }\n if (\n value['sourceItemIds'] !== undefined &&\n (!Array.isArray(value['sourceItemIds']) || value['sourceItemIds'].some(itemId => typeof itemId !== 'string'))\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.sourceItemIds' must be an array of strings.`);\n }\n if (\n value['itemAnchorById'] !== undefined &&\n (!isRecord(value['itemAnchorById']) || Object.values(value['itemAnchorById']).some(anchor => !isItemAnchor(anchor)))\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.itemAnchorById' must contain finite vec2 values.`);\n }\n if (\n value['itemEulerHintById'] !== undefined &&\n (!isRecord(value['itemEulerHintById']) ||\n Object.values(value['itemEulerHintById']).some(eulerHint => !isItemEulerHint(eulerHint)))\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.itemEulerHintById' must contain finite vec3 values.`);\n }\n if (\n value['sourceHierarchy'] !== undefined &&\n value['sourceHierarchy'] !== 'single-item' &&\n value['sourceHierarchy'] !== 'null-sprite-pair'\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.sourceHierarchy' is invalid.`);\n }\n if (\n value['textSizeMode'] !== undefined &&\n value['textSizeMode'] !== 'auto-width' &&\n value['textSizeMode'] !== 'auto-height' &&\n value['textSizeMode'] !== 'fixed'\n ) {\n throw new TypeError(`[ge-ir:preserved-data] Layer data '${path}.textSizeMode' is invalid.`);\n }\n}\n\nfunction isGEEndBehavior(value: unknown): value is EndBehavior {\n return value === EndBehavior.destroy || value === EndBehavior.forward ||\n value === EndBehavior.freeze || value === EndBehavior.restart;\n}\n\nfunction isEffectsSpriteSplit(value: unknown): value is EffectsSpriteSplit {\n return Array.isArray(value) && value.length === 5 && value.slice(0, 4).every(isFiniteNumber) &&\n (value[4] === 0 || value[4] === 1);\n}\n\nfunction isEffectsTextureSheetAnimation(value: unknown): value is EffectsTextureSheetAnimation {\n return isRecord(value) && isPositiveSafeInteger(value['row']) && isPositiveSafeInteger(value['col']) &&\n (value['total'] === undefined || isPositiveSafeInteger(value['total'])) &&\n typeof value['animate'] === 'boolean' &&\n (value['loop'] === undefined || typeof value['loop'] === 'boolean');\n}\n\nfunction isItemAnchor(value: unknown): value is [number, number] {\n return Array.isArray(value) && value.length === 2 && value.every(isFiniteNumber);\n}\n\nfunction isItemEulerHint(value: unknown): value is [number, number, number] {\n return Array.isArray(value) && value.length === 3 && value.every(isFiniteNumber);\n}\n\nfunction isNormalizedColor(value: unknown): value is IRColor {\n return Array.isArray(value) && value.length === 4 && value.every(channel => isFiniteNumber(channel) &&\n channel >= 0 && channel <= 1);\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction isPositiveSafeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value > 0;\n}\n\nfunction isNonNegativeSafeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;\n}\n\nfunction isPositiveSize(value: unknown): value is [number, number] {\n return Array.isArray(value) && value.length === 2 && value.every(entry => isFiniteNumber(entry) && entry > 0);\n}\n\nfunction isAuthoringBounds(value: unknown, previewSize: [number, number]): value is GEParticleAuthoringBounds {\n return Array.isArray(value) && value.length === 4 && value.every(isFiniteNumber) &&\n value[0] >= 0 && value[1] >= 0 && value[2] > 0 && value[3] > 0 &&\n value[0] + value[2] <= previewSize[0] && value[1] + value[3] <= previewSize[1];\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 { DataPath } from '@galacean/effects-specification';\nimport { isRecord } from './json-normalization';\n\ntype GERecord = Record<string, unknown>;\n\n/** GE scene collection indexed by entity ID. */\nexport type GESceneCollectionIndex = Map<string, GERecord>;\n\n/** Wrap an ID in a GE DataPath reference. */\nexport function toDataPath(id: string): DataPath {\n return { id };\n}\n\n/** Index GE scene collection entries by string ID. */\nexport function buildSceneCollectionIndex(collection: GERecord[] | undefined): GESceneCollectionIndex {\n const entryById: GESceneCollectionIndex = new Map();\n\n if (!Array.isArray(collection)) {\n return entryById;\n }\n\n for (const entry of collection) {\n const id = entry['id'];\n\n if (typeof id === 'string') {\n entryById.set(id, entry);\n }\n }\n\n return entryById;\n}\n\n/** Resolve a GE DataPath against an indexed scene collection. */\nexport function resolveDataPath(collectionIndex: GESceneCollectionIndex, reference: unknown): GERecord | undefined {\n const id = resolveDataPathId(reference);\n\n return id != null ? collectionIndex.get(id) : undefined;\n}\n\n/** Return the string ID stored in a GE DataPath-like value. */\nexport function resolveDataPathId(reference: unknown): string | undefined {\n return isRecord(reference) && typeof reference['id'] === 'string' ? reference['id'] : undefined;\n}\n\nexport function visitDataPathReferences(\n value: unknown,\n visit: (id: string) => void,\n visited = new WeakSet<object>(),\n): void {\n if (value == null || typeof value !== 'object' || visited.has(value)) {\n return;\n }\n\n visited.add(value);\n\n if (Array.isArray(value)) {\n for (const entry of value) {\n visitDataPathReferences(entry, visit, visited);\n }\n\n return;\n }\n\n const referenceId = resolveDataPathId(value);\n\n if (referenceId != null) {\n visit(referenceId);\n }\n\n for (const entry of Object.values(value)) {\n visitDataPathReferences(entry, visit, visited);\n }\n}\n","import type { EffectsLayerPreservedData, GEToIRPreservedData } from './preserved-data';\n\n/** Normalized field whose conflicting GE-owned Layer data should be removed. */\nexport type EffectsLayerPreservedDataInvalidationTarget =\n 'position' | 'rotation' | 'scale' | 'color' | 'opacity' | 'anchor' | 'asset' | 'mask' | 'precomp' | 'particle';\n\n/** Resolve GE-owned data by its scoped IR Composition and Layer identities. */\nexport function getEffectsLayerPreservedData(\n preservedData: GEToIRPreservedData | undefined,\n compositionId: string,\n layerId: string,\n): EffectsLayerPreservedData | undefined {\n return preservedData?.compositionBindings[compositionId]?.layerDataById[layerId];\n}\n\nconst EFFECTS_ANIMATION_DATA_KEYS = [\n 'positionOverLifetime',\n 'rotationOverLifetime',\n 'sizeOverLifetime',\n 'colorOverLifetime',\n 'textureSheetAnimation',\n] as const satisfies readonly (keyof EffectsLayerPreservedData)[];\n\nconst KEYS_BY_INVALIDATION_TARGET: Record<\n EffectsLayerPreservedDataInvalidationTarget,\n readonly (keyof EffectsLayerPreservedData)[]\n> = {\n position: ['positionOverLifetime'],\n rotation: ['rotationOverLifetime', 'itemEulerHintById', 'sourceHierarchy'],\n scale: ['sizeOverLifetime', 'transformBaseScale', 'sourceHierarchy'],\n color: ['colorOverLifetime', 'spriteStartColor'],\n opacity: ['colorOverLifetime'],\n anchor: ['sourceHierarchy', 'itemAnchorById'],\n asset: ['spriteSplits', 'textureSheetAnimation', 'spriteTexture'],\n mask: ['mask'],\n precomp: ['precompContent'],\n particle: ['particleContent'],\n};\n\n/** Remove raw GE values that would otherwise shadow an edited normalized field. */\nexport function invalidateEffectsLayerPreservedData(\n preservedData: GEToIRPreservedData | undefined,\n compositionId: string,\n layerId: string,\n target: EffectsLayerPreservedDataInvalidationTarget,\n): (keyof EffectsLayerPreservedData)[] {\n const layerDataById = preservedData?.compositionBindings[compositionId]?.layerDataById;\n const layerData = layerDataById?.[layerId];\n\n if (layerData == null) {\n return [];\n }\n\n const removed: (keyof EffectsLayerPreservedData)[] = [];\n\n for (const key of KEYS_BY_INVALIDATION_TARGET[target]) {\n if (key in layerData) {\n delete layerData[key];\n removed.push(key);\n }\n }\n\n if (Object.keys(layerData).length === 0 && layerDataById != null) {\n delete layerDataById[layerId];\n }\n\n return removed;\n}\n\n/** Whether invalidating opacity would also discard a preserved GE color animation. */\nexport function hasEffectsColorAnimationPreservedData(layerData: EffectsLayerPreservedData | undefined): boolean {\n const color = layerData?.colorOverLifetime;\n\n return color != null && Object.keys(color).some(channelKey => channelKey !== 'opacity');\n}\n\n/** Whether the Layer retains any raw GE animation payload. */\nexport function hasEffectsAnimationPreservedData(layerData: EffectsLayerPreservedData | undefined): boolean {\n return layerData != null && EFFECTS_ANIMATION_DATA_KEYS.some(key => layerData[key] != null);\n}\n","import type { IRAnimatedProperty, IRAsset, IRComposition, IRLayer, IRScene } from '@vvfx/animation-ir';\nimport { ValueType } from '@galacean/effects-specification';\nimport { visitDataPathReferences } from './common/data-path';\nimport {\n invalidateEffectsLayerPreservedData,\n type EffectsLayerPreservedDataInvalidationTarget,\n} from './layer-preserved-data';\nimport {\n assertGEToIRPreservedDataMatchesScene,\n type GEToIRPreservedData, type EffectsLayerPreservedData,\n} from './preserved-data';\n\nexport interface GEToIRPreservedDataChange {\n compositionId: string;\n layerId: string;\n field: string;\n}\n\nexport interface UpdateGEToIRPreservedDataOptions {\n onChange?: (change: GEToIRPreservedDataChange) => void;\n}\n\n/** Update a cloned GE preservation bundle to match edits made to normalized Animation IR. */\nexport function updateGEToIRPreservedData(\n baselineScene: IRScene,\n updatedScene: IRScene,\n preservedData: GEToIRPreservedData,\n options: UpdateGEToIRPreservedDataOptions = {},\n): GEToIRPreservedData {\n assertGEToIRPreservedDataMatchesScene(baselineScene, preservedData);\n\n const updatedPreservedData = structuredClone(preservedData);\n const updatedCompositionById = new Map(\n updatedScene.compositions.map(composition => [composition.id, composition] as const),\n );\n\n for (const baselineComposition of baselineScene.compositions) {\n const updatedComposition = updatedCompositionById.get(baselineComposition.id);\n const binding = updatedPreservedData.compositionBindings[baselineComposition.id];\n\n if (updatedComposition == null) {\n delete updatedPreservedData.compositionBindings[baselineComposition.id];\n\n continue;\n }\n if (binding == null) {\n continue;\n }\n\n const retainedIds = new Set(updatedComposition.layers.map(layer => layer.id));\n const baselineIds = baselineComposition.layers.map(layer => layer.id).filter(id => retainedIds.has(id));\n const baselineIdSet = new Set(baselineIds);\n const updatedIds = updatedComposition.layers.map(layer => layer.id).filter(id => baselineIdSet.has(id));\n\n if (baselineIds.some((id, index) => id !== updatedIds[index])) {\n const ownerByItemId = new Map<string, string>();\n\n for (const id of updatedIds) {\n for (const itemId of binding.layerDataById[id]?.sourceItemIds ?? []) {\n ownerByItemId.set(itemId, id);\n }\n }\n const itemsByLayer = new Map<string, string[]>();\n\n for (const itemId of binding.sourceItemOrder) {\n const owner = ownerByItemId.get(itemId);\n\n if (owner != null) {\n const items = itemsByLayer.get(owner) ?? [];\n\n items.push(itemId);\n itemsByLayer.set(owner, items);\n }\n }\n const orderedItems = updatedIds.flatMap(id => itemsByLayer.get(id) ?? []);\n let index = 0;\n\n binding.sourceItemOrder = binding.sourceItemOrder.map(id => ownerByItemId.has(id) ? orderedItems[index++] : id);\n }\n\n const updatedLayerById = new Map(updatedComposition.layers.map(layer => [layer.id, layer] as const));\n\n for (const baselineLayer of baselineComposition.layers) {\n const updatedLayer = updatedLayerById.get(baselineLayer.id);\n\n if (updatedLayer == null) {\n delete binding.layerDataById[baselineLayer.id];\n\n continue;\n }\n\n invalidateChangedLayerData(\n baselineScene,\n updatedScene,\n baselineComposition,\n updatedComposition,\n baselineLayer,\n updatedLayer,\n updatedPreservedData,\n options,\n );\n }\n }\n\n reconcileParticleSourceData(updatedScene, updatedPreservedData);\n assertGEToIRPreservedDataMatchesScene(updatedScene, updatedPreservedData);\n\n return updatedPreservedData;\n}\n\nfunction reconcileParticleSourceData(scene: IRScene, preservedData: GEToIRPreservedData): void {\n const particleLayerIdsByComposition = new Map<string, Set<string>>();\n\n for (const composition of scene.compositions) {\n particleLayerIdsByComposition.set(\n composition.id,\n new Set(composition.layers.filter(layer => layer.type === 'particle').map(layer => layer.id)),\n );\n }\n\n preservedData.particleSourceData.layers = preservedData.particleSourceData.layers.filter(layer =>\n particleLayerIdsByComposition.get(layer.irCompositionId)?.has(layer.irLayerId) === true,\n );\n const referencedGroupIds = new Set(\n preservedData.particleSourceData.layers.map(layer => layer.effectGroupId),\n );\n\n preservedData.particleSourceData.particleEffectGroups =\n preservedData.particleSourceData.particleEffectGroups.filter(group => referencedGroupIds.has(group.id));\n}\n\nfunction invalidateChangedLayerData(\n baselineScene: IRScene,\n updatedScene: IRScene,\n baselineComposition: IRComposition,\n updatedComposition: IRComposition,\n baselineLayer: IRLayer,\n updatedLayer: IRLayer,\n preservedData: GEToIRPreservedData,\n options: UpdateGEToIRPreservedDataOptions,\n): void {\n const compositionId = baselineComposition.id;\n const targets = new Set<EffectsLayerPreservedDataInvalidationTarget>();\n\n if (baselineLayer.type !== updatedLayer.type) {\n targets.add('position');\n targets.add('rotation');\n targets.add('scale');\n targets.add('color');\n targets.add('opacity');\n targets.add('anchor');\n targets.add('asset');\n targets.add('mask');\n targets.add('precomp');\n targets.add('particle');\n } else {\n collectChangedTransformTargets(baselineLayer, updatedLayer, targets);\n\n if (!isValueEqual(baselineLayer.masks, updatedLayer.masks) || !isValueEqual(baselineLayer.matte, updatedLayer.matte)) {\n targets.add('mask');\n }\n if (baselineLayer.type === 'solid' && updatedLayer.type === 'solid' &&\n !isValueEqual(baselineLayer.content.color, updatedLayer.content.color)) {\n targets.add('color');\n }\n if (baselineLayer.type === 'image' && updatedLayer.type === 'image' &&\n hasImageAssetChanged(baselineScene.assets, updatedScene.assets, baselineLayer, updatedLayer)) {\n targets.add('asset');\n }\n if (baselineLayer.type === 'precomp' && updatedLayer.type === 'precomp' &&\n !isValueEqual(baselineLayer.content, updatedLayer.content)) {\n targets.add('precomp');\n }\n if (baselineLayer.type === 'particle' && updatedLayer.type === 'particle' &&\n hasParticleBurstStructureChanged(baselineLayer, updatedLayer)) {\n removeParticleBurstOffsets(preservedData, compositionId, baselineLayer.id, options);\n }\n }\n\n const layerData = preservedData.compositionBindings[compositionId]?.layerDataById[baselineLayer.id];\n\n if (layerData?.runtimeParentId != null && baselineLayer.parentId !== updatedLayer.parentId) {\n delete layerData.runtimeParentId;\n options.onChange?.({ compositionId, layerId: baselineLayer.id, field: 'runtimeParentId' });\n }\n if (layerData?.additionalComponentIds != null && baselineLayer.type !== updatedLayer.type) {\n delete layerData.additionalComponentIds;\n options.onChange?.({ compositionId, layerId: baselineLayer.id, field: 'additionalComponentIds' });\n }\n\n if (layerData?.itemTiming != null && !isValueEqual(baselineLayer.time, updatedLayer.time)) {\n delete layerData.itemTiming;\n options.onChange?.({ compositionId, layerId: baselineLayer.id, field: 'itemTiming' });\n }\n const timeline = layerData?.componentTimeline;\n\n if (timeline != null) {\n const changedType = baselineLayer.type !== updatedLayer.type;\n const changedContent = !isValueEqual(\n baselineLayer.type === 'null' ? undefined : baselineLayer.content,\n updatedLayer.type === 'null' ? undefined : updatedLayer.content,\n );\n const changedBounds = !isValueEqual(baselineLayer.localBounds, updatedLayer.localBounds);\n const changedTime = !isValueEqual(baselineLayer.time, updatedLayer.time);\n const removedIds = new Set(timeline.objects.filter(object => {\n const path = object['path'];\n\n return changedType || changedTime || (typeof path === 'string' &&\n (changedContent || changedBounds || (targets.has('opacity') && /(^|\\.)color(\\.|$)/.test(path))));\n }).map(object => object['id']));\n\n if (removedIds.size > 0) {\n timeline.objects = timeline.objects.filter(object => !removedIds.has(object['id']));\n for (const object of timeline.objects) {\n if (Array.isArray(object['children'])) {\n object['children'] = object['children'].filter(reference =>\n !isRecord(reference) || !removedIds.has(reference['id']),\n );\n }\n }\n if (removedIds.has(timeline.root.id)) {\n delete layerData.componentTimeline;\n } else {\n const objectById = new Map(timeline.objects.map(object => [object['id'], object]));\n const reachable = new Set<string>();\n const visit = (id: string): void => {\n const object = objectById.get(id);\n\n if (object == null || reachable.has(id)) {\n return;\n }\n reachable.add(id);\n visitDataPathReferences(object, visit);\n };\n\n visit(timeline.root.id);\n timeline.objects = timeline.objects.filter(object => reachable.has(String(object['id'])));\n }\n options.onChange?.({ compositionId, layerId: baselineLayer.id, field: 'componentTimeline' });\n }\n }\n if (layerData?.geometry != null && (baselineLayer.type !== updatedLayer.type ||\n !isValueEqual(baselineLayer.localBounds, updatedLayer.localBounds))) {\n delete layerData.geometry;\n options.onChange?.({ compositionId, layerId: baselineLayer.id, field: 'geometry' });\n }\n if (layerData?.renderer != null && baselineLayer.type !== updatedLayer.type) {\n delete layerData.renderer;\n options.onChange?.({ compositionId, layerId: baselineLayer.id, field: 'renderer' });\n }\n\n for (const target of targets) {\n const removedFields = invalidateEffectsLayerPreservedData(\n preservedData,\n compositionId,\n baselineLayer.id,\n target,\n );\n\n for (const field of removedFields) {\n options.onChange?.({ compositionId, layerId: baselineLayer.id, field });\n }\n }\n\n if (layerData != null) {\n reframePreservedAnimation(\n layerData, baselineLayer, updatedLayer, baselineComposition.frameRate, updatedComposition.frameRate,\n );\n }\n}\n\nfunction reframePreservedAnimation(\n data: EffectsLayerPreservedData,\n baseline: IRLayer,\n updated: IRLayer,\n beforeFrameRate: number,\n afterFrameRate: number,\n): void {\n const beforeStart = baseline.time.inFrame / beforeFrameRate;\n const afterStart = updated.time.inFrame / afterFrameRate;\n const beforeDuration = (baseline.time.outFrame - baseline.time.inFrame) / beforeFrameRate;\n const afterDuration = (updated.time.outFrame - updated.time.inFrame) / afterFrameRate;\n\n if ((beforeStart === afterStart && beforeDuration === afterDuration && beforeFrameRate === afterFrameRate) ||\n beforeDuration <= 0 || afterDuration <= 0) {\n return;\n }\n const transform = updated.transform;\n const animations: [Record<string, unknown> | undefined, Record<string, IRAnimatedProperty | undefined>][] = [\n [data.positionOverLifetime, { path: transform?.position }],\n [data.rotationOverLifetime, { x: transform?.rotation?.x, y: transform?.rotation?.y, z: transform?.rotation?.z }],\n [data.sizeOverLifetime, {\n size: transform?.scale, x: transform?.scale, y: transform?.scale, z: transform?.scale,\n }],\n [data.colorOverLifetime, { opacity: transform?.opacity }],\n ];\n\n // IR keyframes retain frame positions; source-only channels retain their times in seconds.\n for (const [animation, properties] of animations) {\n for (const [channel, expression] of Object.entries(animation ?? {})) {\n if (!Array.isArray(expression) || !Array.isArray(expression[1])) {\n continue;\n }\n const type: unknown = expression[0];\n const payload: unknown[] = expression[1];\n const isPath = type === ValueType.BEZIER_CURVE_PATH;\n const isBezier = isPath || type === ValueType.BEZIER_CURVE;\n const curve: unknown = isPath ? payload[0] : payload;\n\n if (!Array.isArray(curve) || (!isBezier && type !== ValueType.LINE && type !== ValueType.GRADIENT_COLOR)) {\n continue;\n }\n const timeScale = properties[channel]?.type === 'keyframed' ? beforeFrameRate / afterFrameRate : 1;\n\n for (const keyframe of curve) {\n const coordinates: unknown = isBezier && Array.isArray(keyframe) ? keyframe[1] : keyframe;\n\n if (!Array.isArray(coordinates)) {\n continue;\n }\n const count = isBezier ? coordinates.length : Math.min(1, coordinates.length);\n\n for (let index = 0; index < count; index += 2) {\n const time: unknown = coordinates[index];\n\n if (typeof time === 'number') {\n coordinates[index] = ((beforeStart + time * beforeDuration) * timeScale - afterStart) / afterDuration;\n }\n }\n }\n }\n }\n}\n\nfunction hasParticleBurstStructureChanged(\n baselineLayer: Extract<IRLayer, { type: 'particle' }>,\n updatedLayer: Extract<IRLayer, { type: 'particle' }>,\n): boolean {\n const baselineBursts = baselineLayer.content.emission.bursts ?? [];\n const updatedBursts = updatedLayer.content.emission.bursts ?? [];\n\n if (baselineBursts.length !== updatedBursts.length) {\n return true;\n }\n\n const matchedUpdatedIndices = new Set<number>();\n\n for (let baselineIndex = 0; baselineIndex < baselineBursts.length; baselineIndex++) {\n const matchingUpdatedIndex = updatedBursts.findIndex((updatedBurst, updatedIndex) =>\n !matchedUpdatedIndices.has(updatedIndex) && isValueEqual(baselineBursts[baselineIndex], updatedBurst),\n );\n\n if (matchingUpdatedIndex === -1) {\n continue;\n }\n if (matchingUpdatedIndex !== baselineIndex) {\n return true;\n }\n matchedUpdatedIndices.add(matchingUpdatedIndex);\n }\n\n return false;\n}\n\nfunction removeParticleBurstOffsets(\n preservedData: GEToIRPreservedData,\n compositionId: string,\n layerId: string,\n options: UpdateGEToIRPreservedDataOptions,\n): void {\n const particleContent = preservedData.compositionBindings[compositionId]?.layerDataById[layerId]?.particleContent;\n const emission = particleContent?.['emission'];\n\n if (!isRecord(emission) || !Object.hasOwn(emission, 'burstOffsets')) {\n return;\n }\n\n delete emission['burstOffsets'];\n options.onChange?.({\n compositionId,\n layerId,\n field: 'particleContent.emission.burstOffsets',\n });\n}\n\nfunction collectChangedTransformTargets(\n baselineLayer: IRLayer,\n updatedLayer: IRLayer,\n targets: Set<EffectsLayerPreservedDataInvalidationTarget>,\n): void {\n const baselineTransform = baselineLayer.transform;\n const updatedTransform = updatedLayer.transform;\n\n if (!isValueEqual(baselineTransform?.position, updatedTransform?.position)) {\n targets.add('position');\n }\n if (!isValueEqual(baselineTransform?.rotation, updatedTransform?.rotation)) {\n targets.add('rotation');\n }\n if (!isValueEqual(baselineTransform?.scale, updatedTransform?.scale)) {\n targets.add('scale');\n }\n if (!isValueEqual(baselineTransform?.anchor, updatedTransform?.anchor)) {\n targets.add('anchor');\n }\n if (!isValueEqual(baselineTransform?.opacity, updatedTransform?.opacity)) {\n targets.add('opacity');\n }\n}\n\nfunction hasImageAssetChanged(\n baselineAssets: IRAsset[],\n updatedAssets: IRAsset[],\n baselineLayer: Extract<IRLayer, { type: 'image' }>,\n updatedLayer: Extract<IRLayer, { type: 'image' }>,\n): boolean {\n if (baselineLayer.content.assetId !== updatedLayer.content.assetId) {\n return true;\n }\n\n const baselineAsset = baselineAssets.find(asset => asset.id === baselineLayer.content.assetId);\n const updatedAsset = updatedAssets.find(asset => asset.id === updatedLayer.content.assetId);\n\n return !isValueEqual(baselineAsset, updatedAsset);\n}\n\nfunction isValueEqual(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) {\n return true;\n }\n if (Array.isArray(left) || Array.isArray(right)) {\n return Array.isArray(left) && Array.isArray(right) && left.length === right.length &&\n left.every((entry, index) => isValueEqual(entry, right[index]));\n }\n if (!isRecord(left) || !isRecord(right)) {\n return false;\n }\n\n const leftKeys = Object.keys(left).sort();\n const rightKeys = Object.keys(right).sort();\n\n return leftKeys.length === rightKeys.length && leftKeys.every(\n (key, index) => key === rightKeys[index] && isValueEqual(left[key], right[key]),\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n","import { DataType, ItemType } from '@galacean/effects-specification';\nimport { buildSceneCollectionIndex, resolveDataPathId, toDataPath, visitDataPathReferences } from '../common/data-path';\nimport { isRecord } from '../common/json-normalization';\nimport type { GEToIRPreservedData } from '../preserved-data';\n\nconst FRAGMENT_COLLECTIONS = [\n 'images', 'fonts', 'plugins', 'components', 'geometries', 'materials',\n 'items', 'shaders', 'bins', 'textures', 'animations', 'miscs',\n] as const;\nconst OPTIONAL_FRAGMENT_COLLECTIONS = new Set<string>(['fonts', 'bins', 'textures', 'animations']);\n\n/** Retain one particle system or its complete group with source dependencies. */\nexport function buildParticleFragment(\n sourceScene: Record<string, unknown>,\n preservedData: GEToIRPreservedData,\n selection: { effectGroupId: string; irCompositionId: string; irLayerId?: string },\n): Record<string, unknown> {\n const compositionBinding = preservedData.compositionBindings[selection.irCompositionId];\n\n if (compositionBinding == null || compositionBinding.sourceCompositionId !== selection.effectGroupId) {\n throw new TypeError(\n `[ge-ir:particle-source] Particle effect group '${selection.effectGroupId}' has no source GE binding.`,\n );\n }\n\n const sourceComposition = findComposition(sourceScene, compositionBinding.sourceCompositionId);\n const components = readRequiredRecordArray(sourceScene, 'components');\n const items = readRequiredRecordArray(sourceScene, 'items');\n const miscs = readRequiredRecordArray(sourceScene, 'miscs');\n const componentById = buildSceneCollectionIndex(components);\n const itemById = buildSceneCollectionIndex(items);\n const sourceRuntime = resolveCompositionRuntime(sourceComposition, componentById);\n const runtimeItemIds = readDataPathIds(sourceRuntime['items'], 'Source Composition items');\n const runtimeItemIdSet = new Set(runtimeItemIds);\n\n if (runtimeItemIdSet.size !== runtimeItemIds.length) {\n throw new TypeError('[ge-ir:particle-source] Source Composition contains duplicate Item references.');\n }\n for (const itemId of runtimeItemIds) {\n if (!itemById.has(itemId)) {\n throw new TypeError(`[ge-ir:particle-source] Source Composition references missing Item '${itemId}'.`);\n }\n }\n const particleComponentIds = components\n .filter(component => component['dataType'] === DataType.ParticleSystem)\n .filter(component => {\n const itemId = resolveDataPathId(component['item']);\n\n return itemId != null && runtimeItemIdSet.has(itemId);\n })\n .map(component => component['id'])\n .filter((id): id is string => typeof id === 'string');\n const boundComponentIds = preservedData.particleSourceData.layers\n .filter(binding => binding.effectGroupId === selection.effectGroupId)\n .map(binding =>\n preservedData.compositionBindings[binding.irCompositionId]?.layerDataById[binding.irLayerId]?.sourceComponentId,\n )\n .filter((id): id is string => id != null);\n\n if (\n new Set(boundComponentIds).size !== particleComponentIds.length ||\n particleComponentIds.some(id => !boundComponentIds.includes(id))\n ) {\n throw new TypeError(\n '[ge-ir:particle-source] Trusted particle bindings must cover every source ParticleSystem exactly once.',\n );\n }\n const nestedCompositionItem = runtimeItemIds\n .map(itemId => itemById.get(itemId))\n .find(item => item?.['type'] === ItemType.composition);\n\n if (nestedCompositionItem != null) {\n throw new TypeError(\n `[ge-ir:particle-source] Particle source Composition must be self-contained; Item ` +\n `'${readId(nestedCompositionItem, 'Composition Item')}' references another Composition.`,\n );\n }\n\n const sourceRuntimeId = sourceRuntime === sourceComposition ? undefined : readId(sourceRuntime, 'CompositionComponent');\n const hasNestedCompositionComponent = components.some(component => {\n const id = typeof component['id'] === 'string' ? component['id'] : undefined;\n const itemId = resolveDataPathId(component['item']);\n\n return component['dataType'] === DataType.CompositionComponent && id !== sourceRuntimeId &&\n itemId != null && runtimeItemIdSet.has(itemId);\n });\n\n if (hasNestedCompositionComponent) {\n throw new TypeError(\n '[ge-ir:particle-source] Particle source Composition must not contain nested CompositionComponents.',\n );\n }\n const { retainedItemIds, ownedItemIds } = selectParticleItems(\n runtimeItemIds, itemById, componentById, preservedData, selection.effectGroupId, selection.irLayerId,\n );\n const retainedItemIdSet = new Set(retainedItemIds);\n const includedComponents: Record<string, unknown>[] = [];\n const includedComponentIds = new Set<string>();\n\n for (const component of components) {\n const id = typeof component['id'] === 'string' ? component['id'] : undefined;\n const itemId = resolveDataPathId(component['item']);\n const include = component['dataType'] === DataType.CompositionComponent\n ? id === sourceRuntimeId\n : itemId != null && ownedItemIds.has(itemId);\n\n if (include) {\n includedComponents.push(structuredClone(component));\n if (id != null) {\n includedComponentIds.add(id);\n }\n }\n }\n\n const includedItems = retainedItemIds.map(itemId => {\n const item = itemById.get(itemId);\n\n if (item == null) {\n throw new TypeError(`[ge-ir:particle-source] Source Composition references missing Item '${itemId}'.`);\n }\n const copy = structuredClone(item);\n\n if (!ownedItemIds.has(itemId)) {\n copy['type'] = ItemType.null;\n copy['components'] = [];\n }\n\n if (copy['components'] !== undefined) {\n assertDataPathList(copy['components'], `Particle effect Item '${itemId}' components`);\n const missingComponentIds = copy['components']\n .map(resolveDataPathId)\n .filter((id): id is string => id != null && !includedComponentIds.has(id));\n\n if (missingComponentIds.length > 0) {\n throw new TypeError(\n `[ge-ir:particle-source] Particle effect Item '${itemId}' references Components outside its group: ` +\n missingComponentIds.map(id => `'${id}'`).join(', '),\n );\n }\n }\n\n return copy;\n });\n const compositionCopy = structuredClone(sourceComposition);\n const runtimeCopy = sourceRuntimeId == null\n ? compositionCopy\n : includedComponents.find(component => component['id'] === sourceRuntimeId);\n\n if (runtimeCopy == null) {\n throw new TypeError('[ge-ir:particle-source] Source CompositionComponent was not retained.');\n }\n\n runtimeCopy['items'] = retainedItemIds.map(toDataPath);\n const sourceSceneBindings = readOptionalRecordArray(\n sourceRuntime['sceneBindings'],\n 'Source Composition sceneBindings',\n );\n\n if (sourceSceneBindings.some(binding =>\n resolveDataPathId(binding['key']) == null || resolveDataPathId(binding['value']) == null)) {\n throw new TypeError(\n '[ge-ir:particle-source] Source Composition sceneBindings must contain DataPath key/value pairs.',\n );\n }\n\n if (sourceSceneBindings.some(binding => !runtimeItemIdSet.has(resolveDataPathId(binding['value']) ?? ''))) {\n throw new TypeError('[ge-ir:particle-source] Source sceneBindings reference Items outside the effect group.');\n }\n\n const sceneBindings = sourceSceneBindings.filter(binding => {\n const itemId = resolveDataPathId(binding['value']);\n\n return itemId != null && retainedItemIdSet.has(itemId);\n }).map(binding => {\n const trackId = resolveDataPathId(binding['key']);\n const itemId = resolveDataPathId(binding['value']);\n\n if (trackId == null || itemId == null || !runtimeItemIdSet.has(itemId)) {\n throw new TypeError(\n '[ge-ir:particle-source] Source Composition sceneBindings must reference Items inside the effect group.',\n );\n }\n\n return structuredClone(binding);\n });\n\n runtimeCopy['sceneBindings'] = sceneBindings;\n const bindingTrackIds = sceneBindings.map(binding => resolveDataPathId(binding['key']));\n\n if (bindingTrackIds.some(id => id == null)) {\n throw new TypeError('[ge-ir:particle-source] Source sceneBinding contains an invalid Timeline track reference.');\n }\n\n const timelineId = resolveDataPathId(sourceRuntime['timelineAsset']);\n const retainedMiscs = collectMiscClosure(\n miscs,\n timelineId,\n bindingTrackIds as string[],\n [...includedItems, ...includedComponents],\n );\n\n if (timelineId != null && bindingTrackIds.length > 0) {\n runtimeCopy['timelineAsset'] = toDataPath(timelineId);\n } else {\n delete runtimeCopy['timelineAsset'];\n }\n\n const fragmentScene: Record<string, unknown> = {\n ...structuredClone(sourceScene),\n compositionId: compositionCopy['id'],\n compositions: [compositionCopy],\n };\n\n for (const collectionName of FRAGMENT_COLLECTIONS) {\n fragmentScene[collectionName] = collectionName === 'components'\n ? includedComponents\n : collectionName === 'items'\n ? includedItems\n : collectionName === 'miscs'\n ? retainedMiscs\n : structuredClone(readFragmentCollection(sourceScene, collectionName));\n }\n\n if (selection.irLayerId != null) {\n visitDataPathReferences([includedItems, includedComponents, retainedMiscs], id => {\n if ((itemById.has(id) && !retainedItemIdSet.has(id)) ||\n (componentById.has(id) && !includedComponentIds.has(id))) {\n throw new TypeError(\n `[ge-ir:particle-source] Independent placement references another system's object '${id}'; ` +\n 'use a shared group placement for coupled systems.',\n );\n }\n });\n }\n\n return fragmentScene;\n}\n\nfunction selectParticleItems(\n runtimeItemIds: string[],\n itemById: ReadonlyMap<string, Record<string, unknown>>,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n preservedData: GEToIRPreservedData,\n effectGroupId: string,\n irLayerId?: string,\n): { retainedItemIds: string[]; ownedItemIds: Set<string> } {\n if (irLayerId == null) {\n return { retainedItemIds: runtimeItemIds, ownedItemIds: new Set(runtimeItemIds) };\n }\n const bindings = preservedData.particleSourceData.layers\n .filter(layer => layer.effectGroupId === effectGroupId)\n .sort((left, right) => left.sourceOrder - right.sourceOrder);\n const particleItemByLayer = new Map(bindings.map(binding => {\n const componentId = preservedData.compositionBindings[binding.irCompositionId]\n ?.layerDataById[binding.irLayerId]?.sourceComponentId;\n const component = componentId == null ? undefined : componentById.get(componentId);\n const itemId = resolveDataPathId(component?.['item']);\n\n if (itemId == null) {\n throw new TypeError(`[ge-ir:particle-source] Missing ParticleSystem Item for '${binding.irLayerId}'.`);\n }\n\n return [binding.irLayerId, itemId] as const;\n }));\n const selectedItemId = particleItemByLayer.get(irLayerId);\n const defaultOwner = particleItemByLayer.values().next().value;\n const particleItemIds = new Set(particleItemByLayer.values());\n const ownedItemIds = new Set<string>();\n const retained = new Set<string>();\n\n for (const itemId of runtimeItemIds) {\n const ancestors: string[] = [];\n let current: string | undefined = itemId;\n let owner: string | undefined;\n\n while (current != null) {\n if (ancestors.includes(current) || !itemById.has(current)) {\n throw new TypeError('[ge-ir:particle-source] Particle Item hierarchy contains a cycle or missing parent.');\n }\n ancestors.push(current);\n if (owner == null && particleItemIds.has(current)) {\n owner = current;\n }\n current = readParentId(itemById.get(current)?.['parentId']);\n }\n // Group-level auxiliary renderers follow the first system exactly once.\n if ((owner ?? defaultOwner) === selectedItemId) {\n ownedItemIds.add(itemId);\n ancestors.forEach(id => retained.add(id));\n }\n }\n\n return { retainedItemIds: runtimeItemIds.filter(id => retained.has(id)), ownedItemIds };\n}\n\nfunction resolveCompositionRuntime(\n composition: Record<string, unknown>,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n): Record<string, unknown> {\n const componentIds = composition['components'] === undefined\n ? []\n : readDataPathIds(composition['components'], 'Composition components');\n\n if (componentIds.length === 0) {\n return composition;\n }\n const matches = componentIds\n .map(id => componentById.get(id))\n .filter(component => component?.['dataType'] === DataType.CompositionComponent);\n\n if (matches.length !== 1 || matches[0] == null) {\n throw new TypeError('[ge-ir:particle-source] Composition must reference exactly one CompositionComponent.');\n }\n\n return matches[0];\n}\n\nfunction collectMiscClosure(\n miscs: Record<string, unknown>[],\n timelineId: string | undefined,\n bindingTrackIds: string[],\n seeds: Record<string, unknown>[],\n): Record<string, unknown>[] {\n const miscById = buildSceneCollectionIndex(miscs);\n\n if (timelineId != null && !miscById.has(timelineId)) {\n throw new TypeError(`[ge-ir:particle-source] Source TimelineAsset '${timelineId}' is missing.`);\n }\n\n const pending = [...bindingTrackIds];\n\n for (const seed of seeds) {\n visitDataPathReferences(seed, id => {\n if (id !== timelineId && miscById.has(id)) {\n pending.push(id);\n }\n });\n }\n\n const retainedIds = new Set<string>();\n\n while (pending.length > 0) {\n const id = pending.shift();\n\n if (id == null || retainedIds.has(id)) {\n continue;\n }\n const misc = miscById.get(id);\n\n if (misc == null) {\n throw new TypeError(`[ge-ir:particle-source] Source Timeline references missing misc '${id}'.`);\n }\n retainedIds.add(id);\n visitDataPathReferences(misc, referenceId => {\n if (miscById.has(referenceId) && !retainedIds.has(referenceId)) {\n pending.push(referenceId);\n }\n });\n }\n\n let timelineCopy: Record<string, unknown> | undefined;\n\n if (timelineId != null) {\n const sourceTimeline = miscById.get(timelineId);\n\n if (sourceTimeline == null) {\n throw new TypeError(`[ge-ir:particle-source] Source TimelineAsset '${timelineId}' is missing.`);\n }\n timelineCopy = structuredClone(sourceTimeline);\n timelineCopy['tracks'] = bindingTrackIds.map(toDataPath);\n retainedIds.add(timelineId);\n }\n\n return miscs.flatMap(misc => {\n const id = typeof misc['id'] === 'string' ? misc['id'] : undefined;\n\n if (id == null || !retainedIds.has(id)) {\n return [];\n }\n\n return [id === timelineId && timelineCopy != null ? timelineCopy : structuredClone(misc)];\n });\n}\n\nfunction findComposition(scene: Record<string, unknown>, compositionId: string): Record<string, unknown> {\n const composition = readRequiredRecordArray(scene, 'compositions').find(value => value['id'] === compositionId);\n\n if (composition == null) {\n throw new TypeError(`[ge-ir:particle-source] Source Composition '${compositionId}' is missing.`);\n }\n\n return composition;\n}\n\nfunction readRequiredRecordArray(scene: Record<string, unknown>, field: string): Record<string, unknown>[] {\n const value = scene[field];\n\n if (!Array.isArray(value) || !value.every(isRecord)) {\n throw new TypeError(`[ge-ir:particle-source] GE scene ${field} must be an array of objects.`);\n }\n\n return value;\n}\n\nfunction readOptionalRecordArray(value: unknown, label: string): Record<string, unknown>[] {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value) || !value.every(isRecord)) {\n throw new TypeError(`[ge-ir:particle-source] ${label} must be an array of objects.`);\n }\n\n return value;\n}\n\nfunction readFragmentCollection(scene: Record<string, unknown>, field: string): unknown[] {\n const value = scene[field];\n\n if (value === undefined && OPTIONAL_FRAGMENT_COLLECTIONS.has(field)) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`[ge-ir:particle-source] GE scene ${field} must be an array.`);\n }\n\n return value;\n}\n\nfunction readDataPathIds(value: unknown, label: string): string[] {\n assertDataPathList(value, label);\n\n return value.map(reference => resolveDataPathId(reference) as string);\n}\n\nfunction assertDataPathList(value: unknown, label: string): asserts value is unknown[] {\n if (!Array.isArray(value) || value.some(reference => resolveDataPathId(reference) == null)) {\n throw new TypeError(`[ge-ir:particle-source] ${label} must contain DataPath references.`);\n }\n}\n\nfunction readParentId(value: unknown): string | undefined {\n return typeof value === 'string' ? value : resolveDataPathId(value);\n}\n\nfunction readId(value: Record<string, unknown>, label: string): string {\n const id = value['id'];\n\n if (typeof id !== 'string' || id === '') {\n throw new TypeError(`[ge-ir:particle-source] ${label} must have a non-empty ID.`);\n }\n\n return id;\n}\n","import { v4 } from 'uuid';\n\n/** Generate a 32-character hexadecimal UUID v4. */\nexport function createId(): string {\n return v4().replaceAll('-', '');\n}\n","import { visitDataPathReferences, resolveDataPathId } from '../../common/data-path';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\nimport type { GEToIRPreservedData } from '../../preserved-data';\n\n/** Merge source GE objects that are outside Composition graphs regenerated from IR. */\nexport function mergePreservedResources(\n generated: Record<string, unknown>,\n preservedData?: GEToIRPreservedData,\n): Record<string, unknown> {\n if (preservedData?.sourceScene == null) {\n return generated;\n }\n\n const sourceScene = preservedData.sourceScene;\n const result = { ...generated };\n\n mergeGEPlayerVersion(result, sourceScene);\n const sourceCompositionIds = new Set(\n asRecordArray(sourceScene['compositions']).flatMap(composition =>\n typeof composition['id'] === 'string' ? [composition['id']] : [],\n ),\n );\n const excluded = collectRegeneratedGraphIds(sourceScene, generated, sourceCompositionIds);\n const collectionNames = [\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 collectionName of collectionNames) {\n if (collectionName === 'bins') {\n // Binary pointers address array slots, including repeated resources.\n result[collectionName] = [...asArray(generated[collectionName]), ...asArray(sourceScene[collectionName])];\n\n continue;\n }\n result[collectionName] = mergeCollection(\n asArray(generated[collectionName]),\n asArray(sourceScene[collectionName]).filter(\n entry => !isExcludedCollectionEntry(collectionName, entry, excluded),\n ),\n );\n }\n\n result['compositions'] = mergeCollection(\n asRecordArray(generated['compositions']),\n asRecordArray(sourceScene['compositions']).filter(\n entry => !isExcludedCollectionEntry('compositions', entry, excluded),\n ),\n );\n\n return result;\n}\n\ninterface ResourceIds {\n images: Set<string>;\n textures: Set<string>;\n}\n\ninterface RegeneratedGraphIds extends ResourceIds {\n compositions: Set<string>;\n components: Set<string>;\n items: Set<string>;\n miscs: Set<string>;\n}\n\ntype RegeneratedGraphCollection = keyof RegeneratedGraphIds;\n\ninterface SourceGraphEntry {\n collection: RegeneratedGraphCollection;\n value: Record<string, unknown>;\n}\n\ninterface SourceGraphIndex {\n entryById: Map<string, SourceGraphEntry>;\n images: Record<string, unknown>[];\n itemIdsByParentId: Map<string, string[]>;\n}\n\nconst REGENERATED_GRAPH_COLLECTIONS: RegeneratedGraphCollection[] = [\n 'compositions', 'components', 'items', 'miscs', 'textures', 'images',\n];\nconst REFERENCE_OWNER_COLLECTIONS = [\n 'compositions', 'components', 'plugins', 'geometries', 'materials', 'items', 'shaders', 'bins', 'animations',\n 'miscs',\n];\n\nfunction collectRegeneratedGraphIds(\n sourceScene: Record<string, unknown>,\n generatedScene: Record<string, unknown>,\n sourceCompositionIds: Set<string>,\n): RegeneratedGraphIds {\n const index = buildSourceGraphIndex(sourceScene);\n const excluded: RegeneratedGraphIds = {\n compositions: new Set(),\n components: new Set(),\n images: new Set(),\n items: new Set(),\n miscs: new Set(),\n textures: new Set(),\n };\n\n for (const sourceCompositionId of sourceCompositionIds) {\n collectSourceGraph(sourceCompositionId, index, excluded);\n }\n\n protectRetainedResourceReferences(sourceScene, generatedScene, index, excluded);\n\n return excluded;\n}\n\nfunction buildSourceGraphIndex(sourceScene: Record<string, unknown>): SourceGraphIndex {\n const entryById = new Map<string, SourceGraphEntry>();\n\n for (const collection of REGENERATED_GRAPH_COLLECTIONS) {\n for (const value of asRecordArray(sourceScene[collection])) {\n const id = value['id'];\n\n if (typeof id === 'string') {\n entryById.set(id, { collection, value });\n }\n }\n }\n\n const items = asRecordArray(sourceScene['items']);\n\n return {\n entryById,\n images: asRecordArray(sourceScene['images']),\n itemIdsByParentId: buildItemIdsByParentId(items),\n };\n}\n\nfunction collectSourceGraph(id: string, index: SourceGraphIndex, collected: RegeneratedGraphIds): void {\n const entry = index.entryById.get(id);\n\n if (entry == null || collected[entry.collection].has(id)) {\n return;\n }\n\n collected[entry.collection].add(id);\n visitDataPathReferences(entry.value, referenceId => collectSourceGraph(referenceId, index, collected));\n\n if (entry.collection === 'items') {\n for (const childId of index.itemIdsByParentId.get(id) ?? []) {\n collectSourceGraph(childId, index, collected);\n }\n } else if (entry.collection === 'textures') {\n collectNumericTextureSource(entry.value, index, imageId => collectSourceGraph(imageId, index, collected));\n }\n}\n\nfunction protectRetainedResourceReferences(\n sourceScene: Record<string, unknown>,\n generatedScene: Record<string, unknown>,\n index: SourceGraphIndex,\n excluded: RegeneratedGraphIds,\n): void {\n const protectedResources: ResourceIds = { images: new Set(), textures: new Set() };\n\n for (const collectionName of REFERENCE_OWNER_COLLECTIONS) {\n for (const entry of asArray(sourceScene[collectionName])) {\n if (!isExcludedCollectionEntry(collectionName, entry, excluded)) {\n collectReferencedResources(entry, index, protectedResources);\n }\n }\n for (const entry of asArray(generatedScene[collectionName])) {\n collectReferencedResources(entry, index, protectedResources);\n }\n }\n\n for (const textureId of protectedResources.textures) {\n excluded.textures.delete(textureId);\n }\n for (const imageId of protectedResources.images) {\n excluded.images.delete(imageId);\n }\n}\n\nfunction collectReferencedResources(value: unknown, index: SourceGraphIndex, resources: ResourceIds): void {\n visitDataPathReferences(value, id => {\n const entry = index.entryById.get(id);\n\n if (entry?.collection === 'images') {\n resources.images.add(id);\n } else if (entry?.collection === 'textures' && !resources.textures.has(id)) {\n resources.textures.add(id);\n collectReferencedResources(entry.value, index, resources);\n collectNumericTextureSource(entry.value, index, imageId => resources.images.add(imageId));\n }\n });\n}\n\nfunction collectNumericTextureSource(\n texture: Record<string, unknown>,\n index: SourceGraphIndex,\n collect: (imageId: string) => void,\n): void {\n const source = texture['source'];\n\n if (typeof source !== 'number' || !Number.isSafeInteger(source) || source < 0) {\n return;\n }\n\n const imageId = index.images[source]?.['id'];\n\n if (typeof imageId === 'string') {\n collect(imageId);\n }\n}\n\nfunction buildItemIdsByParentId(items: Record<string, unknown>[]): Map<string, string[]> {\n const itemIdsByParentId = new Map<string, string[]>();\n\n for (const item of items) {\n const itemId = item['id'];\n const parentId = typeof item['parentId'] === 'string'\n ? item['parentId']\n : resolveDataPathId(item['parentId']);\n\n if (typeof itemId !== 'string' || parentId == null) {\n continue;\n }\n\n const childIds = itemIdsByParentId.get(parentId) ?? [];\n\n childIds.push(itemId);\n itemIdsByParentId.set(parentId, childIds);\n }\n\n return itemIdsByParentId;\n}\n\nfunction isExcludedCollectionEntry(\n collectionName: string,\n entry: unknown,\n excluded: RegeneratedGraphIds,\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 (collectionName === 'compositions') {\n return excluded.compositions.has(id);\n }\n if (collectionName === 'components') {\n return excluded.components.has(id);\n }\n if (collectionName === 'images') {\n return excluded.images.has(id);\n }\n if (collectionName === 'items') {\n return excluded.items.has(id);\n }\n if (collectionName === 'miscs') {\n return excluded.miscs.has(id);\n }\n if (collectionName === 'textures') {\n return excluded.textures.has(id);\n }\n\n return false;\n}\n\nfunction mergeCollection(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 = collectionEntryKey(entry);\n\n if (key != null) {\n seen.add(key);\n }\n }\n\n for (const entry of preserved) {\n const key = collectionEntryKey(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 collectionEntryKey(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(\n (entry): entry is Record<string, unknown> =>\n entry != null && typeof entry === 'object' && !Array.isArray(entry),\n )\n : [];\n}\n\nexport function mergeGEPlayerVersion(\n hostScene: Record<string, unknown>,\n sourceScene: Record<string, unknown>,\n): void {\n const hostPlayer = isRecord(hostScene['playerVersion']) ? hostScene['playerVersion'] : {};\n const sourcePlayer = isRecord(sourceScene['playerVersion']) ? sourceScene['playerVersion'] : {};\n const hostWeb = typeof hostPlayer['web'] === 'string' ? hostPlayer['web'] : '';\n const sourceWeb = typeof sourcePlayer['web'] === 'string' ? sourcePlayer['web'] : '';\n\n hostScene['playerVersion'] = {\n ...sourcePlayer,\n ...hostPlayer,\n ...(sourceWeb !== '' && compareNumericVersions(sourceWeb, hostWeb) > 0 && { web: sourceWeb }),\n };\n}\n\nfunction compareNumericVersions(left: string, right: string): number {\n const leftParts = left.split(/\\D+/).filter(Boolean).map(Number);\n const rightParts = right.split(/\\D+/).filter(Boolean).map(Number);\n const length = Math.max(leftParts.length, rightParts.length);\n\n for (let index = 0; index < length; index++) {\n const difference = (leftParts[index] ?? 0) - (rightParts[index] ?? 0);\n\n if (difference !== 0) {\n return difference;\n }\n }\n\n return 0;\n}\n","import type { IRScene } from '@vvfx/animation-ir';\nimport { ValueType } from '@galacean/effects-specification';\nimport { createId } from '../common/id';\nimport { isRecord } from '../common/json-normalization';\nimport type { GEToIRPreservedData } from '../preserved-data';\nimport { mergeGEPlayerVersion } from '../ir2ge/post-process/merge-preserved-resources';\n\nconst SOURCE_COLLECTIONS = [\n 'compositions', 'items', 'components', 'images', 'textures', 'fonts', 'plugins',\n 'geometries', 'materials', 'shaders', 'bins', 'animations', 'miscs', 'videos', 'audios',\n];\nconst ID_FIELDS = new Set([\n 'id', 'parentId', 'compositionId', 'entryCompositionId', 'assetId', 'fontAssetId', 'sourceLayerId',\n 'sourceCompositionId', 'sourceComponentId', 'irCompositionId', 'irLayerId', 'effectGroupId', 'runtimeParentId',\n]);\nconst ID_MAP_FIELDS = new Set(['compositionBindings', 'layerDataById', 'itemAnchorById', 'itemEulerHintById']);\n\n/** Each placed instance owns its identities, including references inside opaque GE payloads. */\nexport function namespaceParticleSource(\n input: { scene: IRScene; preservedData: GEToIRPreservedData },\n idMap: Readonly<Record<string, string>>,\n): typeof input & { ids: ReadonlyMap<string, string> } {\n const result = structuredClone(input);\n const ids = collectSourceObjectIds(result);\n const mappedIds = new Map(Array.from(ids, id => [id, idMap[id] ?? createId()]));\n\n remapIds(result, mappedIds);\n\n return { ...result, ids: mappedIds };\n}\n\nfunction remapIds(value: unknown, ids: ReadonlyMap<string, string>): void {\n if (Array.isArray(value)) {\n value.forEach(entry => remapIds(entry, ids));\n\n return;\n }\n if (!isRecord(value)) {\n return;\n }\n for (const [key, entry] of Object.entries(value)) {\n if (ID_FIELDS.has(key) && typeof entry === 'string') {\n value[key] = ids.get(entry) ?? entry;\n } else if (['sourceItemIds', 'sourceItemOrder', 'runtimeItemIds', 'runtimeComponentIds', 'additionalComponentIds']\n .includes(key) && Array.isArray(entry)) {\n value[key] = entry.map((id: unknown) => typeof id === 'string' ? ids.get(id) ?? id : id);\n } else if (ID_MAP_FIELDS.has(key) && isRecord(entry)) {\n remapIds(entry, ids);\n value[key] = Object.fromEntries(Object.entries(entry).map(([id, data]) => [ids.get(id) ?? id, data]));\n } else {\n remapIds(entry, ids);\n }\n }\n}\n\n/** Combine only source pools; generated Items and Timelines are assembled by the regular exporter. */\nexport function appendParticleSourceResources(target: GEToIRPreservedData, source: GEToIRPreservedData): void {\n const sourceScene = source.sourceScene;\n\n if (sourceScene == null) {\n throw new TypeError('[ge-ir:particle-assemble] Source GE resources are missing.');\n }\n const targetScene = target.sourceScene ?? {\n version: sourceScene['version'], type: 'ge', compositionId: sourceScene['compositionId'],\n };\n const bins = targetScene['bins'];\n const binOffset = Array.isArray(bins) ? bins.length : 0;\n\n normalizeTextureSources(targetScene);\n normalizeTextureSources(sourceScene);\n rebaseBinaryPointers(source, binOffset);\n for (const name of SOURCE_COLLECTIONS) {\n const existing: unknown[] = Array.isArray(targetScene[name]) ? targetScene[name] : [];\n const additions: unknown[] = Array.isArray(sourceScene[name]) ? sourceScene[name] : [];\n\n targetScene[name] = [...existing, ...additions];\n }\n mergeGEPlayerVersion(targetScene, sourceScene);\n target.sourceScene = targetScene;\n}\n\nfunction normalizeTextureSources(scene: Record<string, unknown>): void {\n const images = scene['images'];\n const textures = scene['textures'];\n\n if (!Array.isArray(images) || !Array.isArray(textures)) {\n return;\n }\n for (const texture of textures) {\n if (!isRecord(texture) || typeof texture['source'] !== 'number') {\n continue;\n }\n const image: unknown = images[texture['source']];\n\n if (!isRecord(image) || typeof image['id'] !== 'string') {\n throw new TypeError('[ge-ir:particle-assemble] Numeric texture source does not resolve to an Image ID.');\n }\n texture['source'] = { id: image['id'] };\n }\n}\n\nfunction rebaseBinaryPointers(value: unknown, offset: number, visited = new WeakSet<object>()): void {\n if (value == null || typeof value !== 'object' || visited.has(value)) {\n return;\n }\n visited.add(value);\n if (Array.isArray(value)) {\n if (value.length === 2 && value[0] === ValueType.BINARY && Array.isArray(value[1])) {\n const pointer: unknown[] = value[1];\n\n if (typeof pointer[0] === 'number' && Number.isInteger(pointer[0]) && pointer[0] >= 0) {\n pointer[0] += offset;\n\n return;\n }\n }\n value.forEach(entry => rebaseBinaryPointers(entry, offset, visited));\n } else if (isRecord(value)) {\n Object.values(value).forEach(entry => rebaseBinaryPointers(entry, offset, visited));\n }\n}\n\nfunction collectSourceObjectIds(value: unknown, ids = new Set<string>(), visited = new WeakSet<object>()): Set<string> {\n if (value == null || typeof value !== 'object' || visited.has(value)) {\n return ids;\n }\n visited.add(value);\n\n if (Array.isArray(value)) {\n value.forEach(entry => collectSourceObjectIds(entry, ids, visited));\n\n return ids;\n }\n\n const id = (value as Record<string, unknown>)['id'];\n\n if (typeof id === 'string' && id !== '') {\n ids.add(id);\n }\n Object.values(value).forEach(entry => collectSourceObjectIds(entry, ids, visited));\n\n return ids;\n}\n","import type { IRScene } from '@vvfx/animation-ir';\nimport type { IRToGEOptions } from '../conversion';\nimport { isRecord } from '../common/json-normalization';\nimport {\n assertGEToIRPreservedDataMatchesScene, GE_PRESERVED_DATA_VERSION, type GEToIRPreservedData,\n} from '../preserved-data';\nimport { updateGEToIRPreservedData } from '../update-preserved-data';\nimport { buildParticleFragment } from '../particle/particle-fragment';\nimport { appendParticleSourceResources, namespaceParticleSource } from '../particle/assemble-particle-source-data';\n\n/** Reconcile source-local GE payloads with identities already assigned by the IR converter. */\nexport function assembleSourcePreservedData(scene: IRScene, options: IRToGEOptions): GEToIRPreservedData {\n const result: GEToIRPreservedData = structuredClone(options.preservedData ?? {\n version: GE_PRESERVED_DATA_VERSION, compositionBindings: {},\n particleSourceData: { particleEffectGroups: [], layers: [] },\n });\n\n for (const input of options.sources ?? []) {\n assertGEToIRPreservedDataMatchesScene(input.scene, input.preservedData);\n const source = input.preservedData;\n const raw = source.sourceScene;\n\n if (raw == null || raw['version'] !== '3.6') {\n throw new TypeError('[ge-ir:sources] Particle sources require preserved GE 3.6 data.');\n }\n const groups = source.particleSourceData.particleEffectGroups.filter(group =>\n scene.compositions.some(composition => composition.id === input.idMap[group.irCompositionId]),\n );\n\n if (groups.length !== 1) {\n throw new TypeError('[ge-ir:sources] Each source instance must map exactly one particle composition.');\n }\n const group = groups[0];\n const composition = input.scene.compositions.find(value => value.id === group.irCompositionId);\n const target = scene.compositions.find(value => value.id === input.idMap[group.irCompositionId]);\n\n if (composition == null || target == null || result.compositionBindings[target.id] != null) {\n throw new TypeError('[ge-ir:sources] Source instance is missing or has duplicate composition bindings.');\n }\n const sourceIds = [composition.id, ...composition.layers.map(layer => layer.id),\n ...input.scene.assets.map(asset => asset.id)];\n const mappedIds = sourceIds.map(id => input.idMap[id]);\n\n if (mappedIds.some(id => typeof id !== 'string' || id === '') || new Set(mappedIds).size !== mappedIds.length) {\n throw new TypeError('[ge-ir:sources] Source ID mapping must be complete and one-to-one.');\n }\n const particles = source.particleSourceData.layers.filter(binding => binding.effectGroupId === group.id);\n const selected = particles.filter(binding => target.layers.some(layer =>\n layer.id === input.idMap[binding.irLayerId] && layer.type === 'particle',\n ));\n\n if (selected.length === 0 || (selected.length !== 1 && selected.length !== particles.length)) {\n throw new TypeError('[ge-ir:sources] Source instance must contain one system or its complete group.');\n }\n const fragment = buildParticleFragment(raw, source, {\n effectGroupId: group.id, irCompositionId: group.irCompositionId,\n ...(selected.length !== particles.length && { irLayerId: selected[0].irLayerId }),\n });\n const sourceBinding = source.compositionBindings[composition.id];\n const instance = namespaceParticleSource({\n scene: { ...input.scene, entryCompositionId: composition.id, compositions: [composition] },\n preservedData: {\n version: GE_PRESERVED_DATA_VERSION, sourceScene: fragment,\n compositionBindings: { [composition.id]: structuredClone(sourceBinding) },\n particleSourceData: { particleEffectGroups: [group], layers: particles },\n },\n }, input.idMap);\n const fragmentItems = Array.isArray(fragment['items']) ? fragment['items'].filter(isRecord) : [];\n const retainedItemIds = new Set(fragmentItems.map(item => item['id']));\n const mappedBinding = instance.preservedData.compositionBindings[target.id];\n\n // Ancestors retained solely for their transforms must not restore a removed renderer.\n for (const layer of target.layers) {\n const original = composition.layers.find(value => input.idMap[value.id] === layer.id);\n const data = mappedBinding.layerDataById[layer.id];\n\n if (original != null && data != null && original.type !== 'null' && layer.type === 'null') {\n data.sourceHierarchy = 'single-item';\n data.sourceItemIds = sourceBinding.layerDataById[original.id]?.sourceItemIds\n ?.filter(id => retainedItemIds.has(id)).map(id => instance.ids.get(id) ?? id);\n }\n }\n const reconciled = updateGEToIRPreservedData(instance.scene, scene, instance.preservedData);\n\n appendParticleSourceResources(result, reconciled);\n Object.assign(result.compositionBindings, reconciled.compositionBindings);\n result.particleSourceData.particleEffectGroups.push(...reconciled.particleSourceData.particleEffectGroups);\n result.particleSourceData.layers.push(...reconciled.particleSourceData.layers);\n }\n const hostBinding = result.compositionBindings[scene.entryCompositionId];\n\n if (hostBinding != null) {\n hostBinding.sourceItemOrder = [];\n }\n assertGEToIRPreservedDataMatchesScene(scene, result);\n\n return result;\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 type { EffectsLayerPreservedData } from '../../preserved-data';\nimport { isRecord } from '../../common/json-normalization';\nimport type { DataPath, TimelineClipData, TrackAssetData } from '@galacean/effects-specification';\nimport { DataType, type EndBehavior, ItemType } from '@galacean/effects-specification';\nimport { toDataPath } from '../../common/data-path';\nimport { createId } from '../../common/id';\nimport { roundNumber } from '../../common/math';\nimport type { ECSCollector, GeneratedItemBinding, GeneratedMiscData, TransformAnimation } from '../types';\n\ninterface TimelineTrackCollector {\n miscs: Record<string, unknown>[];\n}\n\n/** Append binding, activation, transform, and supported renderer-color tracks for one Item. */\nexport function appendTimelineTracks(\n collector: TimelineTrackCollector,\n delay: number,\n duration: number,\n endBehavior: EndBehavior,\n animation: TransformAnimation,\n itemType: ItemType,\n precompTimeOffset = 0,\n): string {\n const objectBindingTrackId = createId();\n const childTrackIds: DataPath[] = [];\n\n childTrackIds.push(toDataPath(appendActivationTrack(collector, delay, duration, endBehavior)));\n childTrackIds.push(toDataPath(appendTransformTrack(collector, delay, duration, endBehavior, animation)));\n\n if (isPrecompItemType(itemType)) {\n const sourceOffset = Math.max(precompTimeOffset, 0);\n\n childTrackIds.push(toDataPath(appendSubCompositionTrack(\n collector,\n delay - sourceOffset,\n duration + sourceOffset,\n endBehavior,\n )));\n // GE 2.9's SubComposition mixer writes the same Item active state as Activation.\n // When source time starts early, repeat Activation last so it remains the final\n // visibility decision while the nested Composition clock continues advancing.\n if (sourceOffset > 0) {\n childTrackIds.push(toDataPath(appendActivationTrack(collector, delay, duration, endBehavior)));\n }\n }\n\n if (shouldAppendSpriteColorTrack(itemType)) {\n childTrackIds.push(toDataPath(appendSpriteColorTrack(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 shouldAppendSpriteColorTrack(itemType: ItemType): boolean {\n return itemType === ItemType.sprite || itemType === ItemType.text || itemType === ItemType.shape;\n}\n\nfunction isPrecompItemType(itemType: ItemType): boolean {\n return itemType === ItemType.composition;\n}\n\nfunction appendActivationTrack(\n collector: TimelineTrackCollector,\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 appendTransformTrack(\n collector: TimelineTrackCollector,\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 appendSpriteColorTrack(\n collector: TimelineTrackCollector,\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 appendSubCompositionTrack(\n collector: TimelineTrackCollector,\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: TimelineTrackCollector,\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\nexport function restoreComponentTimelines(\n collector: ECSCollector,\n ir: IRComposition,\n itemBindings: GeneratedItemBinding[],\n layerDataById: Readonly<Record<string, EffectsLayerPreservedData>>,\n): { key: DataPath; value: DataPath }[] {\n const bindings: { key: DataPath; value: DataPath }[] = [];\n\n for (const layer of ir.layers) {\n const timeline = layerDataById[layer.id]?.componentTimeline;\n const binding = itemBindings.find(candidate => candidate.layerId === layer.id &&\n collector.components.some(component => component.item.id === candidate.itemId));\n const component = binding == null ? undefined : collector.components.find(value => value.item.id === binding.itemId);\n const itemTrack = collector.miscs.find(value => value.id === binding?.objectBindingTrackId);\n\n if (timeline == null || component == null || itemTrack == null || !Array.isArray(itemTrack['children'])) {\n continue;\n }\n const ids = new Map<string, string>();\n\n for (const object of timeline.objects) {\n const id = object['id'];\n\n if (typeof id === 'string') {\n ids.set(id, collector.miscs.some(misc => misc.id === id) ? createId() : id);\n }\n }\n const remap = (value: unknown): unknown => {\n if (Array.isArray(value)) {\n return value.map(remap);\n }\n if (!isRecord(value)) {\n return value;\n }\n\n return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key,\n key === 'id' && typeof entry === 'string' ? ids.get(entry) ?? entry : remap(entry),\n ]));\n };\n\n for (const object of timeline.objects) {\n const copy = remap(object);\n\n const dataType = isRecord(copy) ? Object.values(DataType).find(type => type === copy['dataType']) : undefined;\n\n if (isRecord(copy) && typeof copy['id'] === 'string' && dataType != null) {\n collector.miscs.push({ ...copy, id: copy['id'], dataType });\n }\n }\n const root = toDataPath(ids.get(timeline.root.id) ?? timeline.root.id);\n\n itemTrack['children'].push(root);\n bindings.push({ key: root, value: toDataPath(component.id) });\n }\n\n return bindings;\n}\n","import { resolveDataPathId, visitDataPathReferences } from '../../common/data-path';\nimport { createId } from '../../common/id';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\nimport type { GEToIRPreservedData } from '../../preserved-data';\nimport type { GeneratedCompositionData } from '../types';\n\n/** Reconnect GE-only objects without replacing entities regenerated from editable IR. */\nexport function restoreRuntimeGraph(\n generated: Record<string, unknown>,\n compositions: GeneratedCompositionData[],\n preservedData?: GEToIRPreservedData,\n): void {\n const source = preservedData?.sourceScene;\n\n if (source == null || preservedData == null) {\n return;\n }\n const sourceById = new Map<string, { collection: string; object: Record<string, unknown> }>();\n\n for (const [collection, values] of Object.entries(source)) {\n if (collection === 'bins') {\n continue;\n }\n for (const object of records(values)) {\n if (typeof object['id'] === 'string') {\n sourceById.set(object['id'], { collection, object });\n }\n }\n }\n const usedIds = new Set(Object.values(generated).flatMap(values => records(values).map(object => object['id'])));\n const generatedCompositions = records(generated['compositions']);\n const sharedResourceIds = new Map<string, string>();\n\n for (const { id, ir, itemBindings } of compositions) {\n const binding = preservedData.compositionBindings[ir.id];\n const composition = generatedCompositions.find(object => object['id'] === id);\n\n if (binding == null || composition == null) {\n continue;\n }\n const runtimeItems = new Set(binding.runtimeItemIds ?? []);\n const roots = new Set([...runtimeItems, ...binding.runtimeComponentIds ?? []]);\n const ids = new Map<string, string>([[binding.sourceCompositionId, id]]);\n const generatedComponents = records(generated['components']);\n const runtime = generatedComponents.find(object => object['dataType'] === 'CompositionComponent' &&\n resolveDataPathId(object['item']) === id);\n const sourceRuntime = records(source['components']).find(object => object['dataType'] === 'CompositionComponent' &&\n resolveDataPathId(object['item']) === binding.sourceCompositionId);\n\n if (runtime == null || sourceRuntime == null) {\n continue;\n }\n const sourceBindings = records(sourceRuntime['sceneBindings']);\n const sourceTrackByTarget = new Map(sourceBindings.flatMap(value => {\n const target = resolveDataPathId(value['value']);\n const track = resolveDataPathId(value['key']);\n\n return target != null && track != null ? [[target, track] as const] : [];\n }));\n const generatedBindings = records(runtime['sceneBindings']);\n const generatedTrackByTarget = new Map(generatedBindings.flatMap(value => {\n const target = resolveDataPathId(value['value']);\n const track = resolveDataPathId(value['key']);\n\n return target != null && track != null ? [[target, track] as const] : [];\n }));\n\n for (const itemBinding of itemBindings) {\n const data = itemBinding.layerId == null ? undefined : binding.layerDataById[itemBinding.layerId];\n const sourceItems = data?.sourceItemIds ?? [];\n const sourceItemId = sourceItems.includes(itemBinding.itemId) ? itemBinding.itemId : sourceItems.at(-1);\n\n if (sourceItemId == null) {\n continue;\n }\n ids.set(sourceItemId, itemBinding.itemId);\n const sourceTrack = sourceTrackByTarget.get(sourceItemId);\n\n if (sourceTrack != null && itemBinding.objectBindingTrackId != null) {\n ids.set(sourceTrack, itemBinding.objectBindingTrackId);\n }\n for (const componentId of data?.additionalComponentIds ?? []) {\n roots.add(componentId);\n }\n const primaryId = data?.sourceComponentId;\n const primaryType = primaryId == null ? undefined : sourceById.get(primaryId)?.object['dataType'];\n const primary = generatedComponents.find(object => resolveDataPathId(object['item']) === itemBinding.itemId &&\n object['dataType'] === primaryType);\n\n if (primaryId != null && primary != null && typeof primary['id'] === 'string') {\n ids.set(primaryId, primary['id']);\n const originalTrack = sourceTrackByTarget.get(primaryId);\n const generatedTrack = generatedTrackByTarget.get(primary['id']);\n\n if (originalTrack != null && generatedTrack != null) {\n ids.set(originalTrack, generatedTrack);\n }\n }\n }\n const copied = new Map<string, { collection: string; object: Record<string, unknown> }>();\n const collect = (sourceId: string): void => {\n if (ids.has(sourceId) || copied.has(sourceId)) {\n return;\n }\n const entry = sourceById.get(sourceId);\n\n if (entry == null || entry.collection === 'compositions' ||\n (entry.collection === 'items' && !runtimeItems.has(sourceId))) {\n return;\n }\n const sharedId = sharedResourceIds.get(sourceId);\n\n if (sharedId != null) {\n ids.set(sourceId, sharedId);\n\n return;\n }\n if (entry.collection === 'components') {\n const owner = resolveDataPathId(entry.object['item']);\n\n if (entry.object['dataType'] === 'CompositionComponent' ||\n (owner != null && !ids.has(owner) && !runtimeItems.has(owner))) {\n return;\n }\n }\n const mappedId = usedIds.has(sourceId) ? createId() : sourceId;\n\n usedIds.add(mappedId);\n ids.set(sourceId, mappedId);\n // Resources are shared across GE compositions; cloning them disconnects cross-composition material animation.\n if (!['items', 'components', 'miscs'].includes(entry.collection)) {\n sharedResourceIds.set(sourceId, mappedId);\n }\n copied.set(sourceId, { collection: entry.collection, object: normalizeJSONValue(entry.object) });\n visitDataPathReferences(entry.object, collect);\n if (entry.collection === 'textures' && typeof entry.object['source'] === 'number') {\n const imageId = records(source['images'])[entry.object['source']]?.['id'];\n\n if (typeof imageId === 'string') {\n copied.get(sourceId)!.object['source'] = { id: imageId };\n collect(imageId);\n }\n }\n };\n\n for (const root of roots) {\n collect(root);\n }\n const extraBindings = sourceBindings.filter(value => {\n const target = resolveDataPathId(value['value']);\n\n return target != null && (copied.has(target) || (ids.has(target) && sharedResourceIds.has(target)));\n });\n\n for (const value of extraBindings) {\n const track = resolveDataPathId(value['key']);\n\n if (track != null) {\n collect(track);\n }\n }\n for (const { object } of copied.values()) {\n remapReferences(object, ids);\n }\n for (const { collection, object } of copied.values()) {\n const values: unknown[] = Array.isArray(generated[collection]) ? generated[collection] : [];\n\n values.push(object);\n generated[collection] = values;\n }\n const allItems = records(generated['items']);\n const allMiscs = records(generated['miscs']);\n const localItemIds = new Set(itemBindings.map(value => value.itemId));\n\n for (const itemId of runtimeItems) {\n const mappedId = ids.get(itemId);\n\n if (mappedId != null) {\n localItemIds.add(mappedId);\n }\n }\n const localItems = allItems.filter(object => localItemIds.has(String(object['id'])));\n\n for (const item of localItems) {\n const sourceId = [...ids].find(([, target]) => target === item['id'])?.[0];\n const original = sourceId == null ? undefined : sourceById.get(sourceId)?.object;\n const data = Object.values(binding.layerDataById).find(value => value.sourceItemIds?.includes(sourceId ?? '') === true);\n const originalParent = data?.runtimeParentId ?? original?.['parentId'] ?? records(source['items']).find(parent =>\n records(parent['children']).some(child => resolveDataPathId(child) === sourceId),\n )?.['id'];\n\n if (typeof originalParent === 'string' && (runtimeItems.has(sourceId ?? '') ||\n data?.runtimeParentId === originalParent)) {\n const parent = ids.get(originalParent);\n\n if (parent != null) {\n item['parentId'] = parent;\n } else {\n delete item['parentId'];\n }\n }\n const additional = records(original?.['components']).flatMap(reference => {\n const sourceComponentId = resolveDataPathId(reference);\n const mapped = sourceComponentId == null ? undefined : ids.get(sourceComponentId);\n\n return mapped != null && copied.has(sourceComponentId!) ? [{ id: mapped }] : [];\n });\n\n const componentOrder = new Map(records(original?.['components']).map((reference, index) => {\n const sourceId = resolveDataPathId(reference) ?? '';\n\n return [ids.get(sourceId) ?? sourceId, index];\n }));\n\n item['components'] = uniqueReferences([...records(item['components']), ...additional]).sort((left, right) =>\n (componentOrder.get(String(left['id'])) ?? componentOrder.size) -\n (componentOrder.get(String(right['id'])) ?? componentOrder.size),\n );\n }\n const order = new Map(binding.sourceItemOrder.map((sourceId, index) => [ids.get(sourceId) ?? sourceId, index]));\n\n localItems.sort((left, right) => (order.get(String(left['id'])) ?? order.size) -\n (order.get(String(right['id'])) ?? order.size));\n const generatedOrder = new Map(itemBindings.map((item, index) => [item.itemId, index]));\n const orderedGeneratedItems = localItems.filter(item => generatedOrder.has(String(item['id']))).sort((left, right) =>\n generatedOrder.get(String(left['id']))! - generatedOrder.get(String(right['id']))!,\n );\n let generatedIndex = 0;\n\n // Keep GE-only slots while retaining the authored order of regenerated and newly inserted Items.\n for (let index = 0; index < localItems.length; index++) {\n if (generatedOrder.has(String(localItems[index]['id']))) {\n localItems[index] = orderedGeneratedItems[generatedIndex++];\n }\n }\n composition['children'] = [];\n for (const item of localItems) {\n item['children'] = [];\n }\n const localById = new Map(localItems.map(item => [item['id'], item]));\n\n for (const item of localItems) {\n const parent = localById.get(item['parentId']);\n const owner = parent ?? composition;\n\n (owner['children'] as unknown[]).push({ id: item['id'] });\n }\n composition['components'] = uniqueReferences([\n ...records(composition['components']),\n ...(binding.runtimeComponentIds ?? []).map(sourceId => ({ id: ids.get(sourceId) ?? sourceId })),\n ]);\n runtime['sceneBindings'] = [...generatedBindings, ...extraBindings.map(value => remapReferences(\n normalizeJSONValue(value), ids,\n ))];\n const timeline = allMiscs.find(object => object['id'] === resolveDataPathId(runtime['timelineAsset']));\n\n for (const value of extraBindings) {\n const track = resolveDataPathId(value['key']);\n const mapped = track == null ? undefined : ids.get(track);\n\n if (track == null || mapped == null) {\n continue;\n }\n const parent = records(source['miscs']).find(object => records(object['children']).some(child =>\n resolveDataPathId(child) === track,\n ));\n const mappedParent = typeof parent?.['id'] === 'string' ? ids.get(parent['id']) : undefined;\n const owner = allMiscs.find(object => object['id'] === mappedParent);\n\n if (owner != null) {\n owner['children'] = uniqueReferences([...records(owner['children']), { id: mapped }]);\n } else if (timeline != null) {\n timeline['tracks'] = uniqueReferences([...records(timeline['tracks']), { id: mapped }]);\n }\n }\n if (timeline != null) {\n const sourceTimelineId = resolveDataPathId(sourceRuntime['timelineAsset']);\n const sourceTimeline = sourceTimelineId == null ? undefined : sourceById.get(sourceTimelineId)?.object;\n const order = new Map(records(sourceTimeline?.['tracks']).map((reference, index) => {\n const sourceId = resolveDataPathId(reference) ?? '';\n\n return [ids.get(sourceId) ?? sourceId, index];\n }));\n\n timeline['tracks'] = records(timeline['tracks']).sort((left, right) =>\n (order.get(String(left['id'])) ?? order.size) - (order.get(String(right['id'])) ?? order.size),\n );\n const itemOrder = new Map(localItems.map((item, index) => [item['id'], index]));\n const itemTrackOrder = new Map(records(runtime['sceneBindings']).flatMap(value => {\n const index = itemOrder.get(resolveDataPathId(value['value']));\n const track = resolveDataPathId(value['key']);\n\n return index != null && track != null ? [[track, index] as const] : [];\n }));\n const tracks = records(timeline['tracks']);\n const itemTracks = tracks.filter(track => itemTrackOrder.has(String(track['id']))).sort((left, right) =>\n itemTrackOrder.get(String(left['id']))! - itemTrackOrder.get(String(right['id']))!,\n );\n let itemTrackIndex = 0;\n\n timeline['tracks'] = tracks.map(track => itemTrackOrder.has(String(track['id']))\n ? itemTracks[itemTrackIndex++] : track);\n }\n }\n if (source['renderSettings'] != null) {\n generated['renderSettings'] = normalizeJSONValue(source['renderSettings']);\n }\n}\n\nfunction remapReferences(value: unknown, ids: ReadonlyMap<string, string>): unknown {\n if (Array.isArray(value)) {\n value.forEach(entry => remapReferences(entry, ids));\n } else if (isRecord(value)) {\n for (const [key, entry] of Object.entries(value)) {\n if (typeof entry === 'string' && (key === 'id' || key === 'parentId' || key === 'refId')) {\n value[key] = ids.get(entry) ?? entry;\n } else {\n remapReferences(entry, ids);\n }\n }\n }\n\n return value;\n}\n\nfunction uniqueReferences(values: Record<string, unknown>[]): Record<string, unknown>[] {\n return [...new Map(values.map(value => [value['id'], value])).values()];\n}\n\nfunction records(value: unknown): Record<string, unknown>[] {\n return Array.isArray(value) ? value.filter(isRecord) : [];\n}\n","import {\n IREndBehavior, type IRComposition, type IRColor, type IRScene,\n} from '@vvfx/animation-ir';\nimport type {\n CompositionComponentData,\n CompositionData,\n DataPath,\n JSONScene,\n RGBAColorValue,\n TimelineAssetData,\n VFXItemData,\n} from '@galacean/effects-specification';\nimport { DataType, EndBehavior, JSONSceneVersion } from '@galacean/effects-specification';\nimport { DEFAULT_CAMERA_FOV, DEFAULT_CAMERA_Z, DEFAULT_CLIP_MODE } from '../common/coordinate-mapping';\nimport { toDataPath } from '../common/data-path';\nimport { createId } from '../common/id';\nimport { normalizeJSONValue } from '../common/json-normalization';\nimport { roundNumber } from '../common/math';\nimport { restoreComponentTimelines } from './generator/append-timeline-tracks';\nimport { mergePreservedResources } from './post-process/merge-preserved-resources';\nimport { restoreRuntimeGraph } from './post-process/restore-runtime-graph';\nimport type { GEToIRPreservedData } from '../preserved-data';\nimport type { ECSCollector, GeneratedComponentData, GeneratedCompositionData, GeneratedMiscData } from './types';\n\nconst DEFAULT_PLAYER_VERSION = {\n web: '2.11.0-alpha.1',\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 irScene: IRScene,\n collector: ECSCollector,\n generatedCompositions: GeneratedCompositionData[],\n duration?: number,\n preservedData?: GEToIRPreservedData,\n): JSONScene {\n const compositions: Array<CompositionData & Record<string, unknown>> = [];\n\n for (const { id, ir, itemBindings, items } of generatedCompositions) {\n const itemById = new Map(items.map(item => [item.id, item]));\n const children: DataPath[] = [];\n\n for (const binding of itemBindings) {\n const item = itemById.get(binding.itemId);\n const timing = binding.layerId == null ? undefined\n : preservedData?.compositionBindings[ir.id]?.layerDataById[binding.layerId]?.itemTiming;\n\n if (item != null && timing != null) {\n item.duration = timing.duration;\n item.delay = timing.delay;\n }\n }\n\n for (const item of items) {\n item.children = [];\n }\n for (const item of items) {\n const parent = item.parentId == null ? undefined : itemById.get(item.parentId);\n\n if (parent != null) {\n parent.children!.push(toDataPath(item.id));\n } else {\n children.push(toDataPath(item.id));\n }\n }\n const timelineAssetId = createId();\n const timelineBindings = itemBindings.filter(\n (binding): binding is typeof binding & { objectBindingTrackId: string } => binding.objectBindingTrackId != null,\n );\n const objectBindingTrackRefs: DataPath[] = timelineBindings.map(binding => toDataPath(binding.objectBindingTrackId));\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 sceneBindings = timelineBindings.map(binding => ({\n key: toDataPath(binding.objectBindingTrackId),\n value: toDataPath(binding.itemId),\n }));\n\n sceneBindings.push(...restoreComponentTimelines(\n collector, ir, itemBindings, preservedData?.compositionBindings[ir.id]?.layerDataById ?? {},\n ));\n // Specification 2.8.1 still declares the item list removed by the 3.7 runtime migration.\n const compositionComponent: Omit<CompositionComponentData, 'items'> & GeneratedComponentData = {\n id: compositionComponentId,\n dataType: DataType.CompositionComponent,\n item: toDataPath(id),\n timelineAsset: toDataPath(timelineAssetId),\n sceneBindings,\n };\n\n collector.components.push(compositionComponent);\n\n const composition: CompositionData & Record<string, unknown> = {\n id,\n name: ir.name ?? ir.id,\n duration: id === irScene.entryCompositionId && duration != null ? duration : deriveDuration(ir),\n startTime: ir.inPoint / ir.frameRate,\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 ...preservedData?.compositionBindings[ir.id]?.camera,\n },\n components: [toDataPath(compositionComponentId)],\n children,\n };\n\n if (ir.backgroundColor != null) {\n composition['background'] = { color: colorToRoundedRgba(ir.backgroundColor) };\n }\n compositions.push(composition);\n }\n\n const generatedScene: JSONScene = {\n version: JSONSceneVersion['3_7'],\n playerVersion: DEFAULT_PLAYER_VERSION,\n images: collector.images,\n fonts: collector.fonts,\n plugins: [],\n type: 'ge',\n compositionId: irScene.entryCompositionId,\n compositions,\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 restoreRuntimeGraph(generatedScene as unknown as Record<string, unknown>, generatedCompositions, preservedData);\n\n return normalizeJSONValue(\n mergePreservedResources(generatedScene as unknown as Record<string, unknown>, preservedData),\n ) as unknown as JSONScene;\n}\n\nfunction deriveDuration(ir: IRComposition): number {\n return (ir.outPoint - ir.inPoint) / ir.frameRate;\n}\n\n/** Map the required IR composition end behavior to GE. */\nfunction mapCompositionEndBehavior(endBehavior: IREndBehavior): EndBehavior {\n switch (endBehavior) {\n case IREndBehavior.Loop:\n return EndBehavior.restart;\n case IREndBehavior.Continue:\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 [roundNumber(color[0]), roundNumber(color[1]), roundNumber(color[2]), roundNumber(color[3], 4)];\n}\n","import type { IRAnimatedProperty, IRKeyframe, IRPrecompLayer } from '@vvfx/animation-ir';\nimport type { IRComposition } from '@vvfx/animation-ir';\n\nconst DEFAULT_OPACITY: IRAnimatedProperty<number> = { type: 'static', value: 1 };\n\n/** Multiply two opacity channels in one Composition time domain. */\nexport function multiplyOpacityProperties(\n left: IRAnimatedProperty<number> | undefined,\n right: IRAnimatedProperty<number> | undefined,\n inFrame: number,\n outFrame: number,\n): IRAnimatedProperty<number> | undefined {\n if (left == null) {\n return cloneOpacityProperty(right);\n }\n if (right == null) {\n return cloneOpacityProperty(left);\n }\n if (left.type === 'static' && right.type === 'static') {\n return { type: 'static', value: left.value * right.value };\n }\n if (left.type === 'static') {\n return scaleOpacityProperty(right, left.value);\n }\n if (right.type === 'static') {\n return scaleOpacityProperty(left, right.value);\n }\n\n const frames = new Set<number>([inFrame, outFrame]);\n\n for (const keyframe of left.keyframes) {\n frames.add(keyframe.frame);\n }\n for (const keyframe of right.keyframes) {\n frames.add(keyframe.frame);\n }\n\n const keyframes = [...frames]\n .filter(frame => frame >= inFrame && frame <= outFrame)\n .sort((a, b) => a - b)\n .map(frame => ({\n frame,\n value: evaluateOpacityAtFrame(left.keyframes, frame) * evaluateOpacityAtFrame(right.keyframes, frame),\n }));\n\n return keyframes.length === 1\n ? { type: 'static', value: keyframes[0].value }\n : { type: 'keyframed', keyframes };\n}\n\n/** Map an instance opacity channel from its parent timeline into referenced Composition frames. */\nexport function mapOpacityToReferencedComposition(\n opacity: IRAnimatedProperty<number> | undefined,\n layer: IRPrecompLayer,\n parent: IRComposition,\n referenced: IRComposition,\n): IRAnimatedProperty<number> | undefined {\n if (opacity == null || opacity.type === 'static') {\n return cloneOpacityProperty(opacity);\n }\n\n const parentFrameRate = parent.frameRate;\n const referencedFrameRate = referenced.frameRate;\n const sourceStartFrame = layer.time.sourceStartFrame ?? referenced.inPoint;\n const stretch = layer.time.stretch ?? 1;\n const mapFrame = (frame: number): number =>\n sourceStartFrame + ((frame - layer.time.inFrame) * referencedFrameRate) / (parentFrameRate * stretch);\n\n return {\n type: 'keyframed',\n keyframes: opacity.keyframes.map(keyframe => ({ ...keyframe, frame: mapFrame(keyframe.frame) })),\n };\n}\n\nexport function isDefaultOpacity(opacity: IRAnimatedProperty<number> | undefined): boolean {\n if (opacity == null) {\n return true;\n }\n if (opacity.type === 'static') {\n return opacity.value === 1;\n }\n\n return opacity.keyframes.every(keyframe => keyframe.value === 1 && (keyframe.endValue ?? 1) === 1);\n}\n\nexport function hasAnimatedOpacity(opacity: IRAnimatedProperty<number> | undefined): boolean {\n return opacity?.type === 'keyframed' && opacity.keyframes.length > 1;\n}\n\nfunction cloneOpacityProperty(\n opacity: IRAnimatedProperty<number> | undefined,\n): IRAnimatedProperty<number> | undefined {\n if (opacity == null) {\n return undefined;\n }\n if (opacity.type === 'static') {\n return { ...opacity };\n }\n\n return { type: 'keyframed', keyframes: opacity.keyframes.map(keyframe => ({ ...keyframe })) };\n}\n\nfunction scaleOpacityProperty(\n opacity: IRAnimatedProperty<number> | undefined,\n factor: number,\n): IRAnimatedProperty<number> {\n const resolved = opacity ?? DEFAULT_OPACITY;\n\n if (resolved.type === 'static') {\n return { type: 'static', value: resolved.value * factor };\n }\n\n return {\n type: 'keyframed',\n keyframes: resolved.keyframes.map(keyframe => ({\n ...keyframe,\n value: keyframe.value * factor,\n ...(keyframe.endValue != null && { endValue: keyframe.endValue * factor }),\n })),\n };\n}\n\nfunction evaluateOpacityAtFrame(keyframes: IRKeyframe<number>[], frame: number): number {\n if (keyframes.length === 0) {\n return 1;\n }\n if (frame <= keyframes[0].frame) {\n return keyframes[0].value;\n }\n\n const last = keyframes[keyframes.length - 1];\n\n if (frame >= last.frame) {\n return last.value;\n }\n\n for (let index = 0; index < keyframes.length - 1; index++) {\n const current = keyframes[index];\n const next = keyframes[index + 1];\n\n if (frame < current.frame || frame > next.frame) {\n continue;\n }\n if (current.hold === true || next.frame === current.frame) {\n return current.value;\n }\n\n const progress = (frame - current.frame) / (next.frame - current.frame);\n const endValue = current.endValue ?? next.value;\n\n return current.value + (endValue - current.value) * progress;\n }\n\n return last.value;\n}\n","import type { IRAnimatedProperty, IRComposition, IRPrecompLayer, IRScene } from '@vvfx/animation-ir';\nimport { getIRSceneEntryComposition, type ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { createId } from '../../common/id';\nimport {\n hasAnimatedOpacity, isDefaultOpacity, mapOpacityToReferencedComposition, multiplyOpacityProperties,\n} from './opacity';\n\ninterface CompositionGenerationRequest {\n id: string;\n ir: IRComposition;\n inheritedOpacity?: IRAnimatedProperty<number>;\n precompOutputIdByLayerId: Map<string, string>;\n}\n\ninterface CompositionGenerationPlan {\n compositionById: ReadonlyMap<string, IRComposition>;\n requests: CompositionGenerationRequest[];\n}\n\n/** Plan only Compositions and instance-specific variants reachable from the playback entry. */\nexport function buildCompositionGenerationPlan(\n irScene: IRScene,\n diagnostics: ConversionDiagnostic[],\n): CompositionGenerationPlan {\n const compositionById = new Map(irScene.compositions.map(composition => [composition.id, composition] as const));\n const entry = getIRSceneEntryComposition(irScene);\n const requests: CompositionGenerationRequest[] = [{\n id: entry.id,\n ir: entry,\n precompOutputIdByLayerId: new Map(),\n }];\n const requestById = new Map(requests.map(request => [request.id, request] as const));\n\n for (let requestIndex = 0; requestIndex < requests.length; requestIndex++) {\n const request = requests[requestIndex];\n\n for (const layer of request.ir.layers) {\n if (layer.type !== 'precomp') {\n continue;\n }\n const referenced = compositionById.get(layer.content.compositionId);\n\n if (referenced == null) {\n continue;\n }\n const instanceOpacity = multiplyOpacityProperties(\n request.inheritedOpacity,\n layer.transform?.opacity,\n layer.time.inFrame,\n layer.time.outFrame,\n );\n const referencedOpacity = mapOpacityToReferencedComposition(instanceOpacity, layer, request.ir, referenced);\n const requiresVariant = (layer.masks?.length ?? 0) > 0 ||\n layer.content.clipToBounds ||\n !isDefaultOpacity(referencedOpacity);\n\n const outputId = requiresVariant ? createId() : referenced.id;\n\n if (requiresVariant) {\n request.precompOutputIdByLayerId.set(layer.id, outputId);\n }\n if (!requestById.has(outputId)) {\n const variant: CompositionGenerationRequest = {\n id: outputId,\n ir: referenced,\n inheritedOpacity: referencedOpacity,\n precompOutputIdByLayerId: new Map(),\n };\n\n requests.push(variant);\n requestById.set(outputId, variant);\n }\n collectOpacityApproximationDiagnostic(request, layer, referenced, referencedOpacity, diagnostics);\n }\n }\n\n return { compositionById, requests };\n}\n\nfunction collectOpacityApproximationDiagnostic(\n request: CompositionGenerationRequest,\n layer: IRPrecompLayer,\n referenced: IRComposition,\n referencedOpacity: IRAnimatedProperty<number> | undefined,\n diagnostics: ConversionDiagnostic[],\n): void {\n const hasAnimatedChildOpacity = referenced.layers.some(child =>\n child.type !== 'null' && child.type !== 'precomp' && hasAnimatedOpacity(child.transform?.opacity),\n );\n\n if (!hasAnimatedOpacity(referencedOpacity) || !hasAnimatedChildOpacity) {\n return;\n }\n diagnostics.push({\n code: 'GE_PRECOMP_OPACITY_APPROXIMATED',\n severity: 'warning',\n action: 'approximated',\n path: `$.compositions[id=${JSON.stringify(request.ir.id)}].layers[id=${JSON.stringify(layer.id)}].transform.opacity`,\n sourceId: layer.id,\n feature: 'precomp-opacity',\n message: 'Animated Precomp and child opacity curves were multiplied at their keyframe boundaries.',\n });\n}\n\n/** Report GE runtime limitations that apply to a source Precomp instance. */\nexport function collectPrecompExportDiagnostics(\n layer: IRPrecompLayer,\n compositionById: ReadonlyMap<string, IRComposition>,\n composition: IRComposition,\n diagnostics: ConversionDiagnostic[],\n): void {\n const path = `$.compositions[id=${JSON.stringify(composition.id)}].layers[id=${JSON.stringify(layer.id)}]`;\n\n const expectedSourceStartFrame = compositionById.get(layer.content.compositionId)?.inPoint ?? 0;\n\n if (layer.time.sourceStartFrame != null && layer.time.sourceStartFrame < expectedSourceStartFrame) {\n diagnostics.push({\n code: 'GE_PRECOMP_SOURCE_START_UNSUPPORTED',\n severity: 'warning',\n action: 'approximated',\n path: `${path}.time.sourceStartFrame`,\n sourceId: layer.id,\n feature: 'precomp-source-start',\n message: 'GE 2.x cannot evaluate a nested Composition before its inPoint; the earliest source frame is used.',\n });\n }\n if (layer.time.stretch != null && layer.time.stretch !== 1) {\n diagnostics.push({\n code: 'GE_PRECOMP_STRETCH_UNSUPPORTED',\n severity: 'warning',\n action: 'approximated',\n path: `${path}.time.stretch`,\n sourceId: layer.id,\n feature: 'precomp-stretch',\n message: 'GE 2.x has no instance-local Precomp playback-rate field; stretch is emitted as 1.',\n });\n }\n}\n","import type { IRLayer } from '@vvfx/animation-ir';\nimport { roundNumber } from '../../common/math';\n\n/**\n * Convert a Layer activation range from parent-Composition frames to GE seconds.\n * Precomp sourceStartFrame/stretch affect source sampling, not activation.\n */\nexport function computeLayerTiming(\n layer: IRLayer,\n frameRate: number,\n compositionInPoint = 0,\n): { delay: number; layerDuration: number } {\n const time = layer.time;\n const delay = roundNumber((time.inFrame - compositionInPoint) / frameRate, 4);\n const rawDuration = (time.outFrame - time.inFrame) / frameRate;\n const layerDuration = rawDuration > 0 ? roundNumber(rawDuration, 4) : 0.0001;\n\n return { delay, layerDuration };\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 inFrame: number;\n /** Layer visible end frame. */\n outFrame: number;\n}\n\ninterface GEPositionAnimationData {\n /** One-dimensional timing curves in BezierKeyframeValue format. */\n curves: BezierKeyframeValue[][];\n /** Segment start and end positions, including depth. */\n pathPoints: [IRVec3, IRVec3][];\n /** Outgoing and incoming control offsets in the same coordinates as the endpoints. */\n controlPoints: [IRVec3, IRVec3][];\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.type === 'static' || 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.type === 'static' || 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.type === 'static' || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const keyframes = property.keyframes;\n const pathPoints: [IRVec3, IRVec3][] = [];\n const controlPoints: [IRVec3, IRVec3][] = [];\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.inFrame, timeContext.outFrame);\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 =\n keyframe.hold === true ? startPosition : (keyframe.endValue ?? nextKeyframe.value ?? startPosition);\n\n pathPoints.push([\n [...startPosition],\n [...segmentEnd],\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: IRVec3;\n let incomingControlPoint: IRVec3;\n\n if (keyframe.hold === true) {\n outgoingControlPoint = [0, 0, 0];\n incomingControlPoint = [0, 0, 0];\n } else if (keyframe.spatialOut != null && nextKeyframe.spatialIn != null) {\n outgoingControlPoint = [keyframe.spatialOut[0], keyframe.spatialOut[1], keyframe.spatialOut[2] ?? 0];\n incomingControlPoint = [nextKeyframe.spatialIn[0], nextKeyframe.spatialIn[1], nextKeyframe.spatialIn[2] ?? 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 const dz = (segmentEnd[2] - startPosition[2]) / 3;\n\n outgoingControlPoint = [-startX / 3 + endX / 3, -startY / 3 + endY / 3, dz];\n incomingControlPoint = [startX / 3 - endX / 3, startY / 3 - endY / 3, (startPosition[2] - segmentEnd[2]) / 3];\n }\n controlPoints.push([outgoingControlPoint, incomingControlPoint]);\n\n const nextStart = nextKeyframe.value;\n\n if (segmentEnd.some((value, dimension) => value !== nextStart[dimension])) {\n // Coincident times preserve a reset without interpolating across it.\n timingCurvePoints.push({\n normalizedTime: normalizeTime(nextKeyframe.frame, timeContext.inFrame, timeContext.outFrame),\n inTangent: nextKeyframe.inTangent ?? DEFAULT_IN_TANGENT,\n outTangent: DEFAULT_OUT_TANGENT,\n });\n pathPoints.push([[...segmentEnd], [...nextStart]]);\n controlPoints.push([[0, 0, 0], [0, 0, 0]]);\n }\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], pathPoints[0][0]]);\n controlPoints.unshift([\n [0, 0, 0],\n [0, 0, 0],\n ]);\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 [\n BezierKeyframeType.EASE_OUT,\n [roundNumber(segment[0], 4), roundNumber(segment[1], 4), roundNumber(segment[2], 4), roundNumber(segment[3], 4)],\n BezierKeyframeType.EASE_OUT,\n ] as BezierKeyframeValue;\n}\n\nfunction makeEaseIn(previousSegment: number[]): BezierKeyframeValue {\n return [\n BezierKeyframeType.EASE_IN,\n [\n roundNumber(previousSegment[4], 4),\n roundNumber(previousSegment[5], 4),\n roundNumber(previousSegment[6], 4),\n roundNumber(previousSegment[7], 4),\n ],\n BezierKeyframeType.EASE_IN,\n ] as BezierKeyframeValue;\n}\n\nfunction makeEase(previousSegment: number[], currentSegment: number[]): BezierKeyframeValue {\n return [\n BezierKeyframeType.EASE,\n [\n roundNumber(previousSegment[4], 4),\n roundNumber(previousSegment[5], 4),\n roundNumber(previousSegment[6], 4),\n roundNumber(previousSegment[7], 4),\n roundNumber(currentSegment[2], 4),\n roundNumber(currentSegment[3], 4),\n ],\n BezierKeyframeType.EASE,\n ] 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.inFrame, timeContext.outFrame);\n const t1 = normalizeTime(nextKeyframe.frame, timeContext.inFrame, timeContext.outFrame);\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 ? { x: 0, y: 0 } : (keyframe.outTangent ?? DEFAULT_OUT_TANGENT);\n // IR stores a segment's incoming tangent on its ending keyframe.\n const inHandle = keyframe.hold === true ? { x: 1, y: 1 } : (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([t0, v0, outControlPointX, outControlPointY, inControlPointX, inControlPointY, t1, v1]);\n const nextValue = getScalarValue(nextKeyframe, dimensionIndex);\n\n if (v1 !== nextValue) {\n bezierCurves.push([t1, v1, t1, v1, t1, nextValue, t1, nextValue]);\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([0, firstValue, 0, firstValue, firstTime, firstValue, firstTime, firstValue]);\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([t0, t0, outControlPointX, outControlPointY, inControlPointX, inControlPointY, t1, t1]);\n }\n\n return serializeBezierSegments(bezierCurves);\n}\n","import type { IRLayerType, IRTransform } from '@vvfx/animation-ir';\n\n/** Apply GE's parented visual rotation convention to an anchor position offset. */\nexport function rotateAnchorOffsetForParentedVisual(\n layerType: IRLayerType,\n hasParent: boolean,\n transform: IRTransform | undefined,\n offsetX: number,\n offsetY: number,\n): [number, number] {\n if ((layerType !== 'image' && layerType !== 'solid') || !hasParent) {\n return [offsetX, offsetY];\n }\n const rotationZ = transform?.rotation?.z;\n\n if (rotationZ == null || rotationZ.type === 'keyframed' || rotationZ.value === 0) {\n return [offsetX, offsetY];\n }\n const radians = (rotationZ.value * Math.PI) / 180;\n const cosine = Math.cos(radians);\n const sine = Math.sin(radians);\n\n return [offsetX * cosine - offsetY * sine, offsetX * sine + offsetY * cosine];\n}\n","import type { IRLayer, IRLocalBounds } from '@vvfx/animation-ir';\nimport type { IRToGETimeContext } from './bezier';\nimport { rotateAnchorOffsetForParentedVisual } from '../../common/anchor-mapping';\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(layer: IRLayer, fallback: IRLocalBounds = DEFAULT_LOCAL_BOUNDS): IRLocalBounds {\n if (layer.localBounds != null) {\n return layer.localBounds;\n }\n if (layer.type === 'text') {\n const text = layer.content;\n const estimatedWidth = estimateTextWidth(text.text, text.fontSize, text.letterSpacing);\n\n return {\n x: 0,\n y: 0,\n width: Math.max(estimatedWidth, 1),\n height: Math.max(text.lineHeight, text.fontSize * 1.2),\n };\n }\n\n return fallback;\n}\n\nfunction estimateTextWidth(text: string, fontSize: number, letterSpacing: number): number {\n if (text.length === 0) {\n return 0;\n }\n const averageCharacterWidth = fontSize * 0.6;\n\n return text.length * averageCharacterWidth + letterSpacing * (text.length - 1);\n}\n\nexport function computeStaticPosition(\n layer: IRLayer,\n ctx: LayerGenerationContext,\n anchorOffsetX = 0,\n anchorOffsetY = 0,\n): [number, number, number] {\n const transform = layer.transform;\n\n if (transform?.position?.type === 'keyframed' && transform.position.keyframes.length !== 1) {\n return convert2dTo3dPoint(ctx.width / 2 + anchorOffsetX, ctx.height / 2 + anchorOffsetY, 0, ctx.width, ctx.height);\n }\n\n const positionValue =\n transform?.position?.type === 'keyframed' ? transform.position.keyframes[0]?.value : transform?.position?.value;\n\n if (Array.isArray(positionValue)) {\n return convert2dTo3dPoint(\n (positionValue[0] ?? 0) + anchorOffsetX,\n (positionValue[1] ?? 0) + anchorOffsetY,\n positionValue[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n }\n\n return convert2dTo3dPoint(anchorOffsetX, anchorOffsetY, 0, ctx.width, ctx.height);\n}\n\nexport function getStaticAnchor(layer: IRLayer): [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: IRLayer): [number, number] {\n const scale = layer.transform?.scale;\n\n if (scale == null) {\n return [1, 1];\n }\n if (scale.type === 'keyframed' && scale.keyframes.length !== 1) {\n return [1, 1];\n }\n const value = scale.type === '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: IRLayer,\n bounds: IRLocalBounds,\n ratio: number,\n): [number, number, number] {\n const [offsetX, offsetY] = computeScalePositionOffset(layer, bounds);\n\n return [position[0] + offsetX * ratio, position[1] - offsetY * ratio, position[2]];\n}\n\nfunction computeScalePositionOffset(layer: IRLayer, bounds: IRLocalBounds): [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 [0, 0];\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 [0, 0];\n }\n\n return [\n anchorDiffX * (1 - staticScale[0]),\n anchorDiffY * (1 - staticScale[1]),\n ];\n}\n\nexport function computeAnchorInfo(\n layer: IRLayer,\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 [anchorOffsetX, anchorOffsetY] = rotateAnchorOffsetForParentedVisual(\n layer.type,\n layer.parentId != null,\n layer.transform,\n anchorOffsetX,\n anchorOffsetY,\n );\n\n return { anchorScaleX, anchorScaleY, anchorOffsetX, anchorOffsetY };\n}\n\nexport function getTimeContext(layer: IRLayer): IRToGETimeContext {\n return {\n inFrame: layer.time.inFrame,\n outFrame: layer.time.outFrame,\n };\n}\n","import type { IRAnimatedProperty, IRLayer, IRTransform, IRVec3 } from '@vvfx/animation-ir';\nimport type {\n BezierCurvePathValue,\n BezierKeyframeValue,\n ColorOverLifetime,\n FixedNumberExpression,\n PositionOverLifetime,\n RotationOverLifetime,\n SizeOverLifetime,\n TransformPlayableAssetData,\n} from '@galacean/effects-specification';\nimport { ValueType } from '@galacean/effects-specification';\nimport {\n convertIRPositionKeyframesToGE,\n convertIRScalarKeyframesToGE,\n convertIRVectorKeyframesToGE,\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<\n TransformPlayableAssetData,\n 'positionOverLifetime' | 'rotationOverLifetime' | 'sizeOverLifetime'\n>;\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: IRLayer,\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(transform, timeContext, ctx),\n rotationOverLifetime: buildRotationAnimation(transform, timeContext),\n sizeOverLifetime: buildSizeAnimation(transform, timeContext),\n };\n}\n\nfunction buildPositionAnimation(\n transform: IRTransform,\n timeContext: IRToGETimeContext,\n ctx: NormalizedAnimationContext,\n): PositionOverLifetime | undefined {\n if (transform.position == null || transform.position.type === 'static') {\n return undefined;\n }\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\n const firstPathPoint = positionResult.pathPoints[0]?.[0];\n\n if (firstPathPoint != null) {\n const point3d = convert2dTo3dPoint(firstPathPoint[0], firstPathPoint[1], firstPathPoint[2], ctx.width, ctx.height);\n\n pathPoints.push(point3d);\n }\n\n for (const pathPoint of positionResult.pathPoints) {\n const endPoint3d = convert2dTo3dPoint(pathPoint[1][0], pathPoint[1][1], pathPoint[1][2], ctx.width, ctx.height);\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 const firstControlPoint = convert2dTo3dPoint(\n controlPointPair[0][0] + pathPointPair[0][0],\n controlPointPair[0][1] + pathPointPair[0][1],\n controlPointPair[0][2] + pathPointPair[0][2],\n ctx.width,\n ctx.height,\n );\n const secondControlPoint = convert2dTo3dPoint(\n controlPointPair[1][0] + pathPointPair[1][0],\n controlPointPair[1][1] + pathPointPair[1][1],\n controlPointPair[1][2] + pathPointPair[1][2],\n ctx.width,\n ctx.height,\n );\n\n controlPoints.push(firstControlPoint, secondControlPoint);\n }\n\n const curveData = positionResult.curves[0] ?? [];\n const easingData: BezierKeyframeValue[] = curveData.map(\n (keyframeValue: BezierKeyframeValue) => [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 buildRotationAnimation(\n transform: IRTransform,\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) {\n result.x = x;\n }\n if (y != null) {\n result.y = y;\n }\n if (z != null) {\n result.z = z;\n }\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.type === 'static') {\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<IRTransform['rotation']>['x'], { type: 'keyframed' }>,\n): boolean {\n return rotation.keyframes.some(\n keyframe => Math.abs(keyframe.value) > 0.0001 || Math.abs(keyframe.endValue ?? 0) > 0.0001,\n );\n}\n\nfunction buildSizeAnimation(\n transform: IRTransform,\n timeContext: IRToGETimeContext,\n): SizeOverLifetime | undefined {\n if (transform.scale == null) {\n return undefined;\n }\n\n if (transform.scale.type === '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 (scale.every(value => Math.abs(value - 1) <= 1e-6)) {\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: IRLayer): 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.outFrame - timeContext.inFrame <= 0) {\n return {\n opacity: [ValueType.CONSTANT, 0],\n };\n }\n\n if (transform.opacity.type === '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 { IRAnimatedProperty, IRLayer } from '@vvfx/animation-ir';\nimport type { ColorOverLifetime } from '@galacean/effects-specification';\nimport { buildNormalizedColorAnimation, buildNormalizedTransformAnimation } from './normalized-animation';\nimport { multiplyOpacityProperties } from './opacity';\nimport type { GEAnimationPayload, LayerGenerationContext, TransformAnimation } from '../types';\n\nexport function buildTransformAnimation(layer: IRLayer, ctx: LayerGenerationContext): TransformAnimation {\n if (layer.transform == null) {\n return {};\n }\n\n // Prefer preserved GE payloads; otherwise encode normalized IR channels.\n const layerData = ctx.layerDataById[layer.id];\n const preservedPosition = layerData?.positionOverLifetime;\n const preservedRotation = layerData?.rotationOverLifetime;\n const preservedSize = layerData?.sizeOverLifetime;\n const normalized = buildNormalizedTransformAnimation(layer, ctx);\n\n const positionOverLifetime = preservedPosition ?? normalized.positionOverLifetime;\n const rotationOverLifetime = preservedRotation ?? normalized.rotationOverLifetime;\n const sizeOverLifetime = preservedSize ?? normalized.sizeOverLifetime;\n\n return { positionOverLifetime, rotationOverLifetime, sizeOverLifetime };\n}\n\nexport function buildColorAnimation(\n layer: IRLayer,\n ctx: LayerGenerationContext,\n inheritedOpacity?: IRAnimatedProperty<number>,\n): GEAnimationPayload<ColorOverLifetime> | undefined {\n const preservedColor = ctx.layerDataById[layer.id]?.colorOverLifetime;\n\n if (inheritedOpacity == null) {\n return preservedColor ?? buildNormalizedColorAnimation(layer);\n }\n\n const opacity = multiplyOpacityProperties(\n inheritedOpacity,\n layer.transform?.opacity,\n layer.time.inFrame,\n layer.time.outFrame,\n );\n const normalizedLayer: IRLayer = {\n ...layer,\n transform: { ...layer.transform, opacity },\n };\n const normalized = buildNormalizedColorAnimation(normalizedLayer);\n\n if (preservedColor != null && normalized?.opacity != null) {\n return { ...preservedColor, opacity: normalized.opacity };\n }\n if (preservedColor != null) {\n return preservedColor;\n }\n\n return normalized;\n}\n","import { IRBlendMode, IREndBehavior, type IRLayerType } from '@vvfx/animation-ir';\nimport { BlendingMode, EndBehavior, 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, BlendingMode | undefined> = {\n [IRBlendMode.Normal]: undefined,\n [IRBlendMode.Multiply]: BlendingMode.MULTIPLY,\n [IRBlendMode.Screen]: undefined,\n [IRBlendMode.Overlay]: BlendingMode.SUPERPOSITION,\n [IRBlendMode.Darken]: undefined,\n [IRBlendMode.Lighten]: BlendingMode.BRIGHTNESS,\n [IRBlendMode.ColorDodge]: undefined,\n [IRBlendMode.ColorBurn]: undefined,\n [IRBlendMode.HardLight]: BlendingMode.STRONG_LIGHT,\n [IRBlendMode.SoftLight]: BlendingMode.WEAK_LIGHT,\n [IRBlendMode.Difference]: BlendingMode.SUBTRACTION,\n [IRBlendMode.Exclusion]: undefined,\n [IRBlendMode.Hue]: undefined,\n [IRBlendMode.Saturation]: undefined,\n [IRBlendMode.Color]: undefined,\n [IRBlendMode.Luminosity]: undefined,\n [IRBlendMode.Add]: BlendingMode.ADD,\n};\n\nexport function mapBlendModeToGE(blendMode: IRBlendMode | undefined): BlendingMode | undefined {\n return blendMode != null ? GE_BLENDING_BY_IR_MODE[blendMode] : undefined;\n}\n\nexport function mapEndBehaviorToGE(endBehavior: IREndBehavior): EndBehavior {\n switch (endBehavior) {\n case IREndBehavior.Destroy:\n return EndBehavior.destroy;\n case IREndBehavior.Continue:\n return EndBehavior.forward;\n case IREndBehavior.Freeze:\n return EndBehavior.freeze;\n case IREndBehavior.Loop:\n return EndBehavior.restart;\n }\n}\n\nconst GE_TIMELINE_ITEM_TYPE_BY_IR_LAYER_TYPE: Record<IRLayerType, ItemType> = {\n image: ItemType.sprite,\n solid: ItemType.sprite,\n shape: ItemType.sprite,\n text: ItemType.text,\n particle: ItemType.particle,\n null: ItemType.null,\n precomp: ItemType.null,\n};\n\nconst GE_VFX_ITEM_TYPE_BY_IR_LAYER_TYPE: Record<IRLayerType, ItemType> = {\n image: ItemType.sprite,\n solid: ItemType.sprite,\n shape: ItemType.shape,\n text: ItemType.text,\n particle: ItemType.particle,\n null: ItemType.null,\n precomp: ItemType.null,\n};\n\nexport function mapLayerTypeToGETimelineItemType(type: IRLayerType): ItemType {\n return GE_TIMELINE_ITEM_TYPE_BY_IR_LAYER_TYPE[type];\n}\n\nexport function mapLayerTypeToGEVFXItemType(type: IRLayerType): ItemType {\n return GE_VFX_ITEM_TYPE_BY_IR_LAYER_TYPE[type];\n}\n","import { normalizeJSONValue } from './json-normalization';\nimport type {\n IRParticleCurveKeyframe, IRParticleCurvePoint, IRParticleScalarExpression,\n} from '@vvfx/animation-ir';\nimport {\n BezierKeyframeType, type BezierKeyframeValue, type NumberExpression, ValueType,\n} from '@galacean/effects-specification';\n\nfunction isFiniteTuple(value: unknown, length: number): value is number[] {\n return Array.isArray(value) && value.length === length && value.every(\n entry => typeof entry === 'number' && Number.isFinite(entry),\n );\n}\n\nfunction createPoint(progress: number, value: number): IRParticleCurvePoint {\n return { progress, value };\n}\n\ninterface ParsedBezierKeyframe {\n keyframe: IRParticleCurveKeyframe;\n holdIn: boolean;\n holdOut: boolean;\n}\n\nfunction createParsedKeyframe(keyframe: IRParticleCurveKeyframe): ParsedBezierKeyframe {\n return { keyframe, holdIn: false, holdOut: false };\n}\n\nfunction parseBezierKeyframe(value: unknown): ParsedBezierKeyframe | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const entry = value as unknown[];\n const type = entry[0];\n const data = entry[1];\n const mark = entry[2];\n\n switch (type) {\n case BezierKeyframeType.EASE:\n return isFiniteTuple(data, 6)\n ? createParsedKeyframe({\n inControl: createPoint(data[0], data[1]),\n progress: data[2],\n value: data[3],\n outControl: createPoint(data[4], data[5]),\n })\n : undefined;\n case BezierKeyframeType.EASE_IN:\n return isFiniteTuple(data, 4)\n ? createParsedKeyframe({\n inControl: createPoint(data[0], data[1]),\n progress: data[2],\n value: data[3],\n })\n : undefined;\n case BezierKeyframeType.EASE_OUT:\n return isFiniteTuple(data, 4)\n ? createParsedKeyframe({\n progress: data[0],\n value: data[1],\n outControl: createPoint(data[2], data[3]),\n })\n : undefined;\n case BezierKeyframeType.LINE:\n return isFiniteTuple(data, 2)\n ? createParsedKeyframe({ progress: data[0], value: data[1] })\n : undefined;\n case BezierKeyframeType.HOLD:\n return parseHoldKeyframe(data, mark);\n default:\n return undefined;\n }\n}\n\nfunction parseHoldKeyframe(data: unknown, mark: unknown): ParsedBezierKeyframe | undefined {\n if (mark === BezierKeyframeType.EASE_IN && isFiniteTuple(data, 4)) {\n return {\n keyframe: {\n inControl: createPoint(data[0], data[1]),\n progress: data[2],\n value: data[3],\n },\n holdIn: false,\n holdOut: true,\n };\n }\n if (mark === BezierKeyframeType.EASE_OUT && isFiniteTuple(data, 4)) {\n return {\n keyframe: {\n progress: data[0],\n value: data[1],\n outControl: createPoint(data[2], data[3]),\n },\n holdIn: true,\n holdOut: false,\n };\n }\n if (!isFiniteTuple(data, 2)) {\n return undefined;\n }\n if (mark === BezierKeyframeType.LINE) {\n return {\n keyframe: { progress: data[0], value: data[1] },\n holdIn: false,\n holdOut: true,\n };\n }\n if (mark === BezierKeyframeType.LINE_OUT) {\n return {\n keyframe: { progress: data[0], value: data[1] },\n holdIn: true,\n holdOut: false,\n };\n }\n if (mark === BezierKeyframeType.HOLD) {\n return {\n keyframe: { progress: data[0], value: data[1] },\n holdIn: true,\n holdOut: true,\n };\n }\n\n return undefined;\n}\n\nfunction parseBezierCurve(value: unknown): IRParticleScalarExpression | undefined {\n if (!Array.isArray(value) || value.length === 0) {\n return undefined;\n }\n const parsedKeyframes = value.map(parseBezierKeyframe);\n\n if (!parsedKeyframes.every((keyframe): keyframe is ParsedBezierKeyframe => keyframe != null)) {\n return undefined;\n }\n\n const keyframes = parsedKeyframes.map(parsed => ({ ...parsed.keyframe }));\n\n for (const [index, keyframe] of keyframes.entries()) {\n const current = parsedKeyframes[index];\n const next = parsedKeyframes[index + 1];\n\n if (current.holdOut || next?.holdIn === true) {\n keyframe.hold = true;\n }\n }\n\n return { type: 'curve', keyframes };\n}\n\nfunction parseLineCurve(value: unknown): IRParticleScalarExpression | undefined {\n if (!Array.isArray(value) || value.length === 0 || !value.every(point => isFiniteTuple(point, 2))) {\n return undefined;\n }\n\n return {\n type: 'curve',\n keyframes: value.map(point => ({ progress: point[0], value: point[1] })),\n };\n}\n\nfunction parseHermiteCurve(value: unknown): IRParticleScalarExpression | undefined {\n if (!Array.isArray(value) || value.length === 0 || !value.every(point => isFiniteTuple(point, 4))) {\n return undefined;\n }\n\n const points = value;\n const keyframes: IRParticleCurveKeyframe[] = points.map(point => ({\n progress: point[0],\n value: point[1],\n }));\n\n for (let index = 0; index < points.length - 1; index++) {\n const point = points[index];\n const nextPoint = points[index + 1];\n const progressDelta = nextPoint[0] - point[0];\n\n keyframes[index].outControl = createPoint(\n point[0] + progressDelta / 3,\n point[1] + point[3] * progressDelta / 3,\n );\n keyframes[index + 1].inControl = createPoint(\n nextPoint[0] - progressDelta / 3,\n nextPoint[1] - nextPoint[2] * progressDelta / 3,\n );\n }\n\n return { type: 'curve', keyframes };\n}\n\nexport function parseGEParticleScalarExpression(value: unknown): IRParticleScalarExpression | undefined {\n const expression = parseScalarExpression(value);\n\n return expression?.type === 'curve'\n ? { ...expression, keyframes: cropCurve(expression.keyframes) }\n : expression;\n}\n\nfunction parseScalarExpression(value: unknown): IRParticleScalarExpression | undefined {\n if (!Array.isArray(value) || value.length !== 2) {\n return undefined;\n }\n\n switch (value[0]) {\n case ValueType.CONSTANT:\n return typeof value[1] === 'number' && Number.isFinite(value[1])\n ? { type: 'constant', value: value[1] }\n : undefined;\n case ValueType.RANDOM:\n return isFiniteTuple(value[1], 2)\n ? { type: 'randomBetweenConstants', min: Math.min(...value[1]), max: Math.max(...value[1]) }\n : undefined;\n case ValueType.LINE:\n return parseLineCurve(value[1]);\n case ValueType.CURVE:\n return parseHermiteCurve(value[1]);\n case ValueType.BEZIER_CURVE: {\n return parseBezierCurve(value[1]);\n }\n default:\n return undefined;\n }\n}\n\nfunction pointValues(point: IRParticleCurvePoint): [number, number] {\n return [point.progress, point.value];\n}\n\nfunction convertIRCurveKeyframeToGE(keyframe: IRParticleCurveKeyframe): BezierKeyframeValue {\n const point = pointValues(keyframe);\n const outgoingHold = keyframe.hold === true;\n\n if (outgoingHold) {\n if (keyframe.inControl != null) {\n return [\n BezierKeyframeType.HOLD,\n [...pointValues(keyframe.inControl), ...point],\n BezierKeyframeType.EASE_IN,\n ];\n }\n\n return [BezierKeyframeType.HOLD, point, BezierKeyframeType.LINE];\n }\n if (keyframe.inControl != null && keyframe.outControl != null) {\n return [\n BezierKeyframeType.EASE,\n [...pointValues(keyframe.inControl), ...point, ...pointValues(keyframe.outControl)],\n BezierKeyframeType.EASE,\n ];\n }\n if (keyframe.inControl != null) {\n return [\n BezierKeyframeType.EASE_IN,\n [...pointValues(keyframe.inControl), ...point],\n BezierKeyframeType.EASE_IN,\n ];\n }\n if (keyframe.outControl != null) {\n return [\n BezierKeyframeType.EASE_OUT,\n [...point, ...pointValues(keyframe.outControl)],\n BezierKeyframeType.EASE_OUT,\n ];\n }\n\n return [BezierKeyframeType.LINE, point, BezierKeyframeType.LINE];\n}\n\nexport function convertIRParticleScalarExpressionToGE(\n expression: IRParticleScalarExpression,\n): NumberExpression {\n switch (expression.type) {\n case 'constant':\n return [ValueType.CONSTANT, expression.value];\n case 'randomBetweenConstants':\n return [ValueType.RANDOM, [expression.min, expression.max]];\n case 'curve':\n return [ValueType.BEZIER_CURVE, expression.keyframes.map(convertIRCurveKeyframeToGE)];\n }\n}\n\nfunction cropCurve(source: IRParticleCurveKeyframe[]): IRParticleCurveKeyframe[] {\n if (source.some((keyframe, index) => index > 0 && keyframe.progress <= source[index - 1].progress)) {\n return source;\n }\n const keyframes = normalizeJSONValue(source);\n\n for (const boundary of [0, 1]) {\n const index = keyframes.findIndex((keyframe, i) =>\n keyframe.progress < boundary && (keyframes[i + 1]?.progress ?? -Infinity) > boundary,\n );\n\n if (index < 0) {\n continue;\n }\n const left = keyframes[index];\n const right = keyframes[index + 1];\n let middle: IRParticleCurveKeyframe;\n\n if (left.hold === true) {\n middle = { progress: boundary, value: left.value, hold: true };\n } else if (left.outControl == null && right.inControl == null) {\n middle = interpolatePoint(left, right, (boundary - left.progress) / (right.progress - left.progress));\n middle.progress = boundary;\n } else {\n const control1 = left.outControl ?? left;\n const control2 = right.inControl ?? right;\n let low = 0;\n let high = 1;\n\n for (let iteration = 0; iteration < 50; iteration++) {\n const t = (low + high) / 2;\n const a = interpolatePoint(left, control1, t);\n const b = interpolatePoint(control1, control2, t);\n const c = interpolatePoint(control2, right, t);\n const point = interpolatePoint(interpolatePoint(a, b, t), interpolatePoint(b, c, t), t);\n\n if (point.progress < boundary) {\n low = t;\n } else {\n high = t;\n }\n }\n const t = (low + high) / 2;\n const a = interpolatePoint(left, control1, t);\n const b = interpolatePoint(control1, control2, t);\n const c = interpolatePoint(control2, right, t);\n const d = interpolatePoint(a, b, t);\n const e = interpolatePoint(b, c, t);\n\n middle = { ...interpolatePoint(d, e, t), progress: boundary, inControl: d, outControl: e };\n left.outControl = a;\n right.inControl = c;\n }\n keyframes.splice(index + 1, 0, middle);\n }\n const cropped = keyframes.filter(keyframe => keyframe.progress >= 0 && keyframe.progress <= 1);\n\n if (cropped.length > 0) {\n return cropped;\n }\n const nearest = keyframes[0].progress > 1 ? keyframes[0] : keyframes[keyframes.length - 1];\n\n return [{ progress: Math.max(0, Math.min(1, nearest.progress)), value: nearest.value }];\n}\n\nfunction interpolatePoint(a: IRParticleCurvePoint, b: IRParticleCurvePoint, t: number): IRParticleCurvePoint {\n return { progress: a.progress + (b.progress - a.progress) * t, value: a.value + (b.value - a.value) * t };\n}\n\n/** Preserve GE evaluation and seeded random ordering until the normalized parameter changes. */\nexport function restoreGEParticleScalarExpression(expression: IRParticleScalarExpression, source: unknown): unknown {\n const parsed = parseGEParticleScalarExpression(source);\n\n return parsed != null && JSON.stringify(convertIRParticleScalarExpressionToGE(parsed)) ===\n JSON.stringify(convertIRParticleScalarExpressionToGE(expression))\n ? normalizeJSONValue(source)\n : convertIRParticleScalarExpressionToGE(expression);\n}\n","import type { IRLayer } from '@vvfx/animation-ir';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\nimport { createId } from '../../common/id';\nimport type { GeneratedComponentData, LayerGenerationContext } from '../types';\n\nexport function resolveComponentId(layer: IRLayer, ctx: LayerGenerationContext): string {\n const sourceComponentId = ctx.layerDataById[layer.id]?.sourceComponentId;\n\n if (\n sourceComponentId != null &&\n !ctx.collector.components.some(component => component.id === sourceComponentId)\n ) {\n return sourceComponentId;\n }\n\n return createId();\n}\n\n/** Copy a preserved GE mask whose target references are remapped after generation. */\nexport function copyPreservedMaskToComponent(\n layer: IRLayer,\n component: GeneratedComponentData,\n ctx: LayerGenerationContext,\n): void {\n const preservedMask = ctx.layerDataById[layer.id]?.mask;\n\n if (preservedMask != null && component['mask'] == null) {\n component['mask'] = { ...preservedMask };\n }\n}\n\nexport function restoreComponentRenderData(\n layer: IRLayer,\n component: GeneratedComponentData,\n ctx: LayerGenerationContext,\n): void {\n const data = ctx.layerDataById[layer.id];\n\n if (data?.renderer != null && isRecord(component['renderer'])) {\n component['renderer'] = { ...component['renderer'], ...normalizeJSONValue(data.renderer) };\n }\n if (data?.geometry != null) {\n component['geometry'] = normalizeJSONValue(data.geometry);\n }\n}\n","import type { IRParticleLayer } from '@vvfx/animation-ir';\nimport { DataType, ValueType } from '@galacean/effects-specification';\nimport { toDataPath } from '../../common/data-path';\nimport { restoreGEParticleScalarExpression } from '../../common/particle-expression';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\nimport { roundNumber } from '../../common/math';\nimport { multiplyOpacityProperties } from '../converter/opacity';\nimport { mapBlendModeToGE } from '../mapping';\nimport type { GeneratedComponentData, LayerGenerationContext } from '../types';\nimport { copyPreservedMaskToComponent, resolveComponentId } from './component-preservation';\n\nexport function appendParticleComponent(\n layer: IRParticleLayer,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string {\n const preservedContent = ctx.layerDataById[layer.id]?.particleContent;\n\n if (preservedContent == null) {\n throw new TypeError(\n `[ge-ir] Particle layer '${layer.id}' cannot be exported without trusted GE particle data ` +\n 'because the source-neutral IR does not contain renderer, shape, or resource bindings.',\n );\n }\n\n const componentId = resolveComponentId(layer, ctx);\n const component = normalizeJSONValue(preservedContent) as GeneratedComponentData;\n const rawOptions = component['options'];\n const rawEmission = component['emission'];\n const rawRenderer = component['renderer'];\n const options = isRecord(rawOptions) ? { ...rawOptions } : {};\n const emission = isRecord(rawEmission) ? { ...rawEmission } : {};\n const renderer = isRecord(rawRenderer) ? { ...rawRenderer } : {};\n const bursts = layer.content.emission.bursts;\n const blending = mapBlendModeToGE(layer.blendMode);\n const opacity = resolveStaticParticleOpacity(layer, ctx);\n\n removeInvalidBurstOffsets(emission, bursts?.length ?? 0);\n options['maxCount'] = layer.content.maxParticles;\n options['startLifetime'] = restoreGEParticleScalarExpression(layer.content.startLifetime, options['startLifetime']);\n emission['rateOverTime'] = restoreGEParticleScalarExpression(\n layer.content.emission.rateOverTime, emission['rateOverTime'],\n );\n if (bursts == null) {\n delete emission['bursts'];\n } else {\n emission['bursts'] = bursts.map(burst => ({\n time: burst.frameOffset / ctx.frameRate,\n count: burst.count,\n cycles: burst.cycleCount === 'infinite' ? 0 : burst.cycleCount,\n interval: burst.repeatIntervalFrames / ctx.frameRate,\n }));\n }\n if (blending == null) {\n delete renderer['blending'];\n } else {\n renderer['blending'] = blending;\n }\n renderer['anchor'] = [roundNumber(anchorScaleX, 4), roundNumber(anchorScaleY, 4)];\n if (opacity != null && opacity !== 1) {\n options['startColor'] = scaleParticleStartColor(options['startColor'], opacity, layer.id);\n }\n\n component['id'] = componentId;\n component['dataType'] = DataType.ParticleSystem;\n component['item'] = toDataPath(itemId);\n component['options'] = options;\n component['emission'] = emission;\n component['renderer'] = renderer;\n\n copyPreservedMaskToComponent(layer, component, ctx);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction removeInvalidBurstOffsets(emission: Record<string, unknown>, burstCount: number): void {\n const preservedBursts = emission['bursts'];\n const burstOffsets = emission['burstOffsets'];\n\n if (\n !Array.isArray(burstOffsets) ||\n (Array.isArray(preservedBursts) && preservedBursts.length === burstCount &&\n burstOffsets.every(offset => isValidBurstOffset(offset, burstCount)))\n ) {\n return;\n }\n\n delete emission['burstOffsets'];\n}\n\nfunction isValidBurstOffset(value: unknown, burstCount: number): boolean {\n return isRecord(value) && typeof value['index'] === 'number' && Number.isInteger(value['index']) &&\n value['index'] >= 0 && value['index'] < burstCount;\n}\n\nfunction resolveStaticParticleOpacity(\n layer: IRParticleLayer,\n ctx: LayerGenerationContext,\n): number | undefined {\n const opacity = multiplyOpacityProperties(\n ctx.inheritedOpacity,\n layer.transform?.opacity,\n layer.time.inFrame,\n layer.time.outFrame,\n );\n\n if (opacity == null) {\n return undefined;\n }\n if (opacity.type === 'static') {\n return opacity.value;\n }\n if (opacity.keyframes.length === 1) {\n return opacity.keyframes[0].value;\n }\n\n ctx.diagnostics.push({\n code: 'GE_PARTICLE_OPACITY_ANIMATION_UNSUPPORTED',\n severity: 'warning',\n action: 'unsupported',\n path: `$.compositions[id=${JSON.stringify(ctx.ir.id)}].layers[id=${JSON.stringify(layer.id)}].transform.opacity`,\n sourceId: layer.id,\n feature: 'particle-opacity',\n message: 'GE ParticleSystem has no timeline-compatible Layer opacity target; animated opacity was not emitted.',\n });\n\n return undefined;\n}\n\nfunction scaleParticleStartColor(value: unknown, opacity: number, layerId: string): unknown {\n if (value === undefined) {\n return [ValueType.RGBA_COLOR, [1, 1, 1, roundNumber(opacity, 4)]];\n }\n if (isFiniteNumberTuple(value, 4)) {\n return scaleColorTuple(value, opacity);\n }\n if (!Array.isArray(value) || value.length !== 2) {\n throwInvalidStartColor(layerId);\n }\n\n const expression: unknown[] = value;\n const type = expression[0];\n const payload = expression[1];\n\n if (type === ValueType.RGBA_COLOR && isFiniteNumberTuple(payload, 4)) {\n return [type, scaleColorTuple(payload, opacity)];\n }\n if (type === ValueType.GRADIENT_COLOR && Array.isArray(payload) && payload.every(isGradientStop)) {\n return [type, payload.map(stop => scaleGradientStop(stop, opacity))];\n }\n if (type === ValueType.COLORS && Array.isArray(payload) && payload.every(color => isFiniteNumberTuple(color, 4))) {\n return [type, payload.map(color => scaleColorTuple(color, opacity))];\n }\n\n return throwInvalidStartColor(layerId);\n}\n\nfunction scaleColorTuple(color: number[], opacity: number): number[] {\n return [color[0], color[1], color[2], roundNumber(color[3] * opacity, 4)];\n}\n\nfunction isGradientStop(value: unknown): value is number[] {\n return isFiniteNumberTuple(value, 5);\n}\n\nfunction scaleGradientStop(stop: number[], opacity: number): number[] {\n return [stop[0], stop[1], stop[2], stop[3], roundNumber(stop[4] * opacity, 4)];\n}\n\nfunction isFiniteNumberTuple(value: unknown, length: number): value is number[] {\n return Array.isArray(value) && value.length === length &&\n value.every(entry => typeof entry === 'number' && Number.isFinite(entry));\n}\n\nfunction throwInvalidStartColor(layerId: string): never {\n throw new TypeError(\n `[ge-ir] Particle layer '${layerId}' has an unsupported preserved options.startColor value; ` +\n 'static Layer opacity could not be applied safely.',\n );\n}\n","import type {\n IRColor, IRBezierPath, IRLayer,\n IRShape, IRShapeLayer, IRShapePaint, IRShapeStroke, IRTextLayer,\n} from '@vvfx/animation-ir';\nimport {\n IRPaintType, IRLineCap, IRLineJoin, IRShapePrimitiveType, IRTextureScaleMode,\n} from '@vvfx/animation-ir';\nimport { getIRResourceSourceUrl } from '@vvfx/animation-ir/adapter';\nimport {\n DataType, type DataPath, FillType, LineCap, LineJoin,\n RenderMode, type RGBAColorValue, ShapePrimitiveType, type SplitParameter, TextAlignment,\n TextSizeMode, TextWeight, TexturePaintScaleMode, ValueType,\n} from '@galacean/effects-specification';\nimport { toDataPath } from '../../common/data-path';\nimport { TEXT_WORLD_UNITS_PER_PIXEL } from '../../common/coordinate-mapping';\nimport { createId } from '../../common/id';\nimport { normalizeJSONValue } from '../../common/json-normalization';\nimport { roundNumber } from '../../common/math';\nimport { mapBlendModeToGE } from '../mapping';\nimport { getLayerLocalBounds } from '../converter/transform';\nimport type { ECSCollector, GeneratedComponentData, LayerGenerationContext } from '../types';\nimport type { EffectsLayerPreservedData, EffectsSpriteSplit } from '../../preserved-data';\nimport { appendParticleComponent } from './append-particle-component';\nimport { copyPreservedMaskToComponent, resolveComponentId, restoreComponentRenderData } from './component-preservation';\n\nfunction registerTexture(\n collector: ECSCollector,\n imageUrl: string,\n cache: Map<string, DataPath>,\n preserved?: EffectsLayerPreservedData['spriteTexture'],\n): DataPath {\n const cacheKey = JSON.stringify([imageUrl, preserved]);\n const cached = cache.get(cacheKey);\n\n if (cached != null) {\n return cached;\n }\n\n const imageId = createId();\n const textureId = createId();\n\n collector.images.push({ ...preserved?.image, id: imageId, url: imageUrl });\n collector.textures.push({\n flipY: true,\n ...preserved?.texture,\n id: textureId,\n dataType: DataType.Texture,\n source: toDataPath(imageId),\n });\n\n const dataPathRef = toDataPath(textureId);\n\n cache.set(cacheKey, dataPathRef);\n\n return dataPathRef;\n}\n\nexport function appendComponent(\n layer: IRLayer,\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 appendSpriteComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n case 'text':\n return appendTextComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n case 'shape':\n return appendShapeComponent(layer, itemId, ctx);\n case 'particle':\n return appendParticleComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n default:\n return undefined;\n }\n}\n\nfunction appendSpriteComponent(\n layer: IRLayer,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string {\n const componentId = resolveComponentId(layer, ctx);\n const blending = mapBlendModeToGE(layer.blendMode);\n const layerData = ctx.layerDataById[layer.id];\n const spriteSplits = layerData?.spriteSplits;\n const splits = spriteSplits?.map(copySpriteSplit);\n const textureSheetAnimation = layerData?.textureSheetAnimation;\n const normalizedColor = layer.type === 'solid' ? layer.content.color : layerData?.spriteStartColor;\n const startColor: RGBAColorValue =\n normalizedColor != null\n ? [\n roundNumber(normalizedColor[0], 4),\n roundNumber(normalizedColor[1], 4),\n roundNumber(normalizedColor[2], 4),\n roundNumber(normalizedColor[3], 4),\n ]\n : [1, 1, 1, 1];\n\n let textureDataPath: DataPath | undefined;\n\n const imageAsset = layer.type === 'image' ? ctx.imageAssetById.get(layer.content.assetId) : undefined;\n const textureUrl = imageAsset == null ? undefined : getIRResourceSourceUrl(imageAsset.source);\n\n if (textureUrl != null && textureUrl !== '' && textureUrl !== 'mask://placeholder') {\n textureDataPath = registerTexture(ctx.collector, textureUrl, ctx.textureCache, layerData?.spriteTexture);\n }\n\n const component: GeneratedComponentData = {\n id: componentId,\n dataType: DataType.SpriteComponent,\n item: toDataPath(itemId),\n options: { startColor },\n ...(splits != null && { splits }),\n ...(textureSheetAnimation != null && {\n textureSheetAnimation: normalizeJSONValue(textureSheetAnimation),\n }),\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 copyPreservedMaskToComponent(layer, component, ctx);\n restoreComponentRenderData(layer, component, ctx);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction copySpriteSplit(split: EffectsSpriteSplit): SplitParameter {\n return [split[0], split[1], split[2], split[3], split[4]];\n}\n\nfunction appendTextComponent(\n layer: IRTextLayer,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerGenerationContext,\n): string {\n const textInfo = layer.content;\n const fontAsset = ctx.fontAssetById.get(textInfo.fontAssetId);\n\n if (fontAsset == null) {\n throw new TypeError(`[ge-ir] Text layer '${layer.id}' references a missing Font Asset: ${textInfo.fontAssetId}`);\n }\n\n const componentId = resolveComponentId(layer, ctx);\n const blending = mapBlendModeToGE(layer.blendMode);\n const textureSheetAnimation = ctx.layerDataById[layer.id]?.textureSheetAnimation;\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 { width: layerWidth, height: layerHeight } = getLayerLocalBounds(layer);\n const textWidth = layerWidth;\n const textHeight = Math.max(layerHeight, textInfo.lineHeight);\n const textSizeW = roundNumber(TEXT_WORLD_UNITS_PER_PIXEL * layerWidth, 4);\n const textSizeH = roundNumber(TEXT_WORLD_UNITS_PER_PIXEL * layerHeight, 4);\n const textSizeMode = ctx.layerDataById[layer.id]?.textSizeMode ?? 'fixed';\n\n const component: GeneratedComponentData = {\n id: componentId,\n dataType: DataType.TextComponent,\n item: toDataPath(itemId),\n options: {\n text: textInfo.text,\n fontSize: textInfo.fontSize,\n textColor,\n fontFamily: fontAsset.family,\n fontWeight: mapFontWeightToGE(fontAsset.weight),\n textAlign:\n textInfo.textAlign === 'center'\n ? TextAlignment.middle\n : textInfo.textAlign === 'right'\n ? TextAlignment.right\n : TextAlignment.left,\n fontStyle: fontAsset.style,\n letterSpace: textInfo.letterSpacing,\n lineHeight: textInfo.lineHeight,\n textWidth,\n textHeight,\n ...mapTextSizeModeToGE(textSizeMode),\n size: [textSizeW, textSizeH],\n },\n ...(textureSheetAnimation != null && {\n textureSheetAnimation: normalizeJSONValue(textureSheetAnimation),\n }),\n renderer: {\n renderMode: RenderMode.MESH,\n anchor: [anchorScaleX, anchorScaleY],\n ...(blending !== undefined && { blending }),\n },\n };\n\n copyPreservedMaskToComponent(layer, component, ctx);\n restoreComponentRenderData(layer, component, ctx);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction mapTextSizeModeToGE(sizeMode: NonNullable<EffectsLayerPreservedData['textSizeMode']>): Record<string, unknown> {\n switch (sizeMode) {\n case 'auto-width':\n return { autoResize: TextSizeMode.autoWidth };\n case 'auto-height':\n return { autoResize: TextSizeMode.autoHeight };\n case 'fixed':\n return { autoResize: TextSizeMode.fixed };\n }\n}\n\nfunction mapFontWeightToGE(weight: number): TextWeight | number {\n if (weight === 400) {\n return TextWeight.normal;\n }\n if (weight === 700) {\n return TextWeight.bold;\n }\n if (weight === 300) {\n return TextWeight.lighter;\n }\n\n return weight;\n}\n\nfunction appendShapeComponent(layer: IRShapeLayer, itemId: string, ctx: LayerGenerationContext): string | undefined {\n const shapeData = layer.content?.shapes[0];\n\n if (shapeData == null) {\n return undefined;\n }\n\n const componentId = resolveComponentId(layer, ctx);\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 copyPreservedMaskToComponent(layer, component, ctx);\n restoreComponentRenderData(layer, component, ctx);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nexport function buildShapeOptions(\n shapeData: IRShape,\n ratio: number,\n ctx?: LayerGenerationContext,\n renderStyle?: ShapeRenderStyle,\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'] = mapRectangleCornerRadiusToGERoundness(shapeData);\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 const fills = renderStyle?.fills ?? shapeData.fills;\n const strokes = renderStyle?.strokes ?? shapeData.strokes;\n\n if (fills.length > 0) {\n options['fills'] = 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 (strokes.length > 0) {\n options['strokes'] = strokes\n .map(stroke => mapShapePaint(stroke.paint, ratio, ctx))\n .filter((stroke): stroke is Record<string, unknown> => stroke != null);\n } else {\n options['strokes'] = [];\n }\n const strokeStyle = strokes[0];\n\n if (strokeStyle != null) {\n options['strokeWidth'] = roundNumber(strokeStyle.width * ratio, 4);\n options['strokeCap'] = mapLineCap(strokeStyle.cap);\n options['strokeJoin'] = mapLineJoin(strokeStyle.join);\n }\n\n return options;\n}\n\nexport interface ShapeRenderStyle {\n fills: IRShapePaint[];\n strokes: IRShapeStroke[];\n}\n\n/** Split only when GE's component-level stroke geometry would lose an authored style. */\nexport function buildShapeRenderStyles(shape: IRShape): ShapeRenderStyle[] {\n const styles: ShapeRenderStyle[] = [];\n\n for (const stroke of shape.strokes) {\n const previous = styles[styles.length - 1];\n\n if (previous != null && previous.strokes.length > 0 && hasSameStrokeGeometry(previous.strokes[0], stroke)) {\n previous.strokes.push(stroke);\n } else {\n styles.push({ fills: styles.length === 0 ? shape.fills : [], strokes: [stroke] });\n }\n }\n\n return styles.length > 0 ? styles : [{ fills: shape.fills, strokes: [] }];\n}\n\nfunction hasSameStrokeGeometry(left: IRShapeStroke, right: IRShapeStroke): boolean {\n return left.width === right.width && left.cap === right.cap && left.join === right.join;\n}\n\nfunction mapRectangleCornerRadiusToGERoundness(shape: Extract<IRShape, { primitiveType: 'rectangle' }>): number {\n const maxRadius = Math.min(shape.width, shape.height) / 2;\n\n if (maxRadius <= 0 || shape.cornerRadius == null) {\n return 0;\n }\n\n return roundNumber(Math.min(Math.max(shape.cornerRadius / maxRadius, 0), 1) * 100, 4);\n}\n\nconst SHAPE_PRIMITIVE_TYPE_TO_GE: Record<IRShape['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<IRShapePaint['type'], FillType> = {\n [IRPaintType.Solid]: FillType.Solid,\n [IRPaintType.LinearGradient]: FillType.GradientLinear,\n [IRPaintType.RadialGradient]: FillType.GradientRadial,\n [IRPaintType.AngularGradient]: FillType.GradientAngular,\n [IRPaintType.Texture]: FillType.Texture,\n};\n\nconst TEXTURE_SCALE_MODE_TO_GE: Record<IRTextureScaleMode, TexturePaintScaleMode> = {\n [IRTextureScaleMode.Fill]: TexturePaintScaleMode.Fill,\n [IRTextureScaleMode.Fit]: TexturePaintScaleMode.Fit,\n [IRTextureScaleMode.Crop]: TexturePaintScaleMode.Crop,\n [IRTextureScaleMode.Tile]: TexturePaintScaleMode.Tile,\n};\n\nconst LINE_CAP_TO_GE: Record<string, LineCap> = {\n [IRLineCap.Butt]: LineCap.Butt,\n [IRLineCap.Round]: LineCap.Round,\n [IRLineCap.Square]: LineCap.Square,\n};\n\nconst LINE_JOIN_TO_GE: Record<string, LineJoin> = {\n [IRLineJoin.Round]: LineJoin.Round,\n [IRLineJoin.Bevel]: LineJoin.Bevel,\n [IRLineJoin.Miter]: LineJoin.Miter,\n};\n\nfunction mapShapePrimitiveType(primitiveType: IRShape['primitiveType']): ShapePrimitiveType {\n return SHAPE_PRIMITIVE_TYPE_TO_GE[primitiveType];\n}\n\nfunction mapLineCap(lineCap: string): LineCap {\n return LINE_CAP_TO_GE[lineCap] ?? LineCap.Butt;\n}\n\nfunction mapLineJoin(lineJoin: string): LineJoin {\n return LINE_JOIN_TO_GE[lineJoin] ?? LineJoin.Miter;\n}\n\nfunction mapShapePaint(\n paint: IRShapePaint,\n ratio: number,\n ctx: LayerGenerationContext | undefined,\n): Record<string, unknown> | undefined {\n if (paint.type === IRPaintType.Solid) {\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n color: colorToGE(paint.color),\n };\n }\n\n if (\n paint.type === IRPaintType.LinearGradient ||\n paint.type === IRPaintType.RadialGradient ||\n paint.type === IRPaintType.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 === IRPaintType.Texture) {\n const imageAsset = ctx?.imageAssetById.get(paint.assetId);\n const textureUrl = imageAsset == null ? undefined : getIRResourceSourceUrl(imageAsset.source);\n const texture =\n textureUrl != null && ctx != null ? registerTexture(ctx.collector, textureUrl, ctx.textureCache) : undefined;\n\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n ...(texture != null && { texture }),\n scaleMode: TEXTURE_SCALE_MODE_TO_GE[paint.scaleMode ?? IRTextureScaleMode.Fill],\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(value: [number, number], ratio: number): { x: number; y: number } {\n return {\n x: roundNumber(value[0] * ratio, 4),\n y: roundNumber(-value[1] * ratio, 4),\n };\n}\n\nfunction mapCustomPaths(paths: IRBezierPath[], 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 { IRAnimatedProperty, IRLayer, IRLocalBounds } from '@vvfx/animation-ir';\nimport type { EffectsLayerPreservedData } from '../../preserved-data';\nimport { computeAnchorInfo, getLayerLocalBounds, getStaticAnchor } from '../converter/transform';\n\n/**\n * Anchor encoding strategy.\n *\n * - `inline-anchor` encodes the renderer anchor and compensates item position.\n * - `split-null-visual` 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-visual' };\n\nexport function resolveLayerGenerationStrategy(\n layer: IRLayer,\n preservedData?: EffectsLayerPreservedData,\n): LayerGenerationStrategy {\n const sourceHierarchy = preservedData?.sourceHierarchy;\n\n if (sourceHierarchy === 'null-sprite-pair') {\n return { kind: 'split-null-visual' };\n }\n\n const bounds = getLayerLocalBounds(layer);\n\n if (sourceHierarchy !== 'single-item' && needsPivotContainer(layer, bounds)) {\n return { kind: 'split-null-visual' };\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: IRLayer, bounds: IRLocalBounds): boolean {\n if (layer.type !== 'image' && layer.type !== 'solid' && layer.type !== 'text') {\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 || 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 =\n layer.type === 'text'\n ? hasMultipleKeyframes(rotation?.x) || hasMultipleKeyframes(rotation?.y) || hasMultipleKeyframes(rotation?.z)\n : rotation?.x?.type === 'keyframed' || rotation?.y?.type === 'keyframed' || rotation?.z?.type === 'keyframed';\n const hasScaleAnimation =\n layer.type === 'text' ? hasMultipleKeyframes(transform?.scale) : transform?.scale?.type === 'keyframed';\n const hasStaticTextRotation =\n layer.type === 'text' &&\n (hasNonZeroStaticValue(rotation?.x) ||\n hasNonZeroStaticValue(rotation?.y) ||\n hasNonZeroStaticValue(rotation?.z));\n\n return hasRotationAnimation || hasScaleAnimation || hasStaticTextRotation;\n}\n\nfunction hasMultipleKeyframes(property: IRAnimatedProperty | undefined): boolean {\n return property?.type === 'keyframed' && property.keyframes.length > 1;\n}\n\nfunction hasNonZeroStaticValue(property: IRAnimatedProperty<number> | undefined): boolean {\n if (property == null) {\n return false;\n }\n let value: number | undefined;\n\n if (property.type === 'keyframed') {\n value = property.keyframes?.length === 1 ? property.keyframes[0]?.value : undefined;\n } else {\n value = property.value;\n }\n\n return value != null && Math.abs(value) > 1e-6;\n}\n","import type { IRLayer, IRPrecompLayer, IRShapeLayer, IRVec3 } from '@vvfx/animation-ir';\nimport {\n DataType,\n EndBehavior,\n ItemType,\n RenderLevel,\n RenderMode,\n type TransformData,\n} from '@galacean/effects-specification';\nimport { get2dTo3dRatio, TEXT_WORLD_UNITS_PER_PIXEL } from '../../common/coordinate-mapping';\nimport { toDataPath } from '../../common/data-path';\nimport { createId } from '../../common/id';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\nimport { roundNumber } from '../../common/math';\nimport { appendTimelineTracks } from './append-timeline-tracks';\nimport { computeLayerTiming } from '../converter/timing';\nimport { buildColorAnimation, buildTransformAnimation } from '../converter/animation';\nimport {\n appendComponent, buildShapeOptions, buildShapeRenderStyles,\n} from './append-component';\nimport { copyPreservedMaskToComponent, restoreComponentRenderData } from './component-preservation';\nimport {\n mapBlendModeToGE, mapEndBehaviorToGE, mapLayerTypeToGETimelineItemType, mapLayerTypeToGEVFXItemType,\n} from '../mapping';\nimport {\n applyScalePositionAdjust,\n computeAnchorInfo,\n computeStaticPosition,\n getLayerLocalBounds,\n getStaticAnchor,\n} from '../converter/transform';\nimport { resolveLayerGenerationStrategy } from './layer-strategy';\nimport type {\n GeneratedComponentData,\n GeneratedVFXItemData,\n LayerGenerationContext,\n 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\nfunction resolveTransformBaseScale(layer: IRLayer, ctx: LayerGenerationContext, fallback: IRVec3): IRVec3 {\n const layerData = ctx.layerDataById[layer.id];\n const base = layerData?.sizeOverLifetime != null ? layerData.transformBaseScale : undefined;\n\n return base == null ? fallback : [base[0] * fallback[0], base[1] * fallback[1], base[2] * fallback[2]];\n}\n\nfunction resolveLayerEndBehavior(layer: IRLayer): EndBehavior {\n return layer.endBehavior == null ? EndBehavior.destroy : mapEndBehaviorToGE(layer.endBehavior);\n}\n\nfunction resolveTimelineEndBehavior(\n layer: IRLayer,\n ctx: LayerGenerationContext,\n itemEndBehavior: EndBehavior,\n): EndBehavior {\n return ctx.layerDataById[layer.id]?.timelineEndBehavior ?? itemEndBehavior;\n}\n\nfunction createItemId(layer: IRLayer, ctx: LayerGenerationContext, sourceIndex = -1): string {\n const sourceItemIds = ctx.layerDataById[layer.id]?.sourceItemIds ?? [];\n const resolvedIndex = sourceIndex < 0 ? sourceItemIds.length + sourceIndex : sourceIndex;\n const sourceItemId = sourceItemIds[resolvedIndex];\n\n if (sourceItemId != null && !ctx.collector.items.some(item => item.id === sourceItemId)) {\n return sourceItemId;\n }\n\n return createId();\n}\n\nfunction resolvePreservedItemAnchor(\n layer: IRLayer,\n itemId: string,\n ctx: LayerGenerationContext,\n): { x: number; y: number } | undefined {\n const anchor = ctx.layerDataById[layer.id]?.itemAnchorById?.[itemId];\n\n return anchor == null ? undefined : { x: anchor[0], y: anchor[1] };\n}\n\nfunction resolvePreservedItemEulerHint(\n layer: IRLayer,\n itemId: string,\n ctx: LayerGenerationContext,\n): [number, number, number] {\n return ctx.layerDataById[layer.id]?.itemEulerHintById?.[itemId] ?? [0, 0, 0];\n}\n\nexport function appendNullLayer(layer: IRLayer, ctx: LayerGenerationContext): void {\n const itemId = createItemId(layer, ctx);\n const layerId = layer.id;\n const itemAnchor = resolvePreservedItemAnchor(layer, itemId, ctx);\n\n ctx.layerToItemId[layerId] = itemId;\n ctx.layerToMaskParentItemId[layerId] = itemId;\n ctx.layerToMaskCoordinateOrigin[layerId] = getStaticAnchor(layer);\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 endBehavior = layer.endBehavior == null ? EndBehavior.freeze : mapEndBehaviorToGE(layer.endBehavior);\n\n const objectBindingTrackId = appendTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n resolveTimelineEndBehavior(layer, ctx, endBehavior),\n animation,\n ItemType.null,\n );\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: ItemType.null,\n visible: layer.visible,\n endBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: {\n ...buildGETransform(\n position, resolvePreservedItemEulerHint(layer, itemId, ctx), resolveTransformBaseScale(layer, ctx, [1, 1, 1]),\n ),\n ...(itemAnchor != null && { anchor: itemAnchor }),\n },\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerId });\n}\n\nexport function appendPrecompLayer(layer: IRPrecompLayer, ctx: LayerGenerationContext): void {\n const isTransformParent = ctx.parentLayerIdSet.has(layer.id) &&\n ctx.layerDataById[layer.id]?.sourceHierarchy !== 'single-item';\n const itemId = isTransformParent ? createId() : createItemId(layer, ctx);\n const layerId = layer.id;\n\n ctx.layerToItemId[layerId] = itemId;\n ctx.layerToMaskParentItemId[layerId] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate, ctx.ir.inPoint);\n const animation = buildTransformAnimation(layer, ctx);\n const referencedComposition = ctx.compositionById.get(layer.content.compositionId);\n const referencedRatio = referencedComposition == null\n ? ctx.ratio\n : get2dTo3dRatio(referencedComposition.width, referencedComposition.height);\n const fallbackBounds = referencedComposition == null\n ? undefined\n : { x: 0, y: 0, width: referencedComposition.width, height: referencedComposition.height };\n const bounds = getLayerLocalBounds(layer, fallbackBounds);\n const hasAnchor = layer.transform?.anchor != null;\n const anchor = getStaticAnchor(layer);\n const localAnchorX = hasAnchor ? referencedRatio * (anchor[0] - (bounds.x + bounds.width / 2)) : 0;\n const localAnchorY = hasAnchor ? -referencedRatio * (anchor[1] - (bounds.y + bounds.height / 2)) : 0;\n const position = computeStaticPosition(layer, ctx);\n // Referenced Composition children already use canvas-centered coordinates. Only\n // compensate an Anchor that is explicitly present in the source-neutral model;\n // an absent channel must not synthesize a corner Anchor for GE-origin Precomps.\n const precompPosition: [number, number, number] = [\n position[0] - localAnchorX,\n position[1] - localAnchorY,\n position[2],\n ];\n const intrinsicScale = ctx.layerDataById[layer.id]?.precompContent != null ? 1 : ctx.ratio / referencedRatio;\n const sourceStartFrame = layer.time.sourceStartFrame ?? referencedComposition?.inPoint ?? 0;\n const referencedInPoint = referencedComposition?.inPoint ?? 0;\n const referencedFrameRate = referencedComposition?.frameRate ?? ctx.frameRate;\n const precompTimeOffset = (sourceStartFrame - referencedInPoint) / referencedFrameRate;\n const endBehavior = mapEndBehaviorToGE(\n layer.content.endBehavior ?? referencedComposition?.endBehavior ?? ctx.ir.endBehavior,\n );\n const layerData = ctx.layerDataById[layer.id];\n const outputCompositionId = ctx.precompOutputIdByLayerId.get(layer.id) ?? layer.content.compositionId;\n const content = buildPrecompContent(layerData?.precompContent, outputCompositionId);\n\n ctx.layerToMaskCoordinateOrigin[layerId] = [\n bounds.x + bounds.width / 2,\n bounds.y + bounds.height / 2,\n ];\n\n if (isTransformParent) {\n appendParentPrecompItems({\n layer,\n ctx,\n itemId,\n layerId,\n delay,\n layerDuration,\n animation,\n position,\n localAnchorX,\n localAnchorY,\n intrinsicScale,\n precompTimeOffset,\n endBehavior,\n content,\n });\n\n return;\n }\n\n const scale = layer.transform?.scale;\n\n if (animation.sizeOverLifetime != null && layerData?.sizeOverLifetime == null && scale != null) {\n // GE TransformPlayable uses initial scale.x for Z, including the canvas conversion factor.\n const compensateDepth = (value: IRVec3): IRVec3 => [value[0], value[1], value[2] / intrinsicScale];\n const compensatedScale = scale.type === 'static'\n ? { ...scale, value: compensateDepth(scale.value) }\n : {\n ...scale,\n keyframes: scale.keyframes.map(keyframe => ({\n ...keyframe,\n value: compensateDepth(keyframe.value),\n ...(keyframe.endValue != null && { endValue: compensateDepth(keyframe.endValue) }),\n })),\n };\n\n animation.sizeOverLifetime = buildTransformAnimation({\n ...layer, transform: { ...layer.transform, scale: compensatedScale },\n }, ctx).sizeOverLifetime;\n }\n\n const objectBindingTrackId = appendTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n endBehavior,\n animation,\n ItemType.composition,\n precompTimeOffset,\n );\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: ItemType.composition,\n visible: layer.visible,\n endBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n content,\n components: [],\n transform: {\n ...buildGETransform(\n precompPosition,\n resolvePreservedItemEulerHint(layer, itemId, ctx),\n resolveTransformBaseScale(layer, ctx, [intrinsicScale, intrinsicScale, 1]),\n ),\n anchor: resolvePreservedItemAnchor(layer, itemId, ctx) ?? { x: localAnchorX, y: localAnchorY },\n },\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerId });\n}\n\ninterface ParentPrecompItemsOptions {\n layer: IRPrecompLayer;\n ctx: LayerGenerationContext;\n itemId: string;\n layerId: string;\n delay: number;\n layerDuration: number;\n animation: TransformAnimation;\n position: [number, number, number];\n localAnchorX: number;\n localAnchorY: number;\n intrinsicScale: number;\n precompTimeOffset: number;\n endBehavior: EndBehavior;\n content: Record<string, unknown>;\n}\n\n/**\n * Keep a Precomp's layer transform separate from its internal canvas scale.\n * External Lottie children inherit the former, while referenced Composition\n * content inherits both nodes. The wrapper stays at the authored Position;\n * both content and external children are offset from the authored Anchor.\n */\nfunction appendParentPrecompItems(options: ParentPrecompItemsOptions): void {\n const {\n layer, ctx, itemId, layerId, delay,\n layerDuration, animation, position, localAnchorX, localAnchorY,\n intrinsicScale, precompTimeOffset, endBehavior, content,\n } = options;\n const layerTrackId = appendTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n endBehavior,\n animation,\n ItemType.null,\n );\n const layerItem: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: ItemType.null,\n visible: layer.visible,\n endBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: {\n ...buildGETransform(\n position, resolvePreservedItemEulerHint(layer, itemId, ctx), resolveTransformBaseScale(layer, ctx, [1, 1, 1]),\n ),\n anchor: resolvePreservedItemAnchor(layer, itemId, ctx) ?? { x: 0, y: 0 },\n },\n };\n\n const compositionItemId = createItemId(layer, ctx);\n\n ctx.layerToMaskParentItemId[layerId] = compositionItemId;\n const compositionTrackId = appendTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n endBehavior,\n {},\n ItemType.composition,\n precompTimeOffset,\n );\n const compositionItem: GeneratedVFXItemData = {\n id: compositionItemId,\n dataType: DataType.VFXItemData,\n name: `${layer.name ?? layer.id} content`,\n duration: layerDuration,\n type: ItemType.composition,\n visible: true,\n endBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n content,\n components: [],\n transform: {\n ...buildGETransform(\n [-intrinsicScale * localAnchorX, -intrinsicScale * localAnchorY, 0],\n resolvePreservedItemEulerHint(layer, compositionItemId, ctx),\n [intrinsicScale, intrinsicScale, 1],\n ),\n anchor: resolvePreservedItemAnchor(layer, compositionItemId, ctx) ?? { x: 0, y: 0 },\n },\n parentId: itemId,\n };\n\n ctx.collector.items.push(layerItem, compositionItem);\n ctx.itemBindings.push(\n { itemId, objectBindingTrackId: layerTrackId, layerId },\n { itemId: compositionItemId, objectBindingTrackId: compositionTrackId },\n );\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 appendNullVisualPair(layer: IRLayer, ctx: LayerGenerationContext): void {\n const layerId = layer.id;\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 = createItemId(layer, ctx, 0);\n const nullItemAnchor = resolvePreservedItemAnchor(layer, nullItemId, ctx);\n\n ctx.layerToItemId[layerId] = nullItemId;\n\n const nullAnimation = buildTransformAnimation(layer, ctx);\n const nullPosition = computeStaticPosition(layer, ctx);\n\n const nullTrackId = appendTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n EndBehavior.freeze,\n nullAnimation,\n ItemType.null,\n );\n\n const nullItem: GeneratedVFXItemData = {\n id: nullItemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\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: {\n ...buildGETransform(\n nullPosition, resolvePreservedItemEulerHint(layer, nullItemId, ctx),\n resolveTransformBaseScale(layer, ctx, [1, 1, 1]),\n ),\n ...(nullItemAnchor != null && { anchor: nullItemAnchor }),\n },\n };\n\n ctx.collector.items.push(nullItem);\n ctx.itemBindings.push({ itemId: nullItemId, objectBindingTrackId: nullTrackId, layerId });\n\n const childItemId = createItemId(layer, ctx);\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 ctx.layerToMaskCoordinateOrigin[layerId] = anchor;\n\n const childColorAnimation = buildColorAnimation(layer, ctx, ctx.inheritedOpacity);\n const itemEndBehavior = resolveLayerEndBehavior(layer);\n const timelineEndBehavior = resolveTimelineEndBehavior(layer, ctx, itemEndBehavior);\n const childTrackId = appendTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n timelineEndBehavior,\n { colorOverLifetime: childColorAnimation },\n mapLayerTypeToGETimelineItemType(layer.type),\n );\n\n const componentId = appendComponent(layer, childItemId, 0.5, 0.5, ctx);\n\n if (componentId != null) {\n ctx.layerToComponentId[layerId] = componentId;\n }\n\n const sizeRatio = layer.type === 'text' ? TEXT_WORLD_UNITS_PER_PIXEL : ctx.ratio;\n // Preserve the visual child's world-width precision when separating size from scale.\n const textScale = layerWidth > 0\n ? roundNumber(ctx.ratio * layerWidth, 4) / (layerWidth * TEXT_WORLD_UNITS_PER_PIXEL)\n : ctx.ratio / TEXT_WORLD_UNITS_PER_PIXEL;\n const childScale: [number, number, number] = layer.type === 'text' ? [textScale, textScale, textScale] : [1, 1, 1];\n\n const childItem: GeneratedVFXItemData = {\n id: childItemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: mapLayerTypeToGEVFXItemType(layer.type),\n visible: layer.visible,\n endBehavior: itemEndBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(childPosition, resolvePreservedItemEulerHint(layer, childItemId, ctx), childScale),\n anchor: resolvePreservedItemAnchor(layer, childItemId, ctx) ?? { x: 0, y: 0 },\n ...(layer.type !== 'text' || ctx.layerDataById[layer.id]?.textSizeMode !== 'auto-width'\n ? { size: { x: roundNumber(sizeRatio * layerWidth, 4), y: roundNumber(sizeRatio * layerHeight, 4) } }\n : {}),\n },\n parentId: nullItemId,\n };\n\n ctx.collector.items.push(childItem);\n ctx.itemBindings.push({ itemId: childItemId, objectBindingTrackId: childTrackId, layerId });\n}\n\nexport function appendParentLayer(layer: IRLayer, ctx: LayerGenerationContext): void {\n appendNullVisualPair(layer, ctx);\n}\n\nexport function appendVisualLayer(layer: IRLayer, ctx: LayerGenerationContext): void {\n const strategy = resolveLayerGenerationStrategy(layer, ctx.layerDataById[layer.id]);\n\n if (strategy.kind === 'split-null-visual') {\n appendNullVisualPair(layer, ctx);\n\n return;\n }\n\n if (layer.type === 'shape' && (layer.content?.shapes.length ?? 0) > 0) {\n appendShapeLayerItems(layer, ctx);\n\n return;\n }\n\n const itemId = createItemId(layer, ctx);\n const layerId = layer.id;\n\n ctx.layerToItemId[layerId] = 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 sizeRatio = layer.type === 'text' ? TEXT_WORLD_UNITS_PER_PIXEL : ctx.ratio;\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, ctx.inheritedOpacity);\n const fullAnimation: TransformAnimation = {\n ...animation,\n colorOverLifetime: colorAnimation,\n };\n\n const rawPosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n // Particle bounds describe the effect region; scaling the emitter must not translate it like a sprite rectangle.\n const position = layer.type === 'particle' ? rawPosition : applyScalePositionAdjust(rawPosition, layer, bounds, ctx.ratio);\n\n const timelineItemType = mapLayerTypeToGETimelineItemType(layer.type);\n const itemEndBehavior = resolveLayerEndBehavior(layer);\n const timelineEndBehavior = resolveTimelineEndBehavior(layer, ctx, itemEndBehavior);\n const objectBindingTrackId = appendTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n timelineEndBehavior,\n fullAnimation,\n timelineItemType,\n );\n\n const componentId = appendComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n\n ctx.layerToMaskCoordinateOrigin[layerId] = [\n bounds.x + layerWidth / 2,\n bounds.y + layerHeight / 2,\n ];\n\n if (componentId != null) {\n ctx.layerToComponentId[layerId] = componentId;\n }\n\n const textScale = ctx.ratio / TEXT_WORLD_UNITS_PER_PIXEL;\n const itemScale: [number, number, number] = layer.type === 'text' ? [textScale, textScale, textScale] : [1, 1, 1];\n\n const item: GeneratedVFXItemData = {\n id: itemId,\n dataType: DataType.VFXItemData,\n name: layer.name ?? layer.id,\n duration: layerDuration,\n type: mapLayerTypeToGEVFXItemType(layer.type),\n visible: layer.visible,\n endBehavior: itemEndBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(\n position, resolvePreservedItemEulerHint(layer, itemId, ctx), resolveTransformBaseScale(layer, ctx, itemScale),\n ),\n anchor: resolvePreservedItemAnchor(layer, itemId, ctx) ?? { x: 0, y: 0 },\n ...(layer.type !== 'text' || ctx.layerDataById[layer.id]?.textSizeMode !== 'auto-width'\n ? { size: { x: roundNumber(sizeRatio * layerWidth, 4), y: roundNumber(sizeRatio * layerHeight, 4) } }\n : {}),\n },\n };\n\n ctx.collector.items.push(item);\n ctx.itemBindings.push({ itemId, objectBindingTrackId, layerId });\n}\n\nfunction appendShapeLayerItems(layer: IRShapeLayer, ctx: LayerGenerationContext): void {\n const layerId = layer.id;\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, ctx.inheritedOpacity);\n const fullAnimation: TransformAnimation = { ...animation, colorOverLifetime: colorAnimation };\n const basePosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n const blending = mapBlendModeToGE(layer.blendMode);\n const itemEndBehavior = resolveLayerEndBehavior(layer);\n const timelineEndBehavior = resolveTimelineEndBehavior(layer, ctx, itemEndBehavior);\n let renderIndex = 0;\n\n ctx.layerToMaskCoordinateOrigin[layerId] = anchor;\n\n // Composition assembly reverses generated Items once. Generate the Shape-local\n // stack top-first so the final GE Item order remains IR bottom-first.\n for (let shapeIndex = layer.content.shapes.length - 1; shapeIndex >= 0; shapeIndex -= 1) {\n const shapeData = layer.content.shapes[shapeIndex];\n const renderStyles = buildShapeRenderStyles(shapeData);\n\n for (let styleIndex = renderStyles.length - 1; styleIndex >= 0; styleIndex -= 1) {\n const renderStyle = renderStyles[styleIndex];\n const currentRenderIndex = renderIndex;\n const shapeItemId = createItemId(layer, ctx, currentRenderIndex);\n\n renderIndex += 1;\n if (currentRenderIndex === 0) {\n ctx.layerToItemId[layerId] = 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 sourceComponentId = currentRenderIndex === 0\n ? ctx.layerDataById[layer.id]?.sourceComponentId\n : undefined;\n const shapeComponentId = sourceComponentId != null &&\n !ctx.collector.components.some(component => component.id === sourceComponentId)\n ? sourceComponentId\n : createId();\n\n const component: GeneratedComponentData = {\n id: shapeComponentId,\n dataType: DataType.ShapeComponent,\n item: toDataPath(shapeItemId),\n ...buildShapeOptions(shapeData, ctx.ratio, ctx, renderStyle),\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 (currentRenderIndex === 0) {\n copyPreservedMaskToComponent(layer, component, ctx);\n restoreComponentRenderData(layer, component, ctx);\n }\n\n ctx.collector.components.push(component);\n if (currentRenderIndex === 0) {\n ctx.layerToComponentId[layerId] = shapeComponentId;\n }\n\n const objectBindingTrackId = appendTimelineTracks(\n ctx.collector,\n delay,\n layerDuration,\n timelineEndBehavior,\n fullAnimation,\n ItemType.shape,\n );\n\n const shapeItem: GeneratedVFXItemData = {\n id: shapeItemId,\n dataType: DataType.VFXItemData,\n name: currentRenderIndex === 0\n ? (layer.name ?? layer.id)\n : `${layer.name ?? layer.id}_shape_${currentRenderIndex}`,\n duration: layerDuration,\n type: ItemType.shape,\n visible: layer.visible,\n endBehavior: itemEndBehavior,\n delay,\n renderLevel: RenderLevel.BPlus,\n components: [toDataPath(shapeComponentId)],\n transform: {\n ...buildGETransform(\n shapePosition,\n resolvePreservedItemEulerHint(layer, shapeItemId, ctx),\n resolveTransformBaseScale(layer, ctx, [1, 1, 1]),\n ),\n anchor: resolvePreservedItemAnchor(layer, shapeItemId, ctx) ?? { x: 0, y: 0 },\n },\n };\n\n ctx.collector.items.push(shapeItem);\n ctx.itemBindings.push({ itemId: shapeItemId, objectBindingTrackId, layerId });\n }\n }\n}\n","import type { IRLayer } from '@vvfx/animation-ir';\nimport { getStaticAnchor } from '../converter/transform';\nimport type { GeneratedVFXItemData } from '../types';\n\nexport function applyParenting(\n layers: IRLayer[],\n items: GeneratedVFXItemData[],\n layerToItemId: Record<string, string>,\n ratio: number,\n width: number,\n height: number,\n): void {\n const layerById = new Map<string, IRLayer>();\n\n for (const layer of layers) {\n layerById.set(layer.id, 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.parentId == null) {\n continue;\n }\n\n const childItemId = layerToItemId[layer.id];\n const parentLayer = layerById.get(layer.parentId);\n\n if (parentLayer == null || childItemId == null) {\n continue;\n }\n\n const parentItemId = layerToItemId[parentLayer.id];\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","import { IRMaskMode, type IRMask } from '@vvfx/animation-ir';\nimport { DataType } from '@galacean/effects-specification';\nimport { isRecord } from '../../common/json-normalization';\nimport type { GeneratedCompositionData, GeneratedMiscData, GeneratedVFXItemData } from '../types';\n\ninterface Point2D {\n x: number;\n y: number;\n}\n\ninterface Affine2D {\n a: number;\n b: number;\n c: number;\n d: number;\n tx: number;\n ty: number;\n}\n\n/** A positive, closed mask boundary expressed in one Composition's local space. */\nexport interface RuntimeMaskGeometry {\n points: Point2D[];\n}\n\nexport type MaskContainment = 'equal' | 'existing-contains-source' | 'source-contains-existing' | 'none';\n\nconst NUMERIC_EPSILON = 1e-8;\n// Lottie paths commonly extend a fraction of a source pixel beyond a Precomp\n// viewport. Treat that export noise as the same boundary when proving containment.\nconst CONTAINMENT_TOLERANCE = 0.025;\nconst CURVE_FLATNESS = 0.002;\nconst MAX_CURVE_DEPTH = 10;\n\nexport function buildRuntimeMaskGeometry(\n mask: IRMask,\n ratio: number,\n coordinateOrigin: [number, number],\n): RuntimeMaskGeometry | undefined {\n const path = mask.path;\n\n const effectiveInverted = mask.mode === IRMaskMode.Subtract ? mask.inverted !== true : mask.inverted === true;\n\n if (effectiveInverted || !path.closed || path.points.length < 3) {\n return undefined;\n }\n\n const points = path.points.map(point => convertPoint(point, ratio, coordinateOrigin));\n const easingIns = path.inTangents.map(point => convertVector(point, ratio));\n const easingOuts = path.outTangents.map(point => convertVector(point, ratio));\n const flattened: Point2D[] = [points[0]];\n\n for (let index = 0; index < points.length; index++) {\n const nextIndex = (index + 1) % points.length;\n const start = points[index];\n const end = points[nextIndex];\n const control1 = addPoints(start, easingOuts[index] ?? { x: 0, y: 0 });\n const control2 = addPoints(end, easingIns[nextIndex] ?? { x: 0, y: 0 });\n\n flattenCubic(start, control1, control2, end, flattened, 0);\n }\n\n if (pointsEqual(flattened[0], flattened[flattened.length - 1])) {\n flattened.pop();\n }\n\n return flattened.length >= 3 ? { points: flattened } : undefined;\n}\n\nexport function mapMaskGeometryIntoPrecomp(\n geometry: RuntimeMaskGeometry | undefined,\n precompItem: GeneratedVFXItemData,\n items: GeneratedVFXItemData[],\n animatedItemIds: ReadonlySet<string>,\n): RuntimeMaskGeometry | undefined {\n if (geometry == null) {\n return undefined;\n }\n const itemById = new Map(items.map(item => [item.id, item] as const));\n const chain: GeneratedVFXItemData[] = [];\n const visited = new Set<string>();\n let current: GeneratedVFXItemData | undefined = precompItem;\n\n while (current != null && !visited.has(current.id)) {\n if (animatedItemIds.has(current.id)) {\n return undefined;\n }\n visited.add(current.id);\n chain.unshift(current);\n current = current.parentId == null ? undefined : itemById.get(current.parentId);\n }\n\n let world = identityMatrix();\n\n for (const item of chain) {\n world = multiplyMatrices(world, buildItemMatrix(item));\n }\n const inverse = invertMatrix(world);\n\n if (inverse == null) {\n return undefined;\n }\n\n return { points: geometry.points.map(point => transformPoint(inverse, point)) };\n}\n\nexport function collectAnimatedTransformItemIds(\n generatedCompositions: GeneratedCompositionData[],\n miscs: GeneratedMiscData[],\n): Set<string> {\n const miscById = new Map(miscs.map(misc => [misc.id, misc] as const));\n const animatedItemIds = new Set<string>();\n\n for (const generated of generatedCompositions) {\n for (const binding of generated.itemBindings) {\n if (binding.objectBindingTrackId == null) {\n continue;\n }\n const objectBindingTrack = miscById.get(binding.objectBindingTrackId);\n const childReferences = objectBindingTrack?.['children'];\n\n if (!Array.isArray(childReferences)) {\n continue;\n }\n for (const childReference of childReferences) {\n if (!isRecord(childReference) || typeof childReference['id'] !== 'string') {\n continue;\n }\n const track = miscById.get(childReference['id']);\n\n if (track?.dataType !== DataType.TransformTrack || !transformTrackHasAnimation(track, miscById)) {\n continue;\n }\n animatedItemIds.add(binding.itemId);\n\n break;\n }\n }\n }\n\n return animatedItemIds;\n}\n\nexport function compareMaskContainment(\n existing: RuntimeMaskGeometry | undefined,\n source: RuntimeMaskGeometry | undefined,\n): MaskContainment {\n if (existing == null || source == null) {\n return 'none';\n }\n const sourceInsideExisting = containsPolygon(existing.points, source.points);\n const existingInsideSource = containsPolygon(source.points, existing.points);\n\n if (sourceInsideExisting && existingInsideSource) {\n return 'equal';\n }\n if (sourceInsideExisting) {\n return 'existing-contains-source';\n }\n if (existingInsideSource) {\n return 'source-contains-existing';\n }\n\n return 'none';\n}\n\nfunction convertPoint(point: Point2D, ratio: number, coordinateOrigin: [number, number]): Point2D {\n return {\n x: (point.x - coordinateOrigin[0]) * ratio,\n y: -(point.y - coordinateOrigin[1]) * ratio,\n };\n}\n\nfunction convertVector(point: Point2D, ratio: number): Point2D {\n return { x: point.x * ratio, y: -point.y * ratio };\n}\n\nfunction addPoints(left: Point2D, right: Point2D): Point2D {\n return { x: left.x + right.x, y: left.y + right.y };\n}\n\nfunction flattenCubic(\n start: Point2D,\n control1: Point2D,\n control2: Point2D,\n end: Point2D,\n output: Point2D[],\n depth: number,\n): void {\n if (depth >= MAX_CURVE_DEPTH || isCubicFlat(start, control1, control2, end)) {\n output.push(end);\n\n return;\n }\n const startControl = midpoint(start, control1);\n const controls = midpoint(control1, control2);\n const controlEnd = midpoint(control2, end);\n const leftControl = midpoint(startControl, controls);\n const rightControl = midpoint(controls, controlEnd);\n const center = midpoint(leftControl, rightControl);\n\n flattenCubic(start, startControl, leftControl, center, output, depth + 1);\n flattenCubic(center, rightControl, controlEnd, end, output, depth + 1);\n}\n\nfunction isCubicFlat(start: Point2D, control1: Point2D, control2: Point2D, end: Point2D): boolean {\n return Math.max(\n distanceToLine(control1, start, end),\n distanceToLine(control2, start, end),\n ) <= CURVE_FLATNESS;\n}\n\nfunction distanceToLine(point: Point2D, start: Point2D, end: Point2D): number {\n const dx = end.x - start.x;\n const dy = end.y - start.y;\n const length = Math.hypot(dx, dy);\n\n if (length <= NUMERIC_EPSILON) {\n return Math.hypot(point.x - start.x, point.y - start.y);\n }\n\n return Math.abs(dy * point.x - dx * point.y + end.x * start.y - end.y * start.x) / length;\n}\n\nfunction midpoint(left: Point2D, right: Point2D): Point2D {\n return { x: (left.x + right.x) / 2, y: (left.y + right.y) / 2 };\n}\n\nfunction pointsEqual(left: Point2D | undefined, right: Point2D | undefined): boolean {\n return left != null && right != null &&\n Math.abs(left.x - right.x) <= NUMERIC_EPSILON &&\n Math.abs(left.y - right.y) <= NUMERIC_EPSILON;\n}\n\nfunction containsPolygon(container: Point2D[], inner: Point2D[]): boolean {\n if (\n container.length < 3 ||\n inner.length < 3 ||\n !inner.every(point => pointInPolygonOrBoundary(point, container))\n ) {\n return false;\n }\n\n if (isConvexPolygon(container)) {\n return true;\n }\n\n for (let innerIndex = 0; innerIndex < inner.length; innerIndex++) {\n const innerStart = inner[innerIndex];\n const innerEnd = inner[(innerIndex + 1) % inner.length];\n\n for (let outerIndex = 0; outerIndex < container.length; outerIndex++) {\n const outerStart = container[outerIndex];\n const outerEnd = container[(outerIndex + 1) % container.length];\n\n if (segmentsProperlyIntersect(innerStart, innerEnd, outerStart, outerEnd)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isConvexPolygon(points: Point2D[]): boolean {\n let direction = 0;\n\n for (let index = 0; index < points.length; index++) {\n const cross = orientation(\n points[index],\n points[(index + 1) % points.length],\n points[(index + 2) % points.length],\n );\n\n if (Math.abs(cross) <= NUMERIC_EPSILON) {\n continue;\n }\n const currentDirection = Math.sign(cross);\n\n if (direction !== 0 && currentDirection !== direction) {\n return false;\n }\n direction = currentDirection;\n }\n\n return direction !== 0;\n}\n\nfunction pointInPolygonOrBoundary(point: Point2D, polygon: Point2D[]): boolean {\n let inside = false;\n\n for (let index = 0, previous = polygon.length - 1; index < polygon.length; previous = index++) {\n const start = polygon[previous];\n const end = polygon[index];\n\n if (pointOnSegment(point, start, end)) {\n return true;\n }\n const crossesRay = (start.y > point.y) !== (end.y > point.y) &&\n point.x < ((end.x - start.x) * (point.y - start.y)) / (end.y - start.y) + start.x;\n\n if (crossesRay) {\n inside = !inside;\n }\n }\n\n return inside;\n}\n\nfunction pointOnSegment(point: Point2D, start: Point2D, end: Point2D): boolean {\n if (distanceToLine(point, start, end) > CONTAINMENT_TOLERANCE) {\n return false;\n }\n\n return point.x >= Math.min(start.x, end.x) - CONTAINMENT_TOLERANCE &&\n point.x <= Math.max(start.x, end.x) + CONTAINMENT_TOLERANCE &&\n point.y >= Math.min(start.y, end.y) - CONTAINMENT_TOLERANCE &&\n point.y <= Math.max(start.y, end.y) + CONTAINMENT_TOLERANCE;\n}\n\nfunction segmentsProperlyIntersect(\n firstStart: Point2D,\n firstEnd: Point2D,\n secondStart: Point2D,\n secondEnd: Point2D,\n): boolean {\n const firstSideStart = orientation(firstStart, firstEnd, secondStart);\n const firstSideEnd = orientation(firstStart, firstEnd, secondEnd);\n const secondSideStart = orientation(secondStart, secondEnd, firstStart);\n const secondSideEnd = orientation(secondStart, secondEnd, firstEnd);\n\n return firstSideStart * firstSideEnd < -NUMERIC_EPSILON &&\n secondSideStart * secondSideEnd < -NUMERIC_EPSILON;\n}\n\nfunction orientation(start: Point2D, end: Point2D, point: Point2D): number {\n return (end.x - start.x) * (point.y - start.y) - (end.y - start.y) * (point.x - start.x);\n}\n\nfunction identityMatrix(): Affine2D {\n return { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 };\n}\n\nfunction buildItemMatrix(item: GeneratedVFXItemData): Affine2D {\n const transform = item.transform;\n const angle = (transform.eulerHint.z * Math.PI) / 180;\n const cosine = Math.cos(angle);\n const sine = Math.sin(angle);\n const anchorX = transform.anchor?.x ?? 0;\n const anchorY = transform.anchor?.y ?? 0;\n const a = cosine * transform.scale.x;\n const b = sine * transform.scale.x;\n const c = -sine * transform.scale.y;\n const d = cosine * transform.scale.y;\n\n return {\n a,\n b,\n c,\n d,\n tx: transform.position.x + anchorX - a * anchorX - c * anchorY,\n ty: transform.position.y + anchorY - b * anchorX - d * anchorY,\n };\n}\n\nfunction multiplyMatrices(parent: Affine2D, child: Affine2D): Affine2D {\n return {\n a: parent.a * child.a + parent.c * child.b,\n b: parent.b * child.a + parent.d * child.b,\n c: parent.a * child.c + parent.c * child.d,\n d: parent.b * child.c + parent.d * child.d,\n tx: parent.a * child.tx + parent.c * child.ty + parent.tx,\n ty: parent.b * child.tx + parent.d * child.ty + parent.ty,\n };\n}\n\nfunction invertMatrix(matrix: Affine2D): Affine2D | undefined {\n const determinant = matrix.a * matrix.d - matrix.b * matrix.c;\n\n if (Math.abs(determinant) <= NUMERIC_EPSILON) {\n return undefined;\n }\n const inverseDeterminant = 1 / determinant;\n const a = matrix.d * inverseDeterminant;\n const b = -matrix.b * inverseDeterminant;\n const c = -matrix.c * inverseDeterminant;\n const d = matrix.a * inverseDeterminant;\n\n return {\n a,\n b,\n c,\n d,\n tx: -(a * matrix.tx + c * matrix.ty),\n ty: -(b * matrix.tx + d * matrix.ty),\n };\n}\n\nfunction transformPoint(matrix: Affine2D, point: Point2D): Point2D {\n return {\n x: matrix.a * point.x + matrix.c * point.y + matrix.tx,\n y: matrix.b * point.x + matrix.d * point.y + matrix.ty,\n };\n}\n\nfunction transformTrackHasAnimation(\n track: GeneratedMiscData,\n miscById: ReadonlyMap<string, GeneratedMiscData>,\n): boolean {\n const clips = track['clips'];\n\n if (!Array.isArray(clips)) {\n return false;\n }\n\n return clips.some(clip => {\n if (!isRecord(clip)) {\n return false;\n }\n const assetReference = clip['asset'];\n\n if (!isRecord(assetReference) || typeof assetReference['id'] !== 'string') {\n return false;\n }\n const asset = miscById.get(assetReference['id']);\n\n return asset?.dataType === DataType.TransformPlayableAsset && [\n asset['positionOverLifetime'],\n asset['rotationOverLifetime'],\n asset['sizeOverLifetime'],\n ].some(hasAnimationPayload);\n });\n}\n\nfunction hasAnimationPayload(value: unknown): boolean {\n return Array.isArray(value) ? value.length > 0 : isRecord(value) && Object.keys(value).length > 0;\n}\n","/**\n * Generate GE mask items for masked IR layers and attach references to direct\n * or descendant renderer components.\n */\nimport { IRMaskMode, type IRComposition, type IRLayer, type IRMask } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport {\n DataType,\n EndBehavior,\n FillType,\n ItemType,\n LineCap,\n LineJoin,\n RenderLevel,\n RenderMode,\n ShapePrimitiveType,\n} from '@galacean/effects-specification';\nimport { toDataPath } from '../../common/data-path';\nimport { get2dTo3dRatio } from '../../common/coordinate-mapping';\nimport { createId } from '../../common/id';\nimport { isRecord } from '../../common/json-normalization';\nimport { roundNumber } from '../../common/math';\nimport { appendTimelineTracks } from '../generator/append-timeline-tracks';\nimport { computeLayerTiming } from '../converter/timing';\nimport { getStaticAnchor } from '../converter/transform';\nimport {\n buildRuntimeMaskGeometry, compareMaskContainment, type RuntimeMaskGeometry,\n} from './mask-geometry';\nimport type {\n ECSCollector, GeneratedComponentData, GeneratedItemBinding, GeneratedMaskOptions, GeneratedMaskReference,\n GeneratedVFXItemData,\n} from '../types';\n\n/** Resolve stable IR Layer IDs to generated items and components. */\nexport interface MaskLayerLookup {\n getItemId(layerId: string): string | undefined;\n getMaskParentItemId(layerId: string): string | undefined;\n getMaskCoordinateOrigin(layerId: string): [number, number] | undefined;\n getComponentId(layerId: string): string | undefined;\n isParentLayer(layerId: string): boolean;\n}\n\n/** Internal metadata used to deduplicate and simplify generated Runtime references. */\nexport interface RuntimeMaskSourceMeta {\n geometry?: RuntimeMaskGeometry;\n /** Identity of the local coordinate space used by geometry. */\n geometrySpaceId?: string;\n inverted: boolean;\n}\n\ninterface RuntimeMaskTargetReference {\n componentId: string;\n source: RuntimeMaskSourceMeta;\n}\n\n/** Shared multi-mask state across every generated Composition. */\nexport interface RuntimeMaskState {\n references: Map<string, RuntimeMaskTargetReference[]>;\n sources: Map<string, RuntimeMaskSourceMeta>;\n}\n\nexport function createRuntimeMaskState(): RuntimeMaskState {\n return { references: new Map(), sources: new Map() };\n}\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 compositionById: ReadonlyMap<string, IRComposition> = new Map([[ir.id, ir]]),\n runtimeMaskState: RuntimeMaskState = createRuntimeMaskState(),\n diagnostics: ConversionDiagnostic[] = [],\n): void {\n const layers = ir.layers;\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 // Resolve masks in the same bottom-to-top order as the IR painter stack so\n // generated reference order remains deterministic.\n for (const layer of layers) {\n const resolvedMasks = resolveLayerMasks(layer, compositionById, ir.id, diagnostics);\n\n if (resolvedMasks.length === 0) {\n continue;\n }\n\n const layerItemId = lookup.getItemId(layer.id);\n\n if (layerItemId == null) {\n continue;\n }\n\n const layerComponentId = lookup.getComponentId(layer.id);\n const maskParentItemId = lookup.getMaskParentItemId(layer.id) ?? layerItemId;\n const maskRatio = resolveMaskCoordinateRatio(layer, compositionById, ratio);\n const maskCoordinateOrigin = lookup.getMaskCoordinateOrigin(layer.id) ??\n resolveMaskCoordinateOrigin(layer, compositionById);\n\n for (const mask of resolvedMasks) {\n buildMaskForLayer(\n layer,\n layerItemId,\n maskParentItemId,\n layerComponentId,\n collector,\n itemBindings,\n maskRatio,\n frameRate,\n ir.inPoint,\n lookup,\n runtimeMaskState,\n componentById,\n mask,\n maskCoordinateOrigin,\n );\n }\n }\n}\n\nfunction resolveMaskCoordinateOrigin(\n layer: IRLayer,\n compositionById: ReadonlyMap<string, IRComposition>,\n): [number, number] {\n if (layer.type !== 'precomp') {\n return getStaticAnchor(layer);\n }\n const referenced = compositionById.get(layer.content.compositionId);\n const bounds = layer.localBounds ?? (referenced == null\n ? undefined\n : { x: 0, y: 0, width: referenced.width, height: referenced.height });\n\n if (bounds == null) {\n return [0, 0];\n }\n\n // Precomp children and masks use the referenced canvas' centered coordinate\n // space. The Precomp item's Transform.anchor already maps that canvas pivot\n // to the authored Layer anchor, so a mask must not subtract it again.\n return [bounds.x + bounds.width / 2, bounds.y + bounds.height / 2];\n}\n\nfunction resolveMaskCoordinateRatio(\n layer: IRLayer,\n compositionById: ReadonlyMap<string, IRComposition>,\n fallbackRatio: number,\n): number {\n if (layer.type !== 'precomp') {\n return fallbackRatio;\n }\n const referenced = compositionById.get(layer.content.compositionId);\n\n if (referenced == null || referenced.width <= 0 || referenced.height <= 0) {\n return fallbackRatio;\n }\n\n // A Precomp mask is expressed in the referenced canvas' local pixels. The\n // mask item inherits the Precomp instance's intrinsic scale, so generating\n // it with the parent canvas ratio would apply that scale twice.\n return get2dTo3dRatio(referenced.width, referenced.height);\n}\n\nfunction resolveLayerMasks(\n layer: IRLayer,\n compositionById: ReadonlyMap<string, IRComposition>,\n compositionId: string,\n diagnostics: ConversionDiagnostic[],\n): IRMask[] {\n const resolved = selectSupportedAuthoredMasks(layer, compositionId, diagnostics);\n\n if (layer.type === 'precomp' && layer.content.clipToBounds) {\n const referenced = compositionById.get(layer.content.compositionId);\n const width = layer.localBounds?.width ?? referenced?.width;\n const height = layer.localBounds?.height ?? referenced?.height;\n\n if (width != null && height != null && width > 0 && height > 0) {\n resolved.push(buildClipMask(width, height));\n }\n }\n\n return resolved;\n}\n\n/** GE forward references intersect, so only the first authored Add can preserve stack semantics. */\nfunction selectSupportedAuthoredMasks(\n layer: IRLayer,\n compositionId: string,\n diagnostics: ConversionDiagnostic[],\n): IRMask[] {\n const selected: IRMask[] = [];\n let hasAdd = false;\n\n for (const [index, mask] of (layer.masks ?? []).entries()) {\n const isForwardAdd = mask.mode === IRMaskMode.Add && mask.inverted !== true;\n\n if (isForwardAdd && hasAdd) {\n diagnostics.push({\n code: 'GE_MASK_ADD_UNION_UNSUPPORTED',\n severity: 'warning',\n action: 'dropped',\n path: `$.compositions[id=${JSON.stringify(compositionId)}].layers[id=${JSON.stringify(layer.id)}].masks[${index}]`,\n sourceId: layer.id,\n feature: 'multiple-add-masks',\n message: 'GE combines forward mask references by intersection, so this additional Add mask was omitted.',\n });\n continue;\n }\n if (isForwardAdd) {\n hasAdd = true;\n }\n selected.push(mask);\n }\n\n return selected;\n}\n\nfunction buildClipMask(width: number, height: number): IRMask {\n return {\n mode: IRMaskMode.Add,\n path: {\n points: [{ x: 0, y: 0 }, { x: width, y: 0 }, { x: width, y: height }, { x: 0, y: height }],\n inTangents: Array.from({ length: 4 }, () => ({ x: 0, y: 0 })),\n outTangents: Array.from({ length: 4 }, () => ({ x: 0, y: 0 })),\n closed: true,\n },\n };\n}\n\nfunction buildMaskForLayer(\n layer: IRLayer,\n layerItemId: string,\n maskParentItemId: string,\n layerComponentId: string | undefined,\n collector: ECSCollector,\n itemBindings: GeneratedItemBinding[],\n ratio: number,\n frameRate: number,\n compositionInPoint: number,\n lookup: MaskLayerLookup,\n runtimeMaskState: RuntimeMaskState,\n componentById: Map<string, GeneratedComponentData>,\n mask: IRMask,\n coordinateOrigin: [number, number],\n): void {\n const maskItemId = createId();\n const maskComponentId = createId();\n const maskBounds = getMaskBounds(mask);\n\n const maskPosX = roundNumber((maskBounds.cx - coordinateOrigin[0]) * ratio, 4);\n const maskPosY = roundNumber(-(maskBounds.cy - coordinateOrigin[1]) * 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.id) || layer.type === 'null' || layer.type === 'precomp';\n\n const descendantTargets = layerIsParent && layer.type !== 'precomp'\n ? collectRendererDescendants(collector.items, componentById, layerItemId)\n : undefined;\n\n if (descendantTargets?.length === 0 && layer.type !== 'precomp') {\n return;\n }\n\n const maskItem: GeneratedVFXItemData = {\n id: maskItemId,\n dataType: DataType.VFXItemData,\n name: `${layer.name ?? layer.id}_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: maskParentItemId,\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 const sourceMeta: RuntimeMaskSourceMeta = {\n geometry: buildRuntimeMaskGeometry(mask, ratio, coordinateOrigin),\n geometrySpaceId: maskParentItemId,\n inverted: resolveGEMaskInverted(mask),\n };\n\n runtimeMaskState.sources.set(maskComponentId, sourceMeta);\n let appliedReferenceCount = 0;\n\n if (descendantTargets != null) {\n for (const target of descendantTargets) {\n if (appendRuntimeMaskReference(target.component, maskComponentId, sourceMeta, runtimeMaskState)) {\n appliedReferenceCount++;\n }\n }\n } else if (layerComponentId != null) {\n const targetComponent = componentById.get(layerComponentId);\n\n if (\n targetComponent != null &&\n appendRuntimeMaskReference(targetComponent, maskComponentId, sourceMeta, runtimeMaskState)\n ) {\n appliedReferenceCount++;\n }\n }\n\n if (appliedReferenceCount === 0 && layer.type !== 'precomp') {\n collector.items.pop();\n collector.components.pop();\n componentById.delete(maskComponentId);\n runtimeMaskState.sources.delete(maskComponentId);\n\n return;\n }\n\n if (layer.type === 'precomp') {\n // GE Runtime stops its scene-order DFS at Composition items. Keep the mask\n // instantiated as a child, but do not bind it to the parent Timeline where\n // it would displace every following root-layer binding.\n itemBindings.push({ itemId: maskItemId, layerId: layer.id });\n } else {\n const maskTrackId = appendTimelineTracks(collector, delay, maskDuration, EndBehavior.destroy, {}, ItemType.shape);\n\n itemBindings.push({ itemId: maskItemId, objectBindingTrackId: maskTrackId, layerId: layer.id });\n }\n}\n\n/** Fold the source-neutral Mask operation and path polarity into one GE reference direction. */\nexport function resolveGEMaskInverted(mask: Pick<IRMask, 'mode' | 'inverted'>): boolean {\n return mask.mode === IRMaskMode.Subtract ? mask.inverted !== true : mask.inverted === true;\n}\n\n/** Append one target reference while removing provably redundant positive masks. */\nexport function appendRuntimeMaskReference(\n component: GeneratedComponentData,\n maskComponentId: string,\n sourceMeta: RuntimeMaskSourceMeta,\n runtimeMaskState: RuntimeMaskState,\n): boolean {\n const existingMask = isRecord(component['mask']) ? component['mask'] : undefined;\n\n if (existingMask?.['isMask'] === true) {\n return false;\n }\n const references = readMaskReferences(existingMask);\n\n if (references.some(reference => reference.mask.id === maskComponentId)) {\n return false;\n }\n const targetReferences = runtimeMaskState.references.get(component.id) ?? [];\n\n if (!sourceMeta.inverted) {\n for (const existing of [...targetReferences]) {\n if (existing.source.inverted) {\n continue;\n }\n const sharesGeometrySpace = sourceMeta.geometrySpaceId != null &&\n existing.source.geometrySpaceId === sourceMeta.geometrySpaceId;\n const containment = sharesGeometrySpace\n ? compareMaskContainment(existing.source.geometry, sourceMeta.geometry)\n : 'none';\n\n if (containment === 'source-contains-existing' || containment === 'equal') {\n return false;\n }\n if (containment === 'existing-contains-source') {\n const referenceIndex = references.findIndex(reference => reference.mask.id === existing.componentId);\n\n if (referenceIndex >= 0) {\n references.splice(referenceIndex, 1);\n }\n const stateIndex = targetReferences.indexOf(existing);\n\n if (stateIndex >= 0) {\n targetReferences.splice(stateIndex, 1);\n }\n }\n }\n }\n\n references.push({ mask: toDataPath(maskComponentId), inverted: sourceMeta.inverted });\n targetReferences.push({ componentId: maskComponentId, source: sourceMeta });\n runtimeMaskState.references.set(component.id, targetReferences);\n component['mask'] = buildTargetMask(existingMask, references);\n\n return true;\n}\n\nfunction readMaskReferences(mask: Record<string, unknown> | undefined): GeneratedMaskReference[] {\n const references: GeneratedMaskReference[] = [];\n\n if (Array.isArray(mask?.['references'])) {\n for (const value of mask['references']) {\n if (!isRecord(value)) {\n continue;\n }\n const id = getDataPathId(value['mask']);\n\n if (id != null && !references.some(reference => reference.mask.id === id)) {\n references.push({ mask: toDataPath(id), inverted: value['inverted'] === true });\n }\n }\n }\n\n return references;\n}\n\nfunction buildTargetMask(\n existingMask: Record<string, unknown> | undefined,\n references: GeneratedMaskReference[],\n): GeneratedMaskOptions {\n const normalizedExisting = { ...existingMask };\n\n delete normalizedExisting['reference'];\n delete normalizedExisting['inverted'];\n\n return {\n ...normalizedExisting,\n isMask: false,\n references,\n };\n}\n\nfunction getDataPathId(value: unknown): string | undefined {\n return isRecord(value) && typeof value['id'] === 'string' ? value['id'] : undefined;\n}\n\nfunction collectRendererDescendants(\n items: GeneratedVFXItemData[],\n componentById: Map<string, GeneratedComponentData>,\n parentItemId: string,\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 ) {\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(points: Array<{ x: number; y: number }>): {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n} {\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n 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 getMaskBounds(mask: IRMask): {\n cx: number;\n cy: number;\n width: number;\n height: number;\n} {\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: IRMask): boolean {\n const path = mask.path;\n\n if (\n path.points.length !== 4 ||\n !path.inTangents.every(isZeroTangent) ||\n !path.outTangents.every(isZeroTangent)\n ) {\n return false;\n }\n\n return path.points.every((point, index) => {\n const next = path.points[(index + 1) % path.points.length];\n const deltaX = Math.abs(next.x - point.x);\n const deltaY = Math.abs(next.y - point.y);\n\n return (deltaX < 0.01 && deltaY >= 0.01) || (deltaY < 0.01 && deltaX >= 0.01);\n });\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: IRMask,\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 { IRMatteMode, type IRComposition } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { isRecord } from '../../common/json-normalization';\nimport type { ECSCollector, GeneratedComponentData } from '../types';\nimport {\n appendRuntimeMaskReference, type RuntimeMaskSourceMeta, type RuntimeMaskState,\n} from './mask';\n\n/** Lower Layer-reference mattes to GE's component mask source/target relationship. */\nexport function applyLayerMattes(\n ir: IRComposition,\n collector: ECSCollector,\n layerToComponentId: Readonly<Record<string, string>>,\n runtimeMaskState: RuntimeMaskState,\n diagnostics: ConversionDiagnostic[],\n): void {\n const componentById = new Map(collector.components.map(component => [component.id, component] as const));\n\n for (const layer of ir.layers) {\n const matte = layer.matte;\n\n if (matte == null) {\n continue;\n }\n if (matte.mode === IRMatteMode.Luminance) {\n diagnostics.push(createMatteDiagnostic(\n layer.id,\n 'GE_MATTE_MODE_UNSUPPORTED',\n 'luminance-matte',\n 'GE does not expose a luminance matte mode; the Layer matte was not generated.',\n ));\n continue;\n }\n const targetComponent = resolveLayerComponent(layer.id, layerToComponentId, componentById);\n const sourceComponent = resolveLayerComponent(matte.sourceLayerId, layerToComponentId, componentById);\n\n if (targetComponent == null || sourceComponent == null) {\n diagnostics.push(createMatteDiagnostic(\n layer.id,\n 'GE_MATTE_COMPONENT_UNSUPPORTED',\n 'missing-render-component',\n 'The Layer matte source and target must both lower to one GE render component.',\n ));\n continue;\n }\n if (isRecord(targetComponent['mask']) && targetComponent['mask']['isMask'] === true) {\n diagnostics.push(createMatteDiagnostic(\n layer.id,\n 'GE_MASK_MATTE_CONFLICT',\n 'target-mask-source-conflict',\n 'The target component is already a GE mask source, so the Layer matte was skipped.',\n ));\n continue;\n }\n const alphaMaskEnabled = matte.mode === IRMatteMode.Alpha;\n const sourceMask = sourceComponent['mask'];\n\n if (!canClaimMatteSource(sourceMask, alphaMaskEnabled)) {\n diagnostics.push(createMatteDiagnostic(\n layer.id,\n 'GE_MATTE_SOURCE_CONFLICT',\n 'source-mask-slot-conflict',\n 'The matte source component already owns an incompatible GE mask role.',\n ));\n continue;\n }\n\n sourceComponent['mask'] = { isMask: true, alphaMaskEnabled };\n const sourceMeta: RuntimeMaskSourceMeta = {\n inverted: matte.inverted === true,\n };\n\n runtimeMaskState.sources.set(sourceComponent.id, sourceMeta);\n appendRuntimeMaskReference(targetComponent, sourceComponent.id, sourceMeta, runtimeMaskState);\n }\n}\n\nfunction resolveLayerComponent(\n layerId: string,\n layerToComponentId: Readonly<Record<string, string>>,\n componentById: ReadonlyMap<string, GeneratedComponentData>,\n): GeneratedComponentData | undefined {\n const componentId = layerToComponentId[layerId];\n\n return componentId == null ? undefined : componentById.get(componentId);\n}\n\nfunction canClaimMatteSource(value: unknown, alphaMaskEnabled: boolean): boolean {\n if (value == null) {\n return true;\n }\n\n return isRecord(value) &&\n value['isMask'] === true &&\n value['alphaMaskEnabled'] === alphaMaskEnabled;\n}\n\nfunction createMatteDiagnostic(\n sourceId: string,\n code: string,\n feature: string,\n message: string,\n): ConversionDiagnostic {\n return {\n code,\n severity: 'warning',\n action: 'unsupported',\n path: `$.layers[id=${JSON.stringify(sourceId)}].matte`,\n sourceId,\n feature,\n message,\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(collector: ECSCollector, GEComponentIdToNewId: Record<string, string>): void {\n const currentComponentIds = new Set(collector.components.map(component => component.id));\n\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 if (!Array.isArray(mask['references'])) {\n if (mask['isMask'] !== true) {\n delete component['mask'];\n }\n\n continue;\n }\n const remappedReferences: Array<Record<string, unknown>> = [];\n\n for (const reference of mask['references']) {\n if (!isRecord(reference)) {\n continue;\n }\n const oldId = getDataPathId(reference['mask']);\n const newId = resolveCurrentComponentId(oldId, currentComponentIds, GEComponentIdToNewId);\n\n if (newId != null) {\n remappedReferences.push({\n ...reference,\n mask: toDataPath(newId),\n inverted: reference['inverted'] === true,\n });\n }\n }\n\n if (remappedReferences.length === 0) {\n delete component['mask'];\n\n continue;\n }\n\n mask['references'] = remappedReferences;\n delete mask['reference'];\n delete mask['inverted'];\n }\n}\n\nfunction resolveCurrentComponentId(\n oldId: string | undefined,\n currentComponentIds: ReadonlySet<string>,\n GEComponentIdToNewId: Readonly<Record<string, string>>,\n): string | undefined {\n return oldId == null ? undefined : currentComponentIds.has(oldId) ? oldId : GEComponentIdToNewId[oldId];\n}\n\nfunction getDataPathId(value: unknown): string | undefined {\n return isRecord(value) && typeof value['id'] === 'string' ? value['id'] : undefined;\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 { DataPath, TimelineClipData, VFXItemData } from '@galacean/effects-specification';\nimport { DataType } from '@galacean/effects-specification';\nimport type { GeneratedMiscData } from '../types';\n\ntype ActivationItem = Pick<VFXItemData, 'id' | 'delay' | 'duration' | 'parentId'>;\n\ninterface GeneratedItemBindingRef {\n itemId: string;\n objectBindingTrackId?: string;\n}\n\ninterface NormalizeHierarchyActivationOptions {\n items: ActivationItem[];\n miscs: GeneratedMiscData[];\n itemBindings: GeneratedItemBindingRef[];\n /** Generated item IDs corresponding to IR Layers with a Transform Parent. */\n transformParentChildItemIds?: Set<string>;\n roundNumber: (value: number, precision: number) => number;\n}\n\n/**\n * Keep IR Transform Parents active across every descendant's interval, then\n * normalize internal generated child items in parent-first order. Parent\n * activation changes do not alter Transform keyframe time domains.\n */\nexport function normalizeHierarchyActivationIntervals({\n items,\n miscs,\n itemBindings,\n transformParentChildItemIds = new Set<string>(),\n roundNumber,\n}: NormalizeHierarchyActivationOptions): void {\n const itemById = new Map<string, ActivationItem>();\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 extendTransformParentActivations(\n items,\n itemById,\n bindingByItemId,\n miscById,\n transformParentChildItemIds,\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 && 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\ninterface ActivationInterval {\n start: number;\n end: number;\n}\n\nfunction extendTransformParentActivations(\n items: ActivationItem[],\n itemById: Map<string, ActivationItem>,\n bindingByItemId: Map<string, GeneratedItemBindingRef>,\n miscById: Map<string, GeneratedMiscData>,\n transformParentChildItemIds: Set<string>,\n roundNumber: (value: number, precision: number) => number,\n): void {\n if (transformParentChildItemIds.size === 0) {\n return;\n }\n\n const activationIntervalByItemId = new Map<string, ActivationInterval>();\n\n for (const item of items) {\n const start = item.delay ?? 0;\n\n activationIntervalByItemId.set(item.id, { start, end: start + item.duration });\n }\n\n for (const childItemId of transformParentChildItemIds) {\n const childInterval = activationIntervalByItemId.get(childItemId);\n\n if (childInterval == null) {\n continue;\n }\n\n const visited = new Set<string>();\n let currentChildItemId: string | undefined = childItemId;\n\n while (currentChildItemId != null && transformParentChildItemIds.has(currentChildItemId)) {\n if (visited.has(currentChildItemId)) {\n break;\n }\n visited.add(currentChildItemId);\n\n const currentChildItem = itemById.get(currentChildItemId);\n const parentItemId = currentChildItem?.parentId;\n\n if (parentItemId == null || parentItemId === '') {\n break;\n }\n\n const parentInterval = activationIntervalByItemId.get(parentItemId);\n\n if (parentInterval == null) {\n break;\n }\n\n parentInterval.start = Math.min(parentInterval.start, childInterval.start);\n parentInterval.end = Math.max(parentInterval.end, childInterval.end);\n currentChildItemId = parentItemId;\n }\n }\n\n for (const [itemId, interval] of activationIntervalByItemId) {\n const item = itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n\n const originalStart = item.delay ?? 0;\n const originalEnd = originalStart + item.duration;\n\n if (interval.start === originalStart && interval.end === originalEnd) {\n continue;\n }\n\n const newDelay = roundNumber(interval.start, 4);\n const newDuration = roundNumber(interval.end - interval.start, 4);\n\n item.delay = newDelay;\n item.duration = newDuration;\n syncActivationClips(itemId, newDelay, newDuration, bindingByItemId, miscById);\n }\n}\n\nfunction syncActivationClips(\n itemId: string,\n delay: number,\n duration: number,\n bindingByItemId: Map<string, GeneratedItemBindingRef>,\n miscById: Map<string, GeneratedMiscData>,\n): void {\n const binding = bindingByItemId.get(itemId);\n\n if (binding?.objectBindingTrackId == 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?.['dataType'] === DataType.ActivationTrack && Array.isArray(childTrack['clips'])) {\n for (const clip of childTrack['clips'] as TimelineClipData[]) {\n clip.start = delay;\n clip.duration = duration;\n }\n }\n }\n}\n\n/** Sort items parent-first while preserving order among unrelated items. */\nfunction topologicalSort(items: ActivationItem[], itemById: Map<string, ActivationItem>): ActivationItem[] {\n const sorted: ActivationItem[] = [];\n const visited = new Set<string>();\n\n function visit(item: ActivationItem): 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?.objectBindingTrackId == 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 (\n 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 type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { roundNumber } from '../../common/math';\nimport type { ECSCollector, GeneratedItemBinding } from '../types';\nimport type { EffectsLayerPreservedData } from '../../preserved-data';\nimport { applyParenting } from './parenting';\nimport { applyMasks, type MaskLayerLookup, type RuntimeMaskState } from './mask';\nimport { applyLayerMattes } from './matte';\nimport { applyGEMaskRemap } from './ge-mask-remap';\nimport { normalizeHierarchyActivationIntervals } from './normalize-activation-intervals';\n\n/** Complete generation state consumed by the ordered post-processing pipeline. */\ninterface PostProcessState {\n collector: ECSCollector;\n itemBindings: GeneratedItemBinding[];\n compositionById: ReadonlyMap<string, IRComposition>;\n maskLookup: MaskLayerLookup; // Per-layer lookups used during mask generation.\n runtimeMaskState: RuntimeMaskState;\n layerToItemId: Record<string, string>;\n layerToComponentId: Record<string, string>;\n ratio: number;\n width: number;\n height: number;\n frameRate: number;\n geComponentIdToNewId: Record<string, string>; // Remaps preserved mask references.\n layerDataById: Readonly<Record<string, EffectsLayerPreservedData>>;\n diagnostics: ConversionDiagnostic[];\n}\n\n/** Run ordered post-generation passes before scene assembly. */\nexport function applyPostProcess(ir: IRComposition, state: PostProcessState): void {\n const { collector, itemBindings, layerToItemId, ratio, width, height } = state;\n\n applyParenting(ir.layers, collector.items, layerToItemId, ratio, width, height);\n applyMasks(\n ir,\n collector,\n itemBindings,\n ratio,\n width,\n height,\n state.frameRate,\n state.maskLookup,\n state.compositionById,\n state.runtimeMaskState,\n state.diagnostics,\n );\n applyLayerMattes(ir, collector, state.layerToComponentId, state.runtimeMaskState, state.diagnostics);\n // Generated IR masks already use regenerated IDs; only preserved Effects masks need remapping.\n if (Object.values(state.layerDataById).some(layerData => layerData.mask != null)) {\n applyGEMaskRemap(collector, state.geComponentIdToNewId);\n }\n const transformParentChildItemIds = new Set<string>();\n\n for (const layer of ir.layers) {\n // Authored GE items keep their activation interval even when a child outlives them.\n if (layer.parentId != null && state.layerDataById[layer.parentId]?.sourceHierarchy !== 'single-item') {\n const itemId = layerToItemId[layer.id];\n\n if (itemId != null) {\n transformParentChildItemIds.add(itemId);\n }\n }\n }\n\n normalizeHierarchyActivationIntervals({\n items: collector.items,\n miscs: collector.miscs,\n itemBindings,\n transformParentChildItemIds,\n roundNumber,\n });\n}\n","import { ItemType } from '@galacean/effects-specification';\nimport { isRecord } from '../../common/json-normalization';\nimport type { ECSCollector, GeneratedCompositionData, GeneratedVFXItemData } from '../types';\nimport { appendRuntimeMaskReference, type RuntimeMaskSourceMeta, type RuntimeMaskState } from './mask';\nimport { collectAnimatedTransformItemIds, mapMaskGeometryIntoPrecomp } from './mask-geometry';\n\n/** Propagate Precomp mask sources through generated Composition boundaries. */\nexport function applyCrossCompositionMasks(\n generatedCompositions: GeneratedCompositionData[],\n collector: ECSCollector,\n runtimeMaskState: RuntimeMaskState,\n): void {\n const generatedById = new Map(generatedCompositions.map(generated => [generated.id, generated] as const));\n const componentById = new Map(collector.components.map(component => [component.id, component] as const));\n const animatedItemIds = collectAnimatedTransformItemIds(generatedCompositions, collector.miscs);\n\n for (const generated of generatedCompositions) {\n const itemById = new Map(generated.items.map(item => [item.id, item] as const));\n\n for (const layer of generated.ir.layers) {\n if (layer.type !== 'precomp' || ((layer.masks?.length ?? 0) === 0 && !layer.content.clipToBounds)) {\n continue;\n }\n const outputCompositionId = generated.precompOutputIdByLayerId.get(layer.id) ?? layer.content.compositionId;\n const referenced = generatedById.get(outputCompositionId);\n const maskComponentIds = findLayerMaskComponentIds(generated.itemBindings, itemById, layer.id);\n\n if (referenced == null) {\n continue;\n }\n for (const maskComponentId of maskComponentIds) {\n const sourceMeta = runtimeMaskState.sources.get(maskComponentId);\n\n if (sourceMeta == null) {\n continue;\n }\n applyAncestorMaskThroughNestedCompositions({\n generated: referenced,\n maskComponentId,\n generatedById,\n componentById,\n runtimeMaskState,\n animatedItemIds,\n sourceMeta: { ...sourceMeta, geometrySpaceId: referenced.id },\n ancestorIds: new Set([generated.id, referenced.id]),\n });\n }\n }\n }\n}\n\ninterface AncestorMaskContext {\n generated: GeneratedCompositionData;\n maskComponentId: string;\n generatedById: ReadonlyMap<string, GeneratedCompositionData>;\n componentById: ReadonlyMap<string, ECSCollector['components'][number]>;\n runtimeMaskState: RuntimeMaskState;\n animatedItemIds: ReadonlySet<string>;\n sourceMeta: RuntimeMaskSourceMeta;\n ancestorIds: ReadonlySet<string>;\n}\n\nfunction applyAncestorMaskThroughNestedCompositions(context: AncestorMaskContext): void {\n const {\n generated, maskComponentId, generatedById, componentById,\n runtimeMaskState, animatedItemIds, sourceMeta, ancestorIds,\n } = context;\n\n applyMaskToCompositionRenderers(generated, maskComponentId, componentById, runtimeMaskState, sourceMeta);\n\n for (const precompItem of generated.items) {\n const outputCompositionId = readPrecompReferenceId(precompItem);\n\n if (outputCompositionId == null || ancestorIds.has(outputCompositionId)) {\n continue;\n }\n const nested = generatedById.get(outputCompositionId);\n\n if (nested == null) {\n continue;\n }\n applyAncestorMaskThroughNestedCompositions({\n ...context,\n generated: nested,\n sourceMeta: {\n ...sourceMeta,\n geometry: mapMaskGeometryIntoPrecomp(sourceMeta.geometry, precompItem, generated.items, animatedItemIds),\n geometrySpaceId: nested.id,\n },\n ancestorIds: new Set([...ancestorIds, outputCompositionId]),\n });\n }\n}\n\nfunction findLayerMaskComponentIds(\n bindings: GeneratedCompositionData['itemBindings'],\n itemById: ReadonlyMap<string, GeneratedVFXItemData>,\n layerId: string,\n): string[] {\n const componentIds: string[] = [];\n\n for (const binding of bindings) {\n if (binding.layerId !== layerId) {\n continue;\n }\n const item = itemById.get(binding.itemId);\n\n if (item?.type === ItemType.shape) {\n const componentId = item.components?.[0]?.id;\n\n if (componentId != null) {\n componentIds.push(componentId);\n }\n }\n }\n\n return componentIds;\n}\n\nfunction readPrecompReferenceId(item: GeneratedVFXItemData): string | undefined {\n if (item.type !== ItemType.composition || !isRecord(item.content)) {\n return undefined;\n }\n const options = item.content['options'];\n\n return isRecord(options) && typeof options['refId'] === 'string' ? options['refId'] : undefined;\n}\n\n/** Keep a source attached to its hierarchy so Runtime applies every animated ancestor transform. */\nfunction applyMaskToCompositionRenderers(\n generated: GeneratedCompositionData,\n maskComponentId: string,\n componentById: ReadonlyMap<string, ECSCollector['components'][number]>,\n runtimeMaskState: RuntimeMaskState,\n sourceMeta: RuntimeMaskSourceMeta,\n): void {\n for (const item of generated.items) {\n for (const componentRef of item.components ?? []) {\n const component = componentById.get(componentRef.id);\n\n if (component?.['renderer'] != null) {\n appendRuntimeMaskReference(component, maskComponentId, sourceMeta, runtimeMaskState);\n }\n }\n }\n}\n","import {\n assertIRScene, type IRScene, type IRFontAsset, type IRLayer,\n} from '@vvfx/animation-ir';\nimport {\n getIRResourceSourceUrl, type ConversionDiagnostic,\n} from '@vvfx/animation-ir/adapter';\nimport type { DataPath } from '@galacean/effects-specification';\nimport { get2dTo3dRatio } from '../common/coordinate-mapping';\nimport { assembleSourcePreservedData } from './assemble-source-preserved-data';\nimport { assembleGEScene } from './assemble';\nimport { buildCompositionGenerationPlan, collectPrecompExportDiagnostics } from './converter/precomp';\nimport { appendNullLayer, appendParentLayer, appendPrecompLayer, appendVisualLayer } from './generator/append-layer-items';\nimport { applyPostProcess } from './post-process/pipeline';\nimport { applyCrossCompositionMasks } from './post-process/cross-composition-mask';\nimport { createRuntimeMaskState } from './post-process/mask';\nimport type { ECSCollector, GeneratedCompositionData, GeneratedItemBinding, LayerGenerationContext } from './types';\nimport type { IRToGEOptions, IRToGEResult } from '../conversion';\nimport { assertGEToIRPreservedDataMatchesScene, type GEToIRPreservedData } from '../preserved-data';\n\n/**\n * Convert the entry Composition of an IR Scene to a GE JSONScene.\n *\n * `options.preservedData` restores compatible GE-owned data when supplied.\n * `options.duration` overrides the range derived from the IR frame bounds.\n */\nexport function convertIRToGE(irScene: IRScene, options: IRToGEOptions = {}): IRToGEResult {\n if (options == null || typeof options !== 'object' || Array.isArray(options)) {\n throw new TypeError('[ge-ir:ir2ge] options must be an object.');\n }\n\n assertIRScene(irScene);\n\n if (options.preservedData != null) {\n assertGEToIRPreservedDataMatchesScene(irScene, options.preservedData);\n }\n\n const preservedData = (options.sources?.length ?? 0) > 0\n ? assembleSourcePreservedData(irScene, options)\n : options.preservedData;\n\n return convertIRToGEInternal(irScene, options.duration, preservedData);\n}\n\nfunction convertIRToGEInternal(\n irScene: IRScene,\n duration?: number,\n preservedData?: GEToIRPreservedData,\n): IRToGEResult {\n const itemLayerIds = new Map<string, string>();\n const fontAssets = irScene.assets.filter((asset): asset is IRFontAsset => asset.type === 'font');\n\n const collector: ECSCollector = {\n images: [],\n fonts: fontAssets.flatMap(asset =>\n asset.source.kind !== 'system'\n ? [{ fontFamily: asset.family, fontURL: getIRResourceSourceUrl(asset.source) }]\n : [],\n ),\n components: [],\n items: [],\n textures: [],\n miscs: [],\n };\n const textureCache = new Map<string, DataPath>();\n const imageAssetById = new Map(\n irScene.assets.filter(asset => asset.type === 'image').map(asset => [asset.id, asset] as const),\n );\n const fontAssetById = new Map(fontAssets.map(asset => [asset.id, asset] as const));\n const diagnostics: ConversionDiagnostic[] = [];\n const runtimeMaskState = createRuntimeMaskState();\n const { compositionById, requests: generationRequests } = buildCompositionGenerationPlan(irScene, diagnostics);\n const generatedCompositions: GeneratedCompositionData[] = [];\n const diagnosedCompositionIds = new Set<string>();\n\n for (const request of generationRequests) {\n const { ir } = request;\n const { width, height } = ir;\n const frameRate = ir.frameRate;\n const ratio = get2dTo3dRatio(width, height);\n const itemBindings: GeneratedItemBinding[] = [];\n const layerToItemId: Record<string, string> = {};\n const layerToComponentId: Record<string, string> = {};\n const layerToMaskParentItemId: Record<string, string> = {};\n const layerToMaskCoordinateOrigin: Record<string, [number, number]> = {};\n const parentLayerIdSet = new Set<string>();\n const itemStartIndex = collector.items.length;\n\n for (const layer of ir.layers) {\n if (layer.parentId != null) {\n parentLayerIdSet.add(layer.parentId);\n }\n }\n\n const ctx: LayerGenerationContext = {\n ir,\n layerDataById: preservedData?.compositionBindings[ir.id]?.layerDataById ?? {},\n compositionById,\n inheritedOpacity: request.inheritedOpacity,\n precompOutputIdByLayerId: request.precompOutputIdByLayerId,\n collector,\n itemBindings,\n layerToItemId,\n layerToComponentId,\n layerToMaskParentItemId,\n layerToMaskCoordinateOrigin,\n textureCache,\n imageAssetById,\n fontAssetById,\n parentLayerIdSet,\n ratio,\n width,\n height,\n frameRate,\n diagnostics,\n };\n const layersInLoweringOrder = [...ir.layers].reverse();\n const collectDiagnostics = !diagnosedCompositionIds.has(ir.id);\n\n diagnosedCompositionIds.add(ir.id);\n\n for (const layer of layersInLoweringOrder) {\n appendLayer(layer, ctx);\n if (collectDiagnostics && layer.type === 'precomp') {\n collectPrecompExportDiagnostics(layer, compositionById, ir, diagnostics);\n }\n }\n\n const geComponentIdToNewId: Record<string, string> = {};\n\n for (const layer of ir.layers) {\n const GEComponentId = ctx.layerDataById[layer.id]?.sourceComponentId;\n const newId = layerToComponentId[layer.id];\n\n if (GEComponentId != null && newId != null) {\n geComponentIdToNewId[GEComponentId] = newId;\n }\n }\n\n applyPostProcess(ir, {\n collector,\n itemBindings,\n compositionById,\n layerToItemId,\n layerToComponentId,\n ratio,\n width,\n height,\n frameRate,\n geComponentIdToNewId,\n layerDataById: ctx.layerDataById,\n runtimeMaskState,\n diagnostics,\n maskLookup: {\n getItemId: layerId => layerToItemId[layerId],\n getMaskParentItemId: layerId => layerToMaskParentItemId[layerId],\n getMaskCoordinateOrigin: layerId => layerToMaskCoordinateOrigin[layerId],\n getComponentId: layerId => layerToComponentId[layerId],\n isParentLayer: layerId => parentLayerIdSet.has(layerId),\n },\n });\n\n const generatedItems = collector.items.splice(itemStartIndex);\n\n generatedItems.reverse();\n itemBindings.reverse();\n restorePreservedItemOrder(\n ir.layers,\n generatedItems,\n itemBindings,\n preservedData?.compositionBindings[ir.id]?.sourceItemOrder,\n );\n for (const binding of itemBindings) {\n if (binding.layerId != null) {\n itemLayerIds.set(binding.itemId, binding.layerId);\n }\n }\n collector.items.push(...generatedItems);\n generatedCompositions.push({\n id: request.id,\n ir,\n itemBindings,\n items: generatedItems,\n precompOutputIdByLayerId: request.precompOutputIdByLayerId,\n });\n }\n\n applyCrossCompositionMasks(generatedCompositions, collector, runtimeMaskState);\n\n return {\n itemLayerIds: Object.fromEntries(itemLayerIds),\n scene: assembleGEScene(irScene, collector, generatedCompositions, duration, preservedData),\n diagnostics,\n };\n}\n\nfunction restorePreservedItemOrder(\n layers: readonly IRLayer[],\n items: GeneratedCompositionData['items'],\n bindings: GeneratedItemBinding[],\n sourceItemOrder: readonly string[] | undefined,\n): void {\n if (sourceItemOrder == null) {\n return;\n }\n const orderByItemId = new Map(sourceItemOrder.map((itemId, index) => [itemId, index]));\n const fallbackOrder = sourceItemOrder.length;\n const orderByLayerId = new Map<string, number>();\n const firstOrderByLayerId = new Map<string, number>();\n\n for (const binding of bindings) {\n const order = orderByItemId.get(binding.itemId);\n\n if (binding.layerId != null && order != null) {\n orderByLayerId.set(binding.layerId, Math.max(orderByLayerId.get(binding.layerId) ?? order, order));\n firstOrderByLayerId.set(binding.layerId, Math.min(firstOrderByLayerId.get(binding.layerId) ?? order, order));\n }\n }\n // New layer groups precede the next retained group; equal ranks keep their authored order.\n let nextOrder = fallbackOrder + 0.5;\n\n for (let index = layers.length - 1; index >= 0; index--) {\n const layer = layers[index];\n const firstOrder = firstOrderByLayerId.get(layer.id);\n\n if (firstOrder != null) {\n nextOrder = firstOrder;\n } else {\n orderByLayerId.set(layer.id, nextOrder - 0.5);\n }\n }\n // Split visuals share their source layer's painter slot, including Timeline bindings.\n for (const binding of bindings) {\n const order = binding.layerId != null ? orderByLayerId.get(binding.layerId) : undefined;\n\n if (!orderByItemId.has(binding.itemId) && order != null) {\n orderByItemId.set(binding.itemId, order);\n }\n }\n\n items.sort((left, right) =>\n (orderByItemId.get(left.id) ?? fallbackOrder) - (orderByItemId.get(right.id) ?? fallbackOrder),\n );\n bindings.sort((left, right) =>\n (orderByItemId.get(left.itemId) ?? fallbackOrder) - (orderByItemId.get(right.itemId) ?? fallbackOrder),\n );\n}\n\nfunction appendLayer(layer: IRLayer, ctx: LayerGenerationContext): void {\n if (layer.type === 'precomp') {\n appendPrecompLayer(layer, ctx);\n } else if (layer.type === 'null') {\n appendNullLayer(layer, ctx);\n } else if (ctx.parentLayerIdSet.has(layer.id) && ctx.layerDataById[layer.id]?.sourceHierarchy !== 'single-item') {\n appendParentLayer(layer, ctx);\n } else {\n appendVisualLayer(layer, ctx);\n }\n}\n","import type { IRComposition, IRLayer } from '@vvfx/animation-ir';\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(layers: IRLayer[], ctx: GESceneContext): IRComposition {\n return normalizeJSONValue({\n id: ctx.irCompositionId,\n ...(ctx.compositionName != null && { 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 });\n}\n","import type { IRScene } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { DataType, ItemType } from '@galacean/effects-specification';\nimport { buildSceneCollectionIndex, resolveDataPathId } from '../common/data-path';\nimport { isRecord } from '../common/json-normalization';\nimport type { GEParticleSourceData, GEParticleSourceLayerData, GEToIRPreservedData } from '../preserved-data';\n\n/** Extract source bindings and layout metadata needed to place restored ParticleSystems in a host scene. */\nexport function extractGEParticleSourceData(\n scene: IRScene,\n preservedData: GEToIRPreservedData,\n diagnostics: ConversionDiagnostic[],\n): GEParticleSourceData {\n const sourceScene = preservedData.sourceScene;\n\n if (sourceScene == null) {\n if (!scene.compositions.some(composition => composition.layers.some(layer => layer.type === 'particle'))) {\n return { particleEffectGroups: [], layers: [] };\n }\n throw new TypeError('[ge-ir:particle-source] GE sourceScene is required.');\n }\n\n const itemById = buildSceneCollectionIndex(readRecordArray(sourceScene['items']));\n const componentById = buildSceneCollectionIndex(readRecordArray(sourceScene['components']));\n const compositionById = buildSceneCollectionIndex(readRecordArray(sourceScene['compositions']));\n const particleComponentIds = collectReferencedParticleComponentIds(\n preservedData,\n itemById,\n componentById,\n );\n const representedComponentIds = new Set<string>();\n const particleEffectGroups: GEParticleSourceData['particleEffectGroups'] = [];\n const layers: GEParticleSourceLayerData[] = [];\n\n for (const composition of scene.compositions) {\n const particleLayers = composition.layers.filter(layer => layer.type === 'particle');\n\n if (particleLayers.length === 0) {\n continue;\n }\n const binding = preservedData.compositionBindings[composition.id];\n\n if (binding == null) {\n throw new TypeError(`[ge-ir:particle-source] ${composition.id}: source Composition binding is missing.`);\n }\n const sourceComposition = compositionById.get(binding.sourceCompositionId);\n const previewSize = readPreviewSize(sourceComposition);\n\n if (previewSize == null) {\n for (const layer of particleLayers) {\n const source = resolveParticleLayerSource(\n composition.id,\n layer.id,\n binding,\n itemById,\n componentById,\n representedComponentIds,\n );\n\n representedComponentIds.add(source.componentId);\n }\n diagnostics.push({\n code: 'GE_PARTICLE_SOURCE_LAYOUT_UNAVAILABLE',\n severity: 'warning',\n action: 'unsupported',\n path: `$.compositions[id=${JSON.stringify(binding.sourceCompositionId)}].previewSize`,\n sourceId: binding.sourceCompositionId,\n feature: 'particle-layout',\n message: 'Particle source layout was not prepared because the source Composition previewSize is missing or invalid.',\n });\n\n continue;\n }\n const effectGroupId = binding.sourceCompositionId;\n\n particleEffectGroups.push({\n id: effectGroupId,\n irCompositionId: composition.id,\n sourcePreviewSize: [previewSize.width, previewSize.height],\n authoringBounds: [0, 0, previewSize.width, previewSize.height],\n });\n\n for (const layer of particleLayers) {\n const source = resolveParticleLayerSource(\n composition.id,\n layer.id,\n binding,\n itemById,\n componentById,\n representedComponentIds,\n );\n\n representedComponentIds.add(source.componentId);\n\n layers.push({\n effectGroupId,\n irCompositionId: composition.id,\n irLayerId: layer.id,\n sourceOrder: source.order,\n });\n }\n }\n\n const unboundComponentIds = Array.from(particleComponentIds)\n .filter(componentId => !representedComponentIds.has(componentId));\n\n if (unboundComponentIds.length > 0) {\n throw new TypeError(\n `[ge-ir:particle-source] ParticleSystem components were not represented in Animation IR: ` +\n unboundComponentIds.map(componentId => `'${componentId}'`).join(', '),\n );\n }\n\n return { particleEffectGroups, layers };\n}\n\ninterface ResolvedParticleLayerSource {\n componentId: string;\n order: number;\n}\n\nfunction resolveParticleLayerSource(\n compositionId: string,\n layerId: string,\n binding: GEToIRPreservedData['compositionBindings'][string],\n itemById: ReadonlyMap<string, Record<string, unknown>>,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n representedComponentIds: ReadonlySet<string>,\n): ResolvedParticleLayerSource {\n const layerData = binding.layerDataById[layerId];\n const sourceComponentId = layerData?.sourceComponentId;\n\n if (sourceComponentId == null || sourceComponentId === '') {\n throwParticleSourceError(compositionId, layerId, 'source ParticleSystem component binding is missing');\n }\n const component = componentById.get(sourceComponentId);\n\n if (component?.['dataType'] !== DataType.ParticleSystem) {\n throwParticleSourceError(\n compositionId,\n layerId,\n `source component '${sourceComponentId}' is not a ParticleSystem`,\n );\n }\n const sourceItemId = resolveDataPathId(component['item']);\n const sourceItem = sourceItemId != null ? itemById.get(sourceItemId) : undefined;\n\n if (sourceItemId == null || sourceItem == null) {\n throwParticleSourceError(compositionId, layerId, 'source ParticleSystem Item is missing');\n }\n if (layerData.sourceItemIds?.includes(sourceItemId) !== true) {\n throwParticleSourceError(\n compositionId,\n layerId,\n `source ParticleSystem Item '${sourceItemId}' does not match the preserved Layer binding`,\n );\n }\n const sourceOrder = binding.sourceItemOrder.indexOf(sourceItemId);\n\n if (sourceOrder < 0) {\n throwParticleSourceError(\n compositionId,\n layerId,\n `source ParticleSystem Item '${sourceItemId}' is missing from source Item order`,\n );\n }\n if (representedComponentIds.has(sourceComponentId)) {\n throwParticleSourceError(\n compositionId,\n layerId,\n `source ParticleSystem component '${sourceComponentId}' is bound more than once`,\n );\n }\n\n return { componentId: sourceComponentId, order: sourceOrder };\n}\n\nfunction readRecordArray(value: unknown): Record<string, unknown>[] | undefined {\n return Array.isArray(value) ? value.filter(isRecord) : undefined;\n}\n\nfunction collectReferencedParticleComponentIds(\n preservedData: GEToIRPreservedData,\n itemById: ReadonlyMap<string, Record<string, unknown>>,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n): Set<string> {\n const particleComponentIds = new Set<string>();\n\n for (const binding of Object.values(preservedData.compositionBindings)) {\n for (const itemId of binding.sourceItemOrder) {\n const item = itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n const componentIds = Array.isArray(item['components'])\n ? item['components'].map(resolveDataPathId).filter((id): id is string => id != null)\n : [];\n const itemParticleComponentIds = componentIds.filter(\n componentId => componentById.get(componentId)?.['dataType'] === DataType.ParticleSystem,\n );\n\n if (item['type'] === ItemType.particle && itemParticleComponentIds.length === 0) {\n throw new TypeError(\n `[ge-ir:particle-source] Particle Item '${itemId}' has no valid ParticleSystem component.`,\n );\n }\n for (const componentId of itemParticleComponentIds) {\n particleComponentIds.add(componentId);\n }\n }\n }\n\n return particleComponentIds;\n}\n\nfunction readPreviewSize(\n composition: Record<string, unknown> | undefined,\n): { width: number; height: number } | undefined {\n const previewSize = composition?.['previewSize'];\n\n return Array.isArray(previewSize) && previewSize.length >= 2 &&\n isPositiveFiniteNumber(previewSize[0]) && isPositiveFiniteNumber(previewSize[1])\n ? { width: previewSize[0], height: previewSize[1] }\n : undefined;\n}\n\nfunction isPositiveFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value > 0;\n}\n\nfunction throwParticleSourceError(compositionId: string, layerId: string, message: string): never {\n throw new TypeError(`[ge-ir:particle-source] ${compositionId}/${layerId}: ${message}.`);\n}\n","import { resolveIRResourceUrl } from '@vvfx/animation-ir/adapter';\nimport { isRecord, normalizeJSONValue } from '../common/json-normalization';\n\n/** Resolve adapter-owned resources against the same base as normalized IR assets. */\nexport function preserveSourceScene(scene: Record<string, unknown>, resourceBaseUrl?: string): Record<string, unknown> {\n const result = normalizeJSONValue(scene);\n\n if (resourceBaseUrl == null) {\n return result;\n }\n for (const name of ['images', 'fonts', 'bins', 'videos', 'audios']) {\n const values = result[name];\n\n if (!Array.isArray(values)) {\n continue;\n }\n result[name] = values.map((value: unknown) => {\n if (typeof value === 'string') {\n return resolveIRResourceUrl(value, resourceBaseUrl);\n }\n if (isRecord(value)) {\n for (const key of ['url', 'fontURL', 'webp', 'avif', 'ktx2']) {\n const url = value[key];\n\n if (typeof url === 'string' && url !== '') {\n value[key] = resolveIRResourceUrl(url, resourceBaseUrl);\n }\n }\n }\n\n return value;\n });\n }\n\n return result;\n}\n","// Value-level mappings used by the GE-to-IR conversion pipeline.\nimport { IRBlendMode, IREndBehavior, type IRLayerTime } from '@vvfx/animation-ir';\nimport { BlendingMode, EndBehavior } from '@galacean/effects-specification';\n\nconst IR_BLEND_MODE_BY_GE: Record<number, IRBlendMode> = {\n [BlendingMode.ADD]: IRBlendMode.Add,\n [BlendingMode.MULTIPLY]: IRBlendMode.Multiply,\n [BlendingMode.BRIGHTNESS]: IRBlendMode.Lighten,\n [BlendingMode.SUBTRACTION]: IRBlendMode.Difference,\n [BlendingMode.STRONG_LIGHT]: IRBlendMode.HardLight,\n [BlendingMode.WEAK_LIGHT]: IRBlendMode.SoftLight,\n [BlendingMode.SUPERPOSITION]: IRBlendMode.Overlay,\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.Continue;\n case EndBehavior.freeze:\n return IREndBehavior.Freeze;\n case EndBehavior.restart:\n return IREndBehavior.Loop;\n default:\n return undefined;\n }\n}\n\nexport function mapLayerTimingToIR(\n delay: number,\n duration: number,\n frameRate: number,\n compositionInPoint = 0,\n): IRLayerTime {\n const inFrame = Math.round((compositionInPoint + delay * frameRate) * 1000) / 1000;\n const outFrame = Math.round((compositionInPoint + (delay + duration) * frameRate) * 1000) / 1000;\n\n return { inFrame, outFrame };\n}\n","import { IREndBehavior, type IRColor } from '@vvfx/animation-ir';\nimport { resolveIRResourceUrl, type ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { DataType, type DataPath, type EndBehavior, type SceneBindingData } from '@galacean/effects-specification';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\nimport { get2dTo3dRatio } from '../../common/coordinate-mapping';\nimport { buildSceneCollectionIndex, resolveDataPath, resolveDataPathId } from '../../common/data-path';\nimport { mapEndBehaviorToIR } from '../mapping';\nimport type { GEAssetRegistry, GEToIROptions, GESceneContext } from '../types';\n\nexport function buildSceneContext(\n scene: Record<string, unknown>,\n options: GEToIROptions,\n compositionId = scene['compositionId'] as string,\n compositionIdBySourceId: ReadonlyMap<string, string> = new Map(),\n compositionStartFrameBySourceId: ReadonlyMap<string, number> = new Map(),\n assetRegistry: GEAssetRegistry = createGEAssetRegistry(),\n diagnostics: ConversionDiagnostic[] = [],\n): GESceneContext {\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 compositionStartTime = (composition['startTime'] as number) ?? 0;\n const frameRate = options.frameRate;\n const ratio = get2dTo3dRatio(width, height);\n\n const inPoint = compositionStartTime * frameRate;\n // Preserve fractional frames because GE durations need not end on a frame boundary.\n const outPoint = (compositionStartTime + duration) * frameRate;\n\n const endBehavior =\n mapEndBehaviorToIR(composition['endBehavior'] as EndBehavior | undefined) ?? IREndBehavior.Loop;\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 = typeof composition['name'] === 'string' ? composition['name'] : undefined;\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 const fonts = scene['fonts'] as Record<string, unknown>[] | undefined;\n\n const itemById = buildSceneCollectionIndex(items);\n const componentById = buildSceneCollectionIndex(components);\n const miscById = buildSceneCollectionIndex(miscs);\n const imageById = buildSceneCollectionIndex(images);\n const textureById = buildSceneCollectionIndex(textures);\n const fontDefinitionByFamily = buildFontDefinitionIndex(fonts);\n\n const itemIdToTrackId = buildSceneBindings(componentById, miscById, composition);\n const [majorVersion, minorVersion] = String(scene['version'] ?? '3.6').split('.').map(Number);\n\n for (const [parentId, parent] of itemById) {\n const children = parent['children'];\n\n if (!Array.isArray(children)) {\n continue;\n }\n for (const reference of children) {\n const childId = resolveDataPathId(reference);\n const child = childId == null ? undefined : itemById.get(childId);\n\n if (childId != null && child != null) {\n itemById.set(childId, { ...child, parentId });\n }\n }\n }\n\n return {\n diagnostics,\n compositionId,\n irCompositionId: compositionIdBySourceId.get(compositionId) ?? compositionId,\n compositionIdBySourceId,\n compositionStartFrameBySourceId,\n compositionStartTime,\n resourceBaseUrl: options.resourceBaseUrl == null\n ? undefined\n : resolveIRResourceUrl(options.resourceBaseUrl),\n width,\n height,\n frameRate,\n ratio,\n textScaleIncludesSize: majorVersion < 3 || (majorVersion === 3 && minorVersion < 7),\n duration,\n inPoint,\n outPoint,\n compositionName,\n ...(isRecord(composition['camera']) && { camera: normalizeJSONValue(composition['camera']) }),\n endBehavior,\n backgroundColor,\n itemById,\n componentById,\n miscById,\n imageById,\n textureById,\n imageAssetById: assetRegistry.imageAssetById,\n imageAssetIdBySourceId: assetRegistry.imageAssetIdBySourceId,\n fontDefinitionByFamily,\n fontAssetById: assetRegistry.fontAssetById,\n fontAssetIdByIdentity: assetRegistry.fontAssetIdByIdentity,\n itemIdToTrackId,\n };\n}\n\nfunction createGEAssetRegistry(): GEAssetRegistry {\n return {\n imageAssetById: new Map(),\n imageAssetIdBySourceId: new Map(),\n fontAssetById: new Map(),\n fontAssetIdByIdentity: new Map(),\n };\n}\n\nfunction buildFontDefinitionIndex(fonts: Record<string, unknown>[] | undefined): Map<string, Record<string, unknown>> {\n const fontDefinitionByFamily = new Map<string, Record<string, unknown>>();\n\n for (const font of fonts ?? []) {\n const family = typeof font['fontFamily'] === 'string' ? font['fontFamily'] : font['family'];\n\n if (typeof family === 'string' && family !== '' && !fontDefinitionByFamily.has(family)) {\n fontDefinitionByFamily.set(family, font);\n }\n }\n\n return fontDefinitionByFamily;\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(\n scene: Record<string, unknown>,\n compositionId = scene['compositionId'] as string,\n): 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 = buildSceneCollectionIndex(scene['components'] as Record<string, unknown>[] | undefined);\n const compositionComponent = findCompositionComponent(componentById, composition);\n\n if (Array.isArray(composition['children'])) {\n const itemById = buildSceneCollectionIndex(scene['items'] as Record<string, unknown>[] | undefined);\n const ids: string[] = [];\n const visited = new Set<string>();\n const pending: unknown[] = (composition['children'] as unknown[]).toReversed();\n\n while (pending.length > 0) {\n const id = resolveDataPathId(pending.pop());\n\n if (id == null || visited.has(id)) {\n continue;\n }\n visited.add(id);\n ids.push(id);\n const children = itemById.get(id)?.['children'];\n\n if (Array.isArray(children)) {\n pending.push(...(children as unknown[]).toReversed());\n }\n }\n\n const bindings = compositionComponent?.['sceneBindings'] as SceneBindingData[] | undefined;\n const itemIdByTrackId = new Map((bindings ?? []).map(binding => [binding.key.id, binding.value.id]));\n const miscs = buildSceneCollectionIndex(scene['miscs'] as Record<string, unknown>[] | undefined);\n const timeline = resolveDataPath(miscs, compositionComponent?.['timelineAsset']);\n const tracks = timeline?.['tracks'];\n const orderedIds = Array.isArray(tracks) ? tracks.flatMap(reference => {\n const trackId = resolveDataPathId(reference);\n const itemId = trackId == null ? undefined : itemIdByTrackId.get(trackId);\n\n return itemId != null && visited.has(itemId) ? [itemId] : [];\n }) : [];\n const trackedIds = new Set(orderedIds);\n let trackedIndex = 0;\n\n // Timeline-bound Items keep painter order even when parenting groups their tree nodes.\n return ids.map(id => trackedIds.has(id) ? orderedIds[trackedIndex++] : id);\n }\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.map(itemReference => itemReference.id).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(curves: unknown[], startFrame: number, endFrame: number): 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 =\n 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 =\n Math.abs(v0 - v1) < 1e-6 && Math.abs(outControlPointY - v0) < 1e-6 && 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([data[0], data[1], data[2], data[3], nextData[0], nextData[1], nextData[2], nextData[3]]);\n } else if (nextType === BezierKeyframeType.EASE) {\n segments.push([data[0], data[1], data[2], data[3], nextData[0], nextData[1], nextData[2], nextData[3]]);\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([data[2], data[3], data[4], data[5], nextData[0], nextData[1], nextData[2], nextData[3]]);\n } else if (nextType === BezierKeyframeType.EASE) {\n segments.push([data[2], data[3], data[4], data[5], nextData[0], nextData[1], nextData[2], nextData[3]]);\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 =\n 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 (\n 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/**\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,\n IRBezierHandle,\n IRKeyframe,\n IRRotation,\n IRSpatialTangent,\n IRTransform,\n IRVec3,\n} from '@vvfx/animation-ir';\nimport { ValueType } from '@galacean/effects-specification';\nimport { convert3dTo2dPoint } from '../../common/coordinate-mapping';\nimport { parseBezierKeyframes, parsePositionTimingKeyframes } from './keyframe';\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<IRTransform> {\n const channels: Partial<IRTransform> = {};\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(timingKeyframes, pathPoints, controlPointsRaw, startFrame) ? 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(pathPoint[0], pathPoint[1], pathPoint[2] ?? 0, ctx.width, ctx.height);\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],\n startPathPoint[1],\n startPathPoint[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n const endPathPoint2d = convert3dTo2dPoint(\n endPathPoint[0],\n endPathPoint[1],\n endPathPoint[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n const firstControlPoint2d = convert3dTo2dPoint(\n firstControlPoint[0],\n firstControlPoint[1],\n firstControlPoint[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n const secondControlPoint2d = convert3dTo2dPoint(\n secondControlPoint[0],\n secondControlPoint[1],\n secondControlPoint[2] ?? 0,\n ctx.width,\n ctx.height,\n );\n\n keyframe.spatialOut = [\n firstControlPoint2d[0] - startPathPoint2d[0],\n firstControlPoint2d[1] - startPathPoint2d[1],\n ];\n\n pendingSpatialIn.set(keyframeIndex + 1, [\n secondControlPoint2d[0] - endPathPoint2d[0],\n 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 { type: 'keyframed', 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 ||\n secondTiming == null ||\n firstPathPoint == null ||\n 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 =\n 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) && pointNearlyEquals(controlPoints[1], secondPathPoint);\n}\n\nfunction bezierHandleNearlyEquals(handle: IRBezierHandle | undefined, x: number, y: number): boolean {\n return handle != null && Math.abs(handle.x - x) < POSITION_EPSILON && 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 (\n left != null &&\n 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}\n\nfunction parseRotationAnimation(\n rotationOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRRotation | 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 uniform = sizeOverLifetime['separateAxes'] !== true ? sizeOverLifetime['size'] : undefined;\n const xData = (uniform ?? sizeOverLifetime['x']) as unknown[] | undefined;\n const yData = (uniform ?? sizeOverLifetime['y']) as unknown[] | undefined;\n const zData = (uniform ?? 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 type: 'static',\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 && {\n inTangent: segmentHandles[index - 1].inTangent,\n }),\n ...(segmentHandles[index]?.outTangent != null && {\n outTangent: segmentHandles[index].outTangent,\n }),\n }));\n\n return { type: 'keyframed', keyframes };\n}\n\ntype ScalarKeyframedProperty = Extract<IRAnimatedProperty<number>, { type: 'keyframed' }>;\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.type === 'static') {\n return { staticValue: property.value };\n }\n\n const firstValue = property.keyframes[0]?.value ?? 1;\n const constant = property.keyframes.every(\n keyframe =>\n scalarValuesEqual(keyframe.value, firstValue) &&\n (keyframe.endValue == null || scalarValuesEqual(keyframe.endValue, firstValue)),\n );\n\n return constant ? { staticValue: firstValue } : { 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 ? keyframe.value : (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(\n animation =>\n animation.keyframes.length === template.keyframes.length &&\n animation.keyframes.every((keyframe, index) => Math.abs(keyframe.frame - template.keyframes[index].frame) < 1e-6),\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) && 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) ? { type: 'static', value } : 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 { type: 'keyframed', keyframes };\n }\n }\n\n return undefined;\n}\n","function _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n\n var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n\n return target;\n}\nexport { _object_without_properties_loose as _ };\n","import type { IRParticleBurst, IRParticleContent } from '@vvfx/animation-ir';\nimport { parseGEParticleScalarExpression } from '../../common/particle-expression';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\n\nexport interface ParsedGEParticleComponent {\n particle: IRParticleContent;\n rawParticleContent: Record<string, unknown>;\n normalizedBurstRuntimeDefaults: boolean;\n}\n\ninterface ParsedParticleBursts {\n bursts: IRParticleBurst[];\n normalizedRuntimeDefaults: boolean;\n}\n\nexport function parseParticleComponent(\n component: Record<string, unknown>,\n frameRate: number,\n): ParsedGEParticleComponent | undefined {\n const options = component['options'];\n const emission = component['emission'];\n\n if (!isRecord(options) || !isRecord(emission)) {\n return undefined;\n }\n\n const maxCount = options['maxCount'];\n const startLifetime = parseGEParticleScalarExpression(options['startLifetime']);\n const rateOverTime = parseGEParticleScalarExpression(emission['rateOverTime']);\n const parsedBursts = parseParticleBursts(emission['bursts'], frameRate);\n\n if (!Number.isInteger(maxCount) || (maxCount as number) <= 0 || startLifetime == null || rateOverTime == null) {\n return undefined;\n }\n if (emission['bursts'] !== undefined && parsedBursts == null) {\n return undefined;\n }\n\n const rawParticleContent = normalizeJSONValue(component);\n\n delete rawParticleContent['id'];\n delete rawParticleContent['item'];\n delete rawParticleContent['dataType'];\n delete rawParticleContent['mask'];\n\n return {\n particle: {\n maxParticles: maxCount as number,\n startLifetime,\n emission: {\n rateOverTime,\n ...(parsedBursts != null && { bursts: parsedBursts.bursts }),\n },\n },\n rawParticleContent,\n normalizedBurstRuntimeDefaults: parsedBursts?.normalizedRuntimeDefaults ?? false,\n };\n}\n\nfunction parseParticleBursts(\n value: unknown,\n frameRate: number,\n): ParsedParticleBursts | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const bursts: IRParticleBurst[] = [];\n let normalizedRuntimeDefaults = false;\n\n for (const burst of value) {\n if (!isRecord(burst)) {\n return undefined;\n }\n const time = parseLegacyParticleNumber(burst['time']);\n const count = parseLegacyParticleNumber(burst['count']);\n const rawCycleCount = parseLegacyParticleNumber(burst['cycles']);\n const rawRepeatInterval = parseLegacyParticleNumber(burst['interval']);\n\n if (\n time == null || time < 0 ||\n count == null || !Number.isInteger(count) || count < 0 ||\n (burst['cycles'] !== undefined && rawCycleCount === undefined) ||\n (rawCycleCount !== undefined && (!Number.isInteger(rawCycleCount) || rawCycleCount < 0)) ||\n (burst['interval'] !== undefined && rawRepeatInterval === undefined) ||\n (rawRepeatInterval !== undefined && rawRepeatInterval < 0)\n ) {\n return undefined;\n }\n\n const cycleCount = rawCycleCount == null || rawCycleCount === 0 ? 'infinite' : rawCycleCount;\n const repeatIntervalSeconds = rawRepeatInterval == null || rawRepeatInterval === 0\n ? (cycleCount === 1 ? 0 : 1)\n : rawRepeatInterval;\n\n normalizedRuntimeDefaults ||= rawCycleCount == null || rawCycleCount === 0 ||\n ((rawRepeatInterval == null || rawRepeatInterval === 0) && cycleCount !== 1);\n\n bursts.push({\n frameOffset: time * frameRate,\n count,\n cycleCount,\n repeatIntervalFrames: repeatIntervalSeconds * frameRate,\n });\n }\n\n return { bursts, normalizedRuntimeDefaults };\n}\n\nfunction parseLegacyParticleNumber(value: unknown): number | undefined {\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n if (typeof value !== 'string' || value.trim() === '') {\n return undefined;\n }\n\n const parsed = Number(value);\n\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n","import type {\n IRBlendMode, IRColor, IRBezierPath,\n IRFontAsset, IRLocalBounds, IRParticleContent, IRShape, IRShapePaint, IRShapeStyle, IRTextContent,\n} from '@vvfx/animation-ir';\nimport {\n IRPaintType, IRLineCap, IRLineJoin, IRShapePrimitiveType, IRTextureScaleMode, isIRId,\n} from '@vvfx/animation-ir';\nimport {\n createIRResourceSource, resolveIRResourceUrl,\n} from '@vvfx/animation-ir/adapter';\nimport {\n DataType, type DataPath, FillType, LineCap, LineJoin,\n ItemType, ShapePrimitiveType, TextAlignment, TextSizeMode, TexturePaintScaleMode,\n} from '@galacean/effects-specification';\nimport { resolveDataPath, resolveDataPathId } from '../../common/data-path';\nimport { createId } from '../../common/id';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\nimport { mapBlendModeToIR } from '../mapping';\nimport type { GESceneContext } from '../types';\nimport type {\n EffectsLayerPreservedData, EffectsSpriteSplit, EffectsTextSizeMode, EffectsTextureSheetAnimation,\n} from '../../preserved-data';\nimport { parseParticleComponent } from './parse-particle-component';\n\ninterface ParsedComponentData {\n type: 'image' | 'solid' | 'text' | 'shape' | 'particle';\n imageAssetId?: string;\n spriteStartColor?: IRColor;\n text?: IRTextContent;\n textBounds?: IRLocalBounds;\n shapes?: IRShape[];\n blendMode?: IRBlendMode;\n anchorScale?: [number, number];\n spriteSplits?: EffectsSpriteSplit[];\n spriteTexture?: EffectsLayerPreservedData['spriteTexture'];\n textureSheetAnimation?: EffectsTextureSheetAnimation;\n textSizeMode?: EffectsTextSizeMode;\n GEComponentId?: string; // Source identity used to remap cross-component references.\n rawMask?: Record<string, unknown>; // Preserved for source and target reconstruction.\n particle?: IRParticleContent;\n rawParticleContent?: Record<string, unknown>;\n}\n\nexport function parseComponent(item: Record<string, unknown>, ctx: GESceneContext): ParsedComponentData | undefined {\n const componentRefs = item['components'] as DataPath[] | undefined;\n\n if (componentRefs == null || componentRefs.length === 0) {\n return undefined;\n }\n const componentIds = componentRefs.map(resolveDataPathId).filter((id): id is string => id != null);\n // A declared Particle Item may list auxiliary render components before its ParticleSystem.\n const orderedComponentIds = item['type'] === ItemType.particle\n ? [\n ...componentIds.filter(componentId => ctx.componentById.get(componentId)?.['dataType'] === DataType.ParticleSystem),\n ...componentIds.filter(componentId => ctx.componentById.get(componentId)?.['dataType'] !== DataType.ParticleSystem),\n ]\n : componentIds;\n\n for (const componentId of orderedComponentIds) {\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, ctx);\n } else if (dataType === DataType.ShapeComponent) {\n result = parseShapeComponent(component, ctx);\n } else if (dataType === DataType.ParticleSystem) {\n const parsedParticle = parseParticleComponent(component, ctx.frameRate);\n\n if (parsedParticle != null) {\n const { normalizedBurstRuntimeDefaults, ...particleData } = parsedParticle;\n\n result = {\n type: 'particle',\n ...particleData,\n ...parseRendererLayerProperties(component['renderer'], [0, 0]),\n };\n if (normalizedBurstRuntimeDefaults) {\n ctx.diagnostics.push({\n code: 'GE_PARTICLE_BURST_RUNTIME_DEFAULTS_NORMALIZED',\n severity: 'info',\n action: 'normalized',\n path: `$.components[id=${JSON.stringify(componentId)}].emission.bursts`,\n sourceId: componentId,\n feature: 'particle-bursts',\n message: 'GE burst cycles or interval used zero/omitted runtime defaults and were made explicit in IR.',\n });\n }\n }\n }\n\n if (result == null) {\n continue;\n }\n\n if (dataType === DataType.SpriteComponent || dataType === DataType.TextComponent) {\n result.textureSheetAnimation = parseTextureSheetAnimation(component['textureSheetAnimation']);\n }\n if (result.type === 'image') {\n result.spriteTexture = parseSpriteTexture(component['renderer'], ctx);\n }\n result.GEComponentId = component['id'] as string;\n\n const mask = component['mask'];\n\n if (isRecord(mask)) {\n result.rawMask = mask;\n // Normalize the legacy single-mask contract before IR parsing and preserved-data export.\n if (mask['references'] == null && isRecord(mask['reference'])) {\n const { reference, inverted, ...remaining } = mask;\n\n result.rawMask = {\n ...remaining,\n isMask: mask['isMask'] ?? false,\n alphaMaskEnabled: mask['alphaMaskEnabled'] ?? false,\n references: [{ mask: reference, inverted: inverted ?? false }],\n };\n }\n }\n\n return result;\n }\n\n return undefined;\n}\n\nfunction parseSpriteComponent(component: Record<string, unknown>, ctx: GESceneContext): ParsedComponentData {\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n const options = component['options'] as Record<string, unknown> | undefined;\n\n let imageAssetId: string | undefined;\n let spriteStartColor: IRColor | undefined;\n const spriteSplits = parseSpriteSplits(component['splits']);\n const rendererLayerProperties = parseRendererLayerProperties(renderer);\n\n if (renderer != null) {\n imageAssetId = resolveImageAssetIdFromTexture(renderer['texture'], ctx);\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 =\n 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 spriteStartColor = [startColor[0], startColor[1], startColor[2], startColor[3]];\n }\n }\n }\n\n const type = imageAssetId != null ? ('image' as const) : ('solid' as const);\n\n return {\n type,\n imageAssetId,\n spriteStartColor,\n ...rendererLayerProperties,\n spriteSplits,\n };\n}\n\nfunction parseRendererLayerProperties(\n value: unknown,\n defaultAnchorScale?: [number, number],\n): Pick<ParsedComponentData, 'blendMode' | 'anchorScale'> {\n if (!isRecord(value)) {\n return defaultAnchorScale == null ? {} : { anchorScale: defaultAnchorScale };\n }\n\n const blending = value['blending'];\n const blendMode = typeof blending === 'number' && Number.isFinite(blending)\n ? mapBlendModeToIR(blending)\n : undefined;\n const anchor = value['anchor'];\n const anchorScale = Array.isArray(anchor) && anchor.length >= 2 &&\n typeof anchor[0] === 'number' && Number.isFinite(anchor[0]) &&\n typeof anchor[1] === 'number' && Number.isFinite(anchor[1])\n ? [anchor[0], anchor[1]] satisfies [number, number]\n : defaultAnchorScale;\n\n return {\n ...(blendMode != null && { blendMode }),\n ...(anchorScale != null && { anchorScale }),\n };\n}\n\nfunction parseSpriteSplits(value: unknown): EffectsSpriteSplit[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const splits: EffectsSpriteSplit[] = [];\n\n for (const split of value) {\n if (!isSpriteSplit(split)) {\n return undefined;\n }\n splits.push([split[0], split[1], split[2], split[3], split[4]]);\n }\n\n return splits;\n}\n\nfunction isSpriteSplit(value: unknown): value is EffectsSpriteSplit {\n return (\n Array.isArray(value) &&\n value.length === 5 &&\n value.slice(0, 4).every(entry => typeof entry === 'number' && Number.isFinite(entry)) &&\n (value[4] === 0 || value[4] === 1)\n );\n}\n\nfunction parseTextureSheetAnimation(value: unknown): EffectsTextureSheetAnimation | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n\n const row = value['row'];\n const col = value['col'];\n const total = value['total'];\n const animate = value['animate'];\n const loop = value['loop'];\n\n if (\n !isPositiveSafeInteger(row) ||\n !isPositiveSafeInteger(col) ||\n (total !== undefined && !isPositiveSafeInteger(total)) ||\n typeof animate !== 'boolean' ||\n (loop !== undefined && typeof loop !== 'boolean')\n ) {\n return undefined;\n }\n\n return {\n ...normalizeJSONValue(value),\n row,\n col,\n ...(total !== undefined && { total }),\n animate,\n ...(loop !== undefined && { loop }),\n };\n}\n\nfunction isPositiveSafeInteger(value: unknown): value is number {\n return typeof value === 'number' && Number.isSafeInteger(value) && value > 0;\n}\n\nfunction parseTextComponent(component: Record<string, unknown>, ctx: GESceneContext): 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 =\n 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 =\n textAlignCode === TextAlignment.middle ? 'center' : textAlignCode === TextAlignment.right ? 'right' : 'left';\n const fontFamily = (options['fontFamily'] as string) || 'sans-serif';\n const fontWeight = normalizeFontAssetWeight(options['fontWeight']);\n const fontStyle = normalizeFontAssetStyle(options['fontStyle']);\n const fontAssetId = registerFontAsset(ctx, fontFamily, fontStyle, fontWeight);\n const fontSize = readPositiveNumber(options['fontSize']) ?? 12;\n const lineHeight = readPositiveNumber(options['lineHeight']) ?? fontSize;\n const textWidth = readPositiveNumber(options['textWidth']);\n const textHeight = readPositiveNumber(options['textHeight']);\n\n const text: IRTextContent = {\n text: (options['text'] as string) ?? '',\n fontAssetId,\n fontSize,\n color,\n textAlign,\n letterSpacing: (options['letterSpace'] as number) ?? 0,\n lineHeight,\n };\n const textBounds =\n textWidth != null && textHeight != null\n ? { x: 0, y: 0, width: textWidth, height: textHeight }\n : undefined;\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 {\n type: 'text',\n text,\n textBounds,\n blendMode,\n anchorScale,\n textSizeMode: parseTextSizeMode(options),\n };\n}\n\nfunction parseTextSizeMode(options: Record<string, unknown>): EffectsTextSizeMode {\n switch (options['autoResize']) {\n case TextSizeMode.autoWidth:\n return 'auto-width';\n case TextSizeMode.autoHeight:\n return 'auto-height';\n case TextSizeMode.fixed:\n return 'fixed';\n }\n\n return 'fixed';\n}\n\nfunction registerFontAsset(\n ctx: GESceneContext,\n family: string,\n style: IRFontAsset['style'],\n weight: number,\n): string {\n const definition = ctx.fontDefinitionByFamily.get(family);\n const rawUrl = definition?.['fontURL'] ?? definition?.['url'];\n const source = typeof rawUrl === 'string' && rawUrl !== ''\n ? createIRResourceSource(resolveIRResourceUrl(rawUrl, ctx.resourceBaseUrl))\n : { kind: 'system' as const };\n const identity = JSON.stringify([family, style, weight, source]);\n const existingId = ctx.fontAssetIdByIdentity.get(identity);\n\n if (existingId != null) {\n return existingId;\n }\n const assetId = createId();\n\n ctx.fontAssetIdByIdentity.set(identity, assetId);\n ctx.fontAssetById.set(assetId, { id: assetId, type: 'font', family, style, weight, source });\n\n return assetId;\n}\n\nfunction normalizeFontAssetWeight(weight: unknown): number {\n if (typeof weight === 'number') {\n return Number.isInteger(weight) && weight >= 1 && weight <= 1000 ? weight : 400;\n }\n\n switch (weight) {\n case 'bold':\n case 'bolder':\n return 700;\n case 'lighter':\n return 300;\n default:\n return 400;\n }\n}\n\nfunction normalizeFontAssetStyle(style: unknown): IRFontAsset['style'] {\n return style === 'italic' || style === 'oblique' ? style : 'normal';\n}\n\nfunction readPositiveNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : undefined;\n}\n\nfunction parseShapeComponent(component: Record<string, unknown>, ctx: GESceneContext): 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): IRShape | undefined {\n const GEType = component['type'] as ShapePrimitiveType | undefined;\n const primitiveType = mapShapePrimitiveTypeToIR(GEType ?? ShapePrimitiveType.Custom);\n const style: IRShapeStyle = {\n position: [0, 0],\n fills: [],\n strokes: [],\n };\n\n const GEFills = component['fills'] as Record<string, unknown>[] | undefined;\n const sourceComponentId = typeof component['id'] === 'string' ? component['id'] : undefined;\n const componentPath = sourceComponentId == null\n ? '$.components[shape]'\n : `$.components[id=${JSON.stringify(sourceComponentId)}]`;\n\n if (GEFills != null) {\n style.fills = GEFills.map((fill, index) =>\n parseShapePaint(fill, ctx, `${componentPath}.fills[${index}]`, sourceComponentId),\n ).filter(\n (fill): fill is IRShapePaint => fill != null,\n );\n }\n\n const GEStrokes = component['strokes'] as Record<string, unknown>[] | undefined;\n const GEStrokeWidth = component['strokeWidth'];\n const strokeWidth = typeof GEStrokeWidth === 'number' && Number.isFinite(GEStrokeWidth) && GEStrokeWidth >= 0\n ? GEStrokeWidth / ctx.ratio\n : 1 / ctx.ratio;\n const strokeCap = mapLineCapToIR(\n typeof component['strokeCap'] === 'number' ? component['strokeCap'] : LineCap.Butt,\n );\n const strokeJoin = mapLineJoinToIR(\n typeof component['strokeJoin'] === 'number' ? component['strokeJoin'] : LineJoin.Miter,\n );\n\n if (GEStrokes != null) {\n style.strokes = GEStrokes.flatMap((stroke, index) => {\n const paint = parseShapePaint(\n stroke,\n ctx,\n `${componentPath}.strokes[${index}]`,\n sourceComponentId,\n );\n\n return paint == null ? [] : [{ paint, width: strokeWidth, cap: strokeCap, join: strokeJoin }];\n });\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 ? {\n ...style,\n primitiveType,\n width,\n height,\n ...readRectangleCornerRadius(component, width, height),\n }\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 ? {\n ...style,\n primitiveType,\n pointCount,\n radius,\n ...readOptionalNumberField(component, 'roundness'),\n }\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,\n primitiveType,\n pointCount,\n innerRadius,\n outerRadius,\n ...readOptionalNumberField(component, 'innerRoundness'),\n ...readOptionalNumberField(component, 'outerRoundness'),\n }\n : undefined;\n }\n }\n}\n\nconst GE_TO_SHAPE_PRIMITIVE_TYPE: Record<ShapePrimitiveType, IRShape['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): IRShape['primitiveType'] {\n return GE_TO_SHAPE_PRIMITIVE_TYPE[GEType] ?? IRShapePrimitiveType.Custom;\n}\n\nfunction parseShapePaint(\n paint: Record<string, unknown>,\n ctx: GESceneContext,\n path: string,\n sourceId?: string,\n): IRShapePaint | 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: IRPaintType.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, IRShapePaint['type']> = {\n [FillType.GradientLinear]: IRPaintType.LinearGradient,\n [FillType.GradientRadial]: IRPaintType.RadialGradient,\n [FillType.GradientAngular]: IRPaintType.AngularGradient,\n };\n\n const gradientStopsRaw = paint['gradientStops'] as [number, unknown] | undefined;\n const stops =\n Array.isArray(gradientStopsRaw) && gradientStopsRaw.length >= 2\n ? (gradientStopsRaw[1] as [number, number, number, number, number][])\n : [];\n\n const startPoint = readFinitePoint(paint['startPoint']);\n const endPoint = readFinitePoint(paint['endPoint']);\n\n if (startPoint == null || endPoint == null) {\n ctx.diagnostics.push({\n code: 'GE_SHAPE_GRADIENT_ENDPOINT_MISSING',\n severity: 'warning',\n action: 'dropped',\n path,\n ...(sourceId != null && { sourceId }),\n feature: 'gradient-endpoints',\n message: 'GE gradient paint requires finite startPoint and endPoint values before it can enter Animation IR.',\n });\n\n return undefined;\n }\n\n return {\n type: typeMap[GEType] as 'linear-gradient' | 'radial-gradient' | 'angular-gradient',\n gradientStops: stops,\n gradientStart: [startPoint.x / ctx.ratio, -startPoint.y / ctx.ratio],\n gradientEnd: [endPoint.x / ctx.ratio, -endPoint.y / ctx.ratio],\n };\n }\n\n if (GEType === FillType.Texture) {\n const assetId = resolveImageAssetIdFromTexture(paint['texture'], ctx);\n\n if (assetId == null) {\n return undefined;\n }\n\n const scaleMode = mapTextureScaleModeToIR(paint['scaleMode']);\n\n return {\n type: IRPaintType.Texture,\n assetId,\n ...(scaleMode != null && { scaleMode }),\n };\n }\n\n return undefined;\n}\n\nfunction readFinitePoint(value: unknown): { x: number; y: number } | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n const x = value['x'];\n const y = value['y'];\n\n return typeof x === 'number' && Number.isFinite(x) && typeof y === 'number' && Number.isFinite(y)\n ? { x, y }\n : undefined;\n}\n\nfunction mapLineCapToIR(GECode: number): IRLineCap {\n const lineCapByCode: Record<number, IRLineCap> = {\n [LineCap.Butt]: IRLineCap.Butt,\n [LineCap.Round]: IRLineCap.Round,\n [LineCap.Square]: IRLineCap.Square,\n };\n\n return lineCapByCode[GECode] ?? IRLineCap.Butt;\n}\n\nfunction mapLineJoinToIR(GECode: number): IRLineJoin {\n const lineJoinByCode: Record<number, IRLineJoin> = {\n [LineJoin.Round]: IRLineJoin.Round,\n [LineJoin.Bevel]: IRLineJoin.Bevel,\n [LineJoin.Miter]: IRLineJoin.Miter,\n };\n\n return lineJoinByCode[GECode] ?? IRLineJoin.Miter;\n}\n\nfunction parseCustomPaths(component: Record<string, unknown>, ratio: number): IRBezierPath[] {\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\n | Array<{\n close: boolean;\n indexes: Array<{ point: number; easingIn: number; easingOut: number }>;\n }>\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(component: Record<string, unknown>, key: string, ratio: number): 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 readRectangleCornerRadius(\n component: Record<string, unknown>,\n width: number,\n height: number,\n): { cornerRadius?: number } {\n const roundness = component['roundness'];\n\n if (typeof roundness !== 'number' || !Number.isFinite(roundness)) {\n return {};\n }\n const percentage = Math.min(Math.max(roundness, 0), 100) / 100;\n\n return { cornerRadius: percentage * Math.min(width, height) / 2 };\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 resolveImageAssetIdFromTexture(textureReference: unknown, ctx: GESceneContext): string | 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 sourceId = resolveDataPathId(sourceReference);\n const url = image?.['url'];\n\n if (sourceId == null || typeof url !== 'string' || url.trim() === '') {\n return undefined;\n }\n const existingId = ctx.imageAssetIdBySourceId.get(sourceId);\n const assetId = isIRId(sourceId) ? sourceId : existingId ?? createId();\n\n if (!isIRId(sourceId) && existingId == null) {\n ctx.imageAssetIdBySourceId.set(sourceId, assetId);\n }\n\n ctx.imageAssetById.set(assetId, {\n id: assetId,\n type: 'image',\n source: createIRResourceSource(resolveIRResourceUrl(url, ctx.resourceBaseUrl)),\n });\n\n return assetId;\n}\n\nfunction mapTextureScaleModeToIR(value: unknown): IRTextureScaleMode | undefined {\n switch (value) {\n case TexturePaintScaleMode.Fill:\n return IRTextureScaleMode.Fill;\n case TexturePaintScaleMode.Fit:\n return IRTextureScaleMode.Fit;\n case TexturePaintScaleMode.Crop:\n return IRTextureScaleMode.Crop;\n case TexturePaintScaleMode.Tile:\n return IRTextureScaleMode.Tile;\n default:\n return undefined;\n }\n}\n\nfunction parseSpriteTexture(renderer: unknown, ctx: GESceneContext): EffectsLayerPreservedData['spriteTexture'] {\n const texture = isRecord(renderer) ? resolveDataPath(ctx.textureById, renderer['texture']) : undefined;\n const image = texture == null ? undefined : resolveDataPath(ctx.imageById, texture['source']);\n\n if (texture == null || image == null) {\n return undefined;\n }\n const textureData = normalizeJSONValue(texture);\n const imageData = normalizeJSONValue(image);\n\n delete textureData['id'];\n delete textureData['source'];\n delete imageData['id'];\n delete imageData['url'];\n for (const key of ['webp', 'avif', 'ktx2']) {\n const url = imageData[key];\n\n if (typeof url === 'string' && url !== '') {\n imageData[key] = resolveIRResourceUrl(url, ctx.resourceBaseUrl);\n }\n }\n\n return { texture: textureData, image: imageData };\n}\n","import { DataType, type DataPath, EndBehavior, type TimelineClipData } from '@galacean/effects-specification';\nimport { resolveDataPath, resolveDataPathId, visitDataPathReferences } from '../../common/data-path';\nimport type { GESceneContext } from '../types';\nimport type { EffectsLayerPreservedData } from '../../preserved-data';\nimport { normalizeJSONValue } from '../../common/json-normalization';\n\ninterface ParsedTimelineData {\n delay?: number;\n duration?: number;\n activationEndBehavior?: EndBehavior;\n transformAsset?: Record<string, unknown>;\n spriteColorAsset?: Record<string, unknown>;\n}\n\nexport function parseTimeline(itemId: string, ctx: GESceneContext): 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: number | undefined;\n let duration: number | undefined;\n let activationEndBehavior: EndBehavior | undefined;\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 activationEndBehavior = 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, activationEndBehavior, transformAsset, spriteColorAsset };\n}\n\nexport function parseComponentTimeline(\n componentId: string,\n ctx: GESceneContext,\n): EffectsLayerPreservedData['componentTimeline'] {\n const rootId = ctx.itemIdToTrackId.get(componentId);\n\n if (rootId == null || !ctx.miscById.has(rootId)) {\n return undefined;\n }\n const objects: Record<string, unknown>[] = [];\n const visited = new Set<string>();\n const collect = (id: string): void => {\n const object = ctx.miscById.get(id);\n\n if (object == null || visited.has(id)) {\n return;\n }\n visited.add(id);\n objects.push(normalizeJSONValue(object));\n visitDataPathReferences(object, collect);\n };\n\n collect(rootId);\n const unsupported = objects.find(object => !Object.values(DataType).some(type => type === object['dataType']));\n\n if (unsupported != null) {\n ctx.diagnostics.push({\n code: 'GE_COMPONENT_TRACK_UNSUPPORTED', severity: 'warning', action: 'unsupported',\n path: `$.miscs[id=${JSON.stringify(unsupported['id'])}]`, sourceId: componentId,\n feature: String(unsupported['dataType']),\n message: 'The component timeline contains an unsupported runtime object and was not retained.',\n });\n\n return undefined;\n }\n\n return { root: { id: rootId }, objects };\n}\n","import type { IRTransform, IRVec3 } from '@vvfx/animation-ir';\nimport { convert3dTo2dPoint } from '../../common/coordinate-mapping';\nimport type { GESceneContext } from '../types';\n\nexport function parseStaticTransform(\n itemTransform: Record<string, unknown>,\n ctx: GESceneContext,\n): Partial<IRTransform> {\n const channels: Partial<IRTransform> = {};\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 = { type: 'static', 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 = { type: 'static', 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 ? { type: 'static' as const, value: eulerHint.x } : undefined;\n const y = Math.abs(eulerHint.y) > 1e-6 ? { type: 'static' as const, value: eulerHint.y } : undefined;\n const z = Math.abs(eulerHint.z) > 1e-6 ? { type: 'static' 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 {\n isIRId, type IRColor, type IRImageLayer, type IRLayer, type IRLayerType,\n type IRParticleLayer, type IRShapeLayer, type IRSolidLayer, type IRTextLayer, type IRTransform,\n type IRVec3,\n} from '@vvfx/animation-ir';\nimport { ItemType, type EndBehavior } from '@galacean/effects-specification';\nimport { DEFAULT_CAMERA_Z, TEXT_WORLD_UNITS_PER_PIXEL } from '../../common/coordinate-mapping';\nimport { rotateAnchorOffsetForParentedVisual } from '../../common/anchor-mapping';\nimport { createId } from '../../common/id';\nimport { resolveDataPathId } from '../../common/data-path';\nimport { isRecord, normalizeJSONValue } from '../../common/json-normalization';\nimport { mapEndBehaviorToIR, mapLayerTimingToIR } from '../mapping';\nimport type { GESceneContext } from '../types';\nimport { parseOpacityAnimation, parseTransformAnimation } from './animation';\nimport { parseComponent } from './component';\nimport { parseComponentTimeline, parseTimeline } from './timeline';\nimport { parseStaticTransform } from './transform';\nimport type { EffectsLayerPreservedData } from '../../preserved-data';\n\nexport interface ParsedItemLayer {\n layer: IRLayer;\n preservedData: EffectsLayerPreservedData;\n}\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 ctx: GESceneContext,\n): ParsedItemLayer | undefined {\n const name = typeof item['name'] === 'string' ? item['name'] : undefined;\n const GEType = item['type'] as ItemType;\n const visible = (item['visible'] as boolean) ?? true;\n let rawTransformPreservedData: EffectsLayerPreservedData | 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, ctx.inPoint);\n\n const componentData = parseComponent(item, ctx);\n let type: IRLayerType | undefined;\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 === 'particle' || GEType === ItemType.particle) {\n type = 'particle';\n } else if (componentData?.type === 'image') {\n type = 'image';\n } else if (GEType === ItemType.composition) {\n type = 'precomp';\n } else if (componentData?.spriteStartColor != null) {\n type = 'solid';\n } else if (GEType === ItemType.sprite) {\n type = 'solid';\n }\n\n if (type == null) {\n return undefined;\n }\n if (type === 'particle' && componentData?.particle == null) {\n return undefined;\n }\n const layerEndBehavior = type === 'precomp'\n ? undefined\n : mapEndBehaviorToIR(item['endBehavior'] as EndBehavior | undefined);\n\n const itemTransform = item['transform'] as Record<string, unknown> | undefined;\n const itemAnchor = readItemAnchor(itemTransform);\n const itemEulerHint = readItemEulerHint(itemTransform);\n const itemSize = readItemSize(itemTransform);\n const sizeRatio = type === 'text' && ctx.textScaleIncludesSize === false ? TEXT_WORLD_UNITS_PER_PIXEL : ctx.ratio;\n const textBounds = type === 'text' ? componentData?.textBounds : undefined;\n const localBounds: IRLayer['localBounds'] =\n type === 'text' && ctx.textScaleIncludesSize !== false && textBounds != null\n ? textBounds\n : itemSize != null\n ? {\n x: 0,\n y: 0,\n width: Math.abs(itemSize.x) / sizeRatio,\n height: Math.abs(itemSize.y) / sizeRatio,\n }\n : textBounds ?? (type === 'particle'\n ? { x: 0, y: 0, width: ctx.width, height: ctx.height }\n : undefined);\n\n if (type === 'particle' && itemSize == null) {\n ctx.diagnostics.push({\n code: 'GE_PARTICLE_BOUNDS_DEFAULTED',\n severity: 'info',\n action: 'approximated',\n path: `$.items[id=${JSON.stringify(itemId)}].transform.size`,\n sourceId: itemId,\n feature: 'localBounds',\n message: 'Particle item has no display size; Composition bounds were used as source-neutral authoring bounds.',\n });\n }\n let transform: IRTransform | undefined;\n\n if (itemTransform != null) {\n const staticChannels = parseStaticTransform(itemTransform, ctx);\n\n transform = { ...staticChannels };\n\n if (type === 'text') {\n if (ctx.textScaleIncludesSize !== false) {\n // GE 3.6 migration derives uniform glyph scale from world width / layout width.\n const sourceScale = itemTransform['scale'];\n const worldWidth = isRecord(sourceScale) && typeof sourceScale['x'] === 'number' ? sourceScale['x'] : 1;\n const scale = worldWidth / (textBounds?.width ?? 1) / ctx.ratio;\n\n transform.scale = { type: 'static', value: [scale, scale, scale] };\n } else {\n const scale = transform.scale?.type === 'static' ? transform.scale.value : [1, 1, 1];\n const ratio = TEXT_WORLD_UNITS_PER_PIXEL / ctx.ratio;\n\n const value: [number, number, number] = [scale[0] * ratio, scale[1] * ratio, scale[2] * ratio];\n\n if (value.every(axis => Math.abs(axis - 1) < 1e-6)) {\n delete transform.scale;\n } else {\n transform.scale = { type: 'static', value };\n }\n }\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 rawPositionOverLifetime = transformAsset['positionOverLifetime'] as Record<string, unknown> | undefined;\n const animationChannels = parseTransformAnimation(transformAsset, time.inFrame, time.outFrame, ctx);\n\n if (transform == null) {\n transform = {};\n }\n\n if (animationChannels.rotation != null) {\n transform.rotation = animationChannels.rotation;\n }\n // GE position paths are additive contributions on top of the item transform. Keep\n // the item base as normalized Position while the raw path is retained; treating\n // both values as an absolute Position loses that base when generating GE again.\n if (animationChannels.position != null && rawPositionOverLifetime?.['path'] == null) {\n transform.position = animationChannels.position;\n }\n const baseScale: IRVec3 = transform.scale?.type === 'static' ? transform.scale.value : [1, 1, 1];\n\n if (animationChannels.scale != null) {\n const scale = animationChannels.scale;\n // GE's Transform mixer uses base scale X for its depth channel.\n const multiply = (value: IRVec3): IRVec3 =>\n [value[0] * baseScale[0], value[1] * baseScale[1], value[2] * baseScale[0]];\n\n transform.scale = scale.type === 'static'\n ? { ...scale, value: multiply(scale.value) }\n : { ...scale, keyframes: scale.keyframes.map(keyframe => ({\n ...keyframe, value: multiply(keyframe.value),\n ...(keyframe.endValue != null && { endValue: multiply(keyframe.endValue) }),\n })) };\n }\n\n const preservedTransformData: EffectsLayerPreservedData = {};\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 && Object.keys(rawPositionOverLifetime).length > 0) {\n preservedTransformData.positionOverLifetime = rawPositionOverLifetime;\n }\n if (rawRotationOverLifetime != null && Object.keys(rawRotationOverLifetime).length > 0) {\n preservedTransformData.rotationOverLifetime = rawRotationOverLifetime;\n }\n if (rawSizeOverLifetime != null && Object.keys(rawSizeOverLifetime).length > 0) {\n preservedTransformData.sizeOverLifetime = rawSizeOverLifetime;\n preservedTransformData.transformBaseScale = [...baseScale];\n }\n\n if (Object.keys(preservedTransformData).length > 0) {\n rawTransformPreservedData = preservedTransformData;\n }\n }\n\n if (itemSize != null && (itemSize.x < 0 || itemSize.y < 0)) {\n const signs = [Math.sign(itemSize.x), Math.sign(itemSize.y), 1];\n const scale = transform?.scale ?? { type: 'static' as const, value: [1, 1, 1] as [number, number, number] };\n const reflect = (value: [number, number, number]): [number, number, number] =>\n [value[0] * signs[0], value[1] * signs[1], value[2]];\n\n if (rawTransformPreservedData?.transformBaseScale != null) {\n rawTransformPreservedData.transformBaseScale = reflect(rawTransformPreservedData.transformBaseScale);\n }\n transform = {\n ...transform,\n scale: scale.type === 'static'\n ? { ...scale, value: reflect(scale.value) }\n : { ...scale, keyframes: scale.keyframes.map(keyframe => ({\n ...keyframe, value: reflect(keyframe.value),\n ...(keyframe.endValue != null && { endValue: reflect(keyframe.endValue) }),\n })) },\n };\n }\n\n let rawColorOverLifetime: Record<string, unknown> | undefined;\n\n if (type !== 'particle' && timeline?.spriteColorAsset != null) {\n const opacity = parseOpacityAnimation(timeline.spriteColorAsset, time.inFrame, time.outFrame);\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 anchor metadata preserves the IR anchor relative to normalized local bounds.\n // Item position carries GE's bounds-center compensation for every visual layer, including Text.\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, localBounds);\n const { anchorX, anchorY } = anchorInfo;\n const [anchorOffsetX, anchorOffsetY] = rotateAnchorOffsetForParentedVisual(\n type,\n typeof item['parentId'] === 'string',\n transform,\n anchorInfo.anchorOffsetX,\n anchorInfo.anchorOffsetY,\n );\n\n if (transform == null) {\n transform = {};\n }\n\n transform.anchor = {\n type: 'static',\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.type === 'static') {\n const scale =\n transform.scale?.type === 'static' && 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 - (localBounds.x + layerWidth / 2);\n const anchorDiffY = anchorY - (localBounds.y + 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 // Scale compensation is a world-space offset, outside perspective projection.\n const depthScale = (DEFAULT_CAMERA_Z - position.value[2]) / DEFAULT_CAMERA_Z;\n const effectiveDepthScale = Math.abs(depthScale) > 1e-10 ? depthScale : 1;\n const totalX = anchorOffsetX + scaleAdjustX / effectiveDepthScale;\n const totalY = anchorOffsetY + scaleAdjustY / effectiveDepthScale;\n\n if (Math.abs(totalX) > 1e-6 || Math.abs(totalY) > 1e-6) {\n transform.position = subtractStaticPositionOffset(position, totalX, totalY);\n }\n }\n }\n\n const text = componentData?.text;\n const solidLayerColor: IRColor | undefined =\n type === 'solid' ? (componentData?.spriteStartColor ?? [1, 1, 1, 1]) : undefined;\n\n const layer = {\n id: isIRId(itemId) ? itemId : createId(),\n ...(name != null && { name }),\n type,\n time,\n ...(layerEndBehavior != null && { endBehavior: layerEndBehavior }),\n visible,\n transform,\n localBounds,\n } as IRLayer;\n\n if (type === 'image' && componentData?.imageAssetId != null) {\n (layer as IRImageLayer).content = { assetId: componentData.imageAssetId };\n }\n if (solidLayerColor != null) {\n (layer as IRSolidLayer).content = { color: solidLayerColor };\n }\n if (type === 'text' && text != null) {\n (layer as IRTextLayer).content = text;\n }\n if (type === 'shape') {\n (layer as IRShapeLayer).content = { shapes: componentData?.shapes ?? [] };\n }\n if (type === 'particle' && componentData?.particle != null) {\n (layer as IRParticleLayer).content = componentData.particle;\n }\n if (componentData?.blendMode != null) {\n layer.blendMode = componentData.blendMode;\n }\n const GEComponentId = componentData?.GEComponentId;\n const rawMask = componentData?.rawMask;\n const sourceComponent = GEComponentId == null ? undefined : ctx.componentById.get(GEComponentId);\n const sourceRenderer = sourceComponent?.['renderer'];\n const renderer = isRecord(sourceRenderer) ? normalizeJSONValue(sourceRenderer) : undefined;\n\n if (renderer != null) {\n delete renderer['anchor'];\n delete renderer['blending'];\n delete renderer['texture'];\n }\n const geometry = sourceComponent?.['geometry'];\n const additionalComponentIds = Array.isArray(item['components']) ? item['components'].flatMap(reference => {\n const id = resolveDataPathId(reference);\n\n return id != null && id !== GEComponentId && ctx.componentById.has(id) ? [id] : [];\n }) : [];\n const componentTimeline = GEComponentId == null ? undefined : parseComponentTimeline(GEComponentId, ctx);\n const precompContent =\n GEType === ItemType.composition ? (item['content'] as Record<string, unknown> | undefined) : undefined;\n const precompReferenceId = isRecord(precompContent?.['options']) ? precompContent['options']['refId'] : undefined;\n const precompCompositionId = typeof precompReferenceId === 'string'\n ? ctx.compositionIdBySourceId.get(precompReferenceId)\n : undefined;\n\n if (type === 'precomp' && precompCompositionId == null) {\n return undefined;\n }\n\n if (type === 'precomp' && precompCompositionId != null) {\n const sourceStartFrame = typeof precompReferenceId === 'string'\n ? ctx.compositionStartFrameBySourceId.get(precompReferenceId)\n : undefined;\n\n const precompEndBehavior = mapEndBehaviorToIR(item['endBehavior'] as EndBehavior | undefined);\n\n (layer as Extract<IRLayer, { type: 'precomp' }>).content = {\n compositionId: precompCompositionId,\n clipToBounds: false,\n ...(precompEndBehavior != null && { endBehavior: precompEndBehavior }),\n };\n if (sourceStartFrame != null && sourceStartFrame !== 0) {\n (layer as Extract<IRLayer, { type: 'precomp' }>).time.sourceStartFrame = sourceStartFrame;\n }\n }\n\n const preservedData: EffectsLayerPreservedData = {\n sourceHierarchy: 'single-item',\n ...(additionalComponentIds.length > 0 && { additionalComponentIds }),\n ...(typeof item['duration'] === 'number' && Number.isFinite(item['duration']) && (\n item['duration'] !== duration || (typeof item['delay'] === 'number' && item['delay'] !== delay)\n ) && { itemTiming: { duration: item['duration'], delay: typeof item['delay'] === 'number' ? item['delay'] : 0 } }),\n ...(renderer != null && { renderer }),\n ...(isRecord(geometry) && { geometry: normalizeJSONValue(geometry) }),\n ...(componentTimeline != null && { componentTimeline }),\n sourceItemIds: [itemId],\n ...(itemAnchor != null && { itemAnchorById: { [itemId]: itemAnchor } }),\n ...(itemEulerHint != null && rawTransformPreservedData?.rotationOverLifetime != null && {\n itemEulerHintById: { [itemId]: itemEulerHint },\n }),\n ...(rawTransformPreservedData ?? {}),\n ...(rawColorOverLifetime != null && { colorOverLifetime: rawColorOverLifetime }),\n ...(type !== 'solid' && componentData?.spriteStartColor != null && {\n spriteStartColor: componentData.spriteStartColor,\n }),\n ...(componentData?.spriteTexture != null && { spriteTexture: componentData.spriteTexture }),\n ...(componentData?.spriteSplits != null && { spriteSplits: componentData.spriteSplits }),\n ...(componentData?.textureSheetAnimation != null && {\n textureSheetAnimation: componentData.textureSheetAnimation,\n }),\n ...(componentData?.textSizeMode != null && componentData.textSizeMode !== 'fixed' && {\n textSizeMode: componentData.textSizeMode,\n }),\n ...(GEComponentId != null && { sourceComponentId: GEComponentId }),\n ...(rawMask != null && { mask: rawMask }),\n ...(precompContent != null && { precompContent: normalizeJSONValue(precompContent) }),\n ...(componentData?.rawParticleContent != null && {\n particleContent: componentData.rawParticleContent,\n }),\n ...(timeline?.activationEndBehavior != null && {\n timelineEndBehavior: timeline.activationEndBehavior,\n }),\n };\n\n return { layer, preservedData };\n}\n\ninterface DerivedAnchorInfo {\n anchorX: number;\n anchorY: number;\n anchorOffsetX: number;\n anchorOffsetY: number;\n}\n\nexport function readItemSize(itemTransform: Record<string, unknown> | undefined): { 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 && typeof y === 'number' && Number.isFinite(y) && y !== 0\n ? { x, y }\n : undefined;\n}\n\nfunction readItemAnchor(itemTransform: Record<string, unknown> | undefined): [number, number] | undefined {\n const anchor = itemTransform?.['anchor'];\n\n if (!isRecord(anchor)) {\n return undefined;\n }\n\n const x = anchor['x'];\n const y = anchor['y'];\n\n if (typeof x !== 'number' || !Number.isFinite(x) || typeof y !== 'number' || !Number.isFinite(y)) {\n return undefined;\n }\n\n return Math.abs(x) > 1e-6 || Math.abs(y) > 1e-6 ? [x, y] : undefined;\n}\n\nfunction readItemEulerHint(itemTransform: Record<string, unknown> | undefined): [number, number, number] | undefined {\n const eulerHint = itemTransform?.['eulerHint'];\n\n if (!isRecord(eulerHint)) {\n return undefined;\n }\n\n const x = eulerHint['x'];\n const y = eulerHint['y'];\n const z = eulerHint['z'];\n\n if (\n typeof x !== 'number' || !Number.isFinite(x) ||\n typeof y !== 'number' || !Number.isFinite(y) ||\n typeof z !== 'number' || !Number.isFinite(z)\n ) {\n return undefined;\n }\n\n return Math.abs(x) > 1e-6 || Math.abs(y) > 1e-6 || Math.abs(z) > 1e-6 ? [x, y, z] : undefined;\n}\n\nfunction deriveAnchorFromScale(\n anchorScale: [number, number],\n bounds: NonNullable<IRLayer['localBounds']>,\n): DerivedAnchorInfo {\n const { x, y, width, height } = bounds;\n const localAnchorX = anchorScale[0] * width;\n const localAnchorY = anchorScale[1] * height;\n\n return {\n anchorX: x + localAnchorX,\n anchorY: y + localAnchorY,\n anchorOffsetX: -(localAnchorX - width / 2),\n anchorOffsetY: -(localAnchorY - height / 2),\n };\n}\n\nfunction subtractStaticPositionOffset(\n position: Extract<NonNullable<IRTransform['position']>, { type: 'static' }>,\n offsetX: number,\n offsetY: number,\n): Extract<NonNullable<IRTransform['position']>, { type: 'static' }> {\n return {\n type: 'static',\n value: [position.value[0] - offsetX, position.value[1] - offsetY, position.value[2] ?? 0],\n };\n}\n","// Restore cross-item layer structures after individual GE items are parsed.\nimport type { IRLayer } from '@vvfx/animation-ir';\nimport { DataType, EndBehavior, ItemType } from '@galacean/effects-specification';\nimport type { GESceneContext } from './types';\nimport type { EffectsLayerPreservedData } from '../preserved-data';\nimport { DEFAULT_CAMERA_Z, TEXT_WORLD_UNITS_PER_PIXEL } from '../common/coordinate-mapping';\nimport { resolveDataPathId } from '../common/data-path';\nimport { isRecord } from '../common/json-normalization';\nimport { readItemSize } from './parser/parse-item-layer';\nimport { parseTimeline } from './parser/timeline';\n\nexport interface RawLayerDescriptor {\n itemId: string;\n item: Record<string, unknown>;\n layer: IRLayer;\n preservedData: EffectsLayerPreservedData;\n}\n\nexport function mergeNullVisualPairs(descriptors: RawLayerDescriptor[], ctx: GESceneContext): 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 if (!hasNoComponents(descriptor.item) || !hasParentTransformSignal(descriptor, ctx)) {\n continue;\n }\n\n const pivotChildren = children.filter(child => {\n const childType = child.item['type'] as ItemType;\n const isVisual =\n childType === ItemType.sprite ||\n childType === ItemType.text ||\n childType === ItemType.shape ||\n childType === ItemType.particle;\n const sameName = (child.item['name'] as string) === (descriptor.item['name'] as string);\n const childTransform = isRecord(child.item['transform']) ? child.item['transform'] : undefined;\n\n return (\n isVisual &&\n sameName &&\n readItemSize(childTransform) != null &&\n hasVisualComponent(child, ctx) &&\n hasSplitPairTiming(descriptor, child, ctx) &&\n hasNoIndependentChildTransform(child, ctx)\n );\n });\n\n // Generated pivot children always have a positive display size. Authored Shape\n // hierarchies may use a zero-size same-name child and must remain separate.\n if (pivotChildren.length !== 1) {\n continue;\n }\n\n const sameNameChild = pivotChildren[0];\n\n mergedChildIds.add(sameNameChild.itemId);\n mergedDescriptorByParentId.set(descriptor.itemId, mergeNullAndVisual(descriptor, sameNameChild, ctx));\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 (\n dataType === DataType.SpriteComponent ||\n dataType === DataType.TextComponent ||\n dataType === DataType.ShapeComponent ||\n dataType === DataType.ParticleSystem\n );\n });\n}\n\nfunction hasSplitPairTiming(parent: RawLayerDescriptor, child: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const parentTimeline = parseTimeline(parent.itemId, ctx);\n const childTimeline = parseTimeline(child.itemId, ctx);\n const parentEndBehavior = parentTimeline?.activationEndBehavior ?? readItemEndBehavior(parent.item);\n const childEndBehavior = childTimeline?.activationEndBehavior ?? readItemEndBehavior(child.item);\n\n if (parentEndBehavior !== EndBehavior.freeze || !isSupportedEndBehavior(childEndBehavior)) {\n return false;\n }\n\n if (parentTimeline == null || childTimeline == null) {\n return true;\n }\n\n return (\n nearlyEqual(parentTimeline.delay ?? Number(parent.item['delay'] ?? 0),\n childTimeline.delay ?? Number(child.item['delay'] ?? 0)) &&\n nearlyEqual(parentTimeline.duration ?? Number(parent.item['duration'] ?? 0),\n childTimeline.duration ?? Number(child.item['duration'] ?? 0))\n );\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 (\n hasNonEmptyRecord(asset['positionOverLifetime']) ||\n hasNonEmptyRecord(asset['rotationOverLifetime']) ||\n hasNonEmptyRecord(asset['sizeOverLifetime'])\n );\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 isSupportedEndBehavior(endBehavior) ? endBehavior : undefined;\n}\n\nfunction isSupportedEndBehavior(endBehavior: unknown): endBehavior is EndBehavior {\n return endBehavior === EndBehavior.destroy ||\n endBehavior === EndBehavior.forward ||\n endBehavior === EndBehavior.freeze ||\n endBehavior === EndBehavior.restart;\n}\n\nfunction nearlyEqual(a: number, b: number): boolean {\n return Math.abs(a - b) < 1e-6;\n}\n\nfunction mergeNullAndVisual(\n nullDescriptor: RawLayerDescriptor,\n childDescriptor: RawLayerDescriptor,\n ctx: GESceneContext,\n): RawLayerDescriptor {\n const childLayer = childDescriptor.layer;\n const merged = {\n ...nullDescriptor.layer,\n type: childLayer.type,\n ...(childLayer.type === 'image' && { content: childLayer.content }),\n ...(childLayer.type === 'solid' && { content: childLayer.content }),\n ...(childLayer.type === 'text' && { content: childLayer.content }),\n ...(childLayer.type === 'shape' && { content: childLayer.content }),\n ...(childLayer.type === 'precomp' && { content: childLayer.content }),\n ...(childLayer.type === 'particle' && { content: childLayer.content }),\n } as IRLayer;\n\n if (childLayer.type === 'image' || childLayer.type === 'solid' || childLayer.type === 'particle') {\n // Display bounds belong to the visual child, never to its pivot Null parent.\n merged.localBounds = childLayer.localBounds;\n }\n merged.blendMode = childDescriptor.layer.blendMode;\n\n merged.visible = childDescriptor.layer.visible;\n if (childLayer.endBehavior == null) {\n delete merged.endBehavior;\n } else {\n merged.endBehavior = childLayer.endBehavior;\n }\n\n const childTransform = isRecord(childDescriptor.item['transform'])\n ? childDescriptor.item['transform']\n : undefined;\n const childPosition = childTransform?.['position'] as { x: number; y: number; z: number } | undefined;\n const childSize = readItemSize(childTransform);\n\n if (childPosition != null && childSize != null) {\n const sizeRatio = childLayer.type === 'text' && ctx.textScaleIncludesSize === false\n ? TEXT_WORLD_UNITS_PER_PIXEL\n : ctx.ratio;\n const layerWidth = childSize.x / sizeRatio;\n const layerHeight = childSize.y / sizeRatio;\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 = { type: 'static', 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 const preservedData: EffectsLayerPreservedData = {\n ...nullDescriptor.preservedData,\n ...childDescriptor.preservedData,\n sourceItemIds: [\n ...(nullDescriptor.preservedData.sourceItemIds ?? [nullDescriptor.itemId]),\n ...(childDescriptor.preservedData.sourceItemIds ?? [childDescriptor.itemId]),\n ],\n sourceHierarchy: 'null-sprite-pair',\n };\n\n return {\n itemId: nullDescriptor.itemId,\n item: nullDescriptor.item,\n layer: merged,\n preservedData,\n };\n}\n\nexport function resolveHierarchy(descriptors: RawLayerDescriptor[], ctx: GESceneContext): void {\n const layerIdByItemId = new Map<string, string>();\n const descriptorByItemId = new Map<string, RawLayerDescriptor>();\n\n for (const descriptor of descriptors) {\n layerIdByItemId.set(descriptor.itemId, descriptor.layer.id);\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 parentLayerId = layerIdByItemId.get(parentId);\n const parentDescriptor = descriptorByItemId.get(parentId);\n\n if (parentLayerId == null || parentDescriptor == null) {\n descriptor.preservedData.runtimeParentId = parentId;\n continue;\n }\n\n descriptor.layer.parentId = parentLayerId;\n\n const parentAnchor = getDescriptorAnchor(parentDescriptor);\n const position = descriptor.layer.transform?.position;\n\n if (position != null && position.type === 'static' && position.value != null) {\n const position2d = position.value;\n // Parenting offsets are world-space translations, outside the child perspective projection.\n const depthScale = (DEFAULT_CAMERA_Z - (position2d[2] ?? 0)) / DEFAULT_CAMERA_Z;\n const effectiveDepthScale = Math.abs(depthScale) > 1e-10 ? depthScale : 1;\n\n descriptor.layer.transform!.position = {\n type: 'static',\n value: [\n position2d[0] + (parentAnchor[0] - ctx.width / 2) / effectiveDepthScale,\n position2d[1] + (parentAnchor[1] - ctx.height / 2) / effectiveDepthScale,\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.type === 'static' && 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 { IRMaskMode, IRMatteMode, type IRLayer, type IRMask } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { DataType, ShapePrimitiveType } from '@galacean/effects-specification';\nimport { resolveDataPathId } from '../../common/data-path';\nimport { isRecord } from '../../common/json-normalization';\nimport type { RawLayerDescriptor } from '../post-process';\nimport type { GESceneContext } from '../types';\nimport { parseTimeline } from '../parser/timeline';\n\ninterface MaskTarget {\n descriptor: RawLayerDescriptor;\n ctx: GESceneContext;\n targetItemId: string;\n inverted: boolean;\n}\n\ninterface MaskOwner {\n descriptor: RawLayerDescriptor;\n ctx: GESceneContext;\n}\n\ninterface ParsedMaskSource {\n sourceItemId: string;\n path: IRMask['path'];\n}\n\ninterface ParsedGEMaskReference {\n componentId: string;\n inverted: boolean | undefined;\n}\n\nexport interface GEMaskNormalizationComposition {\n sourceCompositionId: string;\n ctx: GESceneContext;\n descriptors: RawLayerDescriptor[];\n}\n\n/** Normalize GE component mask references into Layer mattes or a strict cross-Composition path fallback. */\nexport function normalizeGEMasks(\n compositions: GEMaskNormalizationComposition[],\n diagnostics: ConversionDiagnostic[],\n): void {\n const ownerBySourceItemId = indexMaskOwnersBySourceItemId(compositions);\n const compositionByIRId = new Map(compositions.map(composition => [composition.ctx.irCompositionId, composition]));\n const targetsBySourceComponentId = new Map<string, MaskTarget[]>();\n\n for (const composition of compositions) {\n for (const descriptor of composition.descriptors) {\n const rawMask = descriptor.preservedData.mask;\n\n if (rawMask == null || rawMask['isMask'] === true) {\n continue;\n }\n const rawReferences = rawMask['references'];\n const references = readMaskReferences(rawMask);\n\n if ((Array.isArray(rawReferences) && rawReferences.length > 1) || references.length > 1) {\n diagnostics.push(createUnsupportedMaskDiagnostic(\n descriptor,\n 'GE_MULTIPLE_MASK_REFERENCES_UNSUPPORTED',\n 'multiple-mask-references',\n 'Multiple GE mask references were retained in GE preserved data but not normalized into V1 IR.',\n 'references',\n ));\n continue;\n }\n const sourceComponentId = references[0]?.componentId;\n const targetItemId = resolveTargetItemId(descriptor, composition.ctx);\n const inverted = references[0]?.inverted;\n\n if (\n sourceComponentId == null || targetItemId == null || inverted == null ||\n rawMask['alphaMaskEnabled'] === true\n ) {\n diagnostics.push(createUnsupportedMaskDiagnostic(\n descriptor,\n 'GE_MASK_UNSUPPORTED',\n 'single-mask-reference',\n 'The GE mask was retained in GE preserved data because its reference options cannot enter V1 IR.',\n ));\n continue;\n }\n const targets = targetsBySourceComponentId.get(sourceComponentId) ?? [];\n\n targets.push({ descriptor, ctx: composition.ctx, targetItemId, inverted });\n targetsBySourceComponentId.set(sourceComponentId, targets);\n }\n }\n\n const normalizedSourceItemIds = new Set<string>();\n\n for (const [sourceComponentId, targets] of targetsBySourceComponentId) {\n const targetContext = targets[0]?.ctx;\n const sourceComponent = targetContext?.componentById.get(sourceComponentId);\n const sourceItemId = resolveDataPathId(sourceComponent?.['item']);\n const sourceItem = sourceItemId == null ? undefined : targetContext?.itemById.get(sourceItemId);\n const sourceLayerOwner = sourceItemId == null ? undefined : ownerBySourceItemId.get(sourceItemId);\n const parentItemId = typeof sourceItem?.['parentId'] === 'string' ? sourceItem['parentId'] : undefined;\n const owner = parentItemId == null ? undefined : ownerBySourceItemId.get(parentItemId);\n const inversion = targets[0]?.inverted;\n const hasConflictingInversion = targets.some(target => target.inverted !== inversion);\n const sourceTargetsBelongToOwner = owner != null && targets.every(target =>\n target.ctx.irCompositionId === owner.ctx.irCompositionId\n ? isItemAtOrBelowOwner(target.targetItemId, owner.descriptor, target.ctx)\n : owner.descriptor.layer.type === 'precomp' && isCompositionReachable(\n owner.descriptor.layer.content.compositionId,\n target.ctx.irCompositionId,\n compositionByIRId,\n ),\n );\n const referencedComposition = owner?.descriptor.layer.type === 'precomp'\n ? compositionByIRId.get(owner.descriptor.layer.content.compositionId)\n : undefined;\n const maskRatio = referencedComposition?.ctx.ratio ?? owner?.ctx.ratio;\n const parsedSource = sourceComponent == null || sourceItemId == null || owner == null\n ? undefined\n : parseMaskSource(\n sourceComponent,\n sourceItemId,\n owner.descriptor.layer,\n owner.ctx,\n maskRatio,\n referencedComposition?.ctx,\n );\n\n // A single GE mask reference is semantically a Layer matte whenever source and\n // target can be represented as Layers in the same Composition. Preserve\n // that identity before considering a path-only cross-Composition fallback.\n if (normalizeLayerMatteSource(sourceComponent, sourceLayerOwner, targets)) {\n continue;\n }\n if (\n parsedSource != null &&\n !hasConflictingInversion &&\n sourceTargetsBelongToOwner &&\n owner != null &&\n (owner.descriptor.layer.masks?.length ?? 0) === 0\n ) {\n const normalizedMask: IRMask = {\n path: parsedSource.path,\n mode: IRMaskMode.Add,\n ...(inversion === true && { inverted: true }),\n };\n\n owner.descriptor.layer.masks = [normalizedMask];\n normalizedSourceItemIds.add(parsedSource.sourceItemId);\n\n for (const target of targets) {\n delete target.descriptor.preservedData.mask;\n }\n continue;\n }\n for (const target of targets) {\n diagnostics.push(createUnsupportedMaskDiagnostic(\n target.descriptor,\n 'GE_MASK_UNSUPPORTED',\n 'mask-source-geometry',\n 'The GE mask source was retained because it is neither one static path nor a supported Layer matte.',\n ));\n }\n }\n\n for (const composition of compositions) {\n composition.descriptors = composition.descriptors.filter(\n descriptor => !descriptorContainsAnyItem(descriptor, normalizedSourceItemIds),\n );\n }\n}\n\nfunction normalizeLayerMatteSource(\n sourceComponent: Record<string, unknown> | undefined,\n sourceLayerOwner: MaskOwner | undefined,\n targets: MaskTarget[],\n): boolean {\n const sourceMask = sourceComponent?.['mask'];\n\n if (\n sourceComponent == null ||\n !isRecord(sourceMask) ||\n sourceMask['isMask'] !== true ||\n sourceLayerOwner == null ||\n (sourceMask['alphaMaskEnabled'] !== undefined && typeof sourceMask['alphaMaskEnabled'] !== 'boolean')\n ) {\n return false;\n }\n const sourceLayerId = sourceLayerOwner.descriptor.layer.id;\n\n if (targets.some(target =>\n target.ctx.irCompositionId !== sourceLayerOwner.ctx.irCompositionId ||\n target.descriptor.layer.id === sourceLayerId ||\n target.descriptor.layer.matte != null,\n )) {\n return false;\n }\n const mode = sourceMask['alphaMaskEnabled'] === true ? IRMatteMode.Alpha : IRMatteMode.Geometry;\n\n for (const target of targets) {\n target.descriptor.layer.matte = {\n sourceLayerId,\n mode,\n ...(target.inverted && { inverted: true }),\n };\n delete target.descriptor.preservedData.mask;\n }\n delete sourceLayerOwner.descriptor.preservedData.mask;\n\n return true;\n}\n\nfunction indexMaskOwnersBySourceItemId(compositions: GEMaskNormalizationComposition[]): Map<string, MaskOwner> {\n const ownerBySourceItemId = new Map<string, MaskOwner>();\n\n for (const composition of compositions) {\n for (const descriptor of composition.descriptors) {\n for (const sourceItemId of descriptor.preservedData.sourceItemIds ?? [descriptor.itemId]) {\n ownerBySourceItemId.set(sourceItemId, { descriptor, ctx: composition.ctx });\n }\n }\n }\n\n return ownerBySourceItemId;\n}\n\nfunction readMaskReferences(mask: Record<string, unknown>): ParsedGEMaskReference[] {\n const references: ParsedGEMaskReference[] = [];\n\n if (Array.isArray(mask['references'])) {\n for (const reference of mask['references']) {\n if (!isRecord(reference)) {\n continue;\n }\n const referenceId = resolveDataPathId(reference['mask']);\n\n if (referenceId != null && !references.some(item => item.componentId === referenceId)) {\n references.push({ componentId: referenceId, inverted: readBoolean(reference['inverted']) });\n }\n }\n }\n\n return references;\n}\n\nfunction readBoolean(value: unknown): boolean | undefined {\n return value === undefined || value === false ? false : value === true ? true : undefined;\n}\n\nfunction resolveTargetItemId(descriptor: RawLayerDescriptor, ctx: GESceneContext): string | undefined {\n const sourceComponentId = descriptor.preservedData.sourceComponentId;\n const sourceComponent = sourceComponentId == null ? undefined : ctx.componentById.get(sourceComponentId);\n\n return resolveDataPathId(sourceComponent?.['item']) ?? descriptor.itemId;\n}\n\nfunction isItemAtOrBelowOwner(itemId: string, owner: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const ownerItemIds = new Set(owner.preservedData.sourceItemIds ?? [owner.itemId]);\n let currentItemId: string | undefined = itemId;\n const visited = new Set<string>();\n\n while (currentItemId != null && !visited.has(currentItemId)) {\n if (ownerItemIds.has(currentItemId)) {\n return true;\n }\n visited.add(currentItemId);\n const item = ctx.itemById.get(currentItemId);\n\n currentItemId = typeof item?.['parentId'] === 'string' ? item['parentId'] : undefined;\n }\n\n return false;\n}\n\nfunction isCompositionReachable(\n compositionId: string,\n targetCompositionId: string,\n compositionByIRId: ReadonlyMap<string, GEMaskNormalizationComposition>,\n visited = new Set<string>(),\n): boolean {\n if (compositionId === targetCompositionId) {\n return true;\n }\n if (visited.has(compositionId)) {\n return false;\n }\n visited.add(compositionId);\n const composition = compositionByIRId.get(compositionId);\n\n return composition?.descriptors.some(descriptor =>\n descriptor.layer.type === 'precomp' && isCompositionReachable(\n descriptor.layer.content.compositionId,\n targetCompositionId,\n compositionByIRId,\n visited,\n ),\n ) === true;\n}\n\nfunction parseMaskSource(\n sourceComponent: Record<string, unknown>,\n sourceItemId: string,\n ownerLayer: IRLayer,\n ctx: GESceneContext,\n ratio: number | undefined,\n referencedCtx: GESceneContext | undefined,\n): ParsedMaskSource | undefined {\n const sourceMask = sourceComponent['mask'];\n const sourceItem = ctx.itemById.get(sourceItemId);\n\n if (\n sourceComponent['dataType'] !== DataType.ShapeComponent ||\n !isRecord(sourceMask) ||\n sourceMask['isMask'] !== true ||\n sourceMask['alphaMaskEnabled'] === true ||\n sourceItem == null ||\n ratio == null ||\n typeof sourceItem['parentId'] !== 'string' ||\n !hasStaticIdentityMaskTransform(sourceItem) ||\n !hasMatchingMaskTiming(sourceItemId, sourceItem['parentId'], ctx)\n ) {\n return undefined;\n }\n const position = readVector2((sourceItem['transform'] as Record<string, unknown> | undefined)?.['position'], [0, 0]);\n\n if (position == null) {\n return undefined;\n }\n const coordinateOrigin = getMaskCoordinateOrigin(ownerLayer, referencedCtx);\n const centerX = coordinateOrigin[0] + position[0] / ratio;\n const centerY = coordinateOrigin[1] - position[1] / ratio;\n const path = parseMaskPath(sourceComponent, centerX, centerY, ratio);\n\n return path == null\n ? undefined\n : { sourceItemId, path };\n}\n\nfunction hasStaticIdentityMaskTransform(item: Record<string, unknown>): boolean {\n const transform = item['transform'];\n\n if (!isRecord(transform)) {\n return true;\n }\n\n return isMaskPlanePosition(transform['position']) &&\n isVector(transform['scale'], [1, 1, 1]) &&\n isVector(transform['eulerHint'], [0, 0, 0]) &&\n isVector(transform['anchor'], [0, 0]);\n}\n\nfunction isMaskPlanePosition(value: unknown): boolean {\n if (value === undefined) {\n return true;\n }\n if (!isRecord(value)) {\n return false;\n }\n const x = readFiniteNumber(value['x']);\n const y = readFiniteNumber(value['y']);\n const z = readFiniteNumber(value['z']) ?? 0;\n\n return x != null && y != null && nearlyEqual(z, 0);\n}\n\nfunction hasMatchingMaskTiming(sourceItemId: string, ownerItemId: string, ctx: GESceneContext): boolean {\n const sourceItem = ctx.itemById.get(sourceItemId);\n const ownerItem = ctx.itemById.get(ownerItemId);\n const sourceTimeline = parseTimeline(sourceItemId, ctx);\n const ownerTimeline = parseTimeline(ownerItemId, ctx);\n\n if (hasAnimationPayload(sourceTimeline?.transformAsset)) {\n return false;\n }\n const sourceDelay = sourceTimeline?.delay ?? readFiniteNumber(sourceItem?.['delay']) ?? 0;\n const ownerDelay = ownerTimeline?.delay ?? readFiniteNumber(ownerItem?.['delay']) ?? 0;\n const sourceDuration = sourceTimeline?.duration ?? readFiniteNumber(sourceItem?.['duration']) ?? 0;\n const ownerDuration = ownerTimeline?.duration ?? readFiniteNumber(ownerItem?.['duration']) ?? 0;\n\n return nearlyEqual(sourceDelay, ownerDelay) && nearlyEqual(sourceDuration, ownerDuration);\n}\n\nfunction hasAnimationPayload(value: Record<string, unknown> | undefined): boolean {\n return value != null && [\n value['positionOverLifetime'], value['rotationOverLifetime'], value['sizeOverLifetime'],\n ].some(entry => isRecord(entry) && Object.keys(entry).length > 0);\n}\n\nfunction getMaskCoordinateOrigin(layer: IRLayer, referencedCtx: GESceneContext | undefined): [number, number] {\n if (layer.type === 'precomp') {\n const bounds = layer.localBounds ?? (referencedCtx == null\n ? undefined\n : { x: 0, y: 0, width: referencedCtx.width, height: referencedCtx.height });\n\n if (bounds != null) {\n return [\n bounds.x + bounds.width / 2,\n bounds.y + bounds.height / 2,\n ];\n }\n }\n const anchor = layer.transform?.anchor?.value;\n\n return Array.isArray(anchor) && anchor.length >= 2 ? [anchor[0], anchor[1]] : [0, 0];\n}\n\nfunction parseMaskPath(\n component: Record<string, unknown>,\n centerX: number,\n centerY: number,\n ratio: number,\n): IRMask['path'] | undefined {\n if (component['type'] === ShapePrimitiveType.Rectangle) {\n return parseRectangleMaskPath(component, centerX, centerY, ratio);\n }\n if (component['type'] === ShapePrimitiveType.Custom) {\n return parseCustomMaskPath(component, centerX, centerY, ratio);\n }\n\n return undefined;\n}\n\nfunction parseRectangleMaskPath(\n component: Record<string, unknown>,\n centerX: number,\n centerY: number,\n ratio: number,\n): IRMask['path'] | undefined {\n const width = readFiniteNumber(component['width']);\n const height = readFiniteNumber(component['height']);\n const roundness = component['roundness'];\n\n if (width == null || height == null || width < 0 || height < 0 || roundness !== undefined && roundness !== 0) {\n return undefined;\n }\n const halfWidth = width / ratio / 2;\n const halfHeight = height / ratio / 2;\n const points = [\n { x: centerX - halfWidth, y: centerY - halfHeight },\n { x: centerX + halfWidth, y: centerY - halfHeight },\n { x: centerX + halfWidth, y: centerY + halfHeight },\n { x: centerX - halfWidth, y: centerY + halfHeight },\n ];\n const tangents = points.map(() => ({ x: 0, y: 0 }));\n\n return { points, inTangents: tangents, outTangents: tangents.map(tangent => ({ ...tangent })), closed: true };\n}\n\nfunction parseCustomMaskPath(\n component: Record<string, unknown>,\n centerX: number,\n centerY: number,\n ratio: number,\n): IRMask['path'] | undefined {\n const points = component['points'];\n const easingIns = component['easingIns'];\n const easingOuts = component['easingOuts'];\n const shapes = component['shapes'];\n\n if (!Array.isArray(points) || !Array.isArray(easingIns) || !Array.isArray(easingOuts) || !Array.isArray(shapes)) {\n return undefined;\n }\n if (shapes.length !== 1 || !isRecord(shapes[0]) || shapes[0]['close'] !== true) {\n return undefined;\n }\n const indexes = shapes[0]['indexes'];\n\n if (!Array.isArray(indexes) || indexes.length === 0) {\n return undefined;\n }\n const IRPoints: IRMask['path']['points'] = [];\n const IRInTangents: IRMask['path']['inTangents'] = [];\n const IROutTangents: IRMask['path']['outTangents'] = [];\n\n for (const index of indexes) {\n if (!isRecord(index)) {\n return undefined;\n }\n const point = readIndexedVector(points, index['point']);\n const easingIn = readIndexedVector(easingIns, index['easingIn']);\n const easingOut = readIndexedVector(easingOuts, index['easingOut']);\n\n if (point == null || easingIn == null || easingOut == null) {\n return undefined;\n }\n IRPoints.push({ x: centerX + point[0] / ratio, y: centerY - point[1] / ratio });\n IRInTangents.push({ x: easingIn[0] / ratio, y: -easingIn[1] / ratio });\n IROutTangents.push({ x: easingOut[0] / ratio, y: -easingOut[1] / ratio });\n }\n\n return { points: IRPoints, inTangents: IRInTangents, outTangents: IROutTangents, closed: true };\n}\n\nfunction readIndexedVector(values: unknown[], index: unknown): [number, number] | undefined {\n return Number.isInteger(index) && typeof index === 'number' ? readVector2(values[index]) : undefined;\n}\n\nfunction readVector2(value: unknown, fallback?: [number, number]): [number, number] | undefined {\n if (value === undefined) {\n return fallback;\n }\n if (!isRecord(value)) {\n return undefined;\n }\n const x = readFiniteNumber(value['x']);\n const y = readFiniteNumber(value['y']);\n\n return x == null || y == null ? undefined : [x, y];\n}\n\nfunction isVector(value: unknown, expected: [number, number] | [number, number, number]): boolean {\n if (value === undefined) {\n return true;\n }\n if (!isRecord(value)) {\n return false;\n }\n const keys = ['x', 'y', 'z'] as const;\n\n return expected.every((expectedValue, index) => {\n const valueAtAxis = value[keys[index]];\n\n return typeof valueAtAxis === 'number' && nearlyEqual(valueAtAxis, expectedValue);\n });\n}\n\nfunction readFiniteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction nearlyEqual(left: number, right: number): boolean {\n return Math.abs(left - right) <= 1e-6;\n}\n\nfunction descriptorContainsAnyItem(descriptor: RawLayerDescriptor, itemIds: ReadonlySet<string>): boolean {\n return (descriptor.preservedData.sourceItemIds ?? [descriptor.itemId]).some(itemId => itemIds.has(itemId));\n}\n\nfunction createUnsupportedMaskDiagnostic(\n descriptor: RawLayerDescriptor,\n code: string,\n feature: string,\n message: string,\n field?: string,\n): ConversionDiagnostic {\n const path = `$.components[item=${JSON.stringify(descriptor.itemId)}].mask`;\n\n return {\n code,\n severity: 'warning',\n action: 'unsupported',\n path: field == null ? path : `${path}.${field}`,\n sourceId: descriptor.layer.id,\n feature,\n message,\n };\n}\n","import {\n ANIMATION_IR_SCHEMA_VERSION, assertIRScene, isIRId, type IRComposition, type IRAsset, type IRScene,\n type IRFontAsset, type IRImageAsset,\n} from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { DataType, ItemType } from '@galacean/effects-specification';\nimport { assembleIRComposition } from './assemble';\nimport { extractGEParticleSourceData } from './extract-particle-source-data';\nimport { preserveSourceScene } from './preserve-scene';\nimport { resolveDataPathId } from '../common/data-path';\nimport { createId } from '../common/id';\nimport { buildSceneContext, getCompositionItemIds } from './parser/build-scene-context';\nimport { parseItemToLayer } from './parser/parse-item-layer';\nimport { mergeNullVisualPairs, resolveHierarchy, type RawLayerDescriptor } from './post-process';\nimport { normalizeGEMasks, type GEMaskNormalizationComposition } from './post-process/mask';\nimport type { GEAssetRegistry, GEToIROptions } from './types';\nimport type { GEToIRResult } from '../conversion';\nimport {\n GE_PRESERVED_DATA_VERSION, type GECompositionSourceBinding, type GEToIRPreservedData,\n} from '../preserved-data';\n\n/** Convert a GE scene to normalized IR plus adapter-owned preserved data. */\nexport function convertGEToIR(scene: Record<string, unknown>, options: GEToIROptions): GEToIRResult {\n const sourceCompositions = Array.isArray(scene['compositions'])\n ? scene['compositions'].filter(\n (value): value is Record<string, unknown> => value != null && typeof value === 'object' && !Array.isArray(value),\n )\n : [];\n const compositionIdBySourceId = new Map<string, string>();\n const compositionStartFrameBySourceId = new Map<string, number>();\n\n for (const [index, composition] of sourceCompositions.entries()) {\n const sourceId = typeof composition['id'] === 'string' ? composition['id'] : `composition-${index}`;\n const compositionId = isIRId(sourceId)\n ? sourceId\n : createId();\n const startTime = typeof composition['startTime'] === 'number' && Number.isFinite(composition['startTime'])\n ? composition['startTime']\n : 0;\n\n compositionIdBySourceId.set(sourceId, compositionId);\n compositionStartFrameBySourceId.set(sourceId, startTime * options.frameRate);\n }\n\n const diagnostics: ConversionDiagnostic[] = [];\n const compositions: IRComposition[] = [];\n const compositionBindings: Record<string, GECompositionSourceBinding> = {};\n const parsedCompositions: Array<GEMaskNormalizationComposition & {\n sourceItemOrder: string[]; runtimeItemIds: string[]; runtimeComponentIds: string[];\n }> = [];\n const assetRegistry: GEAssetRegistry = {\n imageAssetById: new Map<string, IRImageAsset>(),\n imageAssetIdBySourceId: new Map(),\n fontAssetById: new Map<string, IRFontAsset>(),\n fontAssetIdByIdentity: new Map(),\n };\n let shouldPreserveSourceScene = scene['renderSettings'] != null;\n\n for (const sourceComposition of sourceCompositions) {\n const sourceCompositionId = sourceComposition['id'];\n\n if (typeof sourceCompositionId !== 'string') {\n continue;\n }\n const ctx = buildSceneContext(\n scene,\n options,\n sourceCompositionId,\n compositionIdBySourceId,\n compositionStartFrameBySourceId,\n assetRegistry,\n diagnostics,\n );\n const itemIds = getCompositionItemIds(scene, sourceCompositionId);\n\n // Source Item types and referenced ParticleSystems cover unsupported items even when parsing yields no descriptor.\n shouldPreserveSourceScene ||= itemIds.some(\n itemId => {\n const item = ctx.itemById.get(itemId);\n const itemType = item?.['type'];\n\n return itemType === ItemType.composition || itemType === ItemType.particle ||\n referencesParticleSystem(item, ctx.componentById);\n },\n );\n const descriptors: RawLayerDescriptor[] = [];\n const runtimeItemIds: string[] = [];\n const runtimeComponentIds = Array.isArray(sourceComposition['components'])\n ? sourceComposition['components'].flatMap(reference => {\n const id = resolveDataPathId(reference);\n const component = id == null ? undefined : ctx.componentById.get(id);\n\n return id != null && component != null && component['dataType'] !== DataType.CompositionComponent ? [id] : [];\n })\n : [];\n\n // Resolved GE Items and IR layers both use back-to-front painter order.\n for (const itemId of itemIds) {\n const item = ctx.itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n const parsedLayer = parseItemToLayer(item, itemId, ctx);\n\n if (parsedLayer == null) {\n runtimeItemIds.push(itemId);\n diagnostics.push({\n code: 'GE_RUNTIME_ITEM_PRESERVED',\n severity: 'warning',\n action: 'unsupported',\n path: `$.items[id=${JSON.stringify(itemId)}]`,\n sourceId: itemId,\n feature: String(item['type'] ?? 'unknown-item-type'),\n message: `GE item '${itemId}' is retained in preservedData; its content is not editable through Animation IR.`,\n });\n continue;\n }\n descriptors.push({ itemId, item, ...parsedLayer });\n }\n // Parsed types catch ParticleSystem components attached to Items whose declared type is not Particle.\n shouldPreserveSourceScene ||= descriptors.some(descriptor =>\n descriptor.layer.type === 'particle' || descriptor.preservedData.geometry != null ||\n (descriptor.preservedData.additionalComponentIds?.length ?? 0) > 0,\n ) || runtimeItemIds.length > 0 || runtimeComponentIds.length > 0;\n\n const mergedDescriptors = mergeNullVisualPairs(descriptors, ctx);\n\n parsedCompositions.push({\n sourceCompositionId,\n sourceItemOrder: itemIds,\n runtimeItemIds,\n runtimeComponentIds,\n ctx,\n descriptors: mergedDescriptors,\n });\n }\n\n normalizeGEMasks(parsedCompositions, diagnostics);\n\n for (const { sourceCompositionId, sourceItemOrder, runtimeItemIds, runtimeComponentIds, ctx, descriptors }\n of parsedCompositions) {\n const layerDataById = Object.fromEntries(\n descriptors.map(descriptor => [descriptor.layer.id, descriptor.preservedData]),\n );\n\n resolveHierarchy(descriptors, ctx);\n compositionBindings[ctx.irCompositionId] = {\n sourceCompositionId,\n ...(ctx.camera != null && { camera: ctx.camera }),\n sourceItemOrder,\n ...(runtimeItemIds.length > 0 && { runtimeItemIds }),\n ...(runtimeComponentIds.length > 0 && { runtimeComponentIds }),\n layerDataById,\n };\n compositions.push(assembleIRComposition(descriptors.map(descriptor => descriptor.layer), ctx));\n }\n\n const sourceEntryCompositionId = scene['compositionId'];\n const entryCompositionId = typeof sourceEntryCompositionId === 'string'\n ? compositionIdBySourceId.get(sourceEntryCompositionId)\n : undefined;\n\n if (entryCompositionId == null) {\n throw new Error('[ge2ir] entry composition was not found');\n }\n const assets: IRAsset[] = [\n ...Array.from(assetRegistry.imageAssetById.values()),\n ...Array.from(assetRegistry.fontAssetById.values()),\n ];\n const irScene: IRScene = {\n format: 'animation-ir',\n schemaVersion: ANIMATION_IR_SCHEMA_VERSION,\n entryCompositionId,\n compositions,\n assets,\n };\n const preservedData: GEToIRPreservedData = {\n version: GE_PRESERVED_DATA_VERSION,\n ...(shouldPreserveSourceScene && { sourceScene: preserveSourceScene(scene, options.resourceBaseUrl) }),\n compositionBindings,\n particleSourceData: { particleEffectGroups: [], layers: [] },\n };\n\n assertIRScene(irScene);\n preservedData.particleSourceData = extractGEParticleSourceData(irScene, preservedData, diagnostics);\n\n return { scene: irScene, preservedData, diagnostics };\n}\n\nfunction referencesParticleSystem(\n item: Record<string, unknown> | undefined,\n componentById: ReadonlyMap<string, Record<string, unknown>>,\n): boolean {\n const componentReferences = item?.['components'];\n\n return Array.isArray(componentReferences) && componentReferences.some(reference => {\n const componentId = resolveDataPathId(reference);\n\n return componentId != null && componentById.get(componentId)?.['dataType'] === DataType.ParticleSystem;\n });\n}\n"],"names":["_type_of","obj","Symbol","_array_like_to_array","arr","len","length","i","arr2","Array","_unsupported_iterable_to_array","o","minLen","n","Object","prototype","toString","call","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","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","TEXT_WORLD_UNITS_PER_PIXEL","get2dTo3dRatio","width","height","ratio","Math","tan","PI","convert2dTo3dPoint","x","y","z","adaptRatioZ","offsetX","offsetY","convert3dTo2dPoint","effectiveRatio","abs","pixelX","pixelY","_extends","assign","target","arguments","source","key","hasOwnProperty","apply","OMIT","isRecord","normalizeJSONValue","normalized","normalize","path","inArray","undefined","Number","isFinite","is","map","item","index","normalizedItem","Reflect","getPrototypeOf","result","entries","GE_PRESERVED_DATA_VERSION","assertGEToIRPreservedDataMatchesScene","scene","preservedData","layerBinding","compositionById","particleLayer","get","irCompositionId","layers","find","layer","id","irLayerId","type","version","String","compositionBindings","sourceScene","assertGEParticleSourceData","particleSourceData","compositionIdSet","Set","compositions","composition","Map","sourceCompositionIdSet","compositionId","binding","has","field","ids","some","itemId","add","layerIdSet","layerId","layerData","assertEffectsLayerPreservedData","groupCompositionIdById","particleEffectGroups","group","isPositiveSize","isAuthoringBounds","set","layerIdsByComposition","sourceOrdersByGroup","referencedGroupIds","effectGroupId","isNonNegativeSafeInteger","groupCompositionId","compositionLayerIds","groupSourceOrders","keys","groupId","baseScale","axis","itemTiming","timeline","object","values","texture","additionalComponentIds","isGEEndBehavior","isNormalizedColor","split","isEffectsSpriteSplit","isEffectsTextureSheetAnimation","anchor","isItemAnchor","eulerHint","isItemEulerHint","destroy","forward","freeze","restart","every","isFiniteNumber","isPositiveSafeInteger","channel","isSafeInteger","entry","previewSize","toDataPath","buildSceneCollectionIndex","collection","entryById","resolveDataPath","collectionIndex","reference","resolveDataPathId","visitDataPathReferences","visit","visited","WeakSet","referenceId","KEYS_BY_INVALIDATION_TARGET","position","rotation","scale","color","opacity","asset","mask","precomp","particle","invalidateEffectsLayerPreservedData","layerDataById","removed","push","updateGEToIRPreservedData","baselineScene","updatedScene","options","baselineComposition","updatedComposition","updatedCompositionById","updatedPreservedData","retainedIds","baselineIds","filter","baselineIdSet","updatedIds","ownerByItemId","sourceItemIds","itemsByLayer","sourceItemOrder","owner","items","orderedItems","flatMap","updatedLayerById","baselineLayer","updatedLayer","invalidateChangedLayerData","structuredClone","reconcileParticleSourceData","particleLayerIdsByComposition","targets","collectChangedTransformTargets","isValueEqual","masks","matte","content","hasImageAssetChanged","assets","hasParticleBurstStructureChanged","removeParticleBurstOffsets","runtimeParentId","parentId","onChange","time","componentTimeline","changedType","changedContent","changedBounds","localBounds","changedTime","removedIds","objects","size","root","objectById","reachable","geometry","renderer","removedFields","reframePreservedAnimation","frameRate","data","baseline","updated","beforeFrameRate","afterFrameRate","transform","beforeStart","inFrame","afterStart","beforeDuration","outFrame","afterDuration","animations","positionOverLifetime","rotationOverLifetime","sizeOverLifetime","colorOverLifetime","animation","properties","expression","payload","isPath","BEZIER_CURVE_PATH","isBezier","BEZIER_CURVE","curve","LINE","GRADIENT_COLOR","timeScale","keyframe","coordinates","count","min","matchingUpdatedIndex","updatedBursts","findIndex","updatedBurst","updatedIndex","matchedUpdatedIndices","baselineBursts","baselineIndex","emission","bursts","particleContent","hasOwn","baselineTransform","updatedTransform","baselineAssets","updatedAssets","assetId","baselineAsset","updatedAsset","left","right","leftKeys","sort","rightKeys","FRAGMENT_COLLECTIONS","OPTIONAL_FRAGMENT_COLLECTIONS","buildParticleFragment","selection","compositionBinding","sourceCompositionId","sourceComposition","findComposition","components","readRequiredRecordArray","miscs","componentById","itemById","sourceRuntime","resolveCompositionRuntime","runtimeItemIds","readDataPathIds","runtimeItemIdSet","particleComponentIds","component","ParticleSystem","boundComponentIds","sourceComponentId","includes","nestedCompositionItem","readId","sourceRuntimeId","hasNestedCompositionComponent","CompositionComponent","selectParticleItems","retainedItemIds","ownedItemIds","retainedItemIdSet","includedComponents","includedComponentIds","include","includedItems","copy","null","assertDataPathList","missingComponentIds","join","compositionCopy","runtimeCopy","sourceSceneBindings","readOptionalRecordArray","sceneBindings","trackId","bindingTrackIds","timelineId","retainedMiscs","collectMiscClosure","fragmentScene","collectionName","readFragmentCollection","bindings","sourceOrder","particleItemByLayer","componentId","selectedItemId","defaultOwner","particleItemIds","retained","ancestors","current","readParentId","forEach","componentIds","matches","seeds","miscById","pending","seed","shift","misc","timelineCopy","sourceTimeline","label","createId","v4","replaceAll","mergePreservedResources","generated","asArray","mergeCollection","isExcludedCollectionEntry","excluded","mergeGEPlayerVersion","sourceCompositionIds","asRecordArray","collectRegeneratedGraphIds","collectionNames","REGENERATED_GRAPH_COLLECTIONS","REFERENCE_OWNER_COLLECTIONS","generatedScene","buildSourceGraphIndex","images","textures","collectSourceGraph","protectRetainedResourceReferences","itemIdsByParentId","buildItemIdsByParentId","collected","childId","collectNumericTextureSource","imageId","protectedResources","collectReferencedResources","textureId","delete","resources","collect","childIds","preserved","seen","collectionEntryKey","JSON","stringify","hostScene","hostPlayer","sourcePlayer","hostWeb","sourceWeb","compareNumericVersions","web","leftParts","Boolean","rightParts","max","difference","SOURCE_COLLECTIONS","ID_FIELDS","ID_MAP_FIELDS","namespaceParticleSource","input","idMap","collectSourceObjectIds","mappedIds","remapIds","fromEntries","appendParticleSourceResources","targetScene","bins","binOffset","normalizeTextureSources","rebaseBinaryPointers","existing","additions","image","offset","BINARY","pointer","isInteger","assembleSourcePreservedData","original","mappedBinding","sourceBinding","sourceHierarchy","instance","raw","groups","sourceIds","particles","selected","fragment","entryCompositionId","fragmentItems","reconciled","sources","hostBinding","roundNumber","precision","factor","round","lerp","a","b","appendTimelineTracks","collector","delay","duration","endBehavior","itemType","precompTimeOffset","objectBindingTrackId","childTrackIds","appendActivationTrack","appendTransformTrack","isPrecompItemType","sourceOffset","appendSubCompositionTrack","shouldAppendSpriteColorTrack","appendSpriteColorTrack","objectBindingTrack","dataType","ObjectBindingTrack","children","clips","sprite","text","shape","appendPlayableTrack","assetDataType","ActivationPlayableAsset","trackDataType","ActivationTrack","assetFields","TransformPlayableAsset","TransformTrack","startColor","SpriteColorPlayableAsset","SpriteColorTrack","SubCompositionPlayableAsset","SubCompositionTrack","spec","playableAsset","clip","start","track","restoreComponentTimelines","ir","itemBindings","remap","candidate","itemTrack","restoreRuntimeGraph","itemBinding","sourceById","sourceItems","sourceItemId","at","sourceTrack","sourceTrackByTarget","roots","primaryId","primaryType","primary","generatedComponents","originalTrack","generatedTrack","generatedTrackByTarget","records","sourceId","originalParent","parent","child","runtimeItems","additional","mapped","copied","componentOrder","uniqueReferences","mappedParent","allMiscs","generatedCompositions","runtimeComponentIds","runtime","sourceBindings","generatedBindings","sharedId","sharedResourceIds","mappedId","usedIds","extraBindings","remapReferences","allItems","localItemIds","localItems","order","generatedOrder","orderedGeneratedItems","generatedIndex","localById","sourceTimelineId","itemOrder","itemTrackOrder","tracks","itemTracks","itemTrackIndex","DEFAULT_PLAYER_VERSION","native","assembleGEScene","irScene","timing","timelineAssetId","timelineBindings","objectBindingTrackRefs","timelineAsset","TimelineAsset","compositionComponentId","compositionComponent","deriveDuration","startTime","inPoint","mapCompositionEndBehavior","camera","fov","far","near","clipMode","backgroundColor","colorToRoundedRgba","playerVersion","fonts","plugins","geometries","materials","shaders","outPoint","IREndBehavior","Loop","Continue","Freeze","Destroy","DEFAULT_OPACITY","multiplyOpacityProperties","cloneOpacityProperty","scaleOpacityProperty","frames","keyframes","frame","evaluateOpacityAtFrame","mapOpacityToReferencedComposition","referenced","parentFrameRate","referencedFrameRate","sourceStartFrame","stretch","mapFrame","isDefaultOpacity","endValue","hasAnimatedOpacity","resolved","last","hold","progress","buildCompositionGenerationPlan","diagnostics","getIRSceneEntryComposition","requests","precompOutputIdByLayerId","requestById","request","requestIndex","instanceOpacity","inheritedOpacity","referencedOpacity","requiresVariant","clipToBounds","outputId","variant","collectOpacityApproximationDiagnostic","hasAnimatedChildOpacity","code","severity","action","feature","message","collectPrecompExportDiagnostics","expectedSourceStartFrame","computeLayerTiming","compositionInPoint","rawDuration","layerDuration","DEFAULT_OUT_TANGENT","DEFAULT_IN_TANGENT","normalizeTime","frameTime","startFrame","endFrame","getScalarValue","dimensionIndex","convertIRScalarKeyframesToGE","property","timeContext","buildCurveForDimension","convertIRVectorKeyframesToGE","firstValue","dimensions","curves","convertIRPositionKeyframesToGE","normalizedTime","timingCurvePoints","outTangent","inTangent","nextKeyframe","startPosition","segmentEnd","pathPoints","outgoingControlPoint","incomingControlPoint","spatialOut","spatialIn","startX","startY","endX","endY","dz","controlPoints","nextStart","dimension","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","nextValue","firstTime","points","currentPoint","nextPoint","rotateAnchorOffsetForParentedVisual","layerType","hasParent","rotationZ","radians","cosine","cos","sine","sin","DEFAULT_LOCAL_BOUNDS","getLayerLocalBounds","fallback","estimatedWidth","estimateTextWidth","fontSize","letterSpacing","lineHeight","averageCharacterWidth","computeStaticPosition","ctx","anchorOffsetX","anchorOffsetY","positionValue","getStaticAnchor","getStaticScaleFromIR","applyScalePositionAdjust","bounds","computeScalePositionOffset","staticScale","anchorDiffX","anchorDiffY","computeAnchorInfo","localAnchorX","localAnchorY","anchorScaleX","anchorScaleY","getTimeContext","buildNormalizedTransformAnimation","buildPositionAnimation","buildRotationAnimation","buildSizeAnimation","positionResult","firstPathPoint","point3d","pathPoint","endPoint3d","controlPointPair","pathPointPair","firstControlPoint","secondControlPoint","curveData","easingData","keyframeValue","roundedPathPoints","roundPathPoint","roundedControlPoints","pathPayload","point","buildRotationAxis","hasX","hasY","hasZ","asRotation","axisCount","separateAxes","CONSTANT","axisHasRotationValue","buildConstantSizeAnimation","buildNormalizedColorAnimation","opacityValue","buildTransformAnimation","preservedPosition","preservedRotation","preservedSize","buildColorAnimation","preservedColor","normalizedLayer","_obj","GE_BLENDING_BY_IR_MODE","IRBlendMode","Normal","Multiply","MULTIPLY","Screen","Overlay","SUPERPOSITION","Darken","Lighten","BRIGHTNESS","ColorDodge","ColorBurn","HardLight","STRONG_LIGHT","SoftLight","WEAK_LIGHT","Difference","SUBTRACTION","Exclusion","Hue","Saturation","Color","Luminosity","Add","ADD","mapBlendModeToGE","blendMode","mapEndBehaviorToGE","GE_TIMELINE_ITEM_TYPE_BY_IR_LAYER_TYPE","solid","GE_VFX_ITEM_TYPE_BY_IR_LAYER_TYPE","mapLayerTypeToGETimelineItemType","mapLayerTypeToGEVFXItemType","isFiniteTuple","createPoint","createParsedKeyframe","holdIn","holdOut","parseBezierKeyframe","mark","inControl","outControl","HOLD","parseHoldKeyframe","LINE_OUT","parseBezierCurve","parsedKeyframes","parsed","parseLineCurve","parseHermiteCurve","progressDelta","parseGEParticleScalarExpression","parseScalarExpression","cropCurve","RANDOM","CURVE","pointValues","convertIRCurveKeyframeToGE","outgoingHold","convertIRParticleScalarExpressionToGE","boundary","Infinity","middle","interpolatePoint","control1","control2","low","high","iteration","t","c","d","e","splice","cropped","nearest","restoreGEParticleScalarExpression","resolveComponentId","copyPreservedMaskToComponent","preservedMask","restoreComponentRenderData","appendParticleComponent","preservedContent","rawOptions","rawEmission","rawRenderer","blending","resolveStaticParticleOpacity","removeInvalidBurstOffsets","maxParticles","startLifetime","rateOverTime","burst","frameOffset","cycles","cycleCount","interval","repeatIntervalFrames","scaleParticleStartColor","burstCount","preservedBursts","burstOffsets","isValidBurstOffset","RGBA_COLOR","isFiniteNumberTuple","scaleColorTuple","throwInvalidStartColor","isGradientStop","stop","scaleGradientStop","COLORS","registerTexture","imageUrl","cache","cacheKey","cached","url","flipY","Texture","dataPathRef","appendComponent","appendSpriteComponent","appendTextComponent","appendShapeComponent","spriteSplits","splits","copySpriteSplit","textureSheetAnimation","normalizedColor","spriteStartColor","textureDataPath","imageAsset","imageAssetById","textureUrl","getIRResourceSourceUrl","textureCache","spriteTexture","SpriteComponent","renderMode","MESH","isNonDefaultAnchor","textInfo","fontAsset","fontAssetById","fontAssetId","textColor","layerWidth","layerHeight","textWidth","textHeight","textSizeW","textSizeH","textSizeMode","TextComponent","fontFamily","family","fontWeight","mapFontWeightToGE","weight","textAlign","fontStyle","style","letterSpace","mapTextSizeModeToGE","sizeMode","autoResize","autoWidth","autoHeight","fixed","normal","bold","lighter","shapeData","shapes","ShapeComponent","buildShapeOptions","renderStyle","mapShapePrimitiveType","primitiveType","IRShapePrimitiveType","Custom","mapCustomPaths","customPaths","Rectangle","mapRectangleCornerRadiusToGERoundness","Ellipse","xRadius","yRadius","Polygon","pointCount","radius","roundness","Star","innerRadius","outerRadius","innerRoundness","outerRoundness","fills","strokes","fill","mapShapePaint","stroke","paint","strokeStyle","mapLineCap","cap","mapLineJoin","buildShapeRenderStyles","styles","previous","hasSameStrokeGeometry","maxRadius","cornerRadius","SHAPE_PRIMITIVE_TYPE_TO_GE","FILL_TYPE_TO_GE","IRPaintType","Solid","LinearGradient","GradientLinear","RadialGradient","GradientRadial","AngularGradient","GradientAngular","TEXTURE_SCALE_MODE_TO_GE","IRTextureScaleMode","Fill","Fit","Crop","Tile","LINE_CAP_TO_GE","IRLineCap","Butt","Round","Square","LINE_JOIN_TO_GE","IRLineJoin","Bevel","Miter","lineCap","lineJoin","colorToGE","gradientStops","startPoint","vec2ToGE","gradientStart","endPoint","gradientEnd","scaleMode","r","g","paths","easingIns","easingOuts","indexes","easingIn","inTangents","easingOut","outTangents","pointIndex","close","closed","resolveLayerGenerationStrategy","kind","needsPivotContainer","info","anchorScale","anchorOffset","anchorOffCenter","hasRotationAnimation","hasMultipleKeyframes","hasScaleAnimation","hasStaticTextRotation","hasNonZeroStaticValue","buildGETransform","resolveTransformBaseScale","base","transformBaseScale","resolveLayerEndBehavior","resolveTimelineEndBehavior","itemEndBehavior","timelineEndBehavior","createItemId","sourceIndex","resolvedIndex","resolvePreservedItemAnchor","itemAnchorById","resolvePreservedItemEulerHint","itemEulerHintById","appendNullLayer","itemAnchor","layerToItemId","layerToMaskParentItemId","layerToMaskCoordinateOrigin","VFXItemData","visible","renderLevel","BPlus","appendPrecompLayer","isTransformParent","parentLayerIdSet","referencedComposition","referencedRatio","fallbackBounds","hasAnchor","precompPosition","intrinsicScale","precompContent","referencedInPoint","outputCompositionId","buildPrecompContent","appendParentPrecompItems","compensateDepth","compensatedScale","layerTrackId","layerItem","compositionItemId","compositionTrackId","compositionItem","rawContent","refId","appendNullVisualPair","nullItemId","nullItemAnchor","nullAnimation","nullPosition","nullTrackId","nullItem","childItemId","centerX","centerY","childPosition","childColorAnimation","childTrackId","layerToComponentId","sizeRatio","textScale","childScale","childItem","appendParentLayer","appendVisualLayer","strategy","appendShapeLayerItems","colorAnimation","fullAnimation","rawPosition","timelineItemType","itemScale","basePosition","renderIndex","shapeIndex","renderStyles","styleIndex","currentRenderIndex","shapeItemId","shapeOffsetX","shapeOffsetY","shapePosition","shapeComponentId","shapeItem","applyParenting","layerById","parentLayer","parentItemId","parentAnchor","adjustX","adjustY","NUMERIC_EPSILON","CONTAINMENT_TOLERANCE","CURVE_FLATNESS","MAX_CURVE_DEPTH","buildRuntimeMaskGeometry","coordinateOrigin","effectiveInverted","mode","IRMaskMode","Subtract","inverted","convertPoint","convertVector","flattened","nextIndex","end","addPoints","flattenCubic","pointsEqual","pop","mapMaskGeometryIntoPrecomp","precompItem","animatedItemIds","chain","world","identityMatrix","multiplyMatrices","buildItemMatrix","inverse","invertMatrix","transformPoint","collectAnimatedTransformItemIds","childReferences","childReference","transformTrackHasAnimation","compareMaskContainment","sourceInsideExisting","containsPolygon","existingInsideSource","output","depth","isCubicFlat","startControl","midpoint","controls","controlEnd","leftControl","rightControl","center","distanceToLine","dx","dy","hypot","container","inner","pointInPolygonOrBoundary","isConvexPolygon","innerIndex","innerStart","innerEnd","outerIndex","outerStart","outerEnd","segmentsProperlyIntersect","direction","cross","orientation","currentDirection","sign","polygon","inside","pointOnSegment","crossesRay","firstStart","firstEnd","secondStart","secondEnd","firstSideStart","firstSideEnd","secondSideStart","secondSideEnd","tx","ty","angle","anchorX","anchorY","matrix","determinant","inverseDeterminant","assetReference","hasAnimationPayload","createRuntimeMaskState","references","applyMasks","_width","_height","lookup","runtimeMaskState","comp","resolvedMasks","resolveLayerMasks","layerItemId","getItemId","layerComponentId","getComponentId","maskParentItemId","getMaskParentItemId","maskRatio","resolveMaskCoordinateRatio","maskCoordinateOrigin","getMaskCoordinateOrigin","resolveMaskCoordinateOrigin","buildMaskForLayer","fallbackRatio","selectSupportedAuthoredMasks","buildClipMask","hasAdd","isForwardAdd","maskItemId","maskComponentId","maskBounds","getMaskBounds","maskPosX","cx","maskPosY","cy","maskDuration","layerIsParent","isParentLayer","descendantTargets","collectRendererDescendants","maskItem","maskComponent","isSimpleRectMask","strokeWidth","strokeCap","strokeJoin","isMask","alphaMaskEnabled","buildPolygonMaskComponent","sourceMeta","geometrySpaceId","resolveGEMaskInverted","appliedReferenceCount","appendRuntimeMaskReference","targetComponent","maskTrackId","existingMask","readMaskReferences","targetReferences","sharesGeometrySpace","containment","referenceIndex","stateIndex","indexOf","buildTargetMask","getDataPathId","normalizedExisting","targetParentId","componentRefs","componentReference","isMaskSourceComponent","computePointBounds","minX","minY","maxX","maxY","isZeroTangent","deltaX","deltaY","tangent","customPoints","customEasingIns","customEasingOuts","customIndexes","applyLayerMattes","IRMatteMode","Luminance","createMatteDiagnostic","resolveLayerComponent","sourceComponent","sourceLayerId","Alpha","sourceMask","canClaimMatteSource","applyGEMaskRemap","GEComponentIdToNewId","currentComponentIds","remappedReferences","oldId","newId","resolveCurrentComponentId","normalizeHierarchyActivationIntervals","transformParentChildItemIds","bindingByItemId","extendTransformParentActivations","effectiveDelayCache","getEffectiveDelay","sortedItems","topologicalSort","originalDelay","originalDuration","effectiveDelay","parentItem","parentDuration","isPrecompChild","newDuration","timeDiff","syncTimelineClips","activationIntervalByItemId","childInterval","currentChildItemId","currentChildItem","parentInterval","originalStart","originalEnd","newDelay","syncActivationClips","childRef","childTrack","sorted","trackType","applyPostProcess","state","maskLookup","geComponentIdToNewId","applyCrossCompositionMasks","generatedById","maskComponentIds","findLayerMaskComponentIds","applyAncestorMaskThroughNestedCompositions","ancestorIds","context","applyMaskToCompositionRenderers","readPrecompReferenceId","nested","componentRef","convertIRToGE","assertIRScene","convertIRToGEInternal","itemStartIndex","layersInLoweringOrder","reverse","collectDiagnostics","diagnosedCompositionIds","appendLayer","GEComponentId","generatedItems","restorePreservedItemOrder","itemLayerIds","fontAssets","fontURL","generationRequests","orderByItemId","fallbackOrder","orderByLayerId","firstOrderByLayerId","nextOrder","firstOrder","assembleIRComposition","compositionName","extractGEParticleSourceData","readRecordArray","collectReferencedParticleComponentIds","representedComponentIds","particleLayers","readPreviewSize","resolveParticleLayerSource","sourcePreviewSize","authoringBounds","unboundComponentIds","throwParticleSourceError","sourceItem","itemParticleComponentIds","isPositiveFiniteNumber","preserveSourceScene","resourceBaseUrl","resolveIRResourceUrl","IR_BLEND_MODE_BY_GE","mapBlendModeToIR","GECode","mapEndBehaviorToIR","GEBehavior","mapLayerTimingToIR","buildSceneContext","compositionIdBySourceId","compositionStartFrameBySourceId","assetRegistry","createGEAssetRegistry","Error","compositionStartTime","background","imageById","textureById","fontDefinitionByFamily","buildFontDefinitionIndex","itemIdToTrackId","buildSceneBindings","majorVersion","minorVersion","textScaleIncludesSize","imageAssetIdBySourceId","fontAssetIdByIdentity","font","trackIdByItemId","findCompositionComponent","componentReferences","getCompositionItemIds","toReversed","itemIdByTrackId","orderedIds","trackedIds","trackedIndex","itemReferences","itemReference","TIME_EPSILON","VALUE_EPSILON","inverseLerp","range","parseBezierKeyframes","extractedSegments","extractSegments","normalizeScalarSegments","firstSegment","secondSegment","hasPrependedHold","isHold","parseSegmentTangent","lastSegment","lastTime","lastValue","lastFrameTime","lastInTangent","isSupportedEaseCurve","nextEntry","nextType","nextData","expectedType","expectedLength","outTangentX","inTangentX","parsePositionTimingKeyframes","valueDomain","controlPointIndex","valueStart","valueEnd","POSITION_EPSILON","parseTransformAnimation","channels","positionAnimation","parsePositionAnimation","parseRotationAnimation","scaleAnimation","parseScaleAnimation","parseOpacityAnimation","parseScalarChannel","pathData","valueType","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","uniform","axes","toScaleAxis","animatedAxes","staticValue","scalarAnimationIsContinuous","scaleAnimationFramesAreAligned","template","segmentHandles","handles","resolveScaleSegmentHandles","readScaleAxisValue","constant","scalarValuesEqual","scaleSegmentHandlesEqual","bezierHandlesEqual","_object_without_properties_loose","sourceKeys","getOwnPropertyNames","propertyIsEnumerable","parseParticleComponent","maxCount","parsedBursts","parseParticleBursts","rawParticleContent","normalizedBurstRuntimeDefaults","normalizedRuntimeDefaults","parseLegacyParticleNumber","rawCycleCount","rawRepeatInterval","repeatIntervalSeconds","trim","parseComponent","orderedComponentIds","parseSpriteComponent","parseTextComponent","parseShapeComponent","parsedParticle","particleData","parseRendererLayerProperties","parseTextureSheetAnimation","parseSpriteTexture","rawMask","remaining","imageAssetId","parseSpriteSplits","rendererLayerProperties","resolveImageAssetIdFromTexture","isWhite","defaultAnchorScale","isSpriteSplit","row","col","total","animate","loop","readPositiveNumber","textAlignCode","normalizeFontAssetWeight","normalizeFontAssetStyle","registerFontAsset","textBounds","parseTextSizeMode","definition","rawUrl","createIRResourceSource","identity","existingId","parseShapeOptions","GEType","mapShapePrimitiveTypeToIR","GEFills","componentPath","parseShapePaint","GEStrokes","GEStrokeWidth","mapLineCapToIR","mapLineJoinToIR","parseCustomPaths","firstPath","readScaledNumber","readRectangleCornerRadius","readPointCount","readOptionalNumberField","GE_TO_SHAPE_PRIMITIVE_TYPE","typeMap","gradientStopsRaw","stops","readFinitePoint","mapTextureScaleModeToIR","lineCapByCode","lineJoinByCode","pathInTangents","pathOutTangents","pathIndex","percentage","textureReference","sourceReference","isIRId","textureData","imageData","parseTimeline","activationEndBehavior","transformAsset","spriteColorAsset","parseComponentTimeline","rootId","unsupported","parseStaticTransform","itemTransform","scaleValue","isDefault","parseItemToLayer","rawTransformPreservedData","componentData","layerEndBehavior","readItemAnchor","itemEulerHint","readItemEulerHint","itemSize","readItemSize","staticChannels","sourceScale","worldWidth","rawPositionOverLifetime","animationChannels","multiply","preservedTransformData","rawRotationOverLifetime","rawSizeOverLifetime","signs","reflect","rawColorOverLifetime","rawColor","anchorInfo","deriveAnchorFromScale","scaleX","scaleY","hasStaticScale","scaleAdjustX","scaleAdjustY","depthScale","effectiveDepthScale","totalX","totalY","subtractStaticPositionOffset","solidLayerColor","sourceRenderer","precompReferenceId","precompCompositionId","precompEndBehavior","mergeNullVisualPairs","descriptors","descriptor","isNullItem","childByParentId","hasNoComponents","hasParentTransformSignal","pivotChildren","childType","isVisual","sameName","childTransform","hasVisualComponent","hasSplitPairTiming","hasNoIndependentChildTransform","sameNameChild","mergedChildIds","mergedDescriptorByParentId","mergeNullAndVisual","merged","parentTimeline","childTimeline","parentEndBehavior","readItemEndBehavior","childEndBehavior","isSupportedEndBehavior","nearlyEqual","hasTransformPayload","hasNonDefaultScale","hasNonDefaultEulerHint","hasNonEmptyRecord","nullDescriptor","childDescriptor","childLayer","childSize","resolveHierarchy","layerIdByItemId","descriptorByItemId","parentLayerId","parentDescriptor","getDescriptorAnchor","normalizeGEMasks","targetContext","sourceLayerOwner","ownerBySourceItemId","inversion","hasConflictingInversion","sourceTargetsBelongToOwner","isItemAtOrBelowOwner","targetItemId","isCompositionReachable","compositionByIRId","parsedSource","parseMaskSource","normalizeLayerMatteSource","normalizedMask","normalizedSourceItemIds","createUnsupportedMaskDiagnostic","indexMaskOwnersBySourceItemId","targetsBySourceComponentId","rawReferences","resolveTargetItemId","descriptorContainsAnyItem","Geometry","readBoolean","ownerItemIds","currentItemId","targetCompositionId","ownerLayer","referencedCtx","hasStaticIdentityMaskTransform","hasMatchingMaskTiming","readVector2","parseMaskPath","isMaskPlanePosition","isVector","readFiniteNumber","ownerItemId","ownerTimeline","ownerItem","sourceDelay","ownerDelay","sourceDuration","ownerDuration","parseRectangleMaskPath","parseCustomMaskPath","halfWidth","halfHeight","tangents","IRPoints","IRInTangents","IROutTangents","readIndexedVector","expected","expectedValue","valueAtAxis","itemIds","convertGEToIR","shouldPreserveSourceScene","referencesParticleSystem","parsedLayer","mergedDescriptors","parsedCompositions","sourceCompositions","sourceEntryCompositionId","format","schemaVersion","ANIMATION_IR_SCHEMA_VERSION"],"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,26,72]}