@vvfx/ge-ir 0.0.1-beat.2 → 0.0.1-beta.10

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 (93) hide show
  1. package/README.md +288 -42
  2. package/dist/common/anchor-mapping.d.ts +3 -0
  3. package/dist/common/coordinate-mapping.d.ts +19 -0
  4. package/dist/common/data-path.d.ts +14 -0
  5. package/dist/common/id.d.ts +2 -0
  6. package/dist/common/json-normalization.d.ts +3 -0
  7. package/dist/common/math.d.ts +4 -0
  8. package/dist/common/particle-expression.d.ts +4 -0
  9. package/dist/conversion.d.ts +21 -0
  10. package/dist/ge2ir/assemble.d.ts +4 -0
  11. package/dist/ge2ir/convert.d.ts +4 -0
  12. package/dist/ge2ir/extract-particle-source-data.d.ts +5 -0
  13. package/dist/ge2ir/mapping.d.ts +5 -0
  14. package/dist/ge2ir/{parsers/animation-parser.d.ts → parser/animation.d.ts} +2 -2
  15. package/dist/ge2ir/parser/component.d.ts +22 -0
  16. package/dist/ge2ir/{parsers/keyframe-parser.d.ts → parser/keyframe.d.ts} +1 -1
  17. package/dist/ge2ir/parser/layer.d.ts +13 -0
  18. package/dist/ge2ir/parser/parse-particle-component.d.ts +7 -0
  19. package/dist/ge2ir/parser/scene.d.ts +4 -0
  20. package/dist/ge2ir/{parsers/timeline-parser.d.ts → parser/timeline.d.ts} +5 -3
  21. package/dist/ge2ir/parser/transform.d.ts +3 -0
  22. package/dist/ge2ir/post-process/mask.d.ts +10 -0
  23. package/dist/ge2ir/{merge/merge.d.ts → post-process.d.ts} +5 -3
  24. package/dist/ge2ir/types.d.ts +31 -11
  25. package/dist/index.d.ts +11 -17
  26. package/dist/index.js +10025 -4210
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +10022 -4191
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/ir2ge/assemble.d.ts +9 -0
  31. package/dist/ir2ge/convert.d.ts +9 -0
  32. package/dist/ir2ge/converter/animation.d.ts +5 -0
  33. package/dist/ir2ge/converter/bezier.d.ts +35 -0
  34. package/dist/ir2ge/converter/normalized-animation.d.ts +15 -0
  35. package/dist/ir2ge/converter/opacity.d.ts +8 -0
  36. package/dist/ir2ge/converter/precomp.d.ts +17 -0
  37. package/dist/ir2ge/converter/timing.d.ts +9 -0
  38. package/dist/ir2ge/converter/transform.d.ts +14 -0
  39. package/dist/ir2ge/generator/build-particle-component.d.ts +3 -0
  40. package/dist/ir2ge/generator/component-preservation.d.ts +5 -0
  41. package/dist/ir2ge/generator/component.d.ts +10 -0
  42. package/dist/ir2ge/generator/layer-strategy.d.ts +19 -0
  43. package/dist/ir2ge/generator/layer.d.ts +6 -0
  44. package/dist/ir2ge/generator/timeline.d.ts +8 -0
  45. package/dist/ir2ge/map-particle-layout-to-ge-transform.d.ts +30 -0
  46. package/dist/ir2ge/mapping.d.ts +6 -0
  47. package/dist/ir2ge/post-process/cross-composition-mask.d.ts +4 -0
  48. package/dist/ir2ge/post-process/ge-mask-remap.d.ts +3 -15
  49. package/dist/ir2ge/post-process/mask-geometry.d.ts +16 -0
  50. package/dist/ir2ge/post-process/mask.d.ts +29 -22
  51. package/dist/ir2ge/post-process/matte.d.ts +5 -0
  52. package/dist/ir2ge/post-process/merge-preserved-resources.d.ts +3 -0
  53. package/dist/ir2ge/post-process/parenting.d.ts +3 -3
  54. package/dist/ir2ge/post-process/pipeline.d.ts +25 -0
  55. package/dist/ir2ge/post-process/visibility.d.ts +14 -18
  56. package/dist/ir2ge/types.d.ts +55 -24
  57. package/dist/layer-preserved-data.d.ts +11 -0
  58. package/dist/particle/merge-particle-fragment.d.ts +12 -0
  59. package/dist/particle/merge-particle-scenes.d.ts +21 -0
  60. package/dist/particle/particle-fragment.d.ts +10 -0
  61. package/dist/preserved-data.d.ts +66 -0
  62. package/dist/update-preserved-data.d.ts +12 -0
  63. package/package.json +4 -4
  64. package/dist/ge2ir/converter.d.ts +0 -3
  65. package/dist/ge2ir/index.d.ts +0 -2
  66. package/dist/ge2ir/parsers/component-parser.d.ts +0 -16
  67. package/dist/ge2ir/parsers/transform-parser.d.ts +0 -3
  68. package/dist/ge2ir/pool/pool.d.ts +0 -4
  69. package/dist/ge2ir/reverse/blend-mode.d.ts +0 -2
  70. package/dist/ge2ir/reverse/coordinate.d.ts +0 -1
  71. package/dist/ge2ir/reverse/end-behavior.d.ts +0 -3
  72. package/dist/ge2ir/reverse/timing.d.ts +0 -2
  73. package/dist/ge2ir/scene-reader.d.ts +0 -3
  74. package/dist/ir2ge/assembly/generator.d.ts +0 -23
  75. package/dist/ir2ge/assembly/scene-assembly.d.ts +0 -11
  76. package/dist/ir2ge/builders/animation.d.ts +0 -4
  77. package/dist/ir2ge/builders/bezier.d.ts +0 -44
  78. package/dist/ir2ge/builders/component.d.ts +0 -13
  79. package/dist/ir2ge/builders/effects.d.ts +0 -9
  80. package/dist/ir2ge/builders/layer.d.ts +0 -5
  81. package/dist/ir2ge/builders/timeline.d.ts +0 -9
  82. package/dist/ir2ge/builders/timing.d.ts +0 -17
  83. package/dist/ir2ge/index.d.ts +0 -14
  84. package/dist/ir2ge/ir/anchor-strategy.d.ts +0 -24
  85. package/dist/ir2ge/ir/layer-dimensions.d.ts +0 -13
  86. package/dist/ir2ge/ir/layer-utils.d.ts +0 -14
  87. package/dist/ir2ge/ir/parent-link.d.ts +0 -15
  88. package/dist/ir2ge/ir/specific.d.ts +0 -14
  89. package/dist/ir2ge/post-process/index.d.ts +0 -31
  90. package/dist/ir2ge/utils.d.ts +0 -14
  91. package/dist/shared/coordinate.d.ts +0 -11
  92. package/dist/shared/ge2ir-metadata.d.ts +0 -17
  93. package/dist/shared/types.d.ts +0 -60
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_extends.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_array_like_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_unsupported_iterable_to_array.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_create_for_of_iterator_helper_loose.js","../src/shared/coordinate.ts","../src/ir2ge/utils.ts","../src/ir2ge/builders/timeline.ts","../src/ir2ge/builders/bezier.ts","../src/ir2ge/ir/parent-link.ts","../src/ir2ge/builders/timing.ts","../src/ir2ge/ir/layer-utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_type_of.js","../src/shared/ge2ir-metadata.ts","../src/ir2ge/builders/animation.ts","../src/ir2ge/builders/effects.ts","../src/ir2ge/ir/layer-dimensions.ts","../src/ir2ge/builders/component.ts","../src/ir2ge/ir/anchor-strategy.ts","../src/ir2ge/builders/layer.ts","../src/ir2ge/assembly/scene-assembly.ts","../src/ir2ge/post-process/parenting.ts","../src/ir2ge/post-process/mask.ts","../src/ir2ge/post-process/ge-mask-remap.ts","../src/ir2ge/post-process/visibility.ts","../src/ir2ge/post-process/index.ts","../src/ir2ge/assembly/generator.ts","../src/ge2ir/pool/pool.ts","../src/ge2ir/reverse/end-behavior.ts","../src/ge2ir/scene-reader.ts","../src/ge2ir/parsers/timeline-parser.ts","../src/ge2ir/reverse/coordinate.ts","../src/ge2ir/parsers/transform-parser.ts","../src/ge2ir/parsers/keyframe-parser.ts","../src/ge2ir/parsers/animation-parser.ts","../src/ge2ir/reverse/blend-mode.ts","../src/ge2ir/parsers/component-parser.ts","../src/ge2ir/reverse/timing.ts","../src/ge2ir/merge/merge.ts","../src/ge2ir/converter.ts","../src/ir2ge/ir/specific.ts"],"sourcesContent":["function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","function _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","export const DEFAULT_CAMERA_Z = 8;\nexport const DEFAULT_CAMERA_FOV = 60;\n\nexport const DEFAULT_CLIP_MODE = 1;\n\n/** 2D pixel space -> GE 3D world unit ratio for a given canvas size. */\nexport function get2dTo3dRatio (width: number, height: number): number {\n let ratio =\n (2 / height) * DEFAULT_CAMERA_Z * Math.tan((DEFAULT_CAMERA_FOV / 2) * (Math.PI / 180)) +\n 1e-6;\n\n if (DEFAULT_CLIP_MODE === 1) {\n ratio *= height / width;\n }\n\n return ratio;\n}\n\n/**\n * Convert a 2D point in canvas pixel space (origin top-left) to a GE 3D world\n * point (origin centered, Y flipped). The `z` parameter applies the GE camera\n * adapter to stay perspective-correct for non-zero Z layers.\n */\nexport function convert2dTo3dPoint (\n x: number,\n y: number,\n z: number,\n width: number,\n height: number,\n): [number, number, number] {\n const ratio = get2dTo3dRatio(width, height);\n const adaptRatioZ = (DEFAULT_CAMERA_Z - z) / DEFAULT_CAMERA_Z;\n const offsetX = (x - width / 2.0) * ratio * adaptRatioZ;\n const offsetY = (height / 2.0 - y) * ratio * adaptRatioZ;\n\n return [offsetX, offsetY, z];\n}\n","import { v4 } from 'uuid';\nimport type { DataPath } from '@galacean/effects-specification';\n\n// ── IDs ──\n\n/** Generate a 32-char hex GE entity id (UUID v4 with dashes stripped). */\nexport function createId (): string {\n return v4().replace(/-/g, '');\n}\n\n/** Wrap an id into a `{ id }` GE DataPath reference. */\nexport function toDataPath (id: string): DataPath {\n return { id };\n}\n\n// ── Numbers ──\n\n/** Round a number to the given decimal precision (default 4). */\nexport function roundNumber (value: number, precision = 4): number {\n const factor = 10 ** precision;\n\n return Math.round(value * factor) / factor;\n}\n\n/** Linear interpolation between `a` and `b` by `factor` ∈ [0, 1]. */\nexport function lerp (a: number, b: number, factor: number): number {\n return (1 - factor) * a + factor * b;\n}\n\n// ── Text metrics ──\n\n/**\n * Rough text width estimate used when the IR layer does not record a\n * measured width. Average character width ≈ 0.6 × fontSize.\n */\nexport function estimateTextWidth (text: string, fontSize: number, letterSpacing?: number): number {\n if (text.length === 0) {\n return 0;\n }\n\n const avgCharWidth = fontSize * 0.6;\n const spacing = (letterSpacing ?? 0) * (text.length - 1);\n\n return text.length * avgCharWidth + spacing;\n}\n","import type { DataPath, TimelineClipData } from '@galacean/effects-specification';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport type { ECSCollector, TransformAnimation } from '../types';\n\n/**\n * Build the ObjectBindingTrack + Activation/Transform/SpriteColor child tracks\n * for one VFX item. Shared by lottie2ge and dsl2ge generators.\n *\n * The SpriteColor track is omitted for null layers (itemType `'null'` or\n * the GE numeric code `'3'`).\n */\nexport function buildTimelineTracks (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n animation: TransformAnimation,\n itemType: string,\n): string {\n const objectBindingTrackId = createId();\n const childTrackIds: DataPath[] = [];\n\n childTrackIds.push(toDataPath(buildActivationTrack(collector, delay, duration, endBehavior)));\n childTrackIds.push(toDataPath(buildTransformTrack(collector, delay, duration, endBehavior, animation)));\n\n if (!isNullItemType(itemType)) {\n childTrackIds.push(toDataPath(buildSpriteColorTrack(collector, delay, duration, endBehavior, animation)));\n }\n\n collector.miscs.push({\n id: objectBindingTrackId,\n dataType: 'ObjectBindingTrack',\n children: childTrackIds,\n clips: [],\n });\n\n return objectBindingTrackId;\n}\n\nfunction isNullItemType (itemType: string): boolean {\n return itemType === 'null' || itemType === '3';\n}\n\nfunction buildActivationTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n): string {\n const assetId = createId();\n\n collector.miscs.push({ id: assetId, dataType: 'ActivationPlayableAsset' });\n\n const trackId = createId();\n const clip: TimelineClipData = {\n start: roundNumber(delay, 4),\n duration: roundNumber(duration, 4),\n endBehavior,\n asset: toDataPath(assetId),\n };\n\n collector.miscs.push({\n id: trackId,\n dataType: 'ActivationTrack',\n children: [],\n clips: [clip],\n });\n\n return trackId;\n}\n\nfunction buildTransformTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n animation: TransformAnimation,\n): string {\n const assetId = createId();\n const asset: Record<string, unknown> = {\n id: assetId,\n dataType: 'TransformPlayableAsset',\n positionOverLifetime: animation.positionOverLifetime ?? {},\n };\n\n if (animation.rotationOverLifetime != null) {\n asset['rotationOverLifetime'] = animation.rotationOverLifetime;\n }\n if (animation.sizeOverLifetime != null) {\n asset['sizeOverLifetime'] = animation.sizeOverLifetime;\n }\n collector.miscs.push(asset);\n\n const trackId = createId();\n\n collector.miscs.push({\n id: trackId,\n dataType: 'TransformTrack',\n children: [],\n clips: [{\n start: roundNumber(delay, 4),\n duration: roundNumber(duration, 4),\n endBehavior,\n asset: toDataPath(assetId),\n }],\n });\n\n return trackId;\n}\n\nfunction buildSpriteColorTrack (\n collector: ECSCollector,\n delay: number,\n duration: number,\n endBehavior: number,\n animation: TransformAnimation,\n): string {\n const assetId = createId();\n const asset: Record<string, unknown> = {\n id: assetId,\n dataType: 'SpriteColorPlayableAsset',\n startColor: [1, 1, 1, 1],\n };\n\n if (animation.colorOverLifetime != null) {\n asset['colorOverLifetime'] = animation.colorOverLifetime;\n }\n collector.miscs.push(asset);\n\n const trackId = createId();\n\n collector.miscs.push({\n id: trackId,\n dataType: 'SpriteColorTrack',\n children: [],\n clips: [{\n start: roundNumber(delay, 4),\n duration: roundNumber(duration, 4),\n endBehavior,\n asset: toDataPath(assetId),\n }],\n });\n\n return trackId;\n}\n","/**\n * Converts IR keyframe-based animation data to GE BezierKeyframeValue format.\n *\n * GE BezierKeyframeValue format per keyframe:\n * - First: [EASE_OUT(3), [t, v, out_cp_x, out_cp_y]]\n * - Middle: [EASE(1), [in_cp_x, in_cp_y, t, v, out_cp_x, out_cp_y]]\n * - Last: [EASE_IN(2), [in_cp_x, in_cp_y, t, v]]\n *\n * Time is normalized to [0, 1] based on the layer's visible frame range (ip → op).\n */\n\nimport type { IRAnimatedProperty, IRBezierHandle, IRKeyframe, IRVec3 } from '@vvfx/animation-ir';\nimport { type BezierKeyframeValue, BezierKeyframeType } from '@galacean/effects-specification';\nimport { lerp, roundNumber } from '../utils';\n\nexport interface IRToGETimeContext {\n /** Layer visible start frame. */\n startFrame: number;\n /** Layer visible end frame. */\n endFrame: number;\n}\n\nexport interface IRPositionGEResult {\n /** Timing curves in BezierKeyframeValue format (1D, time-domain only). */\n curves: BezierKeyframeValue[][];\n /** Path points per segment: [[start_x, start_y], [end_x, end_y]]. */\n pathPoints: [[number, number], [number, number]][];\n /** Spatial control points per segment: [[to_x, to_y], [ti_x, ti_y]]. */\n controlPoints: [[number, number], [number, number]][];\n}\n\nconst DEFAULT_OUT_TANGENT: IRBezierHandle = { x: 0.33, y: 0.33 };\nconst DEFAULT_IN_TANGENT: IRBezierHandle = { x: 0.67, y: 0.67 };\n\nfunction normalizeTime (frameTime: number, startFrame: number, endFrame: number): number {\n const frames = Math.max(1, endFrame - startFrame);\n\n return (frameTime - startFrame) / frames;\n}\n\nfunction getScalarValue (keyframe: IRKeyframe, dimensionIndex?: number): number {\n const value = keyframe.value;\n\n if (typeof value === 'number') {\n return value;\n }\n\n if (Array.isArray(value) && dimensionIndex != null) {\n return value[dimensionIndex] ?? 0;\n }\n\n return 0;\n}\n\n/**\n * Convert a 1D animated property (opacity / rotation) to GE BezierKeyframeValue[][].\n * Returns a single-element outer array with the full curve.\n */\nexport function irScalarKeyframesToGE (\n property: IRAnimatedProperty<number>,\n timeContext: IRToGETimeContext,\n): BezierKeyframeValue[][] | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const curve = buildCurveForDimension(property.keyframes, timeContext, undefined);\n\n return curve != null ? [curve] : undefined;\n}\n\n/**\n * Convert a multi-dimensional animated property (scale / anchor) to GE BezierKeyframeValue[][].\n * Returns one curve per dimension in the outer array.\n */\nexport function irVectorKeyframesToGE (\n property: IRAnimatedProperty<IRVec3>,\n timeContext: IRToGETimeContext,\n): BezierKeyframeValue[][] | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const firstValue = property.keyframes[0].value;\n const dimensions = Array.isArray(firstValue) ? firstValue.length : 1;\n const curves: BezierKeyframeValue[][] = [];\n\n for (let d = 0; d < dimensions; d++) {\n const curve = buildCurveForDimension(property.keyframes, timeContext, d);\n\n curves.push(curve ?? []);\n }\n\n return curves.length > 0 ? curves : undefined;\n}\n\n/**\n * Convert position keyframes to GE path animation format (pp/cp + timing curves).\n */\nexport function irPositionKeyframesToGE (\n property: IRAnimatedProperty<IRVec3>,\n timeContext: IRToGETimeContext,\n): IRPositionGEResult | undefined {\n if (!property.keyframed || property.keyframes == null || property.keyframes.length < 2) {\n return undefined;\n }\n\n const keyframes = property.keyframes;\n const pathPoints: [[number, number], [number, number]][] = [];\n const controlPoints: [[number, number], [number, number]][] = [];\n const timingCurvePoints: Array<{\n t: number;\n outTangent: IRBezierHandle;\n inTangent: IRBezierHandle;\n }> = [];\n\n for (let i = 0; i < keyframes.length; i++) {\n const kf = keyframes[i];\n const normalizedT = normalizeTime(kf.t, timeContext.startFrame, timeContext.endFrame);\n\n timingCurvePoints.push({\n t: normalizedT,\n outTangent: kf.outTangent ?? DEFAULT_OUT_TANGENT,\n inTangent: kf.inTangent ?? DEFAULT_IN_TANGENT,\n });\n\n if (i < keyframes.length - 1) {\n const nextKf = keyframes[i + 1];\n const startPos = kf.value ?? [0, 0, 0];\n // Lottie segment end value: kf.endValue is authoritative; falls back to kf.value (mirrors master's `e ?? s`).\n // nextKf.value is only used later in the path-fixup pass to stitch adjacent segments.\n const segmentEnd = kf.hold === true ? startPos : (kf.endValue ?? startPos);\n const stitchEnd = kf.hold === true ? startPos : (nextKf.value ?? [0, 0, 0]);\n\n pathPoints.push([\n [startPos[0] ?? 0, startPos[1] ?? 0],\n [stitchEnd[0] ?? 0, stitchEnd[1] ?? 0],\n ]);\n\n // Spatial control points (per IRKeyframe convention): outgoing CP from\n // kf[i].spatialOut, incoming CP from kf[i+1].spatialIn. Without explicit\n // spatial handles on either side, use linear one-third handles.\n let toPoint: [number, number];\n let tiPoint: [number, number];\n\n if (kf.spatialOut != null && nextKf.spatialIn != null) {\n toPoint = [kf.spatialOut[0] ?? 0, kf.spatialOut[1] ?? 0];\n tiPoint = [nextKf.spatialIn[0] ?? 0, nextKf.spatialIn[1] ?? 0];\n } else {\n const sx = startPos[0] ?? 0;\n const sy = startPos[1] ?? 0;\n const ex = segmentEnd[0] ?? 0;\n const ey = segmentEnd[1] ?? 0;\n\n toPoint = [-sx / 3 + ex / 3, -sy / 3 + ey / 3];\n tiPoint = [sx / 3 - ex / 3, sy / 3 - ey / 3];\n }\n controlPoints.push([toPoint, tiPoint]);\n }\n }\n\n // Fix up path points: adjacent segments should share endpoints\n for (let i = 0; i < pathPoints.length - 1; i++) {\n pathPoints[i][1] = pathPoints[i + 1][0];\n }\n\n // Prepend a static segment if the first keyframe doesn't start at t=0.\n // The bridge segment runs synthetic-at-t=0 → original-kf[0]; for it to be a\n // flat hold the END-side tangent (which `buildPositionTimingCurves` reads as\n // `next.inTangent`) must be {1, 1}. Override the original first kf's\n // inTangent before unshifting (its previous value was either DEFAULT, since\n // the IR convention leaves a first-kf inTangent undefined, or whatever the\n // producer set as a no-op).\n if (timingCurvePoints.length > 0 && timingCurvePoints[0].t > 0) {\n timingCurvePoints[0].inTangent = { x: 1, y: 1 };\n timingCurvePoints.unshift({\n t: 0,\n outTangent: { x: 0, y: 0 },\n inTangent: { x: 1, y: 1 },\n });\n pathPoints.unshift([pathPoints[0]?.[0] ?? [0, 0], pathPoints[0]?.[0] ?? [0, 0]]);\n controlPoints.unshift([[0, 0], [0, 0]]);\n }\n\n // Build timing-only bezier curves (in time-time domain)\n const timingCurves = buildPositionTimingCurves(timingCurvePoints);\n\n return {\n curves: timingCurves != null ? [timingCurves] : [[]],\n pathPoints,\n controlPoints,\n };\n}\n\n// ─── Internal helpers ───────────────────────────────────────\n\nfunction makeEaseOut (seg: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE_OUT, [\n roundNumber(seg[0], 4), roundNumber(seg[1], 4), roundNumber(seg[2], 4), roundNumber(seg[3], 4),\n ], BezierKeyframeType.EASE_OUT] as BezierKeyframeValue;\n}\n\nfunction makeEaseIn (prevSeg: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE_IN, [\n roundNumber(prevSeg[4], 4), roundNumber(prevSeg[5], 4), roundNumber(prevSeg[6], 4), roundNumber(prevSeg[7], 4),\n ], BezierKeyframeType.EASE_IN] as BezierKeyframeValue;\n}\n\nfunction makeEase (prevSeg: number[], currSeg: number[]): BezierKeyframeValue {\n return [BezierKeyframeType.EASE, [\n roundNumber(prevSeg[4], 4), roundNumber(prevSeg[5], 4), roundNumber(prevSeg[6], 4), roundNumber(prevSeg[7], 4),\n roundNumber(currSeg[2], 4), roundNumber(currSeg[3], 4),\n ], BezierKeyframeType.EASE] as BezierKeyframeValue;\n}\n\nfunction buildCurveForDimension (\n keyframes: IRKeyframe[],\n timeContext: IRToGETimeContext,\n dimensionIndex: number | undefined,\n): BezierKeyframeValue[] | undefined {\n if (keyframes.length < 2) {\n return undefined;\n }\n\n // Build intermediate bezier representation\n const bezierCurves: number[][] = [];\n\n for (let i = 0; i < keyframes.length - 1; i++) {\n const kf = keyframes[i];\n const nextKf = keyframes[i + 1];\n const t0 = normalizeTime(kf.t, timeContext.startFrame, timeContext.endFrame);\n const t1 = normalizeTime(nextKf.t, timeContext.startFrame, timeContext.endFrame);\n const v0 = getScalarValue(kf, dimensionIndex);\n const v1 = kf.hold === true ? v0 : getScalarValue(nextKf, dimensionIndex);\n const outHandle = kf.hold === true\n ? { x: 0, y: 0 }\n : (kf.outTangent ?? DEFAULT_OUT_TANGENT);\n // Per IR convention, the incoming tangent for segment i lives on kf[i+1].\n const inHandle = kf.hold === true\n ? { x: 1, y: 1 }\n : (nextKf.inTangent ?? DEFAULT_IN_TANGENT);\n\n const outCpX = lerp(t0, t1, outHandle.x);\n const outCpY = lerp(v0, v1, outHandle.y);\n const inCpX = lerp(t0, t1, inHandle.x);\n const inCpY = lerp(v0, v1, inHandle.y);\n\n bezierCurves.push([\n t0, v0,\n outCpX, outCpY,\n inCpX, inCpY,\n t1, v1,\n ]);\n }\n\n if (bezierCurves.length === 0) {\n return undefined;\n }\n\n // Prepend a hold segment if first keyframe is not at t=0\n const firstT = bezierCurves[0][0];\n\n if (firstT > 0) {\n const firstV = bezierCurves[0][1];\n\n bezierCurves.unshift([0, firstV, 0, firstV, firstT, firstV, firstT, firstV]);\n }\n\n // Convert to GE BezierKeyframeValue format\n const result: BezierKeyframeValue[] = [];\n const totalPoints = bezierCurves.length + 1;\n\n for (let i = 0; i < totalPoints; i++) {\n if (i === 0) {\n result.push(makeEaseOut(bezierCurves[0]));\n } else if (i === totalPoints - 1) {\n result.push(makeEaseIn(bezierCurves[i - 1]));\n } else {\n result.push(makeEase(bezierCurves[i - 1], bezierCurves[i]));\n }\n }\n\n return result;\n}\n\nfunction buildPositionTimingCurves (\n points: Array<{ t: number; outTangent: IRBezierHandle; inTangent: IRBezierHandle }>,\n): BezierKeyframeValue[] | undefined {\n if (points.length < 2) {\n return undefined;\n }\n\n // For position, the bezier curve is in time-time domain\n const bezierCurves: number[][] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const current = points[i];\n const next = points[i + 1];\n const t0 = current.t;\n const t1 = next.t;\n const outCpX = lerp(t0, t1, current.outTangent.x);\n const outCpY = lerp(t0, t1, current.outTangent.y);\n // Per IR convention: incoming tangent for segment current→next sits on next.\n const inCpX = lerp(t0, t1, next.inTangent.x);\n const inCpY = lerp(t0, t1, next.inTangent.y);\n\n bezierCurves.push([t0, t0, outCpX, outCpY, inCpX, inCpY, t1, t1]);\n }\n\n if (bezierCurves.length === 0) {\n return undefined;\n }\n\n const result: BezierKeyframeValue[] = [];\n const totalPoints = bezierCurves.length + 1;\n\n for (let i = 0; i < totalPoints; i++) {\n if (i === 0) {\n result.push(makeEaseOut(bezierCurves[0]));\n } else if (i === totalPoints - 1) {\n result.push(makeEaseIn(bezierCurves[i - 1]));\n } else {\n result.push(makeEase(bezierCurves[i - 1], bezierCurves[i]));\n }\n }\n\n return result;\n}\n\n/**\n * Determine if a property has enough keyframes to warrant keyframe mode (pkf/skf/rkf/okf).\n */\nexport function shouldUseKeyframeMode (property: IRAnimatedProperty): boolean {\n return property.keyframed === true\n && property.keyframes != null\n && property.keyframes.length > 12;\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\n\n/**\n * True when the layer's parent only inherits transform — visibility and\n * lifetime are independent of the parent's window.\n *\n * Reads `IRLayerReference.linkKind` directly. Producers that don't set the\n * field (e.g. dsl2ge) effectively get `false` here, which is the correct\n * default for \"full\" parent containment.\n *\n * Lottie's parser sets `linkKind: 'transform-only'` when a child's parent\n * relationship comes from `layer.parent` rather than precomp expansion;\n * `applyPostProcess` consumes this to decide whether to advance the parent's\n * activation track when the child starts earlier.\n */\nexport function isTransformOnlyParentLink (layer: IRLayerNode): boolean {\n return layer.parent?.linkKind === 'transform-only';\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport { roundNumber } from '../utils';\n\n/**\n * Map an IR layer's time range to GE delay/duration in seconds, applying\n * the time-stretch and offset semantics from `IRTimeContext`.\n *\n * dsl-source IRs leave `stretch` and `offsetFrame` undefined, in which case\n * this collapses to `delay = startFrame / fr` and\n * `duration = (endFrame - startFrame) / fr` — exactly what dsl2ge used to\n * compute inline.\n *\n * Zero/negative durations are clamped to a 0.0001 epsilon so GE keeps the\n * activation track alive for the (degenerate) layer.\n */\nexport function computeLayerTiming (layer: IRLayerNode, frameRate: number): { delay: number; layerDuration: number } {\n const time = layer.time;\n const stretch = time.stretch ?? 1;\n const offsetFrame = time.offsetFrame ?? 0;\n\n const delay = roundNumber((offsetFrame + time.startFrame * stretch) / frameRate, 4);\n const rawDuration = (time.endFrame - time.startFrame) * stretch / frameRate;\n const layerDuration = rawDuration > 0 ? roundNumber(rawDuration, 4) : 0.0001;\n\n return { delay, layerDuration };\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport type { IRToGETimeContext } from '../builders/bezier';\nimport { convert2dTo3dPoint } from '../../shared/coordinate';\nimport type { LayerProcessingContext } from '../types';\nimport { isTransformOnlyParentLink } from './parent-link';\n\nexport { computeLayerTiming } from '../builders/timing';\n\nexport function computeStaticPosition (\n layer: IRLayerNode,\n ctx: LayerProcessingContext,\n anchorOffsetX = 0,\n anchorOffsetY = 0,\n): [number, number, number] {\n const transform = layer.transform;\n\n if (transform?.position?.keyframed) {\n return convert2dTo3dPoint(\n ctx.width / 2 + anchorOffsetX,\n ctx.height / 2 + anchorOffsetY,\n 0, ctx.width, ctx.height,\n );\n }\n\n const isNullType = layer.type === 'null' || layer.type === 'precomp';\n\n if (transform?.position != null && Array.isArray(transform.position.value)) {\n const pos = transform.position.value;\n\n return convert2dTo3dPoint(\n (pos[0] ?? 0) + anchorOffsetX,\n (pos[1] ?? 0) + anchorOffsetY,\n isNullType ? 0 : (pos[2] ?? 0),\n ctx.width, ctx.height,\n );\n }\n\n return convert2dTo3dPoint(\n ctx.width / 2 + anchorOffsetX,\n ctx.height / 2 + anchorOffsetY,\n 0, ctx.width, ctx.height,\n );\n}\n\nexport function getStaticAnchor (layer: IRLayerNode): [number, number] {\n const anchor = layer.transform?.anchor;\n\n if (anchor != null && !anchor.keyframed && Array.isArray(anchor.value) && anchor.value.length >= 2) {\n return [anchor.value[0], anchor.value[1]];\n }\n\n if (anchor?.keyframed && anchor.keyframes != null && anchor.keyframes.length > 0) {\n const firstVal = anchor.keyframes[0].value;\n\n if (Array.isArray(firstVal) && firstVal.length >= 2) {\n return [firstVal[0], firstVal[1]];\n }\n }\n\n return [0, 0];\n}\n\nfunction getStaticScaleFromIR (layer: IRLayerNode): [number, number] {\n const scale = layer.transform?.scale;\n\n if (scale == null || scale.keyframed) {\n return [1, 1];\n }\n const value = scale.value;\n\n if (!Array.isArray(value)) {\n return [1, 1];\n }\n\n return [value[0] ?? 1, value[1] ?? 1];\n}\n\nexport function applyScalePositionAdjust (\n position: [number, number, number],\n layer: IRLayerNode,\n layerWidth: number,\n layerHeight: number,\n ratio: number,\n): [number, number, number] {\n const staticScale = getStaticScaleFromIR(layer);\n\n if ((staticScale[0] === 1 && staticScale[1] === 1) || layerWidth <= 0 || layerHeight <= 0) {\n return position;\n }\n\n const anchor = getStaticAnchor(layer);\n const anchorDiffX = anchor[0] - layerWidth / 2;\n const anchorDiffY = anchor[1] - layerHeight / 2;\n\n if (Math.abs(anchorDiffX) <= 0.5 && Math.abs(anchorDiffY) <= 0.5) {\n return position;\n }\n\n return [\n position[0] + anchorDiffX * (1 - staticScale[0]) * ratio,\n position[1] - anchorDiffY * (1 - staticScale[1]) * ratio,\n position[2],\n ];\n}\n\nexport function computeAnchorInfo (\n layer: IRLayerNode,\n layerWidth: number,\n layerHeight: number,\n): { anchorScaleX: number; anchorScaleY: number; anchorOffsetX: number; anchorOffsetY: number } {\n const anchor = getStaticAnchor(layer);\n let anchorScaleX = 0.5;\n let anchorScaleY = 0.5;\n let anchorOffsetX = 0;\n let anchorOffsetY = 0;\n\n if (layerWidth > 0 && layerHeight > 0) {\n anchorScaleX = anchor[0] / layerWidth;\n anchorScaleY = anchor[1] / layerHeight;\n anchorOffsetX = -(anchor[0] - layerWidth / 2);\n anchorOffsetY = -(anchor[1] - layerHeight / 2);\n }\n\n if (layer.type === 'text' && layer.text != null && layerWidth > 0 && layerHeight > 0) {\n if (layer.text.anchorAdjust === true) {\n if (layer.text.textAlign === 'left') {\n anchorOffsetX = -(anchor[0] - layerWidth / 2);\n anchorScaleX = anchor[0] / layerWidth - 0.5;\n }\n if (layer.text.textAlign === 'center') {\n anchorOffsetX = -anchor[0];\n anchorScaleX = anchor[0] / layerWidth + 0.5;\n }\n if (layer.text.textAlign === 'right') {\n anchorOffsetX = -(anchor[0] + layerWidth / 2);\n anchorScaleX = anchor[0] / layerWidth + 1.5;\n }\n // GE renders glyphs in the lower half of the quad, so offset by half the\n // layer height to align the visible text center with Lottie's anchor.\n const textHeight = layerHeight / 2;\n\n anchorOffsetY = -(anchor[1] + textHeight);\n anchorScaleY = -anchor[1] / textHeight;\n }\n }\n\n const isSpriteForAnchor = layer.type === 'image' || layer.type === 'solid';\n const staticRotationZ = getStaticRotationZ(layer);\n const hasStaticRotation = staticRotationZ != null;\n\n if (\n isSpriteForAnchor\n && hasStaticRotation\n && isTransformOnlyParentLink(layer)\n && (anchorOffsetX !== 0 || anchorOffsetY !== 0)\n ) {\n const rotValue = staticRotationZ ?? 0;\n\n if (rotValue !== 0) {\n const rad = rotValue * Math.PI / 180;\n const cosR = Math.cos(rad);\n const sinR = Math.sin(rad);\n const rotatedX = anchorOffsetX * cosR - anchorOffsetY * sinR;\n const rotatedY = anchorOffsetX * sinR + anchorOffsetY * cosR;\n\n anchorOffsetX = rotatedX;\n anchorOffsetY = rotatedY;\n }\n }\n\n return { anchorScaleX, anchorScaleY, anchorOffsetX, anchorOffsetY };\n}\n\nfunction getStaticRotationZ (layer: IRLayerNode): number | undefined {\n const rotation = layer.transform?.rotation;\n\n if (rotation != null && !rotation.keyframed && Array.isArray(rotation.value)) {\n return rotation.value[2] ?? 0;\n }\n\n const separatedRotationZ = layer.transform?.separatedRotation?.z;\n\n if (separatedRotationZ != null && !separatedRotationZ.keyframed && typeof separatedRotationZ.value === 'number') {\n return separatedRotationZ.value;\n }\n\n return undefined;\n}\n\nexport function getTimeContext (layer: IRLayerNode): IRToGETimeContext {\n return {\n startFrame: layer.time.startFrame,\n endFrame: layer.time.endFrame,\n };\n}\n","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","import type { IRComposition, IRLayerNode } from '@vvfx/animation-ir';\n\n/**\n * Round-trip passthrough contract written by ge2ir and consumed by ir2ge.\n *\n * Supported keys:\n * positionOverLifetime, rotationOverLifetime, sizeOverLifetime,\n * colorOverLifetime, geComponentId, geMask.\n */\nexport interface GE2IRPassthroughMetadata {\n positionOverLifetime?: Record<string, unknown>;\n rotationOverLifetime?: Record<string, unknown>;\n sizeOverLifetime?: Record<string, unknown>;\n colorOverLifetime?: Record<string, unknown>;\n geComponentId?: string;\n geMask?: Record<string, unknown>;\n}\n\nexport function readGE2IRMetadata (\n ir: IRComposition,\n layer: IRLayerNode,\n): GE2IRPassthroughMetadata | undefined {\n if (ir.source !== 'ge') {\n return undefined;\n }\n\n const metadata = layer.metadata;\n\n if (metadata == null) {\n return undefined;\n }\n\n const namespaced = metadata['ge2ir'];\n\n if (isRecord(namespaced)) {\n return namespaced as GE2IRPassthroughMetadata;\n }\n\n const legacy = readLegacyGE2IRMetadata(metadata);\n\n return Object.keys(legacy).length > 0 ? legacy : undefined;\n}\n\nfunction readLegacyGE2IRMetadata (metadata: Record<string, unknown>): GE2IRPassthroughMetadata {\n const legacy: GE2IRPassthroughMetadata = {};\n const positionOverLifetime = metadata['positionOverLifetime'];\n const rotationOverLifetime = metadata['rotationOverLifetime'];\n const sizeOverLifetime = metadata['sizeOverLifetime'];\n const colorOverLifetime = metadata['colorOverLifetime'];\n const geComponentId = metadata['geComponentId'];\n const geMask = metadata['geMask'];\n\n if (isRecord(positionOverLifetime)) {\n legacy.positionOverLifetime = positionOverLifetime;\n }\n if (isRecord(rotationOverLifetime)) {\n legacy.rotationOverLifetime = rotationOverLifetime;\n }\n if (isRecord(sizeOverLifetime)) {\n legacy.sizeOverLifetime = sizeOverLifetime;\n }\n if (isRecord(colorOverLifetime)) {\n legacy.colorOverLifetime = colorOverLifetime;\n }\n if (typeof geComponentId === 'string') {\n legacy.geComponentId = geComponentId;\n }\n if (isRecord(geMask)) {\n legacy.geMask = geMask;\n }\n\n return legacy;\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 { IRAnimatedProperty, IRComposition, IRLayerNode, IRTransformChannels, IRVec3 } from '@vvfx/animation-ir';\nimport { irPositionKeyframesToGE, irScalarKeyframesToGE, irVectorKeyframesToGE, shouldUseKeyframeMode, type IRToGETimeContext } from './bezier';\nimport { type BezierKeyframeValue, ValueType } from '@galacean/effects-specification';\nimport { roundNumber } from '../utils';\nimport { convert2dTo3dPoint } from '../../shared/coordinate';\nimport { getTimeContext } from '../ir/layer-utils';\nimport { readGE2IRMetadata } from '../../shared/ge2ir-metadata';\nimport type { LayerProcessingContext, TransformAnimation } from '../types';\n\nexport function buildTransformAnimation (\n layer: IRLayerNode,\n ctx: LayerProcessingContext,\n): TransformAnimation {\n const transform = layer.transform;\n\n if (transform == null) {\n return {};\n }\n\n const timeContext = getTimeContext(layer);\n\n // Passthrough: ge2ir stores raw animation data in metadata to bypass the\n // IR keyframe conversion pipeline. Raw GE data is used verbatim when\n // available; otherwise the standard IR → GE conversion runs.\n const ge2irMetadata = readGE2IRMetadata(ctx.ir, layer);\n const passthroughPosition = ge2irMetadata?.positionOverLifetime;\n const passthroughRotation = ge2irMetadata?.rotationOverLifetime;\n const passthroughSize = ge2irMetadata?.sizeOverLifetime;\n\n const positionOverLifetime = passthroughPosition ?? buildPositionAnim(transform, timeContext, ctx);\n const rotationOverLifetime = passthroughRotation ?? buildRotationAnim(transform, timeContext);\n const sizeOverLifetime = passthroughSize ?? buildSizeAnim(transform, timeContext);\n\n return { positionOverLifetime, rotationOverLifetime, sizeOverLifetime };\n}\n\nfunction buildPositionAnim (\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n ctx: LayerProcessingContext,\n): Record<string, unknown> | undefined {\n if (transform.position == null || !transform.position.keyframed) {\n return undefined;\n }\n\n const posResult = irPositionKeyframesToGE(transform.position, timeContext);\n\n if (posResult == null) {\n return undefined;\n }\n\n const pathPoints: [number, number, number][] = [];\n const controlPoints: [number, number, number][] = [];\n const useKeyframeMode = shouldUseKeyframeMode(transform.position);\n\n for (const pp of posResult.pathPoints) {\n const point3d = convert2dTo3dPoint(\n pp[0][0], pp[0][1], 0,\n ctx.width, ctx.height,\n );\n\n pathPoints.push(point3d);\n }\n\n if (posResult.pathPoints.length > 0) {\n const lastPp = posResult.pathPoints[posResult.pathPoints.length - 1];\n const lastPoint3d = convert2dTo3dPoint(\n lastPp[1][0], lastPp[1][1], 0,\n ctx.width, ctx.height,\n );\n\n pathPoints.push(lastPoint3d);\n }\n\n for (let i = 0; i < posResult.controlPoints.length; i++) {\n const cp = posResult.controlPoints[i];\n const pp = posResult.pathPoints[i];\n\n if (useKeyframeMode) {\n const dx = pp[1][0] - pp[0][0];\n const dy = pp[1][1] - pp[0][1];\n const cp1 = convert2dTo3dPoint(dx / 3 + pp[0][0], dy / 3 + pp[0][1], 0, ctx.width, ctx.height);\n const cp2 = convert2dTo3dPoint(-dx / 3 + pp[1][0], -dy / 3 + pp[1][1], 0, ctx.width, ctx.height);\n\n controlPoints.push(cp1, cp2);\n } else {\n const cp1 = convert2dTo3dPoint(cp[0][0] + pp[0][0], cp[0][1] + pp[0][1], 0, ctx.width, ctx.height);\n const cp2 = convert2dTo3dPoint(cp[1][0] + pp[1][0], cp[1][1] + pp[1][1], 0, ctx.width, ctx.height);\n\n controlPoints.push(cp1, cp2);\n }\n }\n\n const curveData = posResult.curves[0] ?? [];\n const easingData: BezierKeyframeValue[] = curveData.map((kf: BezierKeyframeValue) => [kf[0], kf[1]] as BezierKeyframeValue);\n\n const roundedPathPoints = pathPoints.map(p => [\n roundNumber(p[0], 4), roundNumber(p[1], 4), p[2],\n ] as [number, number, number]);\n const roundedControlPoints = controlPoints.map(p => [\n roundNumber(p[0], 4), roundNumber(p[1], 4), p[2],\n ] as [number, number, number]);\n\n const pathPayload: unknown[] = [easingData, roundedPathPoints];\n\n if (roundedControlPoints.length > 0) {\n pathPayload.push(roundedControlPoints);\n }\n\n return {\n path: [ValueType.BEZIER_CURVE_PATH, pathPayload],\n };\n}\n\nfunction buildRotationAnim (\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n): Record<string, unknown> | undefined {\n const result: Record<string, unknown> = {};\n let hasZ = false;\n let hasX = false;\n let hasY = false;\n\n const rotation = transform.rotation;\n\n if (rotation != null) {\n if (rotation.keyframed) {\n const curves = irVectorKeyframesToGE(rotation, timeContext);\n\n if (curves != null && axisHasRotationValue(rotation, 0) && curves[0]?.length) {\n result['x'] = [ValueType.BEZIER_CURVE, curves[0]];\n hasX = true;\n }\n if (curves != null && axisHasRotationValue(rotation, 1) && curves[1]?.length) {\n result['y'] = [ValueType.BEZIER_CURVE, curves[1]];\n hasY = true;\n }\n if (curves != null && axisHasRotationValue(rotation, 2) && curves[2]?.length) {\n result['z'] = [ValueType.BEZIER_CURVE, curves[2]];\n hasZ = true;\n }\n } else if (rotation.value != null) {\n const [x = 0, y = 0, z = 0] = rotation.value;\n\n if (Math.abs(x) > 0.0001) {\n result['x'] = [ValueType.CONSTANT, x];\n hasX = true;\n }\n if (Math.abs(y) > 0.0001) {\n result['y'] = [ValueType.CONSTANT, y];\n hasY = true;\n }\n if (Math.abs(z) > 0.0001) {\n result['z'] = [ValueType.CONSTANT, z];\n hasZ = true;\n }\n }\n } else {\n const separated = transform.separatedRotation;\n\n if (separated?.x?.keyframed) {\n const curves = irScalarKeyframesToGE(separated.x, timeContext);\n\n if (curves != null) {\n result['x'] = [ValueType.BEZIER_CURVE, curves[0]];\n hasX = true;\n }\n } else if (separated?.x?.value != null && separated.x.value !== 0) {\n result['x'] = [ValueType.CONSTANT, separated.x.value];\n hasX = true;\n }\n\n if (separated?.y?.keyframed) {\n const curves = irScalarKeyframesToGE(separated.y, timeContext);\n\n if (curves != null) {\n result['y'] = [ValueType.BEZIER_CURVE, curves[0]];\n hasY = true;\n }\n } else if (separated?.y?.value != null && separated.y.value !== 0) {\n result['y'] = [ValueType.CONSTANT, separated.y.value];\n hasY = true;\n }\n\n if (separated?.z?.keyframed) {\n const curves = irScalarKeyframesToGE(separated.z, timeContext);\n\n if (curves != null) {\n result['z'] = [ValueType.BEZIER_CURVE, curves[0]];\n hasZ = true;\n }\n } else if (separated?.z?.value != null && separated.z.value !== 0) {\n result['z'] = [ValueType.CONSTANT, separated.z.value];\n hasZ = true;\n }\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 axisHasRotationValue (rotation: IRAnimatedProperty<IRVec3>, axis: number): boolean {\n if (!rotation.keyframed) {\n return Math.abs(rotation.value?.[axis] ?? 0) > 0.0001;\n }\n\n return rotation.keyframes?.some(keyframe => (\n Math.abs(keyframe.value[axis] ?? 0) > 0.0001 ||\n Math.abs(keyframe.endValue?.[axis] ?? 0) > 0.0001\n )) ?? false;\n}\n\nfunction buildSizeAnim (\n transform: IRTransformChannels,\n timeContext: IRToGETimeContext,\n): Record<string, unknown> | undefined {\n if (transform.scale == null) {\n return undefined;\n }\n\n if (transform.scale.keyframed) {\n const curves = irVectorKeyframesToGE(transform.scale, timeContext);\n\n if (curves != null && curves.length >= 2) {\n return {\n separateAxes: true,\n x: [ValueType.BEZIER_CURVE, curves[0]],\n y: [ValueType.BEZIER_CURVE, curves[1]],\n ...(curves.length >= 3 && { z: [ValueType.BEZIER_CURVE, curves[2]] }),\n };\n }\n\n return undefined;\n }\n\n const scale = transform.scale.value;\n\n if (Array.isArray(scale) && (Math.abs(scale[0] - 1) > 0.0001 || Math.abs(scale[1] - 1) > 0.0001)) {\n return {\n separateAxes: true,\n x: [ValueType.CONSTANT, scale[0]],\n y: [ValueType.CONSTANT, scale[1]],\n z: [ValueType.CONSTANT, scale[2] ?? 1],\n };\n }\n\n return undefined;\n}\n\nexport function buildColorAnimation (layer: IRLayerNode, ir: IRComposition): Record<string, unknown> | undefined {\n const passthroughColor = readGE2IRMetadata(ir, layer)?.colorOverLifetime;\n\n if (passthroughColor != null) {\n return passthroughColor;\n }\n\n const transform = layer.transform;\n\n if (transform?.opacity == null) {\n return undefined;\n }\n\n const timeContext = getTimeContext(layer);\n\n if (timeContext.endFrame - timeContext.startFrame <= 0) {\n return {\n opacity: [ValueType.CONSTANT, 0],\n };\n }\n\n if (transform.opacity.keyframed) {\n const curves = irScalarKeyframesToGE(transform.opacity, timeContext);\n\n if (curves != null) {\n return {\n opacity: [ValueType.BEZIER_CURVE, curves[0]],\n };\n }\n\n return undefined;\n }\n\n const opacityValue = transform.opacity.value;\n\n if (typeof opacityValue === 'number' && opacityValue !== 1) {\n return {\n opacity: [ValueType.CONSTANT, opacityValue],\n };\n }\n\n return undefined;\n}\n","import { type IRBlendMode, IRBlendMode as IRBlendModeConst } from '@vvfx/animation-ir';\nimport type { DataPath } from '@galacean/effects-specification';\nimport { createId, toDataPath } from '../utils';\nimport type { ECSCollector, GETransform } from '../types';\n\nexport { estimateTextWidth } from '../utils';\n\nexport function buildGETransform (\n position: [number, number, number],\n eulerHint: [number, number, number],\n scale: [number, number, number],\n): GETransform {\n return {\n position: { x: position[0], y: position[1], z: position[2] },\n eulerHint: { x: eulerHint[0], y: eulerHint[1], z: eulerHint[2] },\n scale: { x: scale[0], y: scale[1], z: scale[2] },\n };\n}\n\nexport function getGEItemType (type: string): string {\n switch (type) {\n case 'image':\n case 'solid':\n return 'sprite';\n case 'text':\n return 'text';\n case 'shape':\n return 'sprite';\n default:\n return 'null';\n }\n}\n\nexport function getGEItemTypeCode (type: string): string {\n switch (type) {\n case 'image':\n case 'solid':\n return '1';\n case 'text':\n return 'text';\n case 'shape':\n return 'shape';\n default:\n return '3';\n }\n}\n\nexport function registerTexture (\n collector: ECSCollector,\n imageUrl: string,\n cache: Map<string, DataPath>,\n): DataPath {\n const cached = cache.get(imageUrl);\n\n if (cached != null) {\n return cached;\n }\n\n const imageId = createId();\n const textureId = createId();\n\n collector.images.push({ id: imageId, url: imageUrl });\n collector.textures.push({\n id: textureId,\n dataType: 'Texture',\n source: toDataPath(imageId),\n flipY: true,\n });\n\n const dataPathRef = toDataPath(textureId);\n\n cache.set(imageUrl, dataPathRef);\n\n return dataPathRef;\n}\n\nconst GE_BLENDING_BY_IR_MODE: Record<IRBlendMode, number | undefined> = {\n [IRBlendModeConst.Normal]: undefined,\n [IRBlendModeConst.Multiply]: 6,\n [IRBlendModeConst.Screen]: 9,\n [IRBlendModeConst.Overlay]: 13,\n [IRBlendModeConst.Darken]: 2,\n [IRBlendModeConst.Lighten]: 3,\n [IRBlendModeConst.ColorDodge]: 10,\n [IRBlendModeConst.ColorBurn]: 7,\n [IRBlendModeConst.HardLight]: 14,\n [IRBlendModeConst.SoftLight]: 15,\n [IRBlendModeConst.Difference]: 4,\n [IRBlendModeConst.Exclusion]: 5,\n [IRBlendModeConst.Hue]: 11,\n [IRBlendModeConst.Saturation]: 12,\n [IRBlendModeConst.Color]: 8,\n [IRBlendModeConst.Luminosity]: 16,\n [IRBlendModeConst.Add]: 1,\n};\n\nexport function mapBlendingMode (blendMode: IRBlendMode | undefined): number | undefined {\n if (blendMode == null) {\n return undefined;\n }\n\n return GE_BLENDING_BY_IR_MODE[blendMode];\n}\n\n","import type { IRLayerNode } from '@vvfx/animation-ir';\n\nconst DEFAULT_DISPLAY_SIZE = { width: 1, height: 1 };\n\n/**\n * Read the producer-baked display size from an IR layer. When the producer\n * did not resolve one, returns `fallback` (defaults to `{ 1, 1 }` — the\n * value every existing call site was using inline).\n */\nexport function getLayerDisplaySize (\n layer: IRLayerNode,\n fallback: { width: number; height: number } = DEFAULT_DISPLAY_SIZE,\n): { width: number; height: number } {\n return layer.displaySize ?? fallback;\n}\n","import type { IRColor, IRComposition, IRCustomShapePath, IRLayerNode, IRShapeData, IRShapePaintData } from '@vvfx/animation-ir';\nimport { IRFillType, IRLineCap, IRLineJoin, IRShapeFillRule, IRShapePrimitiveType } from '@vvfx/animation-ir';\nimport { type DataPath, ValueType } from '@galacean/effects-specification';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport { estimateTextWidth, mapBlendingMode, registerTexture } from './effects';\nimport { getLayerDisplaySize } from '../ir/layer-dimensions';\nimport { readGE2IRMetadata } from '../../shared/ge2ir-metadata';\nimport type { LayerProcessingContext } from '../types';\n\nexport function buildComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerProcessingContext,\n): string | undefined {\n switch (layer.type) {\n case 'image':\n case 'solid':\n return buildSpriteComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n case 'text':\n return buildTextComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n case 'shape':\n return buildShapeComponent(layer, itemId, ctx);\n default:\n return undefined;\n }\n}\n\n/**\n * Copy the raw GE mask object (from ge2ir passthrough metadata) onto a freshly\n * built component, as a top-level `mask` field matching GE's structure. For a\n * mask SOURCE this carries `{isMask:true, alphaMaskEnabled}`; for a TARGET it\n * carries `{isMask:false, reference, inverted}` where `reference.id` is still\n * the stale GE1 component id — `applyGeMaskRemap` rewrites it in post-process.\n * No-op for non-ge sources (Lottie masks go through the IRLayerNode.mask path).\n */\nexport function applyGeMask (ir: IRComposition, layer: IRLayerNode, component: Record<string, unknown>): void {\n const geMask = readGE2IRMetadata(ir, layer)?.geMask;\n\n if (geMask != null && component['mask'] == null) {\n component['mask'] = { ...geMask };\n }\n}\n\nfunction buildSpriteComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerProcessingContext,\n): string {\n const componentId = createId();\n const blending = mapBlendingMode(layer.blendMode);\n const startColor = layer.solidColor != null\n ? [\n roundNumber(layer.solidColor[0], 4),\n roundNumber(layer.solidColor[1], 4),\n roundNumber(layer.solidColor[2], 4),\n roundNumber(layer.solidColor[3], 4),\n ]\n : [1, 1, 1, 1];\n\n let textureDataPath: DataPath | undefined;\n\n const textureUrl = layer.asset?.url ?? layer.asset?.refId;\n\n if (textureUrl != null && textureUrl !== '' && textureUrl !== 'mask://placeholder') {\n textureDataPath = registerTexture(ctx.collector, textureUrl, ctx.textureCache);\n }\n\n const component: Record<string, unknown> = {\n id: componentId,\n dataType: 'SpriteComponent',\n item: toDataPath(itemId),\n options: { startColor },\n renderer: {\n renderMode: 1,\n ...(blending !== undefined && { blending }),\n ...(textureDataPath != null && { texture: textureDataPath }),\n },\n };\n\n const isNonDefaultAnchor = Math.abs(anchorScaleX - 0.5) > 0.001 || Math.abs(anchorScaleY - 0.5) > 0.001;\n\n if (isNonDefaultAnchor) {\n (component['renderer'] as Record<string, unknown>)['anchor'] = [\n roundNumber(anchorScaleX, 4),\n roundNumber(anchorScaleY, 4),\n ];\n }\n\n applyGeMask(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction buildTextComponent (\n layer: IRLayerNode,\n itemId: string,\n anchorScaleX: number,\n anchorScaleY: number,\n ctx: LayerProcessingContext,\n): string | undefined {\n const textInfo = layer.text;\n\n if (textInfo == null) {\n return undefined;\n }\n\n const componentId = createId();\n const blending = mapBlendingMode(layer.blendMode);\n const textColor: number[] = [\n roundNumber(textInfo.color[0], 4),\n roundNumber(textInfo.color[1], 4),\n roundNumber(textInfo.color[2], 4),\n textInfo.color[3],\n ];\n const textWidth = textInfo.width ?? estimateTextWidth(textInfo.content, textInfo.fontSize, textInfo.letterSpacing);\n const lineHeight = typeof textInfo.lineHeight === 'number' && textInfo.lineHeight > 0\n ? textInfo.lineHeight\n : textInfo.fontSize;\n const textHeight = Math.max(textInfo.height ?? textInfo.fontSize * 1.2, lineHeight);\n\n const { width: layerWidth, height: layerHeight } = getLayerDisplaySize(layer);\n const textSizeW = roundNumber(ctx.ratio * layerWidth, 4);\n const textSizeH = roundNumber(ctx.ratio * layerHeight, 4);\n\n const component: Record<string, unknown> = {\n id: componentId,\n dataType: 'TextComponent',\n item: toDataPath(itemId),\n options: {\n text: textInfo.content,\n fontSize: textInfo.fontSize,\n textColor,\n fontFamily: textInfo.fontFamily || 'sans-serif',\n fontWeight: textInfo.fontWeight,\n textAlign: textInfo.textAlign === 'center' ? 1 : textInfo.textAlign === 'right' ? 2 : 0,\n fontStyle: textInfo.fontStyle,\n letterSpace: textInfo.letterSpacing,\n lineHeight,\n textWidth,\n textHeight,\n autoWidth: textInfo.autoWidth,\n size: [textSizeW, textSizeH],\n },\n renderer: {\n renderMode: 1,\n anchor: [anchorScaleX, anchorScaleY],\n ...(blending !== undefined && { blending }),\n },\n };\n\n applyGeMask(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nfunction buildShapeComponent (\n layer: IRLayerNode,\n itemId: string,\n ctx: LayerProcessingContext,\n): string | undefined {\n if (layer.shapes == null || layer.shapes.length === 0) {\n return undefined;\n }\n\n const shapeData = layer.shapes[0];\n const componentId = createId();\n const blending = mapBlendingMode(layer.blendMode);\n\n const component: Record<string, unknown> = {\n id: componentId,\n dataType: 'ShapeComponent',\n item: toDataPath(itemId),\n ...buildShapeOptions(shapeData, ctx.ratio, ctx),\n renderer: {\n renderMode: 1,\n ...(blending !== undefined && { blending }),\n },\n };\n\n applyGeMask(ctx.ir, layer, component);\n ctx.collector.components.push(component);\n\n return componentId;\n}\n\nexport function buildShapeOptions (\n shapeData: IRShapeData,\n ratio: number,\n ctx?: LayerProcessingContext,\n): Record<string, unknown> {\n const options: Record<string, unknown> = {\n type: mapShapePrimitiveType(shapeData.primitiveType),\n };\n\n if (shapeData.size != null) {\n options['xSize'] = roundNumber(shapeData.size[0] * ratio, 4);\n options['ySize'] = roundNumber(shapeData.size[1] * ratio, 4);\n }\n\n setScaledNumber(options, shapeData, 'xRadius', ratio);\n setScaledNumber(options, shapeData, 'yRadius', ratio);\n setScaledNumber(options, shapeData, 'width', ratio);\n setScaledNumber(options, shapeData, 'height', ratio);\n setScaledNumber(options, shapeData, 'innerRadius', ratio);\n setScaledNumber(options, shapeData, 'outerRadius', ratio);\n setScaledNumber(options, shapeData, 'radius', ratio);\n setRawNumber(options, shapeData, 'roundness');\n setRawNumber(options, shapeData, 'pointCount');\n setRawNumber(options, shapeData, 'innerRoundness');\n setRawNumber(options, shapeData, 'outerRoundness');\n\n if (shapeData.fills != null && shapeData.fills.length > 0) {\n options['fills'] = shapeData.fills\n .map(fill => mapShapePaint(fill, ratio, ctx))\n .filter((fill): fill is Record<string, unknown> => fill != null);\n } else {\n options['fills'] = [];\n }\n if (shapeData.strokes != null && shapeData.strokes.length > 0) {\n options['strokes'] = shapeData.strokes\n .map(stroke => mapShapePaint(stroke, ratio, ctx))\n .filter((stroke): stroke is Record<string, unknown> => stroke != null);\n } else {\n options['strokes'] = [];\n }\n if (typeof shapeData.strokeWidth === 'number') {\n options['strokeWidth'] = roundNumber(shapeData.strokeWidth * ratio, 4);\n }\n if (shapeData.strokeCap != null) {\n options['strokeCap'] = mapLineCap(shapeData.strokeCap);\n }\n if (shapeData.strokeJoin != null) {\n options['strokeJoin'] = mapLineJoin(shapeData.strokeJoin);\n }\n if (shapeData.fillRule != null) {\n options['fillRule'] = mapShapeFillRule(shapeData.fillRule);\n }\n if (shapeData.customPaths != null && shapeData.customPaths.length > 0) {\n Object.assign(options, mapCustomPaths(shapeData.customPaths, ratio));\n }\n if (shapeData.trimPath != null) {\n options['trimPath'] = shapeData.trimPath;\n }\n if (shapeData.repeater != null) {\n options['repeater'] = shapeData.repeater;\n }\n\n return options;\n}\n\nconst SHAPE_PRIMITIVE_TYPE_TO_GE: Record<IRShapeData['primitiveType'], number> = {\n [IRShapePrimitiveType.Custom]: 0,\n [IRShapePrimitiveType.Rectangle]: 1,\n [IRShapePrimitiveType.Ellipse]: 2,\n [IRShapePrimitiveType.Polygon]: 3,\n [IRShapePrimitiveType.Star]: 4,\n};\n\nconst FILL_TYPE_TO_GE: Record<IRShapePaintData['type'], number> = {\n [IRFillType.Solid]: 0,\n [IRFillType.LinearGradient]: 1,\n [IRFillType.RadialGradient]: 2,\n [IRFillType.AngularGradient]: 3,\n [IRFillType.Texture]: 4,\n};\n\nconst LINE_CAP_TO_GE: Record<string, number> = {\n [IRLineCap.Butt]: 0,\n [IRLineCap.Round]: 1,\n [IRLineCap.Square]: 2,\n};\n\nconst LINE_JOIN_TO_GE: Record<string, number> = {\n [IRLineJoin.Round]: 0,\n [IRLineJoin.Bevel]: 1,\n [IRLineJoin.Miter]: 2,\n};\n\nconst SHAPE_FILL_RULE_TO_GE: Record<string, number> = {\n [IRShapeFillRule.NonZero]: 0,\n [IRShapeFillRule.EvenOdd]: 1,\n};\n\nfunction mapShapePrimitiveType (primitiveType: IRShapeData['primitiveType']): number {\n return SHAPE_PRIMITIVE_TYPE_TO_GE[primitiveType];\n}\n\nfunction mapLineCap (lineCap: string): number {\n return LINE_CAP_TO_GE[lineCap] ?? 0;\n}\n\nfunction mapLineJoin (lineJoin: string): number {\n return LINE_JOIN_TO_GE[lineJoin] ?? 2;\n}\n\nfunction mapShapeFillRule (fillRule: string): number {\n return SHAPE_FILL_RULE_TO_GE[fillRule] ?? 0;\n}\n\nfunction mapShapePaint (\n paint: IRShapePaintData,\n ratio: number,\n ctx: LayerProcessingContext | undefined,\n): Record<string, unknown> | undefined {\n if (paint.type === IRFillType.Solid) {\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n color: colorToGE(paint.color),\n };\n }\n\n if (\n paint.type === IRFillType.LinearGradient ||\n paint.type === IRFillType.RadialGradient ||\n paint.type === IRFillType.AngularGradient\n ) {\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n gradientStops: [ValueType.GRADIENT_COLOR, paint.gradientStops],\n startPoint: vec2ToGE(paint.gradientStart, ratio),\n endPoint: vec2ToGE(paint.gradientEnd, ratio),\n ...(paint.color != null && { color: colorToGE(paint.color) }),\n };\n }\n\n if (paint.type === IRFillType.Texture) {\n const textureUrl = paint.texture.url ?? paint.texture.refId ?? paint.texture.id;\n const texture = textureUrl != null && ctx != null\n ? registerTexture(ctx.collector, textureUrl, ctx.textureCache)\n : undefined;\n\n return {\n type: FILL_TYPE_TO_GE[paint.type],\n ...(texture != null && { texture }),\n scaleMode: paint.scaleMode ?? 0,\n };\n }\n\n return undefined;\n}\n\nfunction colorToGE (color: IRColor): { r: number; g: number; b: number; a: number } {\n return {\n r: roundNumber(color[0], 4),\n g: roundNumber(color[1], 4),\n b: roundNumber(color[2], 4),\n a: roundNumber(color[3], 4),\n };\n}\n\nfunction vec2ToGE (\n value: [number, number] | undefined,\n ratio: number,\n): { x: number; y: number } {\n return {\n x: roundNumber((value?.[0] ?? 0) * ratio, 4),\n y: roundNumber(-(value?.[1] ?? 0) * ratio, 4),\n };\n}\n\nfunction mapCustomPaths (paths: IRCustomShapePath[], ratio: number): Record<string, unknown> {\n const points: Array<{ x: number; y: number }> = [];\n const easingIns: Array<{ x: number; y: number }> = [];\n const easingOuts: Array<{ x: number; y: number }> = [];\n const shapes: Array<{\n close: boolean;\n indexes: Array<{ point: number; easingIn: number; easingOut: number }>;\n }> = [];\n\n for (const path of paths) {\n const indexes: Array<{ point: number; easingIn: number; easingOut: number }> = [];\n\n for (let index = 0; index < path.points.length; index++) {\n const point = path.points[index];\n const easingIn = path.easingIns[index];\n const easingOut = path.easingOuts[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.close, indexes });\n }\n\n return { points, easingIns, easingOuts, shapes };\n}\n\nfunction setScaledNumber (\n options: Record<string, unknown>,\n shapeData: IRShapeData,\n key: keyof Pick<IRShapeData, 'xRadius' | 'yRadius' | 'width' | 'height' | 'innerRadius' | 'outerRadius' | 'radius'>,\n ratio: number,\n): void {\n const value = shapeData[key];\n\n if (typeof value === 'number') {\n options[key] = roundNumber(value * ratio, 4);\n }\n}\n\nfunction setRawNumber (\n options: Record<string, unknown>,\n shapeData: IRShapeData,\n key: keyof Pick<IRShapeData, 'roundness' | 'pointCount' | 'innerRoundness' | 'outerRoundness'>,\n): void {\n const value = shapeData[key];\n\n if (typeof value === 'number') {\n options[key] = value;\n }\n}\n","import type { IRComposition, IRLayerNode } from '@vvfx/animation-ir';\nimport {\n computeAnchorInfo,\n getStaticAnchor,\n} from './layer-utils';\nimport { getLayerDisplaySize } from './layer-dimensions';\n\n/**\n * How the generator should handle a layer's anchor offset.\n *\n * - `inline-anchor` — emit one VFX item with `renderer.anchor` baked into the\n * GE renderer and `anchorOffset` shifted into `transform.position`. Centered\n * layers also use this kind with `anchorScale = [0.5, 0.5]` and\n * `anchorOffset = [0, 0]`.\n * - `split-null-sprite` — emit a null+sprite hierarchy so the transform pivot\n * sits at the anchor; the sprite carries the visual content and is parented\n * to the null with an anchor-relative position.\n *\n * The split decision is read from `IRLayerNode.transformSplit` when set by the\n * producer; for lottie IR without that flag the accessor falls back to\n * runtime geometry checks (rotation/scale animation + off-center anchor).\n */\nexport type AnchorStrategy =\n | {\n kind: 'inline-anchor';\n anchorScale: [number, number];\n anchorOffset: [number, number];\n }\n | { kind: 'split-null-sprite' };\n\nexport function getStaticAnchorBehavior (\n ir: IRComposition,\n layer: IRLayerNode,\n): AnchorStrategy {\n if (layer.transformSplit === true) {\n return { kind: 'split-null-sprite' };\n }\n\n // B-class real semantic difference — kept as source branch because pre-baking\n // anchorScale/anchorOffset into the IR would require pulling computeAnchorInfo's\n // full input set (text anchorAdjust, static-rotation anchor rotation, display\n // size fallback) into the producer, at high cost with no readability benefit.\n // The split gate itself is already pre-baked via `transformSplit` above.\n //\n // ge source shares the lottie inline-anchor math: ge2ir reverses GE's\n // `renderer.anchor` into IRLayerNode.transform.anchor (px) + displaySize, so\n // computeAnchorInfo reproduces the exact anchorScale/anchorOffset that GE had.\n // Without this, ge layers fall through to the centered [0.5,0.5] default and\n // their authored anchor (e.g. a top-anchored sweep) is lost on round-trip.\n // ge never reaches the lottieNeedsTransformSplit geometry check — its split\n // decision is pre-baked via `transformSplit` by the ge2ir null+sprite merger.\n if (ir.source === 'lottie' || ir.source === 'ge') {\n if (ir.source === 'lottie' && lottieNeedsTransformSplit(layer)) {\n return { kind: 'split-null-sprite' };\n }\n // The inline-anchor math needs non-zero dimensions to avoid divide-by-zero\n // in `computeAnchorInfo`; substitute the legacy {1, 1} fallback at the call site\n // so the field-level default stays neutral.\n const { width, height } = getLayerDisplaySize(layer);\n const info = computeAnchorInfo(layer, width, height);\n\n return {\n kind: 'inline-anchor',\n anchorScale: [info.anchorScaleX, info.anchorScaleY],\n anchorOffset: [info.anchorOffsetX, info.anchorOffsetY],\n };\n }\n\n // dsl layers with off-center anchor have `transformSplit = true` set by the\n // producer, caught by the guard at the top. Any layer reaching here is\n // centered — return the default inline-anchor.\n return { kind: 'inline-anchor', anchorScale: [0.5, 0.5], anchorOffset: [0, 0] };\n}\n\nfunction lottieNeedsTransformSplit (layer: IRLayerNode): boolean {\n if (layer.type !== 'image' && layer.type !== 'solid') {\n return false;\n }\n // Without a producer-baked displaySize we cannot decide off-center;\n // fall through to inline-anchor (matches the pre-displaySize behavior\n // where missing dimensions returned the {1, 1} default and never split).\n const size = layer.displaySize;\n\n if (size == null) {\n return false;\n }\n const { width, height } = size;\n\n if (width <= 0 || height <= 0) {\n return false;\n }\n const anchor = getStaticAnchor(layer);\n const anchorOffCenter = Math.abs(anchor[0] - width / 2) > 0.5 || Math.abs(anchor[1] - height / 2) > 0.5;\n\n if (!anchorOffCenter) {\n return false;\n }\n const transform = layer.transform;\n const sep = transform?.separatedRotation;\n const hasRotationAnim = transform?.rotation?.keyframed === true\n || sep?.x?.keyframed === true\n || sep?.y?.keyframed === true\n || sep?.z?.keyframed === true;\n const hasScaleAnim = transform?.scale?.keyframed === true;\n\n return hasRotationAnim || hasScaleAnim;\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport { buildTimelineTracks } from './timeline';\nimport { buildColorAnimation, buildTransformAnimation } from './animation';\nimport { applyGeMask, buildComponent, buildShapeOptions } from './component';\nimport { buildGETransform, getGEItemType, getGEItemTypeCode, mapBlendingMode } from './effects';\nimport { applyScalePositionAdjust, computeAnchorInfo, computeLayerTiming, computeStaticPosition, getStaticAnchor } from '../ir/layer-utils';\nimport { getLayerDisplaySize } from '../ir/layer-dimensions';\nimport { getStaticAnchorBehavior } from '../ir/anchor-strategy';\nimport type { GEItem, LayerProcessingContext, TransformAnimation } from '../types';\n\nexport function processNullLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n const itemId = createId();\n const layerIndex = layer.index;\n\n ctx.layerToItemId[layerIndex] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate);\n const animation = buildTransformAnimation(layer, ctx);\n const position = computeStaticPosition(layer, ctx);\n\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 4, animation, 'null',\n );\n\n const item: GEItem = {\n id: itemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: '3',\n visible: layer.visibility.enabled && !layer.visibility.hidden,\n endBehavior: 4,\n delay,\n renderLevel: 'B+',\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: buildGETransform(position, [0, 0, 0], [1, 1, 1]),\n };\n\n ctx.collector.items.push(item);\n ctx.processedItems.push({ itemId, objectBindingTrackId, layerIndex });\n}\n\n/**\n * Emit a null+sprite pair: the null carries the layer transform and sits at\n * the layer's logical position; the sprite/text child carries the visual\n * content offset by the anchor so the pivot is at the right point.\n *\n * Used by both `processParentLayer` (layers referenced as `parent` by others)\n * and `processTransformSplitLayer` (layers with `transformSplit=true`). The\n * only knob is `childScale` — parent-layer callers pass a text-aware scale\n * while transformSplit always uses `[1, 1, 1]`.\n */\nfunction emitNullSpritePair (\n layer: IRLayerNode,\n ctx: LayerProcessingContext,\n childScale: [number, number, number],\n): void {\n const layerIndex = layer.index;\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate);\n const { width: layerWidth, height: layerHeight } = getLayerDisplaySize(layer);\n\n const nullItemId = createId();\n\n ctx.layerToItemId[layerIndex] = nullItemId;\n\n const nullAnimation = buildTransformAnimation(layer, ctx);\n const nullPosition = computeStaticPosition(layer, ctx);\n\n const nullTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 4, nullAnimation, 'null',\n );\n\n const nullItem: GEItem = {\n id: nullItemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: '3',\n visible: true,\n endBehavior: 4,\n delay,\n renderLevel: 'B+',\n content: { options: { startColor: [1, 1, 1, 1] } },\n components: [],\n transform: buildGETransform(nullPosition, [0, 0, 0], [1, 1, 1]),\n };\n\n ctx.collector.items.push(nullItem);\n ctx.processedItems.push({ itemId: nullItemId, objectBindingTrackId: nullTrackId, layerIndex });\n\n const childItemId = createId();\n\n const anchor = getStaticAnchor(layer);\n const childPosition: [number, number, number] = [\n -ctx.ratio * (anchor[0] - layerWidth / 2),\n ctx.ratio * (anchor[1] - layerHeight / 2),\n 0,\n ];\n\n const childColorAnim = buildColorAnimation(layer, ctx.ir);\n const childTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 0,\n { colorOverLifetime: childColorAnim }, getGEItemType(layer.type),\n );\n\n const componentId = buildComponent(layer, childItemId, 0.5, 0.5, ctx);\n\n if (componentId != null) {\n ctx.layerToComponentId[layerIndex] = componentId;\n }\n\n const scaledW = roundNumber(ctx.ratio * layerWidth, 4);\n const scaledH = roundNumber(ctx.ratio * layerHeight, 4);\n\n const childItem: GEItem = {\n id: childItemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: getGEItemTypeCode(layer.type),\n visible: layer.visibility.enabled && !layer.visibility.hidden,\n endBehavior: 0,\n delay,\n renderLevel: 'B+',\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(childPosition, [0, 0, 0], childScale),\n anchor: { x: 0, y: 0 },\n size: { x: scaledW, y: scaledH },\n },\n parentId: nullItemId,\n };\n\n ctx.collector.items.push(childItem);\n ctx.processedItems.push({ itemId: childItemId, objectBindingTrackId: childTrackId, layerIndex });\n}\n\nexport function processParentLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n const { width: layerWidth, height: layerHeight } = getLayerDisplaySize(layer);\n const scaledW = roundNumber(ctx.ratio * layerWidth, 4);\n const scaledH = roundNumber(ctx.ratio * layerHeight, 4);\n const childScale: [number, number, number] = layer.type === 'text'\n ? [scaledW, scaledH, 1]\n : [1, 1, 1];\n\n emitNullSpritePair(layer, ctx, childScale);\n}\n\nexport function processVisualLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n if (layer.type === 'shape' && layer.shapes != null && layer.shapes.length > 0) {\n processShapeLayerMultiItem(layer, ctx);\n\n return;\n }\n\n const strategy = getStaticAnchorBehavior(ctx.ir, layer);\n\n if (strategy.kind === 'split-null-sprite') {\n processTransformSplitLayer(layer, ctx);\n\n return;\n }\n\n const itemId = createId();\n const layerIndex = layer.index;\n\n ctx.layerToItemId[layerIndex] = itemId;\n\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate);\n const { width: layerWidth, height: layerHeight } = getLayerDisplaySize(layer);\n const scaledW = ctx.ratio * layerWidth;\n const scaledH = ctx.ratio * layerHeight;\n\n const [anchorScaleX, anchorScaleY] = strategy.anchorScale;\n const [anchorOffsetX, anchorOffsetY] = strategy.anchorOffset;\n const animation = buildTransformAnimation(layer, ctx);\n const colorAnimation = buildColorAnimation(layer, ctx.ir);\n const fullAnimation: TransformAnimation = {\n ...animation,\n colorOverLifetime: colorAnimation,\n };\n\n const rawPosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n const position = applyScalePositionAdjust(rawPosition, layer, layerWidth, layerHeight, ctx.ratio);\n\n const itemType = getGEItemType(layer.type);\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 0, fullAnimation, itemType,\n );\n\n const componentId = buildComponent(layer, itemId, anchorScaleX, anchorScaleY, ctx);\n\n if (componentId != null) {\n ctx.layerToComponentId[layerIndex] = componentId;\n }\n\n // GE 2.x TextComponent.updateTexture overwrites transform.size to\n // (textWidth × 0.0123, textHeight × 0.0123) regardless of what we emit,\n // so the only knob left to control on-screen size is transform.scale.\n // Pre-bake it so version36Migration's scaleFactor = (preScale / textWidth) / 0.0123\n // resolves to ctx.ratio / 0.0123 — the correct ratio for this composition.\n const itemScale: [number, number, number] = layer.type === 'text'\n ? [scaledW, scaledH, 1]\n : [1, 1, 1];\n\n const item: GEItem = {\n id: itemId,\n dataType: 'VFXItemData',\n name: layer.name,\n duration: layerDuration,\n type: getGEItemTypeCode(layer.type),\n visible: layer.visibility.enabled && !layer.visibility.hidden,\n endBehavior: 0,\n delay,\n renderLevel: 'B+',\n components: componentId != null ? [toDataPath(componentId)] : [],\n transform: {\n ...buildGETransform(position, [0, 0, 0], itemScale),\n anchor: { x: 0, y: 0 },\n size: { x: roundNumber(scaledW, 4), y: roundNumber(scaledH, 4) },\n },\n };\n\n ctx.collector.items.push(item);\n ctx.processedItems.push({ itemId, objectBindingTrackId, layerIndex });\n}\n\nfunction processTransformSplitLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n emitNullSpritePair(layer, ctx, [1, 1, 1]);\n}\n\nfunction processShapeLayerMultiItem (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n const layerIndex = layer.index;\n const { delay, layerDuration } = computeLayerTiming(layer, ctx.frameRate);\n const { width: layerWidth, height: layerHeight } = getLayerDisplaySize(layer);\n const anchor = getStaticAnchor(layer);\n const { anchorOffsetX, anchorOffsetY } = computeAnchorInfo(layer, layerWidth, layerHeight);\n const animation = buildTransformAnimation(layer, ctx);\n const colorAnimation = buildColorAnimation(layer, ctx.ir);\n const fullAnimation: TransformAnimation = { ...animation, colorOverLifetime: colorAnimation };\n const basePosition = computeStaticPosition(layer, ctx, anchorOffsetX, anchorOffsetY);\n const blending = mapBlendingMode(layer.blendMode);\n\n for (let shapeIdx = 0; shapeIdx < layer.shapes!.length; shapeIdx++) {\n const shapeData = layer.shapes![shapeIdx];\n const shapeItemId = createId();\n\n if (shapeIdx === 0) {\n ctx.layerToItemId[layerIndex] = shapeItemId;\n }\n\n const shapeOffsetX = ctx.ratio * (shapeData.position[0] - anchor[0]);\n const shapeOffsetY = -ctx.ratio * (shapeData.position[1] - anchor[1]);\n const shapePosition: [number, number, number] = [\n basePosition[0] + shapeOffsetX,\n basePosition[1] + shapeOffsetY,\n basePosition[2],\n ];\n\n const shapeComponentId = createId();\n\n const component: Record<string, unknown> = {\n id: shapeComponentId,\n dataType: 'ShapeComponent',\n item: toDataPath(shapeItemId),\n ...buildShapeOptions(shapeData, ctx.ratio, ctx),\n renderer: {\n renderMode: 1,\n ...(blending !== undefined && { blending }),\n },\n };\n\n // Mask source shape (isMask:true) — copy onto the first shape item only.\n if (shapeIdx === 0) {\n applyGeMask(ctx.ir, layer, component);\n }\n\n ctx.collector.components.push(component);\n if (shapeIdx === 0) {\n ctx.layerToComponentId[layerIndex] = shapeComponentId;\n }\n\n const objectBindingTrackId = buildTimelineTracks(\n ctx.collector, delay, layerDuration, 0, fullAnimation, 'shape',\n );\n\n const shapeItem: GEItem = {\n id: shapeItemId,\n dataType: 'VFXItemData',\n name: shapeIdx === 0 ? layer.name : `${layer.name}_shape_${shapeIdx}`,\n duration: layerDuration,\n type: 'shape',\n visible: layer.visibility.enabled && !layer.visibility.hidden,\n endBehavior: 0,\n delay,\n renderLevel: 'B+',\n components: [toDataPath(shapeComponentId)],\n transform: {\n ...buildGETransform(shapePosition, [0, 0, 0], [1, 1, 1]),\n anchor: { x: 0, y: 0 },\n },\n };\n\n ctx.collector.items.push(shapeItem);\n ctx.processedItems.push({ itemId: shapeItemId, objectBindingTrackId, layerIndex });\n }\n}\n","import { IREndBehavior, type IRComposition, type IRColor } from '@vvfx/animation-ir';\nimport { type DataPath, type JSONScene, JSONSceneVersion } from '@galacean/effects-specification';\nimport { DEFAULT_CLIP_MODE, DEFAULT_CAMERA_FOV, DEFAULT_CAMERA_Z } from '../../shared/coordinate';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport type { ECSCollector, ProcessedItem } from '../types';\n\nconst DEFAULT_PLAYER_VERSION = {\n web: '2.8.9',\n native: '0.0.1.202311221223',\n};\n\n/**\n * Assemble the top-level GE JSONScene wrapper from a populated collector.\n *\n * Reads composition-level properties (`name`, `width`/`height`, `endBehavior`,\n * `backgroundColor`) directly from the IR. The optional `duration` arg is a\n * caller override — when omitted, derived from `(outPoint - inPoint) / frameRate`.\n */\nexport function assembleScene (\n ir: IRComposition,\n collector: ECSCollector,\n processedItems: ProcessedItem[],\n duration?: number,\n): JSONScene {\n const finalDuration = duration ?? deriveDuration(ir);\n const timelineAssetId = createId();\n const objectBindingTrackRefs: DataPath[] = processedItems.map(pi => toDataPath(pi.objectBindingTrackId));\n\n collector.miscs.push({\n id: timelineAssetId,\n dataType: 'TimelineAsset',\n tracks: objectBindingTrackRefs,\n });\n\n const compositionComponentId = createId();\n const compositionId = createId();\n const sceneBindings = processedItems.map(pi => ({\n key: toDataPath(pi.objectBindingTrackId),\n value: toDataPath(pi.itemId),\n }));\n const allItemRefs: DataPath[] = processedItems.map(pi => toDataPath(pi.itemId));\n\n collector.components.push({\n id: compositionComponentId,\n dataType: 'CompositionComponent',\n item: toDataPath(compositionId),\n items: allItemRefs,\n timelineAsset: toDataPath(timelineAssetId),\n sceneBindings,\n });\n\n const composition: Record<string, unknown> = {\n id: compositionId,\n name: ir.name,\n duration: finalDuration,\n startTime: 0,\n endBehavior: mapCompositionEndBehavior(ir.endBehavior),\n previewSize: [ir.width, ir.height],\n camera: {\n fov: DEFAULT_CAMERA_FOV,\n far: 40,\n near: 0.1,\n clipMode: DEFAULT_CLIP_MODE,\n position: [0, 0, DEFAULT_CAMERA_Z],\n rotation: [0, 0, 0],\n },\n components: [toDataPath(compositionComponentId)],\n };\n\n if (ir.backgroundColor != null) {\n composition['background'] = { color: colorToRoundedRgba(ir.backgroundColor) };\n }\n\n return {\n version: JSONSceneVersion['3_6'],\n playerVersion: DEFAULT_PLAYER_VERSION,\n images: collector.images,\n fonts: [],\n plugins: [],\n type: 'ge',\n compositionId,\n compositions: [composition],\n components: collector.components,\n geometries: [],\n materials: [],\n items: collector.items as unknown as Record<string, unknown>[],\n shaders: [],\n bins: [],\n textures: collector.textures,\n animations: [],\n miscs: collector.miscs,\n } as unknown as JSONScene;\n}\n\nfunction deriveDuration (ir: IRComposition): number {\n return ir.frameRate > 0 ? (ir.outPoint - ir.inPoint) / ir.frameRate : 0;\n}\n\n/**\n * Map IR composition end behavior to GE's numeric end-behavior.\n * Lottie IR currently leaves this unset; treat undefined as Loop (5) so the\n * legacy lottie behavior is preserved. dsl2ge writes either Loop or Stop.\n */\nfunction mapCompositionEndBehavior (eb: IREndBehavior | undefined): number {\n if (eb == null || eb === IREndBehavior.Loop) {\n return 5;\n }\n if (eb === IREndBehavior.Hold) {\n return 4;\n }\n\n return 0;\n}\n\nfunction colorToRoundedRgba (color: IRColor): number[] {\n return [\n roundNumber(color[0]),\n roundNumber(color[1]),\n roundNumber(color[2]),\n roundNumber(color[3], 4),\n ];\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport { getStaticAnchor } from '../ir/layer-utils';\nimport type { GEItem } from '../types';\n\nexport function applyParenting (\n layers: IRLayerNode[],\n items: GEItem[],\n layerToItemId: Record<number, string>,\n ratio: number,\n width: number,\n height: number,\n): void {\n const layerByIndex = new Map<number, IRLayerNode>();\n\n for (const layer of layers) {\n layerByIndex.set(layer.index, layer);\n }\n\n const itemById = new Map<string, GEItem>();\n\n for (const item of items) {\n itemById.set(item.id, item);\n }\n\n for (const layer of layers) {\n if (layer.parent == null) {\n continue;\n }\n\n const childItemId = layerToItemId[layer.index];\n const parentLayer = layerByIndex.get(layer.parent.index);\n\n if (parentLayer == null || childItemId == null) {\n continue;\n }\n\n const parentItemId = layerToItemId[parentLayer.index];\n\n if (parentItemId == null) {\n continue;\n }\n\n const childItem = itemById.get(childItemId);\n\n if (childItem == null) {\n continue;\n }\n\n childItem.parentId = parentItemId;\n\n const parentAnchor = getStaticAnchor(parentLayer);\n const adjustX = -ratio * (parentAnchor[0] - width / 2);\n const adjustY = ratio * (parentAnchor[1] - height / 2);\n\n childItem.transform.position.x += adjustX;\n childItem.transform.position.y += adjustY;\n }\n}\n","/**\n * Mask post-process: emits a mask shape item + component for each layer that\n * carries `IRMaskData`, propagating the mask reference to the layer's renderer\n * component or — for parent layers — to descendant renderers.\n *\n * The decision to emit (per-layer) is gated solely on `layer.mask != null`,\n * so any IR producer can opt in by writing the field. Currently only lottie\n * IR has masks; dsl IR leaves `mask` undefined and this module no-ops for it.\n *\n * The lookup callbacks let each pipeline plug in its own layer-to-emitted-id\n * mapping — lottie keeps `layerToItemId`/`layerToComponentId`/`parentIndexSet`\n * during emission, dsl tracks differently. Mask handling stays generic.\n */\nimport type { IRComposition, IRCustomShapePath, IRLayerNode, IRMaskData } from '@vvfx/animation-ir';\nimport { roundNumber, createId, toDataPath } from '../utils';\nimport { buildTimelineTracks } from '../builders/timeline';\nimport { computeLayerTiming } from '../builders/timing';\nimport { getStaticAnchor } from '../ir/layer-utils';\nimport type { ECSCollector, GEItem, ProcessedItem } from '../types';\n\n/**\n * Pipeline-specific lookups consumed during mask emission. A pipeline that\n * never produces masks can pass stub callbacks (the iterator skips layers\n * without `mask`, so the callbacks are never invoked in that case).\n */\nexport interface MaskLayerLookup {\n getItemId(layerIndex: number): string | undefined;\n getComponentId(layerIndex: number): string | undefined;\n isParentLayer(layerIndex: number): boolean;\n}\n\n/**\n * Per-component bookkeeping for whichever mask currently occupies a renderer\n * component's single mask slot. Used only to arbitrate propagation; kept out of\n * the emitted ref so GE-irrelevant hints never reach the scene JSON.\n */\ntype MaskSlotMeta = Map<string, { isAutoMask: boolean; area: number }>;\n\nexport function applyMasks (\n ir: IRComposition,\n collector: ECSCollector,\n processedItems: ProcessedItem[],\n ratio: number,\n width: number,\n height: number,\n frameRate: number,\n lookup: MaskLayerLookup,\n): void {\n const layers = ir.layers;\n const maskSlotMeta: MaskSlotMeta = new Map();\n\n const componentById = new Map<string, Record<string, unknown>>();\n\n for (const comp of collector.components) {\n componentById.set(comp['id'] as string, comp);\n }\n\n for (let i = layers.length - 1; i >= 0; i--) {\n const layer = layers[i];\n const maskData = layer.mask;\n\n if (maskData == null) {\n continue;\n }\n\n if (isMaskExactCrop(maskData, layer, width, height, lookup)) {\n continue;\n }\n\n const layerItemId = lookup.getItemId(layer.index);\n\n if (layerItemId == null) {\n continue;\n }\n\n const layerComponentId = lookup.getComponentId(layer.index);\n\n buildMaskForLayer(layer, layerItemId, layerComponentId, collector, processedItems, ratio, width, height, frameRate, lookup, maskSlotMeta, componentById, maskData);\n }\n}\n\nfunction getPrimaryPath (mask: IRMaskData): IRCustomShapePath | undefined {\n return mask.paths[0];\n}\n\nfunction buildMaskForLayer (\n layer: IRLayerNode,\n layerItemId: string,\n layerComponentId: string | undefined,\n collector: ECSCollector,\n processedItems: ProcessedItem[],\n ratio: number,\n width: number,\n height: number,\n frameRate: number,\n lookup: MaskLayerLookup,\n maskSlotMeta: MaskSlotMeta,\n componentById: Map<string, Record<string, unknown>>,\n maskData?: IRMaskData,\n): void {\n const mask = maskData ?? layer.mask!;\n const maskItemId = createId();\n const maskComponentId = createId();\n const maskBounds = getMaskBounds(mask);\n\n const [anchorX, anchorY] = getStaticAnchor(layer);\n const maskPosX = roundNumber((maskBounds.cx - anchorX) * ratio, 4);\n const maskPosY = roundNumber(-(maskBounds.cy - anchorY) * ratio, 4);\n\n const timing = computeLayerTiming(layer, frameRate);\n const delay = timing.delay;\n const maskDuration = timing.layerDuration;\n\n const layerIsParent = lookup.isParentLayer(layer.index)\n || layer.type === 'null'\n || layer.type === 'precomp';\n\n const isAutoMask = mask.isAutoMask === true;\n const maskArea = maskBounds.width * maskBounds.height;\n\n if (layerIsParent) {\n const hasDescendants = hasClaimableRendererDescendants(\n collector.items, componentById, layerItemId, isAutoMask, maskArea, maskSlotMeta,\n );\n\n if (!hasDescendants) {\n return;\n }\n }\n\n const maskItem: GEItem = {\n id: maskItemId,\n dataType: 'VFXItemData',\n name: `${layer.name}_mask`,\n duration: maskDuration,\n type: 'shape',\n visible: true,\n endBehavior: 0,\n delay: roundNumber(delay, 4),\n renderLevel: 'B+',\n components: [toDataPath(maskComponentId)],\n transform: {\n position: { x: maskPosX, y: maskPosY, z: 0 },\n eulerHint: { x: 0, y: 0, z: 0 },\n anchor: { x: 0, y: 0 },\n scale: { x: 1, y: 1, z: 1 },\n },\n parentId: layerItemId,\n };\n\n const maskComponent: Record<string, unknown> = isSimpleRectMask(mask)\n ? {\n id: maskComponentId,\n item: toDataPath(maskItemId),\n type: 1,\n dataType: 'ShapeComponent',\n width: roundNumber(maskBounds.width * ratio, 4),\n height: roundNumber(maskBounds.height * ratio, 4),\n roundness: 0,\n fills: [{ type: 0, color: { r: 1, g: 1, b: 1, a: 0 } }],\n strokes: [],\n strokeWidth: 0,\n strokeCap: 0,\n strokeJoin: 0,\n renderer: { renderMode: 1 },\n mask: { isMask: true, alphaMaskEnabled: false },\n }\n : buildPolygonMaskComponent(maskComponentId, maskItemId, mask, maskBounds, ratio);\n\n collector.items.push(maskItem);\n collector.components.push(maskComponent);\n componentById.set(maskComponentId, maskComponent);\n\n if (layerIsParent) {\n applyMaskReferenceToDescendants(collector.items, componentById, layerItemId, maskComponentId, isAutoMask, maskArea, maskSlotMeta);\n } else if (layerComponentId != null) {\n const targetComponent = componentById.get(layerComponentId);\n\n if (targetComponent != null) {\n targetComponent['mask'] = buildMaskRef(maskComponentId);\n maskSlotMeta.set(layerComponentId, { isAutoMask, area: maskArea });\n }\n }\n\n const maskTrackId = buildTimelineTracks(\n collector, delay, maskDuration, 0, {}, 'shape',\n );\n\n processedItems.push({ itemId: maskItemId, objectBindingTrackId: maskTrackId, layerIndex: -1 });\n}\n\nfunction buildMaskRef (maskComponentId: string): Record<string, unknown> {\n return {\n isMask: false,\n reference: toDataPath(maskComponentId),\n inverted: false,\n };\n}\n\nfunction applyMaskReferenceToDescendants (\n items: GEItem[],\n componentById: Map<string, Record<string, unknown>>,\n parentItemId: string,\n maskComponentId: string,\n isAutoMask: boolean,\n maskArea: number,\n maskSlotMeta: MaskSlotMeta,\n): void {\n function visit (targetParentId: string): void {\n for (const item of items) {\n if (item.parentId !== targetParentId) {\n continue;\n }\n\n if (item.type === 'shape' && item.name.endsWith('_mask')) {\n continue;\n }\n\n const componentRefs = item.components;\n\n if (componentRefs != null && componentRefs.length > 0) {\n const compRef = componentRefs[0];\n const component = componentById.get(compRef.id);\n\n if (component != null && component['renderer'] != null\n && shouldClaimMaskSlot(component['mask'] != null, maskSlotMeta.get(compRef.id), isAutoMask, maskArea)) {\n component['mask'] = buildMaskRef(maskComponentId);\n maskSlotMeta.set(compRef.id, { isAutoMask, area: maskArea });\n }\n }\n\n visit(item.id);\n }\n }\n\n visit(parentItemId);\n}\n\n/**\n * Decide whether a propagating mask should take a renderer component's single\n * mask slot. Preserves the original arbitration: an empty slot is always taken;\n * an authored mask is never displaced; an auto mask yields to an authored mask\n * or to a tighter (smaller-area) auto mask.\n */\nfunction shouldClaimMaskSlot (\n hasExistingMask: boolean,\n existing: { isAutoMask: boolean; area: number } | undefined,\n isAutoMask: boolean,\n maskArea: number,\n): boolean {\n if (!hasExistingMask) {\n return true;\n }\n\n if (existing?.isAutoMask !== true) {\n return false;\n }\n\n if (!isAutoMask) {\n return true;\n }\n\n return maskArea < existing.area;\n}\n\nfunction hasClaimableRendererDescendants (\n items: GEItem[],\n componentById: Map<string, Record<string, unknown>>,\n parentItemId: string,\n isCurrentAutoMask: boolean,\n currentMaskArea: number,\n maskSlotMeta: MaskSlotMeta,\n): boolean {\n function visit (targetParentId: string): boolean {\n for (const item of items) {\n if (item.parentId !== targetParentId) {\n continue;\n }\n\n const componentRefs = item.components;\n\n if (componentRefs != null && componentRefs.length > 0) {\n const compRef = componentRefs[0];\n const component = componentById.get(compRef.id);\n\n if (component != null && component['renderer'] != null\n && shouldClaimMaskSlot(component['mask'] != null, maskSlotMeta.get(compRef.id), isCurrentAutoMask, currentMaskArea)) {\n return true;\n }\n }\n\n if (visit(item.id)) {\n return true;\n }\n }\n\n return false;\n }\n\n return visit(parentItemId);\n}\n\nfunction computePointBounds (points: Array<{ x: number; y: number }>): { minX: number; minY: number; maxX: number; maxY: number } {\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n\n for (const point of points) {\n minX = Math.min(minX, point.x);\n minY = Math.min(minY, point.y);\n maxX = Math.max(maxX, point.x);\n maxY = Math.max(maxY, point.y);\n }\n\n return { minX, minY, maxX, maxY };\n}\n\nfunction isMaskExactCrop (mask: IRMaskData, layer: IRLayerNode, width: number, height: number, lookup: MaskLayerLookup): boolean {\n const path = getPrimaryPath(mask);\n\n if (path == null || path.points.length === 0) {\n return true;\n }\n\n const { minX, minY, maxX, maxY } = computePointBounds(path.points);\n\n const maskW = maxX - minX;\n const maskH = maxY - minY;\n\n if (mask.isAutoMask === true) {\n if (Math.abs(maskW - width) < 1 && Math.abs(maskH - height) < 1) {\n return true;\n }\n }\n\n const layerIsParent = lookup.isParentLayer(layer.index)\n || layer.type === 'null'\n || layer.type === 'precomp';\n\n if (mask.isAutoMask !== true && layerIsParent && isSimpleRectMask(mask)) {\n const precompW = layer.asset?.width;\n const precompH = layer.asset?.height;\n\n if (precompW != null && precompH != null && precompW > 0 && precompH > 0) {\n if (minX <= 0 && minY <= 0 && maxX >= precompW && maxY >= precompH) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nfunction getMaskBounds (mask: IRMaskData): { cx: number; cy: number; width: number; height: number } {\n const path = getPrimaryPath(mask);\n\n if (path == null || path.points.length === 0) {\n return { cx: 0, cy: 0, width: 0, height: 0 };\n }\n\n const { minX, minY, maxX, maxY } = computePointBounds(path.points);\n\n return {\n cx: (minX + maxX) / 2,\n cy: (minY + maxY) / 2,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nfunction isSimpleRectMask (mask: IRMaskData): boolean {\n const path = getPrimaryPath(mask);\n\n if (path == null) {\n return false;\n }\n\n return path.points.length === 4\n && path.easingIns.every(e => Math.abs(e.x) < 0.01 && Math.abs(e.y) < 0.01)\n && path.easingOuts.every(e => Math.abs(e.x) < 0.01 && Math.abs(e.y) < 0.01);\n}\n\nfunction buildPolygonMaskComponent (\n maskComponentId: string,\n maskItemId: string,\n mask: IRMaskData,\n bounds: { cx: number; cy: number; width: number; height: number },\n ratio: number,\n): Record<string, unknown> {\n const path = getPrimaryPath(mask);\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 if (path != null) {\n for (let idx = 0; idx < path.points.length; idx++) {\n const pt = path.points[idx];\n const ei = path.easingIns[idx];\n const eo = path.easingOuts[idx];\n\n customPoints.push({\n x: roundNumber((pt.x - bounds.cx) * ratio, 4),\n y: roundNumber(-(pt.y - bounds.cy) * ratio, 4),\n });\n customEasingIns.push({\n x: roundNumber((ei?.x ?? 0) * ratio, 4),\n y: roundNumber(-(ei?.y ?? 0) * ratio, 4),\n });\n customEasingOuts.push({\n x: roundNumber((eo?.x ?? 0) * ratio, 4),\n y: roundNumber(-(eo?.y ?? 0) * ratio, 4),\n });\n customIndexes.push({ point: idx, easingIn: idx, easingOut: idx });\n }\n }\n\n return {\n id: maskComponentId,\n item: toDataPath(maskItemId),\n type: 0,\n dataType: 'ShapeComponent',\n points: customPoints,\n easingIns: customEasingIns,\n easingOuts: customEasingOuts,\n shapes: [{ close: path?.close ?? true, indexes: customIndexes }],\n fills: [{ type: 0, color: { r: 1, g: 1, b: 1, a: 0 } }],\n strokes: [],\n strokeWidth: 0,\n strokeCap: 0,\n strokeJoin: 0,\n renderer: { renderMode: 1 },\n mask: { isMask: true, alphaMaskEnabled: false },\n };\n}\n","import { toDataPath } from '../utils';\nimport type { ECSCollector } from '../types';\n\n/**\n * Remap GE mask references after ge2ir round-trip.\n *\n * ge2ir carries each masked component's raw `mask` object verbatim (via\n * `IRLayerNode.metadata.ge2ir.geMask`), but `mask.reference.id` still points at the\n * ORIGINAL (GE1) mask-source component id, which ir2ge has regenerated. This\n * pass rewrites every target's `reference.id` from the stale GE1 id to the\n * freshly-minted GE2 component id, using the `geComponentId → newId` map built\n * during the layer walk.\n *\n * Mirrors `applyParenting`: an IR-side reference (here the stale id stored in\n * data) → map → regenerated id → written in place. Mask SOURCE components have\n * no `reference` and are skipped. Dangling references (source not regenerated —\n * e.g. dropped by the null+sprite merger) have their `mask` removed so the GE\n * runtime doesn't choke on an id that resolves to nothing.\n */\nexport function applyGeMaskRemap (\n collector: ECSCollector,\n geComponentIdToNewId: Record<string, string>,\n): void {\n for (const component of collector.components) {\n const mask = component['mask'] as Record<string, unknown> | undefined;\n\n if (mask == null) {\n continue;\n }\n\n const reference = mask['reference'] as { id?: string } | undefined;\n const oldId = reference?.id;\n\n if (oldId == null) {\n // Mask source (isMask:true) — no reference to remap.\n continue;\n }\n\n const newId = geComponentIdToNewId[oldId];\n\n if (newId == null) {\n // Dangling: the referenced source was not regenerated. Drop the mask so\n // the target renders unmasked rather than referencing a nonexistent id.\n delete component['mask'];\n\n continue;\n }\n\n mask['reference'] = toDataPath(newId);\n }\n}\n","import type { DataPath, TimelineClipData } from '@galacean/effects-specification';\n\ninterface ProcessedItemRef {\n itemId: string;\n objectBindingTrackId: string;\n}\n\ninterface NormalizeVisibilityParams {\n items: Record<string, unknown>[];\n miscs: Record<string, unknown>[];\n processedItems: ProcessedItemRef[];\n /** Item IDs whose parent-child relationship only inherits transform, not visibility. */\n transformOnlyParentLinkItemIds?: Set<string>;\n roundNumber: (value: number, precision: number) => number;\n}\n\n/**\n * Normalize child visibility delays so children never appear before their parent.\n *\n * Topologically sorts items (parent-first) so by the time we process any child\n * its parent's delay/duration are already finalized. For transform-only\n * parent-link children, we instead advance the parent's delay/duration so the\n * child can render from its own start time (GE requires the parent to be active\n * for transform inheritance, but the parent-link relationship does not propagate\n * visibility). Only the ActivationTrack clip is updated; TransformTrack\n * keyframes are normalized to the original time range and would hold their\n * first frame value if the track started earlier.\n */\nexport function normalizeChildVisibilityByParentDelays ({\n items,\n miscs,\n processedItems,\n transformOnlyParentLinkItemIds = new Set<string>(),\n roundNumber,\n}: NormalizeVisibilityParams): void {\n const itemById = new Map<string, Record<string, unknown>>();\n\n for (const item of items) {\n itemById.set(item['id'] as string, item);\n }\n\n const processedByItemId = new Map<string, ProcessedItemRef>();\n\n for (const pi of processedItems) {\n processedByItemId.set(pi.itemId, pi);\n }\n\n const miscById = new Map<string, Record<string, unknown>>();\n\n for (const misc of miscs) {\n miscById.set(misc['id'] as string, misc);\n }\n\n // Phase 1: Advance transform-only parent-link parents so their children can\n // render from the child's own start time.\n advanceTransformOnlyParentLinkParents(\n items,\n itemById,\n processedByItemId,\n miscById,\n transformOnlyParentLinkItemIds,\n roundNumber,\n );\n\n // Phase 2: Normalize precomp child visibility (unchanged).\n const effectiveDelayCache = new Map<string, number>();\n\n function getEffectiveDelay (itemId: string, visited = new Set<string>()): number {\n if (effectiveDelayCache.has(itemId)) {\n return effectiveDelayCache.get(itemId) as number;\n }\n if (visited.has(itemId)) {\n return 0;\n }\n\n visited.add(itemId);\n\n const item = itemById.get(itemId);\n\n if (item == null) {\n return 0;\n }\n\n let delay = (item['delay'] as number) ?? 0;\n const parentId = item['parentId'] as string | undefined;\n\n if (parentId != null && parentId !== '') {\n delay = Math.max(delay, getEffectiveDelay(parentId, visited));\n }\n\n effectiveDelayCache.set(itemId, delay);\n\n return delay;\n }\n\n // Build topological order (parent-first) so that when processing any child,\n // its parent's delay/duration are already finalized.\n const sortedItems = topologicalSort(items, itemById);\n\n for (const item of sortedItems) {\n const itemId = item['id'] as string;\n const originalDelay = (item['delay'] as number) ?? 0;\n const originalDuration = (item['duration'] as number) ?? 0;\n const effectiveDelay = getEffectiveDelay(itemId);\n\n if (effectiveDelay <= originalDelay) {\n continue;\n }\n\n const parentId = item['parentId'] as string | undefined;\n const parentItem = (parentId != null && parentId !== '') ? itemById.get(parentId) : undefined;\n const parentDuration = parentItem ? ((parentItem['duration'] as number) ?? 0) : 0;\n\n // Distinguish time-contained children from global-time parent-link children:\n // Precomp children live entirely within the parent's time range (delay + duration <= parentDuration).\n // Parent-link children share the global time coordinate with their parent.\n const isPrecompChild = parentItem != null\n && (originalDelay + originalDuration) <= parentDuration + 0.001;\n\n let newDuration: number;\n\n if (isPrecompChild) {\n // Precomp child: keep duration unchanged (clamped to parent boundary).\n newDuration = Math.min(originalDuration, parentDuration - originalDelay);\n } else {\n // Parent-link child: trim the invisible portion before effectiveDelay.\n const timeDiff = effectiveDelay - originalDelay;\n\n newDuration = originalDuration - timeDiff;\n }\n\n if (newDuration <= 0) {\n newDuration = 0.0001;\n }\n\n item['delay'] = roundNumber(effectiveDelay, 4);\n item['duration'] = roundNumber(newDuration, 4);\n\n syncTimelineClips(itemId, effectiveDelay, newDuration, processedByItemId, miscById, roundNumber);\n }\n}\n\nfunction advanceTransformOnlyParentLinkParents (\n items: Record<string, unknown>[],\n itemById: Map<string, Record<string, unknown>>,\n processedByItemId: Map<string, ProcessedItemRef>,\n miscById: Map<string, Record<string, unknown>>,\n transformOnlyParentLinkItemIds: Set<string>,\n roundNumber: (value: number, precision: number) => number,\n): void {\n if (transformOnlyParentLinkItemIds.size === 0) {\n return;\n }\n\n // Collect the maximum advance (head) and extension (tail) needed per parent.\n const parentAdvanceMap = new Map<string, number>();\n const parentExtendMap = new Map<string, number>();\n\n for (const item of items) {\n if (!transformOnlyParentLinkItemIds.has(item['id'] as string)) {\n continue;\n }\n\n const parentId = item['parentId'] as string | undefined;\n\n if (parentId == null || parentId === '') {\n continue;\n }\n\n const parentItem = itemById.get(parentId);\n\n if (parentItem == null) {\n continue;\n }\n\n const childDelay = (item['delay'] as number) ?? 0;\n const childDuration = (item['duration'] as number) ?? 0;\n const parentDelay = (parentItem['delay'] as number) ?? 0;\n const parentDuration = (parentItem['duration'] as number) ?? 0;\n\n if (childDelay < parentDelay) {\n const advance = parentDelay - childDelay;\n const existing = parentAdvanceMap.get(parentId) ?? 0;\n\n if (advance > existing) {\n parentAdvanceMap.set(parentId, advance);\n }\n }\n\n const childEnd = childDelay + childDuration;\n const parentEnd = parentDelay + parentDuration;\n\n if (childEnd > parentEnd + 0.001) {\n const extend = childEnd - parentEnd;\n const existing = parentExtendMap.get(parentId) ?? 0;\n\n if (extend > existing) {\n parentExtendMap.set(parentId, extend);\n }\n }\n }\n\n // Merge all parent IDs that need adjustment.\n const allParentIds = new Set([...parentAdvanceMap.keys(), ...parentExtendMap.keys()]);\n\n // Apply adjustments: update parent item delay/duration and sync ActivationTrack clips.\n for (const parentId of allParentIds) {\n const parentItem = itemById.get(parentId);\n\n if (parentItem == null) {\n continue;\n }\n\n const advance = parentAdvanceMap.get(parentId) ?? 0;\n const extend = parentExtendMap.get(parentId) ?? 0;\n const parentDelay = (parentItem['delay'] as number) ?? 0;\n const parentDuration = (parentItem['duration'] as number) ?? 0;\n const newDelay = roundNumber(parentDelay - advance, 4);\n const newDuration = roundNumber(parentDuration + advance + extend, 4);\n\n parentItem['delay'] = newDelay;\n parentItem['duration'] = newDuration;\n\n // Only sync ActivationTrack — TransformTrack keyframes are normalized to\n // the original time range and will hold their last frame value when the\n // track extends beyond the original duration.\n const processed = processedByItemId.get(parentId);\n\n if (processed != null) {\n const obt = miscById.get(processed.objectBindingTrackId);\n\n if (obt != null && Array.isArray(obt['children'])) {\n for (const childRef of obt['children'] as DataPath[]) {\n const childTrack = miscById.get(childRef.id);\n\n if (childTrack?.['dataType'] === 'ActivationTrack' && Array.isArray(childTrack['clips'])) {\n for (const clip of childTrack['clips'] as TimelineClipData[]) {\n clip.start = newDelay;\n clip.duration = newDuration;\n }\n }\n }\n }\n }\n }\n}\n\n/**\n * Topological sort: parents are processed before their children.\n * Falls back to original order for items without parent relationships.\n */\nfunction topologicalSort (\n items: Record<string, unknown>[],\n itemById: Map<string, Record<string, unknown>>,\n): Record<string, unknown>[] {\n const sorted: Record<string, unknown>[] = [];\n const visited = new Set<string>();\n\n function visit (item: Record<string, unknown>): void {\n const itemId = item['id'] as string;\n\n if (visited.has(itemId)) {\n return;\n }\n\n visited.add(itemId);\n\n const parentId = item['parentId'] as string | undefined;\n\n if (parentId != null && parentId !== '') {\n const parentItem = itemById.get(parentId);\n\n if (parentItem != null) {\n visit(parentItem);\n }\n }\n\n sorted.push(item);\n }\n\n for (const item of items) {\n visit(item);\n }\n\n return sorted;\n}\n\nfunction syncTimelineClips (\n itemId: string,\n delay: number,\n duration: number,\n processedByItemId: Map<string, ProcessedItemRef>,\n miscById: Map<string, Record<string, unknown>>,\n roundNumber: (value: number, precision: number) => number,\n): void {\n const processedItem = processedByItemId.get(itemId);\n\n if (processedItem == null) {\n return;\n }\n\n const obt = miscById.get(processedItem.objectBindingTrackId);\n\n if (obt == null || !Array.isArray(obt['children'])) {\n return;\n }\n\n for (const childRef of obt['children'] as DataPath[]) {\n const childTrack = miscById.get(childRef.id);\n\n if (childTrack == null || !Array.isArray(childTrack['clips'])) {\n continue;\n }\n\n const trackType = childTrack['dataType'] as string;\n\n if (trackType !== 'ActivationTrack' && trackType !== 'TransformTrack' && trackType !== 'SpriteColorTrack') {\n continue;\n }\n\n for (const clip of childTrack['clips'] as TimelineClipData[]) {\n clip.start = roundNumber(delay, 4);\n clip.duration = roundNumber(duration, 4);\n }\n }\n}\n","import type { IRComposition } from '@vvfx/animation-ir';\nimport type { ECSCollector, ProcessedItem } from '../types';\nimport { applyParenting } from './parenting';\nimport { applyMasks, type MaskLayerLookup } from './mask';\nimport { applyGeMaskRemap } from './ge-mask-remap';\nimport { normalizeChildVisibilityByParentDelays } from './visibility';\nimport { isTransformOnlyParentLink } from '../ir/parent-link';\nimport { roundNumber } from '../utils';\n\nexport type { MaskLayerLookup } from './mask';\n\n/**\n * Post-emit state populated by the unified pipeline's per-layer walk.\n * All fields beyond `collector` + `processedItems` are optional — each\n * post-process step is gated on the presence of the data it needs, not\n * on `ir.source`. Steps that only apply to certain sources naturally\n * no-op when the relevant data is absent (e.g. dsl IR has no masks).\n */\nexport interface PostProcessState {\n collector: ECSCollector;\n processedItems: ProcessedItem[];\n /** Per-layer lookups consumed by the shared mask post-process. */\n maskLookup?: MaskLayerLookup;\n layerToItemId?: Record<number, string>;\n parentIndexSet?: Set<number>;\n ratio?: number;\n width?: number;\n height?: number;\n frameRate?: number;\n /** GE1→GE2 component-id map for remapping ge2ir mask passthrough references. */\n geComponentIdToNewId?: Record<string, string>;\n}\n\n/**\n * Run post-emit mutations on the collector before `assembleScene`.\n * Order: parenting → mask → visibility. Each step is gated on whether\n * the pipeline supplied the required tracking state.\n */\nexport function applyPostProcess (ir: IRComposition, state: PostProcessState): void {\n applyParentingStep(ir, state);\n applySharedMaskPostProcess(ir, state);\n applyGeMaskRemapStep(ir, state);\n applyVisibilityStep(ir, state);\n}\n\nfunction applyGeMaskRemapStep (ir: IRComposition, state: PostProcessState): void {\n // Only ge-sourced compositions carry passthrough mask references that need\n // remapping. Lottie/dsl masks are built with correct ids by applyMasks and\n // must not be touched (their reference ids are absent from the ge map, so a\n // blind remap would wrongly delete them).\n if (ir.source !== 'ge' || state.geComponentIdToNewId == null) {\n return;\n }\n\n applyGeMaskRemap(state.collector, state.geComponentIdToNewId);\n}\n\nfunction applySharedMaskPostProcess (ir: IRComposition, state: PostProcessState): void {\n if (state.maskLookup == null\n || state.ratio == null\n || state.width == null\n || state.height == null\n || state.frameRate == null\n ) {\n return;\n }\n\n applyMasks(\n ir,\n state.collector,\n state.processedItems,\n state.ratio,\n state.width,\n state.height,\n state.frameRate,\n state.maskLookup,\n );\n}\n\nfunction applyParentingStep (ir: IRComposition, state: PostProcessState): void {\n const { collector, layerToItemId, ratio, width, height } = state;\n\n if (layerToItemId == null || ratio == null || width == null || height == null) {\n return;\n }\n\n applyParenting(ir.layers, collector.items, layerToItemId, ratio, width, height);\n}\n\nfunction applyVisibilityStep (ir: IRComposition, state: PostProcessState): void {\n const { collector, processedItems, layerToItemId } = state;\n\n if (layerToItemId == null) {\n return;\n }\n\n const transformOnlyParentLinkItemIds = new Set<string>();\n\n for (const layer of ir.layers) {\n if (isTransformOnlyParentLink(layer)) {\n const itemId = layerToItemId[layer.index];\n\n if (itemId != null) {\n transformOnlyParentLinkItemIds.add(itemId);\n }\n }\n }\n\n normalizeChildVisibilityByParentDelays({\n items: collector.items as unknown as Record<string, unknown>[],\n miscs: collector.miscs,\n processedItems,\n transformOnlyParentLinkItemIds,\n roundNumber,\n });\n}\n","/**\n * Unified IR → GE scene generation pipeline. All IR sources (lottie, dsl2ge,\n * future) are processed here. Source-specific features are gated by data\n * existence (e.g. mask, precomp, shape layers are absent in dsl IR and\n * naturally skipped); `ir.source` branches are used only for B-class real\n * semantic differences that cannot be expressed via data existence.\n */\n\nimport type { IRComposition, IRLayerNode } from '@vvfx/animation-ir';\nimport { validateIRCompositionWithWarnings } from '@vvfx/animation-ir';\nimport type { DataPath, JSONScene } from '@galacean/effects-specification';\nimport { get2dTo3dRatio } from '../../shared/coordinate';\nimport { processNullLayer, processParentLayer, processVisualLayer } from '../builders/layer';\nimport { assembleScene } from './scene-assembly';\nimport { applyPostProcess } from '../post-process';\nimport { readGE2IRMetadata } from '../../shared/ge2ir-metadata';\nimport type { ECSCollector, LayerProcessingContext, ProcessedItem } from '../types';\n\n/**\n * Convert an IR composition to a GE JSONScene.\n *\n * All IR sources (lottie, dsl2ge, future) go through this single unified\n * pipeline. Source-specific features are gated by data existence (e.g. mask,\n * precomp, shape layers are absent in dsl IR and naturally skipped);\n * `ir.source` branches are used only for B-class real semantic differences\n * that cannot be expressed via data existence.\n *\n * The optional `duration` arg is a caller override; lottie2ge currently passes\n * the duration computed from the raw json upstream. When omitted, the\n * canonical assembler derives it from `(outPoint - inPoint) / frameRate`.\n */\nexport function convertIRToGE (\n ir: IRComposition,\n duration?: number,\n): JSONScene {\n validateIRCompositionWithWarnings(ir);\n\n const { width, height, frameRate } = ir;\n const ratio = get2dTo3dRatio(width, height);\n\n const collector: ECSCollector = {\n images: [],\n components: [],\n items: [],\n textures: [],\n miscs: [],\n };\n const processedItems: ProcessedItem[] = [];\n const layerToItemId: Record<number, string> = {};\n const layerToComponentId: Record<number, string> = {};\n const textureCache = new Map<string, DataPath>();\n\n const parentIndexSet = new Set<number>();\n\n for (const layer of ir.layers) {\n if (layer.parent != null) {\n parentIndexSet.add(layer.parent.index);\n }\n }\n\n const workingIR: IRComposition = {\n ...ir,\n layers: getLayersWithExtendedParentEndFrames(ir.layers, parentIndexSet),\n };\n\n const ctx: LayerProcessingContext = {\n ir: workingIR,\n collector,\n processedItems,\n layerToItemId,\n layerToComponentId,\n textureCache,\n parentIndexSet,\n ratio,\n width,\n height,\n frameRate,\n };\n\n for (const layer of workingIR.layers) {\n processLayer(layer, ctx);\n }\n\n // Build GE1-component-id → regenerated-component-id map for mask reference\n // remapping (ge2ir round-trip). Keyed by the original GE component id that\n // ge2ir stored in metadata; value is the component id this layer minted.\n const geComponentIdToNewId: Record<string, string> = {};\n\n for (const layer of workingIR.layers) {\n const geComponentId = readGE2IRMetadata(workingIR, layer)?.geComponentId;\n const newId = layerToComponentId[layer.index];\n\n if (geComponentId != null && newId != null) {\n geComponentIdToNewId[geComponentId] = newId;\n }\n }\n\n applyPostProcess(workingIR, {\n collector,\n processedItems,\n layerToItemId,\n parentIndexSet,\n ratio,\n width,\n height,\n frameRate,\n geComponentIdToNewId,\n maskLookup: {\n getItemId: idx => layerToItemId[idx],\n getComponentId: idx => layerToComponentId[idx],\n isParentLayer: idx => parentIndexSet.has(idx),\n },\n });\n\n collector.items.reverse();\n processedItems.reverse();\n\n return assembleScene(workingIR, collector, processedItems, duration);\n}\n\nfunction processLayer (layer: IRLayerNode, ctx: LayerProcessingContext): void {\n if (layer.type === 'null' || layer.type === 'precomp') {\n processNullLayer(layer, ctx);\n } else if (ctx.parentIndexSet.has(layer.index)) {\n processParentLayer(layer, ctx);\n } else {\n processVisualLayer(layer, ctx);\n }\n}\n\n/**\n * Extend parent layers' endFrame to cover transform-only children's time spans.\n *\n * In Lottie, child layers (linked via layer.parent) inherit the parent's transform\n * even after the parent becomes invisible. GE requires the parent item to be active\n * for transform inheritance to work, so we extend the parent's endFrame to cover\n * the full lifetime of its transform-only children.\n *\n * Keyframes beyond the extended endFrame are NOT included — they represent animation\n * that never plays in Lottie (layer is invisible and has no child needing it).\n */\nfunction getLayersWithExtendedParentEndFrames (layers: IRLayerNode[], parentIndexSet: Set<number>): IRLayerNode[] {\n const clonedLayers = layers.map(layer => ({\n ...layer,\n time: { ...layer.time },\n }));\n\n for (const layer of clonedLayers) {\n if (!parentIndexSet.has(layer.index)) {\n continue;\n }\n\n let maxEnd = layer.time.endFrame;\n\n for (const child of clonedLayers) {\n if (child.parent?.index === layer.index && child.parent.linkKind === 'transform-only') {\n if (child.time.endFrame > maxEnd) {\n maxEnd = child.time.endFrame;\n }\n }\n }\n\n if (maxEnd > layer.time.endFrame) {\n layer.time.endFrame = maxEnd;\n }\n }\n\n return clonedLayers;\n}\n","import type { GEPoolIndex, GERecord } from '../../shared/types';\n\nexport function buildPoolIndex (pool: GERecord[] | undefined): GEPoolIndex {\n const map: GEPoolIndex = new Map();\n\n if (!Array.isArray(pool)) {\n return map;\n }\n\n for (const entry of pool) {\n const id = entry['id'];\n\n if (typeof id === 'string') {\n map.set(id, entry);\n }\n }\n\n return map;\n}\n\nexport function resolveDataPath (\n pool: GEPoolIndex,\n ref: unknown,\n): GERecord | undefined {\n if (ref == null || typeof ref !== 'object') {\n return undefined;\n }\n\n const id = (ref as GERecord)['id'];\n\n if (typeof id !== 'string') {\n return undefined;\n }\n\n return pool.get(id);\n}\n\nexport function resolveDataPathId (ref: unknown): string | undefined {\n if (ref == null || typeof ref !== 'object') {\n return undefined;\n }\n\n const id = (ref as GERecord)['id'];\n\n return typeof id === 'string' ? id : undefined;\n}\n","import { IREndBehavior } from '@vvfx/animation-ir';\nimport type { IREndBehavior as IREndBehaviorType } from '@vvfx/animation-ir';\n\nexport function reverseEndBehavior (geBehavior: number | undefined): IREndBehaviorType | undefined {\n if (geBehavior == null) {\n return undefined;\n }\n\n switch (geBehavior) {\n case 0:\n return IREndBehavior.Stop;\n case 4:\n return IREndBehavior.Hold;\n case 5:\n return IREndBehavior.Loop;\n default:\n return undefined;\n }\n}\n\nexport function reverseCompositionEndBehavior (geBehavior: number | undefined): IREndBehaviorType | undefined {\n return reverseEndBehavior(geBehavior);\n}\n","import type { IRColor } from '@vvfx/animation-ir';\nimport { get2dTo3dRatio } from '../shared/coordinate';\nimport { buildPoolIndex, resolveDataPath, resolveDataPathId } from './pool/pool';\nimport { reverseCompositionEndBehavior } from './reverse/end-behavior';\nimport type { GE2IROptions, GESceneContext } from './types';\n\nexport function buildSceneContext (scene: Record<string, unknown>, options: GE2IROptions): GESceneContext {\n const compositionId = scene['compositionId'] as string;\n const compositions = scene['compositions'] as Record<string, unknown>[];\n const composition = compositions?.find(c => c['id'] === compositionId);\n\n if (composition == null) {\n throw new Error(`[ge2ir] composition not found for id: ${compositionId}`);\n }\n\n const previewSize = composition['previewSize'] as [number, number] | undefined;\n const width = previewSize?.[0] ?? 512;\n const height = previewSize?.[1] ?? 512;\n const duration = composition['duration'] as number ?? 1;\n const frameRate = options.frameRate;\n const ratio = get2dTo3dRatio(width, height);\n\n const inPoint = 0;\n const outPoint = Math.round(duration * frameRate);\n\n const endBehavior = reverseCompositionEndBehavior(composition['endBehavior'] as number | undefined);\n\n let backgroundColor: IRColor | undefined;\n const bg = composition['background'] as Record<string, unknown> | undefined;\n\n if (bg != null) {\n const color = bg['color'] as number[] | undefined;\n\n if (color != null && color.length >= 4) {\n backgroundColor = [color[0], color[1], color[2], color[3]];\n }\n }\n\n const compositionName = (composition['name'] as string) ?? 'Untitled';\n\n const items = scene['items'] as Record<string, unknown>[] | undefined;\n const components = scene['components'] as Record<string, unknown>[] | undefined;\n const miscs = scene['miscs'] as Record<string, unknown>[] | undefined;\n const images = scene['images'] as Record<string, unknown>[] | undefined;\n const textures = scene['textures'] as Record<string, unknown>[] | undefined;\n\n const itemById = buildPoolIndex(items);\n const componentById = buildPoolIndex(components);\n const miscById = buildPoolIndex(miscs);\n const imageById = buildPoolIndex(images);\n const textureById = buildPoolIndex(textures);\n\n const itemIdToTrackId = buildSceneBindings(componentById, miscById, composition);\n\n return {\n width,\n height,\n frameRate,\n ratio,\n duration,\n inPoint,\n outPoint,\n compositionName,\n endBehavior,\n backgroundColor,\n itemById,\n componentById,\n miscById,\n imageById,\n textureById,\n itemIdToTrackId,\n };\n}\n\nfunction buildSceneBindings (\n componentById: Map<string, Record<string, unknown>>,\n miscById: Map<string, Record<string, unknown>>,\n composition: Record<string, unknown>,\n): Map<string, string> {\n const map = new Map<string, string>();\n const compositionComponent = findCompositionComponent(componentById, composition);\n\n if (compositionComponent == null) {\n return map;\n }\n\n const bindings = compositionComponent['sceneBindings'] as Array<{\n key: { id: string };\n value: { id: string };\n }> | undefined;\n\n if (bindings == null) {\n return map;\n }\n\n for (const binding of bindings) {\n const trackId = resolveDataPathId(binding.key);\n const itemId = resolveDataPathId(binding.value);\n\n if (trackId != null && itemId != null) {\n map.set(itemId, trackId);\n }\n }\n\n return map;\n}\n\nfunction findCompositionComponent (\n componentById: Map<string, Record<string, unknown>>,\n composition: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n const compRefs = composition['components'] as Array<{ id: string }> | undefined;\n\n if (compRefs == null || compRefs.length === 0) {\n return undefined;\n }\n\n for (const ref of compRefs) {\n const component = resolveDataPath(componentById, ref);\n\n if (component?.['dataType'] === 'CompositionComponent') {\n return component;\n }\n }\n\n return undefined;\n}\n\nexport function getCompositionItemIds (scene: Record<string, unknown>): string[] {\n const compositionId = scene['compositionId'] as string;\n const compositions = scene['compositions'] as Record<string, unknown>[];\n const composition = compositions?.find(c => c['id'] === compositionId);\n\n if (composition == null) {\n return [];\n }\n\n const componentById = buildPoolIndex(scene['components'] as Record<string, unknown>[] | undefined);\n const compositionComponent = findCompositionComponent(componentById, composition);\n\n if (compositionComponent == null) {\n return [];\n }\n\n const itemRefs = compositionComponent['items'] as Array<{ id: string }> | undefined;\n\n if (itemRefs == null) {\n return [];\n }\n\n return itemRefs.map(ref => ref.id).filter((id): id is string => typeof id === 'string');\n}\n","import { resolveDataPath, resolveDataPathId } from '../pool/pool';\nimport type { GESceneContext } from '../types';\n\nexport interface TimelineData {\n delay: number;\n duration: number;\n endBehavior: number;\n transformAsset?: Record<string, unknown>;\n spriteColorAsset?: Record<string, unknown>;\n}\n\nexport function parseTimeline (\n itemId: string,\n ctx: GESceneContext,\n): TimelineData | undefined {\n const trackId = ctx.itemIdToTrackId.get(itemId);\n\n if (trackId == null) {\n return undefined;\n }\n\n const objectBindingTrack = ctx.miscById.get(trackId);\n\n if (objectBindingTrack == null) {\n return undefined;\n }\n\n const childRefs = objectBindingTrack['children'] as Array<{ id: string }> | undefined;\n\n if (childRefs == null) {\n return undefined;\n }\n\n let delay = 0;\n let duration = 0;\n let endBehavior = 0;\n let transformAsset: Record<string, unknown> | undefined;\n let spriteColorAsset: Record<string, unknown> | undefined;\n\n for (const ref of childRefs) {\n const childTrackId = resolveDataPathId(ref);\n\n if (childTrackId == null) {\n continue;\n }\n\n const childTrack = ctx.miscById.get(childTrackId);\n\n if (childTrack == null) {\n continue;\n }\n\n const dataType = childTrack['dataType'] as string;\n const clips = childTrack['clips'] as Array<Record<string, unknown>> | undefined;\n\n if (clips == null || clips.length === 0) {\n continue;\n }\n\n const clip = clips[0];\n\n if (dataType === 'ActivationTrack') {\n delay = (clip['start'] as number) ?? 0;\n duration = (clip['duration'] as number) ?? 0;\n endBehavior = (clip['endBehavior'] as number) ?? 0;\n } else if (dataType === 'TransformTrack') {\n const assetRef = clip['asset'] as { id: string } | undefined;\n\n if (assetRef != null) {\n transformAsset = resolveDataPath(ctx.miscById, assetRef);\n }\n } else if (dataType === 'SpriteColorTrack') {\n const assetRef = clip['asset'] as { id: string } | undefined;\n\n if (assetRef != null) {\n spriteColorAsset = resolveDataPath(ctx.miscById, assetRef);\n }\n }\n }\n\n return { delay, duration, endBehavior, transformAsset, spriteColorAsset };\n}\n","import { DEFAULT_CAMERA_Z, get2dTo3dRatio } from '../../shared/coordinate';\n\nexport function convert3dTo2dPoint (\n x: number,\n y: number,\n z: number,\n width: number,\n height: number,\n): [number, number, number] {\n const ratio = get2dTo3dRatio(width, height);\n const adaptRatioZ = (DEFAULT_CAMERA_Z - z) / DEFAULT_CAMERA_Z;\n const effectiveRatio = Math.abs(adaptRatioZ) > 1e-10 ? ratio * adaptRatioZ : ratio;\n const px = x / effectiveRatio + width / 2;\n const py = height / 2 - y / effectiveRatio;\n\n return [px, py, z];\n}\n","import type { IRTransformChannels, IRVec3 } from '@vvfx/animation-ir';\nimport { convert3dTo2dPoint } from '../reverse/coordinate';\nimport type { GESceneContext } from '../types';\n\nexport function parseStaticTransform (\n itemTransform: Record<string, unknown>,\n ctx: GESceneContext,\n): Partial<IRTransformChannels> {\n const channels: Partial<IRTransformChannels> = {};\n\n const position = itemTransform['position'] as { x: number; y: number; z: number } | undefined;\n\n if (position != null) {\n const pos2d = convert3dTo2dPoint(position.x, position.y, position.z ?? 0, ctx.width, ctx.height);\n\n channels.position = { keyframed: false, value: pos2d };\n }\n\n const scale = itemTransform['scale'] as { x: number; y: number; z: number } | undefined;\n\n if (scale != null) {\n const sv: IRVec3 = [scale.x ?? 1, scale.y ?? 1, scale.z ?? 1];\n const isDefault = Math.abs(sv[0] - 1) < 1e-6 && Math.abs(sv[1] - 1) < 1e-6 && Math.abs(sv[2] - 1) < 1e-6;\n\n if (!isDefault) {\n channels.scale = { keyframed: false, value: sv };\n }\n }\n\n const eulerHint = itemTransform['eulerHint'] as { x: number; y: number; z: number } | undefined;\n\n if (eulerHint != null) {\n const hasRotation = Math.abs(eulerHint.x) > 1e-6 || Math.abs(eulerHint.y) > 1e-6 || Math.abs(eulerHint.z) > 1e-6;\n\n if (hasRotation) {\n channels.rotation = { keyframed: false, value: [eulerHint.x, eulerHint.y, eulerHint.z] };\n }\n }\n\n return channels;\n}\n","import type { IRBezierHandle, IRKeyframe } from '@vvfx/animation-ir';\n\nfunction inverseLerp (a: number, b: number, value: number): number {\n const range = b - a;\n\n if (Math.abs(range) < 1e-10) {\n return 0;\n }\n\n return (value - a) / range;\n}\n\nexport function parseBezierKeyframes (\n curves: unknown[],\n startFrame: number,\n endFrame: number,\n): IRKeyframe<number>[] {\n if (curves.length === 0) {\n return [];\n }\n\n const segments = extractSegments(curves);\n\n if (segments.length === 0) {\n return [];\n }\n\n const frames = endFrame - startFrame;\n const keyframes: IRKeyframe<number>[] = [];\n\n const firstSeg = segments[0];\n const firstT = firstSeg[0];\n const firstV = firstSeg[1];\n\n if (segments.length > 0) {\n const hasPrependedHold = segments.length >= 2\n && Math.abs(firstV - segments[0][7]) < 1e-6\n && Math.abs(firstV - firstSeg[1]) < 1e-6\n && Math.abs(firstT) < 1e-10;\n\n if (hasPrependedHold && Math.abs(firstSeg[6] - segments[1]?.[0]) < 1e-6 && Math.abs(firstV - firstSeg[7]) < 1e-6) {\n segments.shift();\n }\n }\n\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const t0 = seg[0];\n const v0 = seg[1];\n const outCpX = seg[2];\n const outCpY = seg[3];\n const t1 = seg[6];\n const v1 = seg[7];\n\n const frameTime = t0 * frames + startFrame;\n\n const isHold = Math.abs(v0 - v1) < 1e-6\n && Math.abs(outCpY - v0) < 1e-6\n && Math.abs(seg[5] - v0) < 1e-6;\n\n const outTangent: IRBezierHandle = {\n x: inverseLerp(t0, t1, outCpX),\n y: inverseLerp(v0, v1, outCpY),\n };\n\n if (i === 0) {\n keyframes.push({\n t: frameTime,\n value: v0,\n ...(isHold ? { hold: true } : { outTangent }),\n });\n } else {\n const prevSeg = segments[i - 1];\n const prevInCpX = prevSeg[4];\n const prevInCpY = prevSeg[5];\n const prevT0 = prevSeg[0];\n const prevV0 = prevSeg[1];\n const prevT1 = prevSeg[6];\n const prevV1 = prevSeg[7];\n\n const inTangent: IRBezierHandle = {\n x: inverseLerp(prevT0, prevT1, prevInCpX),\n y: inverseLerp(prevV0, prevV1, prevInCpY),\n };\n\n keyframes.push({\n t: frameTime,\n value: v0,\n inTangent,\n ...(isHold ? { hold: true } : { outTangent }),\n });\n }\n }\n\n const lastSeg = segments[segments.length - 1];\n const lastT1 = lastSeg[6];\n const lastV1 = lastSeg[7];\n const lastFrameTime = lastT1 * frames + startFrame;\n\n const lastInTangent: IRBezierHandle = {\n x: inverseLerp(lastSeg[0], lastSeg[6], lastSeg[4]),\n y: inverseLerp(lastSeg[1], lastSeg[7], lastSeg[5]),\n };\n\n keyframes.push({\n t: lastFrameTime,\n value: lastV1,\n inTangent: lastInTangent,\n });\n\n return keyframes;\n}\n\nfunction extractSegments (curves: unknown[]): number[][] {\n const segments: number[][] = [];\n\n for (let i = 0; i < curves.length; i++) {\n const entry = curves[i] as [number, number[], number];\n const type = entry[0];\n const data = entry[1];\n\n if (type === 3) {\n // EASE_OUT: [t, v, out_cx, out_cy] — first keyframe of a segment\n\n if (i + 1 < curves.length) {\n const nextEntry = curves[i + 1] as [number, number[], number];\n const nextType = nextEntry[0];\n const nextData = nextEntry[1];\n\n if (nextType === 2) {\n // EASE_IN immediately follows: single segment\n segments.push([\n data[0], data[1], data[2], data[3],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n } else if (nextType === 1) {\n // EASE follows\n segments.push([\n data[0], data[1], data[2], data[3],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n }\n }\n } else if (type === 1 && i + 1 < curves.length) {\n // EASE: [in_cx, in_cy, t, v, out_cx, out_cy] — middle keyframe\n const nextEntry = curves[i + 1] as [number, number[], number];\n const nextType = nextEntry[0];\n const nextData = nextEntry[1];\n\n if (nextType === 2) {\n segments.push([\n data[2], data[3], data[4], data[5],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n } else if (nextType === 1) {\n segments.push([\n data[2], data[3], data[4], data[5],\n nextData[0], nextData[1], nextData[2], nextData[3],\n ]);\n }\n }\n }\n\n return segments;\n}\n\nexport function parsePositionTimingKeyframes (\n curves: unknown[],\n startFrame: number,\n endFrame: number,\n): Array<{ t: 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<{ t: number; outTangent?: IRBezierHandle; inTangent?: IRBezierHandle }> = [];\n\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const t0 = seg[0];\n const outCpX = seg[2];\n const outCpY = seg[3];\n const t1 = seg[6];\n\n const frameTime = t0 * frames + startFrame;\n\n const outTangent: IRBezierHandle = {\n x: inverseLerp(t0, t1, outCpX),\n y: inverseLerp(t0, t1, outCpY),\n };\n\n if (i === 0) {\n result.push({ t: frameTime, outTangent });\n } else {\n const prevSeg = segments[i - 1];\n const inTangent: IRBezierHandle = {\n x: inverseLerp(prevSeg[0], prevSeg[6], prevSeg[4]),\n y: inverseLerp(prevSeg[0], prevSeg[6], prevSeg[5]),\n };\n\n result.push({ t: frameTime, outTangent, inTangent });\n }\n }\n\n const lastSeg = segments[segments.length - 1];\n const lastFrameTime = lastSeg[6] * frames + startFrame;\n\n const lastInTangent: IRBezierHandle = {\n x: inverseLerp(lastSeg[0], lastSeg[6], lastSeg[4]),\n y: inverseLerp(lastSeg[0], lastSeg[6], lastSeg[5]),\n };\n\n result.push({ t: lastFrameTime, inTangent: lastInTangent });\n\n return result;\n}\n","import type { IRAnimatedProperty, IRKeyframe, IRTransformChannels, IRVec3 } from '@vvfx/animation-ir';\nimport { parseBezierKeyframes, parsePositionTimingKeyframes } from './keyframe-parser';\nimport { convert3dTo2dPoint } from '../reverse/coordinate';\nimport type { GESceneContext } from '../types';\n\nexport function parseTransformAnimation (\n asset: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n ctx: GESceneContext,\n): Partial<IRTransformChannels> {\n const channels: Partial<IRTransformChannels> = {};\n\n const posOverLifetime = asset['positionOverLifetime'] as Record<string, unknown> | undefined;\n\n if (posOverLifetime != null) {\n const posAnim = parsePositionAnimation(posOverLifetime, startFrame, endFrame, ctx);\n\n if (posAnim != null) {\n channels.position = posAnim;\n }\n }\n\n const rotOverLifetime = asset['rotationOverLifetime'] as Record<string, unknown> | undefined;\n\n if (rotOverLifetime != null) {\n const rotResult = parseRotationAnimation(rotOverLifetime, startFrame, endFrame);\n\n if (rotResult.rotation != null) {\n channels.rotation = rotResult.rotation;\n }\n if (rotResult.separatedRotation != null) {\n channels.separatedRotation = rotResult.separatedRotation;\n }\n }\n\n const sizeOverLifetime = asset['sizeOverLifetime'] as Record<string, unknown> | undefined;\n\n if (sizeOverLifetime != null) {\n const scaleAnim = parseScaleAnimation(sizeOverLifetime, startFrame, endFrame);\n\n if (scaleAnim != null) {\n channels.scale = scaleAnim;\n }\n }\n\n return channels;\n}\n\nexport function parseOpacityAnimation (\n asset: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<number> | undefined {\n const colorOverLifetime = asset['colorOverLifetime'] as Record<string, unknown> | undefined;\n\n if (colorOverLifetime == null) {\n return undefined;\n }\n\n const opacity = colorOverLifetime['opacity'] as unknown[] | undefined;\n\n if (opacity == null || !Array.isArray(opacity) || opacity.length < 2) {\n return undefined;\n }\n\n const valueType = opacity[0] as number;\n\n if (valueType === 0) {\n return { keyframed: false, value: opacity[1] as number };\n }\n\n if (valueType === 13) {\n const curves = opacity[1] as unknown[];\n const keyframes = parseBezierKeyframes(curves, startFrame, endFrame);\n\n if (keyframes.length >= 2) {\n return { keyframed: true, keyframes };\n }\n }\n\n return undefined;\n}\n\nfunction parsePositionAnimation (\n posOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n ctx: GESceneContext,\n): IRAnimatedProperty<IRVec3> | undefined {\n const pathData = posOverLifetime['path'] as unknown[] | undefined;\n\n if (pathData == null || !Array.isArray(pathData) || pathData.length < 2) {\n return undefined;\n }\n\n const valueType = pathData[0] as number;\n\n if (valueType !== 22) {\n return undefined;\n }\n\n const payload = pathData[1] as unknown[];\n\n if (!Array.isArray(payload) || payload.length < 2) {\n return undefined;\n }\n\n const easingData = payload[0] as unknown[];\n const pathPoints = payload[1] as [number, number, number][];\n const controlPointsRaw = payload[2] as [number, number, number][] | undefined;\n\n if (!Array.isArray(pathPoints) || pathPoints.length < 2) {\n return undefined;\n }\n\n const timingKfs = parsePositionTimingKeyframes(easingData, startFrame, endFrame);\n\n if (timingKfs.length < 2) {\n return undefined;\n }\n\n // Detect and skip prepended hold segment\n let startIdx = 0;\n\n if (timingKfs.length > 2) {\n const firstPP = pathPoints[0];\n const secondPP = pathPoints[1];\n\n if (\n firstPP != null && secondPP != null\n && Math.abs(firstPP[0] - secondPP[0]) < 1e-6\n && Math.abs(firstPP[1] - secondPP[1]) < 1e-6\n ) {\n startIdx = 1;\n }\n }\n\n const keyframes: IRKeyframe<IRVec3>[] = [];\n const pendingSpatialIn = new Map<number, number[]>();\n\n for (let i = startIdx; i < timingKfs.length; i++) {\n const timing = timingKfs[i];\n const pp = pathPoints[Math.min(i, pathPoints.length - 1)];\n const pos2d = convert3dTo2dPoint(pp[0], pp[1], pp[2] ?? 0, ctx.width, ctx.height);\n\n const kf: IRKeyframe<IRVec3> = {\n t: timing.t,\n value: pos2d,\n };\n\n if (i > startIdx && timing.inTangent != null) {\n kf.inTangent = timing.inTangent;\n }\n if (i < timingKfs.length - 1 && timing.outTangent != null) {\n kf.outTangent = timing.outTangent;\n }\n\n const kfIndex = keyframes.length;\n const pendingSI = pendingSpatialIn.get(kfIndex);\n\n if (pendingSI != null) {\n kf.spatialIn = pendingSI;\n }\n\n if (controlPointsRaw != null && i - startIdx < timingKfs.length - startIdx - 1) {\n const segIdx = i - startIdx;\n const cp1Idx = segIdx * 2;\n const cp2Idx = segIdx * 2 + 1;\n\n if (cp1Idx < controlPointsRaw.length && cp2Idx < controlPointsRaw.length) {\n const cp1 = controlPointsRaw[cp1Idx];\n const cp2 = controlPointsRaw[cp2Idx];\n const ppStart = pathPoints[i];\n const ppEnd = pathPoints[Math.min(i + 1, pathPoints.length - 1)];\n const ppStart2d = convert3dTo2dPoint(ppStart[0], ppStart[1], ppStart[2] ?? 0, ctx.width, ctx.height);\n const ppEnd2d = convert3dTo2dPoint(ppEnd[0], ppEnd[1], ppEnd[2] ?? 0, ctx.width, ctx.height);\n const cp1_2d = convert3dTo2dPoint(cp1[0], cp1[1], cp1[2] ?? 0, ctx.width, ctx.height);\n const cp2_2d = convert3dTo2dPoint(cp2[0], cp2[1], cp2[2] ?? 0, ctx.width, ctx.height);\n\n kf.spatialOut = [cp1_2d[0] - ppStart2d[0], cp1_2d[1] - ppStart2d[1]];\n\n pendingSpatialIn.set(kfIndex + 1, [cp2_2d[0] - ppEnd2d[0], cp2_2d[1] - ppEnd2d[1]]);\n }\n }\n\n keyframes.push(kf);\n }\n\n if (keyframes.length < 2) {\n return undefined;\n }\n\n return { keyframed: true, keyframes };\n}\n\nfunction parseRotationAnimation (\n rotOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): { rotation?: IRAnimatedProperty<IRVec3>; separatedRotation?: { x?: IRAnimatedProperty<number>; y?: IRAnimatedProperty<number>; z?: IRAnimatedProperty<number> } } {\n const separateAxes = rotOverLifetime['separateAxes'] as boolean | undefined;\n const xData = rotOverLifetime['x'] as unknown[] | undefined;\n const yData = rotOverLifetime['y'] as unknown[] | undefined;\n const zData = rotOverLifetime['z'] as unknown[] | undefined;\n\n if (separateAxes === true) {\n const x = parseScalarChannel(xData, startFrame, endFrame);\n const y = parseScalarChannel(yData, startFrame, endFrame);\n const z = parseScalarChannel(zData, startFrame, endFrame);\n\n const hasMultiAxis = (x != null ? 1 : 0) + (y != null ? 1 : 0) + (z != null ? 1 : 0) > 1;\n const hasXOrY = x != null || y != null;\n\n if (hasMultiAxis || hasXOrY) {\n return {\n separatedRotation: {\n ...(x != null && { x }),\n ...(y != null && { y }),\n ...(z != null && { z }),\n },\n };\n }\n\n if (z != null) {\n return {\n separatedRotation: { z },\n };\n }\n }\n\n // Single-axis z rotation (non-separated)\n if (zData != null) {\n const z = parseScalarChannel(zData, startFrame, endFrame);\n\n if (z != null) {\n if (z.keyframed) {\n const vecKeyframes: IRKeyframe<IRVec3>[] = z.keyframes!.map(kf => {\n const result: IRKeyframe<IRVec3> = {\n t: kf.t,\n value: [0, 0, kf.value],\n };\n\n if (kf.hold != null) { result.hold = kf.hold; }\n if (kf.inTangent != null) { result.inTangent = kf.inTangent; }\n if (kf.outTangent != null) { result.outTangent = kf.outTangent; }\n\n return result;\n });\n\n return { rotation: { keyframed: true, keyframes: vecKeyframes } };\n }\n\n return { rotation: { keyframed: false, value: [0, 0, z.value!] } };\n }\n }\n\n return {};\n}\n\nfunction parseScaleAnimation (\n sizeOverLifetime: Record<string, unknown>,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<IRVec3> | undefined {\n const xData = sizeOverLifetime['x'] as unknown[] | undefined;\n const yData = sizeOverLifetime['y'] as unknown[] | undefined;\n const zData = sizeOverLifetime['z'] as unknown[] | undefined;\n\n const x = parseScalarChannel(xData, startFrame, endFrame);\n const y = parseScalarChannel(yData, startFrame, endFrame);\n const z = parseScalarChannel(zData, startFrame, endFrame);\n\n if (x == null && y == null && z == null) {\n return undefined;\n }\n\n const xKeyframed = x?.keyframed === true;\n const yKeyframed = y?.keyframed === true;\n const zKeyframed = z?.keyframed === true;\n\n if (!xKeyframed && !yKeyframed && !zKeyframed) {\n return {\n keyframed: false,\n value: [x?.value ?? 1, y?.value ?? 1, z?.value ?? 1],\n };\n }\n\n const xKfs = x?.keyframes ?? [{ t: startFrame, value: x?.value ?? 1 }, { t: endFrame, value: x?.value ?? 1 }];\n const yKfs = y?.keyframes ?? [{ t: startFrame, value: y?.value ?? 1 }, { t: endFrame, value: y?.value ?? 1 }];\n const zKfs = z?.keyframes ?? [{ t: startFrame, value: z?.value ?? 1 }, { t: endFrame, value: z?.value ?? 1 }];\n\n const allTimes = new Set<number>();\n\n for (const kf of xKfs) { allTimes.add(kf.t); }\n for (const kf of yKfs) { allTimes.add(kf.t); }\n for (const kf of zKfs) { allTimes.add(kf.t); }\n\n const sortedTimes = [...allTimes].sort((a, b) => a - b);\n\n const keyframes: IRKeyframe<IRVec3>[] = sortedTimes.map(t => {\n const xv = findValueAtTime(xKfs, t, x?.value ?? 1);\n const yv = findValueAtTime(yKfs, t, y?.value ?? 1);\n const zv = findValueAtTime(zKfs, t, z?.value ?? 1);\n\n const kf: IRKeyframe<IRVec3> = {\n t,\n value: [xv.value, yv.value, zv.value],\n };\n\n if (xv.outTangent != null) { kf.outTangent = xv.outTangent; }\n if (xv.inTangent != null) { kf.inTangent = xv.inTangent; }\n if (xv.hold === true) { kf.hold = true; }\n\n return kf;\n });\n\n return { keyframed: true, keyframes };\n}\n\nfunction parseScalarChannel (\n data: unknown[] | undefined,\n startFrame: number,\n endFrame: number,\n): IRAnimatedProperty<number> | undefined {\n if (data == null || !Array.isArray(data) || data.length < 2) {\n return undefined;\n }\n\n const valueType = data[0] as number;\n\n if (valueType === 0) {\n return { keyframed: false, value: data[1] as number };\n }\n\n if (valueType === 13) {\n const curves = data[1] as unknown[];\n const keyframes = parseBezierKeyframes(curves, startFrame, endFrame);\n\n if (keyframes.length >= 2) {\n return { keyframed: true, keyframes };\n }\n }\n\n return undefined;\n}\n\nfunction findValueAtTime (\n keyframes: IRKeyframe<number>[],\n t: number,\n defaultValue: number,\n): { value: number; outTangent?: { x: number; y: number }; inTangent?: { x: number; y: number }; hold?: boolean } {\n for (const kf of keyframes) {\n if (Math.abs(kf.t - t) < 1e-6) {\n return { value: kf.value, outTangent: kf.outTangent, inTangent: kf.inTangent, hold: kf.hold };\n }\n }\n\n return { value: defaultValue };\n}\n","import { IRBlendMode } from '@vvfx/animation-ir';\nimport type { IRBlendMode as IRBlendModeType } from '@vvfx/animation-ir';\n\nconst IR_BLEND_MODE_BY_GE: Record<number, IRBlendModeType> = {\n 1: IRBlendMode.Add,\n 2: IRBlendMode.Darken,\n 3: IRBlendMode.Lighten,\n 4: IRBlendMode.Difference,\n 5: IRBlendMode.Exclusion,\n 6: IRBlendMode.Multiply,\n 7: IRBlendMode.ColorBurn,\n 8: IRBlendMode.Color,\n 9: IRBlendMode.Screen,\n 10: IRBlendMode.ColorDodge,\n 11: IRBlendMode.Hue,\n 12: IRBlendMode.Saturation,\n 13: IRBlendMode.Overlay,\n 14: IRBlendMode.HardLight,\n 15: IRBlendMode.SoftLight,\n 16: IRBlendMode.Luminosity,\n};\n\nexport function reverseBlendMode (geCode: number | undefined): IRBlendModeType | undefined {\n if (geCode == null) {\n return undefined;\n }\n\n return IR_BLEND_MODE_BY_GE[geCode];\n}\n","import type {\n IRAssetReference,\n IRBlendMode,\n IRColor,\n IRCustomShapePath,\n IRShapeData,\n IRShapePaintData,\n IRTextData,\n} from '@vvfx/animation-ir';\nimport { IRFillType, IRLineCap, IRLineJoin, IRShapeFillRule, IRShapePrimitiveType } from '@vvfx/animation-ir';\nimport { resolveDataPath, resolveDataPathId } from '../pool/pool';\nimport { reverseBlendMode } from '../reverse/blend-mode';\nimport type { GESceneContext } from '../types';\n\nexport interface ComponentData {\n type: 'image' | 'solid' | 'text' | 'shape';\n asset?: IRAssetReference;\n solidColor?: IRColor;\n text?: IRTextData;\n shapes?: IRShapeData[];\n blendMode?: IRBlendMode;\n anchorScale?: [number, number];\n /** Original GE component id — rendezvous key for cross-component references (masks). */\n geComponentId?: string;\n /** Raw GE component-level `mask` object (source: {isMask:true,...}, target: {isMask:false,reference,inverted}). */\n rawMask?: Record<string, unknown>;\n}\n\nexport function parseComponent (\n item: Record<string, unknown>,\n ctx: GESceneContext,\n): ComponentData | undefined {\n const componentRefs = item['components'] as Array<{ id: string }> | undefined;\n\n if (componentRefs == null || componentRefs.length === 0) {\n return undefined;\n }\n\n for (const ref of componentRefs) {\n const compId = resolveDataPathId(ref);\n\n if (compId == null) {\n continue;\n }\n\n const component = ctx.componentById.get(compId);\n\n if (component == null) {\n continue;\n }\n\n const dataType = component['dataType'] as string;\n let result: ComponentData | undefined;\n\n if (dataType === 'SpriteComponent') {\n result = parseSpriteComponent(component, ctx);\n } else if (dataType === 'TextComponent') {\n result = parseTextComponent(component);\n } else if (dataType === 'ShapeComponent') {\n result = parseShapeComponent(component, ctx);\n }\n\n if (result == null) {\n continue;\n }\n\n result.geComponentId = component['id'] as string;\n\n const mask = component['mask'] as Record<string, unknown> | undefined;\n\n if (mask != null) {\n result.rawMask = mask;\n }\n\n return result;\n }\n\n return undefined;\n}\n\nfunction parseSpriteComponent (\n component: Record<string, unknown>,\n ctx: GESceneContext,\n): ComponentData {\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n const options = component['options'] as Record<string, unknown> | undefined;\n\n let asset: IRAssetReference | undefined;\n let solidColor: IRColor | undefined;\n let blendMode: IRBlendMode | undefined;\n let anchorScale: [number, number] | undefined;\n\n if (renderer != null) {\n const textureRef = renderer['texture'] as { id: string } | undefined;\n\n if (textureRef != null) {\n const texture = resolveDataPath(ctx.textureById, textureRef);\n\n if (texture != null) {\n const sourceRef = texture['source'] as { id: string } | undefined;\n const image = sourceRef != null ? resolveDataPath(ctx.imageById, sourceRef) : undefined;\n\n if (image != null) {\n asset = { url: image['url'] as string };\n }\n }\n }\n\n blendMode = reverseBlendMode(renderer['blending'] as number | undefined);\n\n const anchor = renderer['anchor'] as [number, number] | undefined;\n\n if (anchor != null && Array.isArray(anchor) && anchor.length >= 2) {\n anchorScale = [anchor[0], anchor[1]];\n }\n }\n\n if (options != null) {\n const startColor = options['startColor'] as number[] | undefined;\n\n if (startColor != null && startColor.length >= 4) {\n const isWhite = Math.abs(startColor[0] - 1) < 1e-4\n && Math.abs(startColor[1] - 1) < 1e-4\n && Math.abs(startColor[2] - 1) < 1e-4\n && Math.abs(startColor[3] - 1) < 1e-4;\n\n if (!isWhite) {\n solidColor = [startColor[0], startColor[1], startColor[2], startColor[3]];\n }\n }\n }\n\n const type = asset != null ? 'image' as const : 'solid' as const;\n\n return { type, asset, solidColor, blendMode, anchorScale };\n}\n\nfunction parseTextComponent (component: Record<string, unknown>): ComponentData {\n const options = component['options'] as Record<string, unknown> | undefined;\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n\n if (options == null) {\n return { type: 'text' };\n }\n\n const textColor = options['textColor'] as number[] | undefined;\n const color: IRColor = textColor != null && textColor.length >= 4\n ? [textColor[0], textColor[1], textColor[2], textColor[3]]\n : [0, 0, 0, 1];\n\n const textAlignNum = options['textAlign'] as number | undefined;\n const textAlign = textAlignNum === 1 ? 'center' : textAlignNum === 2 ? 'right' : 'left';\n\n const text: IRTextData = {\n content: (options['text'] as string) ?? '',\n fontSize: (options['fontSize'] as number) ?? 12,\n color,\n fontFamily: (options['fontFamily'] as string) ?? 'sans-serif',\n fontWeight: (options['fontWeight'] as IRTextData['fontWeight']) ?? 'normal',\n textAlign,\n fontStyle: (options['fontStyle'] as 'normal' | 'italic' | 'oblique') ?? 'normal',\n letterSpacing: (options['letterSpace'] as number) ?? 0,\n lineHeight: options['lineHeight'] as number | undefined,\n autoWidth: (options['autoWidth'] as boolean) ?? true,\n width: options['textWidth'] as number | undefined,\n height: options['textHeight'] as number | undefined,\n };\n\n let blendMode: IRBlendMode | undefined;\n let anchorScale: [number, number] | undefined;\n\n if (renderer != null) {\n blendMode = reverseBlendMode(renderer['blending'] as number | undefined);\n const anchor = renderer['anchor'] as [number, number] | undefined;\n\n if (anchor != null && Array.isArray(anchor) && anchor.length >= 2) {\n anchorScale = [anchor[0], anchor[1]];\n }\n }\n\n return { type: 'text', text, blendMode, anchorScale };\n}\n\nfunction parseShapeComponent (\n component: Record<string, unknown>,\n ctx: GESceneContext,\n): ComponentData {\n const renderer = component['renderer'] as Record<string, unknown> | undefined;\n let blendMode: IRBlendMode | undefined;\n\n if (renderer != null) {\n blendMode = reverseBlendMode(renderer['blending'] as number | undefined);\n }\n\n const shapeData = parseShapeOptions(component, ctx.ratio);\n\n return {\n type: 'shape',\n shapes: shapeData != null ? [shapeData] : undefined,\n blendMode,\n };\n}\n\nfunction parseShapeOptions (component: Record<string, unknown>, ratio: number): IRShapeData | undefined {\n const geType = component['type'] as number | undefined;\n const primitiveType = reverseShapePrimitiveType(geType ?? 0);\n\n const xSize = component['xSize'] as number | undefined;\n const ySize = component['ySize'] as number | undefined;\n const size: [number, number] = [\n xSize != null ? xSize / ratio : 0,\n ySize != null ? ySize / ratio : 0,\n ];\n\n const shape: IRShapeData = {\n primitiveType,\n position: [0, 0],\n size,\n fills: [],\n strokes: [],\n };\n\n const shapeRec = shape as unknown as Record<string, unknown>;\n\n reverseScaledNumber(shapeRec, component, 'xRadius', ratio);\n reverseScaledNumber(shapeRec, component, 'yRadius', ratio);\n reverseScaledNumber(shapeRec, component, 'width', ratio);\n reverseScaledNumber(shapeRec, component, 'height', ratio);\n reverseScaledNumber(shapeRec, component, 'innerRadius', ratio);\n reverseScaledNumber(shapeRec, component, 'outerRadius', ratio);\n reverseScaledNumber(shapeRec, component, 'radius', ratio);\n reverseRawNumber(shapeRec, component, 'roundness');\n reverseRawNumber(shapeRec, component, 'pointCount');\n reverseRawNumber(shapeRec, component, 'innerRoundness');\n reverseRawNumber(shapeRec, component, 'outerRoundness');\n\n const geFills = component['fills'] as Record<string, unknown>[] | undefined;\n\n if (geFills != null) {\n shape.fills = geFills.map(f => reverseShapePaint(f, ratio)).filter((f): f is IRShapePaintData => f != null);\n }\n\n const geStrokes = component['strokes'] as Record<string, unknown>[] | undefined;\n\n if (geStrokes != null) {\n shape.strokes = geStrokes.map(s => reverseShapePaint(s, ratio)).filter((s): s is IRShapePaintData => s != null);\n }\n\n const geStrokeWidth = component['strokeWidth'] as number | undefined;\n\n if (geStrokeWidth != null) {\n shape.strokeWidth = geStrokeWidth / ratio;\n }\n\n const geStrokeCap = component['strokeCap'] as number | undefined;\n\n if (geStrokeCap != null) {\n shape.strokeCap = reverseLineCap(geStrokeCap) as IRShapeData['strokeCap'];\n }\n\n const geStrokeJoin = component['strokeJoin'] as number | undefined;\n\n if (geStrokeJoin != null) {\n shape.strokeJoin = reverseLineJoin(geStrokeJoin) as IRShapeData['strokeJoin'];\n }\n\n const geFillRule = component['fillRule'] as number | undefined;\n\n if (geFillRule != null) {\n shape.fillRule = reverseShapeFillRule(geFillRule) as IRShapeData['fillRule'];\n }\n\n const geShapes = component['shapes'] as Array<Record<string, unknown>> | undefined;\n\n if (geShapes != null) {\n const paths = reverseCustomPaths(component, ratio);\n\n if (paths.length > 0) {\n shape.customPaths = paths;\n }\n }\n\n const trimPath = component['trimPath'] as Record<string, unknown> | undefined;\n\n if (trimPath != null) {\n shape.trimPath = trimPath as unknown as IRShapeData['trimPath'];\n }\n\n const repeater = component['repeater'] as Record<string, unknown> | undefined;\n\n if (repeater != null) {\n shape.repeater = repeater as unknown as IRShapeData['repeater'];\n }\n\n return shape;\n}\n\nconst GE_TO_SHAPE_PRIMITIVE_TYPE: Record<number, IRShapeData['primitiveType']> = {\n 0: IRShapePrimitiveType.Custom,\n 1: IRShapePrimitiveType.Rectangle,\n 2: IRShapePrimitiveType.Ellipse,\n 3: IRShapePrimitiveType.Polygon,\n 4: IRShapePrimitiveType.Star,\n};\n\nfunction reverseShapePrimitiveType (geType: number): IRShapeData['primitiveType'] {\n return GE_TO_SHAPE_PRIMITIVE_TYPE[geType] ?? IRShapePrimitiveType.Custom;\n}\n\nfunction reverseShapePaint (paint: Record<string, unknown>, ratio: number): IRShapePaintData | undefined {\n const geType = paint['type'] as number | undefined;\n\n if (geType === 0) {\n const color = paint['color'] as { r: number; g: number; b: number; a: number } | undefined;\n\n if (color == null) {\n return undefined;\n }\n\n return { type: IRFillType.Solid, color: [color.r, color.g, color.b, color.a] };\n }\n\n if (geType === 1 || geType === 2 || geType === 3) {\n const typeMap: Record<number, IRShapePaintData['type']> = {\n 1: IRFillType.LinearGradient,\n 2: IRFillType.RadialGradient,\n 3: IRFillType.AngularGradient,\n };\n\n const gradientStopsRaw = paint['gradientStops'] as [number, unknown] | undefined;\n const stops = Array.isArray(gradientStopsRaw) && gradientStopsRaw.length >= 2\n ? gradientStopsRaw[1] as [number, number, number, number, number][]\n : [];\n\n const startPoint = paint['startPoint'] as { x: number; y: number } | undefined;\n const endPoint = paint['endPoint'] as { x: number; y: number } | undefined;\n\n return {\n type: typeMap[geType] as 'linear-gradient' | 'radial-gradient' | 'angular-gradient',\n gradientStops: stops,\n gradientStart: startPoint != null ? [startPoint.x / ratio, -startPoint.y / ratio] : undefined,\n gradientEnd: endPoint != null ? [endPoint.x / ratio, -endPoint.y / ratio] : undefined,\n };\n }\n\n return undefined;\n}\n\nfunction reverseLineCap (geCode: number): string {\n const map: Record<number, string> = { 0: IRLineCap.Butt, 1: IRLineCap.Round, 2: IRLineCap.Square };\n\n return map[geCode] ?? IRLineCap.Butt;\n}\n\nfunction reverseLineJoin (geCode: number): string {\n const map: Record<number, string> = { 0: IRLineJoin.Round, 1: IRLineJoin.Bevel, 2: IRLineJoin.Miter };\n\n return map[geCode] ?? IRLineJoin.Miter;\n}\n\nfunction reverseShapeFillRule (geCode: number): string {\n const map: Record<number, string> = { 0: IRShapeFillRule.NonZero, 1: IRShapeFillRule.EvenOdd };\n\n return map[geCode] ?? IRShapeFillRule.NonZero;\n}\n\nfunction reverseCustomPaths (component: Record<string, unknown>, ratio: number): IRCustomShapePath[] {\n const points = component['points'] as Array<{ x: number; y: number }> | undefined;\n const easingIns = component['easingIns'] as Array<{ x: number; y: number }> | undefined;\n const easingOuts = component['easingOuts'] as Array<{ x: number; y: number }> | undefined;\n const shapes = component['shapes'] as Array<{ close: boolean; indexes: Array<{ point: number; easingIn: number; easingOut: number }> }> | undefined;\n\n if (points == null || shapes == null) {\n return [];\n }\n\n return shapes.map(shape => {\n const pathPoints: Array<{ x: number; y: number }> = [];\n const pathEasingIns: Array<{ x: number; y: number }> = [];\n const pathEasingOuts: Array<{ x: number; y: number }> = [];\n\n for (const idx of shape.indexes) {\n const pt = points[idx.point];\n const ei = easingIns?.[idx.easingIn];\n const eo = easingOuts?.[idx.easingOut];\n\n pathPoints.push({ x: pt.x / ratio, y: -pt.y / ratio });\n pathEasingIns.push({ x: (ei?.x ?? 0) / ratio, y: -(ei?.y ?? 0) / ratio });\n pathEasingOuts.push({ x: (eo?.x ?? 0) / ratio, y: -(eo?.y ?? 0) / ratio });\n }\n\n return {\n points: pathPoints,\n easingIns: pathEasingIns,\n easingOuts: pathEasingOuts,\n close: shape.close,\n };\n });\n}\n\nfunction reverseScaledNumber (\n shape: Record<string, unknown>,\n component: Record<string, unknown>,\n key: string,\n ratio: number,\n): void {\n const value = component[key];\n\n if (typeof value === 'number') {\n (shape)[key] = value / ratio;\n }\n}\n\nfunction reverseRawNumber (\n shape: Record<string, unknown>,\n component: Record<string, unknown>,\n key: string,\n): void {\n const value = component[key];\n\n if (typeof value === 'number') {\n (shape)[key] = value;\n }\n}\n","import type { IRTimeContext } from '@vvfx/animation-ir';\n\nexport function reverseLayerTiming (\n delay: number,\n duration: number,\n frameRate: number,\n): IRTimeContext {\n const startFrame = Math.round(delay * frameRate * 1000) / 1000;\n const endFrame = Math.round((delay + duration) * frameRate * 1000) / 1000;\n\n return { startFrame, endFrame };\n}\n","import type { IRLayerNode } from '@vvfx/animation-ir';\nimport type { GESceneContext } from '../types';\nimport { resolveDataPathId } from '../pool/pool';\nimport { parseTimeline } from '../parsers/timeline-parser';\n\nexport interface RawLayerDescriptor {\n itemId: string;\n item: Record<string, unknown>;\n layer: IRLayerNode;\n}\n\nexport function mergeNullSpritePairs (\n descriptors: RawLayerDescriptor[],\n ctx: GESceneContext,\n): RawLayerDescriptor[] {\n const childByParentId = new Map<string, RawLayerDescriptor[]>();\n\n for (const desc of descriptors) {\n const parentId = desc.item['parentId'] as string | undefined;\n\n if (parentId != null) {\n if (!childByParentId.has(parentId)) {\n childByParentId.set(parentId, []);\n }\n childByParentId.get(parentId)!.push(desc);\n }\n }\n\n // Pass 1: identify all merge pairs (null parent → sprite child)\n const mergedChildIds = new Set<string>();\n const mergeMap = new Map<string, RawLayerDescriptor>();\n\n for (const desc of descriptors) {\n const isNull = desc.item['type'] === '3';\n\n if (!isNull) {\n continue;\n }\n\n const children = childByParentId.get(desc.itemId);\n\n if (children == null || children.length === 0) {\n continue;\n }\n\n // Only merge an UNAMBIGUOUS emitNullSpritePair artifact: a null whose ONLY\n // child is exactly one same-name visual sprite. ir2ge's emitNullSpritePair\n // produces precisely this shape (null + one same-name child). If the null\n // has any OTHER children, it is a genuine Lottie parent null — merging it\n // into a transformSplit would change the anchor those other children are\n // parented against, shifting them. Leave such nulls intact.\n if (children.length !== 1) {\n continue;\n }\n\n const onlyChild = children[0];\n const childType = onlyChild.item['type'] as string;\n const isVisual = childType === '1' || childType === 'text' || childType === 'shape';\n const sameName = (onlyChild.item['name'] as string) === (desc.item['name'] as string);\n\n if (\n !isVisual\n || !sameName\n || !hasNoComponents(desc.item)\n || !hasVisualComponent(onlyChild, ctx)\n || !hasSplitPairTiming(desc, onlyChild, ctx)\n || !hasParentTransformSignal(desc, ctx)\n || !hasNoIndependentChildTransform(onlyChild, ctx)\n ) {\n continue;\n }\n\n const sameNameChild = onlyChild;\n\n mergedChildIds.add(sameNameChild.itemId);\n mergeMap.set(desc.itemId, mergeNullAndSprite(desc, sameNameChild, ctx));\n }\n\n // Pass 2: build result, replacing merged nulls and skipping merged children\n const result: RawLayerDescriptor[] = [];\n\n for (const desc of descriptors) {\n if (mergedChildIds.has(desc.itemId)) {\n continue;\n }\n\n const merged = mergeMap.get(desc.itemId);\n\n if (merged != null) {\n result.push(merged);\n } else {\n result.push(desc);\n }\n }\n\n return result;\n}\n\nfunction hasNoComponents (item: Record<string, unknown>): boolean {\n const components = item['components'];\n\n return !Array.isArray(components) || components.length === 0;\n}\n\nfunction hasVisualComponent (desc: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const components = desc.item['components'];\n\n if (!Array.isArray(components) || components.length === 0) {\n return false;\n }\n\n return components.some(ref => {\n const componentId = resolveDataPathId(ref);\n const component = componentId != null ? ctx.componentById.get(componentId) : undefined;\n const dataType = component?.['dataType'];\n\n return dataType === 'SpriteComponent' || dataType === 'TextComponent' || dataType === 'ShapeComponent';\n });\n}\n\nfunction hasSplitPairTiming (\n parent: RawLayerDescriptor,\n child: RawLayerDescriptor,\n ctx: GESceneContext,\n): boolean {\n const parentTimeline = parseTimeline(parent.itemId, ctx);\n const childTimeline = parseTimeline(child.itemId, ctx);\n const parentEndBehavior = parentTimeline?.endBehavior ?? readItemEndBehavior(parent.item);\n const childEndBehavior = childTimeline?.endBehavior ?? readItemEndBehavior(child.item);\n\n if (parentEndBehavior !== 4 || childEndBehavior !== 0) {\n return false;\n }\n\n if (parentTimeline == null || childTimeline == null) {\n return true;\n }\n\n return nearlyEqual(parentTimeline.delay, childTimeline.delay)\n && nearlyEqual(parentTimeline.duration, childTimeline.duration);\n}\n\nfunction hasParentTransformSignal (desc: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const timeline = parseTimeline(desc.itemId, ctx);\n\n if (hasTransformPayload(timeline?.transformAsset)) {\n return true;\n }\n\n const transform = desc.item['transform'];\n\n return isRecord(transform) && (hasNonDefaultScale(transform) || hasNonDefaultEulerHint(transform));\n}\n\nfunction hasNoIndependentChildTransform (desc: RawLayerDescriptor, ctx: GESceneContext): boolean {\n const timeline = parseTimeline(desc.itemId, ctx);\n\n return timeline?.transformAsset != null && !hasTransformPayload(timeline.transformAsset);\n}\n\nfunction hasTransformPayload (asset: Record<string, unknown> | undefined): boolean {\n if (asset == null) {\n return false;\n }\n\n return hasNonEmptyRecord(asset['positionOverLifetime'])\n || hasNonEmptyRecord(asset['rotationOverLifetime'])\n || hasNonEmptyRecord(asset['sizeOverLifetime']);\n}\n\nfunction hasNonDefaultScale (transform: Record<string, unknown>): boolean {\n const scale = transform['scale'];\n\n if (!isRecord(scale)) {\n return false;\n }\n\n const x = typeof scale['x'] === 'number' ? scale['x'] : 1;\n const y = typeof scale['y'] === 'number' ? scale['y'] : 1;\n const z = typeof scale['z'] === 'number' ? scale['z'] : 1;\n\n return Math.abs(x - 1) > 1e-6 || Math.abs(y - 1) > 1e-6 || Math.abs(z - 1) > 1e-6;\n}\n\nfunction hasNonDefaultEulerHint (transform: Record<string, unknown>): boolean {\n const eulerHint = transform['eulerHint'];\n\n if (!isRecord(eulerHint)) {\n return false;\n }\n\n const x = typeof eulerHint['x'] === 'number' ? eulerHint['x'] : 0;\n const y = typeof eulerHint['y'] === 'number' ? eulerHint['y'] : 0;\n const z = typeof eulerHint['z'] === 'number' ? eulerHint['z'] : 0;\n\n return Math.abs(x) > 1e-6 || Math.abs(y) > 1e-6 || Math.abs(z) > 1e-6;\n}\n\nfunction hasNonEmptyRecord (value: unknown): boolean {\n return isRecord(value) && Object.keys(value).length > 0;\n}\n\nfunction readItemEndBehavior (item: Record<string, unknown>): number | undefined {\n const endBehavior = item['endBehavior'];\n\n return typeof endBehavior === 'number' ? endBehavior : undefined;\n}\n\nfunction nearlyEqual (a: number, b: number): boolean {\n return Math.abs(a - b) < 1e-6;\n}\n\nfunction isRecord (value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction mergeNullAndSprite (\n nullDesc: RawLayerDescriptor,\n childDesc: RawLayerDescriptor,\n ctx: GESceneContext,\n): RawLayerDescriptor {\n const merged = { ...nullDesc.layer };\n\n // Take type from child\n merged.type = childDesc.layer.type;\n merged.asset = childDesc.layer.asset;\n merged.text = childDesc.layer.text;\n merged.shapes = childDesc.layer.shapes;\n merged.shapeLayer = childDesc.layer.shapeLayer;\n merged.solidColor = childDesc.layer.solidColor;\n merged.blendMode = childDesc.layer.blendMode;\n merged.transformSplit = true;\n\n // Visibility from child\n merged.visibility = childDesc.layer.visibility;\n\n // Compute anchor from child position offset\n const childTransform = childDesc.item['transform'] as Record<string, unknown> | undefined;\n const childPosition = childTransform?.['position'] as { x: number; y: number; z: number } | undefined;\n const childSize = childTransform?.['size'] as { x: number; y: number } | undefined;\n\n if (childPosition != null && childSize != null) {\n const layerWidth = childSize.x / ctx.ratio;\n const layerHeight = childSize.y / ctx.ratio;\n\n const anchorX = -childPosition.x / ctx.ratio + layerWidth / 2;\n const anchorY = childPosition.y / ctx.ratio + layerHeight / 2;\n\n if (merged.transform == null) {\n merged.transform = {};\n }\n\n merged.transform.anchor = { keyframed: false, value: [anchorX, anchorY, 0] };\n merged.displaySize = { width: layerWidth, height: layerHeight };\n }\n\n // Opacity from child\n if (childDesc.layer.transform?.opacity != null) {\n if (merged.transform == null) {\n merged.transform = {};\n }\n merged.transform.opacity = childDesc.layer.transform.opacity;\n }\n\n // The merged layer renders the child's visual component, but the parent owns\n // transform animation passthrough. Deep-merge the ge2ir namespace so neither\n // side overwrites the other's GE round-trip data.\n if (childDesc.layer.metadata != null) {\n const parentGE2IR = isRecord(merged.metadata?.['ge2ir']) ? merged.metadata['ge2ir'] : undefined;\n const childGE2IR = isRecord(childDesc.layer.metadata['ge2ir']) ? childDesc.layer.metadata['ge2ir'] : undefined;\n\n merged.metadata = {\n ...merged.metadata,\n ...childDesc.layer.metadata,\n };\n\n if (parentGE2IR != null || childGE2IR != null) {\n merged.metadata['ge2ir'] = {\n ...(parentGE2IR ?? {}),\n ...(childGE2IR ?? {}),\n };\n }\n }\n\n return {\n itemId: nullDesc.itemId,\n item: nullDesc.item,\n layer: merged,\n };\n}\n\nexport function resolveHierarchy (\n descriptors: RawLayerDescriptor[],\n ctx: GESceneContext,\n): void {\n const idToIndex = new Map<string, number>();\n const idToDesc = new Map<string, RawLayerDescriptor>();\n\n for (const desc of descriptors) {\n idToIndex.set(desc.itemId, desc.layer.index);\n idToDesc.set(desc.itemId, desc);\n }\n\n for (const desc of descriptors) {\n const parentId = desc.item['parentId'] as string | undefined;\n\n if (parentId == null) {\n continue;\n }\n\n const parentIndex = idToIndex.get(parentId);\n const parentDesc = idToDesc.get(parentId);\n\n if (parentIndex == null || parentDesc == null) {\n continue;\n }\n\n desc.layer.parent = {\n index: parentIndex,\n name: parentDesc.layer.name,\n };\n\n const parentAnchor = getAnchorFromDesc(parentDesc);\n const pos = desc.layer.transform?.position;\n\n if (pos != null && !pos.keyframed && pos.value != null) {\n const pos2d = pos.value;\n\n desc.layer.transform!.position = {\n keyframed: false,\n value: [\n pos2d[0] + (parentAnchor[0] - ctx.width / 2),\n pos2d[1] + (parentAnchor[1] - ctx.height / 2),\n pos2d[2] ?? 0,\n ],\n };\n }\n }\n}\n\nfunction getAnchorFromDesc (desc: RawLayerDescriptor): [number, number] {\n const anchor = desc.layer.transform?.anchor;\n\n if (anchor != null && !anchor.keyframed && Array.isArray(anchor.value) && anchor.value.length >= 2) {\n return [anchor.value[0], anchor.value[1]];\n }\n\n return [0, 0];\n}\n","import type { IRComposition, IRLayerNode, IRLayerType, IRTransformChannels } from '@vvfx/animation-ir';\nimport { buildSceneContext, getCompositionItemIds } from './scene-reader';\nimport { parseTimeline } from './parsers/timeline-parser';\nimport { parseStaticTransform } from './parsers/transform-parser';\nimport { parseTransformAnimation, parseOpacityAnimation } from './parsers/animation-parser';\nimport { parseComponent } from './parsers/component-parser';\nimport { reverseLayerTiming } from './reverse/timing';\nimport { mergeNullSpritePairs, resolveHierarchy, type RawLayerDescriptor } from './merge/merge';\nimport type { GE2IROptions, GE2IRPassthroughMetadata, GESceneContext } from './types';\n\nexport function convertGEToIR (scene: Record<string, unknown>, options: GE2IROptions): IRComposition {\n const ctx = buildSceneContext(scene, options);\n const itemIds = getCompositionItemIds(scene);\n\n // Reverse: GE items are in display order (ir2ge reverses at the end),\n // IR layers need to be in push order so ir2ge's final reverse restores display order.\n const reversedItemIds = [...itemIds].reverse();\n const descriptors: RawLayerDescriptor[] = [];\n\n let layerIndex = 0;\n\n for (const itemId of reversedItemIds) {\n const item = ctx.itemById.get(itemId);\n\n if (item == null) {\n continue;\n }\n\n const layer = parseItemToLayer(item, itemId, layerIndex, ctx);\n\n descriptors.push({ itemId, item, layer });\n layerIndex++;\n }\n\n const merged = mergeNullSpritePairs(descriptors, ctx);\n\n // Re-index after merge\n for (let i = 0; i < merged.length; i++) {\n merged[i].layer.index = i;\n }\n\n resolveHierarchy(merged, ctx);\n\n const layers = merged.map(d => d.layer);\n\n return {\n source: 'ge',\n name: ctx.compositionName,\n width: ctx.width,\n height: ctx.height,\n frameRate: ctx.frameRate,\n inPoint: ctx.inPoint,\n outPoint: ctx.outPoint,\n backgroundColor: ctx.backgroundColor,\n endBehavior: ctx.endBehavior,\n layers,\n };\n}\n\nfunction parseItemToLayer (\n item: Record<string, unknown>,\n itemId: string,\n index: number,\n ctx: GESceneContext,\n): IRLayerNode {\n const name = (item['name'] as string) ?? `layer_${index}`;\n const geType = item['type'] as string;\n const visible = item['visible'] as boolean ?? true;\n let rawTransformPassthrough: GE2IRPassthroughMetadata | undefined;\n\n const timeline = parseTimeline(itemId, ctx);\n const delay = timeline?.delay ?? (item['delay'] as number ?? 0);\n const duration = timeline?.duration ?? (item['duration'] as number ?? 0);\n\n const time = reverseLayerTiming(delay, duration, ctx.frameRate);\n\n const componentData = parseComponent(item, ctx);\n let type: IRLayerType;\n\n if (geType === '3') {\n type = 'null';\n } else if (componentData?.type === 'text' || geType === 'text') {\n type = 'text';\n } else if (componentData?.type === 'shape' || geType === 'shape') {\n type = 'shape';\n } else if (componentData?.type === 'image') {\n type = 'image';\n } else if (componentData?.solidColor != null) {\n type = 'solid';\n } else if (geType === '1') {\n type = 'solid';\n } else {\n type = 'null';\n }\n\n // Parse transforms\n const itemTransform = item['transform'] as Record<string, unknown> | undefined;\n let transform: IRTransformChannels | undefined;\n\n if (itemTransform != null) {\n const staticChannels = parseStaticTransform(itemTransform, ctx);\n\n transform = { ...staticChannels };\n\n // Text layers carry their pixel-sizing scale on transform.scale\n // (scale = ratio × displaySize). ir2ge RECOMPUTES this item scale from\n // displaySize in processVisualLayer, so keeping it in the IR scale channel\n // would make buildSizeAnim emit a duplicate sizeOverLifetime constant that\n // double-scales the glyphs (garbled/stretched text). Drop the static scale\n // for text; genuine text scale animation still rides through\n // metadata.ge2ir.sizeOverLifetime passthrough.\n if (type === 'text') {\n delete transform.scale;\n }\n }\n\n // Parse animation from timeline tracks — passthrough raw GE animation data\n // via metadata. Converting to IR keyframes and back would lose data (ir2ge\n // only handles specific ValueType variants and makes assumptions about\n // static positions). The raw data is injected verbatim by ir2ge.\n if (timeline?.transformAsset != null) {\n const asset = timeline.transformAsset;\n const animChannels = parseTransformAnimation(asset, time.startFrame, time.endFrame, ctx);\n\n if (transform == null) {\n transform = {};\n }\n\n // Use parsed IR channels when available (CONSTANT/BEZIER_CURVE types),\n // but also store raw data for passthrough of unsupported types (LINE_SEGMENTS etc.)\n if (animChannels.rotation != null) {\n transform.rotation = animChannels.rotation;\n }\n if (animChannels.separatedRotation != null) {\n transform.separatedRotation = animChannels.separatedRotation;\n delete transform.rotation;\n }\n if (animChannels.scale != null) {\n transform.scale = animChannels.scale;\n }\n\n // Passthrough raw animation data for channels that can't round-trip through IR\n const rawPassthrough: GE2IRPassthroughMetadata = {};\n const posOL = asset['positionOverLifetime'] as Record<string, unknown> | undefined;\n const rotOL = asset['rotationOverLifetime'] as Record<string, unknown> | undefined;\n const sizeOL = asset['sizeOverLifetime'] as Record<string, unknown> | undefined;\n\n if (posOL != null && posOL['path'] != null) {\n rawPassthrough.positionOverLifetime = posOL;\n }\n if (rotOL != null && Object.keys(rotOL).length > 0) {\n rawPassthrough.rotationOverLifetime = rotOL;\n }\n if (sizeOL != null && Object.keys(sizeOL).length > 0) {\n rawPassthrough.sizeOverLifetime = sizeOL;\n }\n\n if (Object.keys(rawPassthrough).length > 0) {\n rawTransformPassthrough = rawPassthrough;\n }\n }\n\n // Parse opacity\n let rawColorOverLifetime: Record<string, unknown> | undefined;\n\n if (timeline?.spriteColorAsset != null) {\n const opacity = parseOpacityAnimation(timeline.spriteColorAsset, time.startFrame, time.endFrame);\n\n if (opacity != null) {\n if (transform == null) {\n transform = {};\n }\n transform.opacity = opacity;\n }\n\n const col = timeline.spriteColorAsset['colorOverLifetime'] as Record<string, unknown> | undefined;\n\n if (col != null && Object.keys(col).length > 0) {\n rawColorOverLifetime = col;\n }\n }\n\n // Anchor from component — default to center (0.5, 0.5) when not explicitly set\n if (type !== 'null') {\n const itemSize = (item['transform'] as Record<string, unknown>)?.['size'] as { x: number; y: number } | undefined;\n\n if (itemSize != null) {\n const layerWidth = itemSize.x / ctx.ratio;\n const layerHeight = itemSize.y / ctx.ratio;\n const anchorScale = componentData?.anchorScale ?? [0.5, 0.5];\n const anchorX = anchorScale[0] * layerWidth;\n const anchorY = anchorScale[1] * layerHeight;\n\n if (transform == null) {\n transform = {};\n }\n\n transform.anchor = {\n keyframed: false,\n value: [anchorX, anchorY, 0],\n };\n\n // Reverse the position adjustments ir2ge's processVisualLayer re-applies\n // for non-centered anchors, so they don't double-apply on round-trip.\n // Forward order (in 2D-px equivalent): pos += anchorOffset (computeStaticPosition),\n // then pos += scaleAdjust (applyScalePositionAdjust). We subtract both.\n const pos = transform.position;\n\n if (pos != null && !pos.keyframed && pos.value != null) {\n // anchorOffset = -(anchor - size/2), added to the raw 2D position.\n const anchorOffsetX = -(anchorX - layerWidth / 2);\n const anchorOffsetY = -(anchorY - layerHeight / 2);\n\n // scaleAdjust (only when static scale != 1 and anchor off-center by >0.5px):\n // 3D: x += anchorDiffX*(1-sx)*ratio ; y -= anchorDiffY*(1-sy)*ratio\n // In 2D-px (÷ratio, y-axis flips sign): x2d += anchorDiffX*(1-sx) ;\n // y2d += anchorDiffY*(1-sy) (the two sign flips cancel).\n const scale = transform.scale?.keyframed === false && Array.isArray(transform.scale.value)\n ? transform.scale.value\n : [1, 1, 1];\n const sx = scale[0] ?? 1;\n const sy = scale[1] ?? 1;\n const anchorDiffX = anchorX - layerWidth / 2;\n const anchorDiffY = anchorY - layerHeight / 2;\n const anchorOffCenter = Math.abs(anchorDiffX) > 0.5 || Math.abs(anchorDiffY) > 0.5;\n const hasStaticScale = !(sx === 1 && sy === 1);\n\n let scaleAdjustX = 0;\n let scaleAdjustY = 0;\n\n if (hasStaticScale && anchorOffCenter && layerWidth > 0 && layerHeight > 0) {\n scaleAdjustX = anchorDiffX * (1 - sx);\n scaleAdjustY = anchorDiffY * (1 - sy);\n }\n\n const totalX = anchorOffsetX + scaleAdjustX;\n const totalY = anchorOffsetY + scaleAdjustY;\n\n if (Math.abs(totalX) > 1e-6 || Math.abs(totalY) > 1e-6) {\n transform.position = {\n keyframed: false,\n value: [pos.value[0] - totalX, pos.value[1] - totalY, pos.value[2] ?? 0],\n };\n }\n }\n }\n }\n\n // Display size from item transform.size\n let displaySize: { width: number; height: number } | undefined;\n const itemSize = (item['transform'] as Record<string, unknown>)?.['size'] as { x: number; y: number } | undefined;\n\n if (itemSize != null) {\n displaySize = {\n width: itemSize.x / ctx.ratio,\n height: itemSize.y / ctx.ratio,\n };\n }\n\n const layer: IRLayerNode = {\n index,\n name,\n type,\n time,\n visibility: { hidden: !visible, enabled: visible },\n transform,\n displaySize,\n };\n\n if (componentData?.asset != null) {\n layer.asset = componentData.asset;\n }\n if (componentData?.solidColor != null) {\n layer.solidColor = componentData.solidColor;\n }\n if (componentData?.text != null) {\n layer.text = componentData.text;\n }\n if (componentData?.shapes != null) {\n layer.shapes = componentData.shapes;\n }\n if (componentData?.blendMode != null) {\n layer.blendMode = componentData.blendMode;\n }\n const geComponentId = componentData?.geComponentId;\n const rawMask = componentData?.rawMask;\n\n if (\n rawTransformPassthrough != null\n || rawColorOverLifetime != null\n || geComponentId != null\n || rawMask != null\n ) {\n // Mask round-trip: geComponentId is the rendezvous key linking a target's\n // mask.reference.id (a GE1 component id) to the regenerated GE2 component id.\n // ir2ge copies ge2ir.geMask onto the rebuilt component and a post-process pass\n // remaps the stale reference id.\n const ge2irMetadata: GE2IRPassthroughMetadata = {\n ...(rawTransformPassthrough ?? {}),\n ...(rawColorOverLifetime != null && { colorOverLifetime: rawColorOverLifetime }),\n ...(geComponentId != null && { geComponentId }),\n ...(rawMask != null && { geMask: rawMask }),\n };\n\n layer.metadata = {\n ...layer.metadata,\n ge2ir: ge2irMetadata,\n };\n }\n\n return layer;\n}\n","/**\n * Read-side accessors for the `IRLayerNode.specific.lottie` slot.\n *\n * The shared generator must not branch on lottie semantics directly — every\n * lottie-specific read goes through these helpers so the rest of `ir2ge` stays\n * agnostic to the producing tool.\n *\n * `isTransformOnlyParentLink` used to live here, reading\n * `specific.lottie.explicitParent`. It was promoted to a generic IR field\n * (`IRLayerReference.linkKind`); the accessor now lives at `./parent-link.ts`.\n */\n\nimport type { IRLayerNode, LottieLayerSpecific } from '@vvfx/animation-ir';\n\nexport type { LottieLayerSpecific };\n\nexport function readLottieSpecific (layer: IRLayerNode): LottieLayerSpecific | undefined {\n return layer.specific?.lottie;\n}\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_array_like_to_array","arr","len","arr2","Array","_unsupported_iterable_to_array","o","minLen","n","toString","slice","name","from","test","_create_for_of_iterator_helper_loose","allowArrayLike","it","Symbol","iterator","next","bind","isArray","done","value","TypeError","DEFAULT_CAMERA_Z","DEFAULT_CAMERA_FOV","DEFAULT_CLIP_MODE","get2dTo3dRatio","width","height","ratio","Math","tan","PI","convert2dTo3dPoint","x","y","z","adaptRatioZ","offsetX","offsetY","createId","v4","replace","toDataPath","id","roundNumber","precision","factor","round","lerp","a","b","estimateTextWidth","text","fontSize","letterSpacing","avgCharWidth","spacing","buildTimelineTracks","collector","delay","duration","endBehavior","animation","itemType","objectBindingTrackId","childTrackIds","push","buildActivationTrack","buildTransformTrack","isNullItemType","buildSpriteColorTrack","miscs","dataType","children","clips","assetId","trackId","clip","start","asset","positionOverLifetime","rotationOverLifetime","sizeOverLifetime","startColor","colorOverLifetime","DEFAULT_OUT_TANGENT","DEFAULT_IN_TANGENT","normalizeTime","frameTime","startFrame","endFrame","frames","max","getScalarValue","keyframe","dimensionIndex","irScalarKeyframesToGE","property","timeContext","keyframed","keyframes","undefined","curve","buildCurveForDimension","irVectorKeyframesToGE","firstValue","dimensions","curves","d","irPositionKeyframesToGE","pathPoints","controlPoints","timingCurvePoints","kf","normalizedT","t","outTangent","inTangent","nextKf","startPos","stitchEnd","segmentEnd","hold","endValue","toPoint","tiPoint","spatialOut","spatialIn","sx","sy","ex","ey","unshift","timingCurves","buildPositionTimingCurves","makeEaseOut","seg","BezierKeyframeType","EASE_OUT","makeEaseIn","prevSeg","EASE_IN","makeEase","currSeg","EASE","bezierCurves","t0","t1","v0","v1","outHandle","inHandle","outCpX","outCpY","inCpX","inCpY","firstT","firstV","result","totalPoints","points","current","shouldUseKeyframeMode","isTransformOnlyParentLink","layer","parent","linkKind","computeLayerTiming","frameRate","time","stretch","offsetFrame","rawDuration","layerDuration","computeStaticPosition","ctx","anchorOffsetX","anchorOffsetY","transform","position","isNullType","type","pos","getStaticAnchor","anchor","firstVal","getStaticScaleFromIR","scale","applyScalePositionAdjust","layerWidth","layerHeight","staticScale","anchorDiffX","anchorDiffY","abs","computeAnchorInfo","anchorScaleX","anchorScaleY","anchorAdjust","textAlign","textHeight","isSpriteForAnchor","staticRotationZ","getStaticRotationZ","hasStaticRotation","rotValue","rad","cosR","cos","sinR","sin","rotatedX","rotatedY","rotation","separatedRotationZ","separatedRotation","getTimeContext","_type_of","obj","readGE2IRMetadata","ir","metadata","namespaced","isRecord","legacy","readLegacyGE2IRMetadata","keys","geComponentId","geMask","buildTransformAnimation","ge2irMetadata","passthroughPosition","passthroughRotation","passthroughSize","buildPositionAnim","buildRotationAnim","buildSizeAnim","posResult","useKeyframeMode","pp","point3d","lastPp","lastPoint3d","cp","dx","dy","cp1","cp2","curveData","easingData","map","roundedPathPoints","p","roundedControlPoints","pathPayload","path","ValueType","BEZIER_CURVE_PATH","hasZ","hasX","hasY","axisHasRotationValue","BEZIER_CURVE","CONSTANT","separated","axisCount","axis","some","separateAxes","buildColorAnimation","passthroughColor","opacity","opacityValue","buildGETransform","eulerHint","getGEItemType","getGEItemTypeCode","registerTexture","imageUrl","cache","cached","get","imageId","textureId","images","url","textures","flipY","dataPathRef","set","_obj","GE_BLENDING_BY_IR_MODE","IRBlendModeConst","Normal","Multiply","Screen","Overlay","Darken","Lighten","ColorDodge","ColorBurn","HardLight","SoftLight","Difference","Exclusion","Hue","Saturation","Color","Luminosity","Add","mapBlendingMode","blendMode","DEFAULT_DISPLAY_SIZE","getLayerDisplaySize","fallback","displaySize","buildComponent","itemId","buildSpriteComponent","buildTextComponent","buildShapeComponent","applyGeMask","component","componentId","blending","solidColor","textureDataPath","textureUrl","refId","textureCache","item","options","renderer","renderMode","texture","isNonDefaultAnchor","components","textInfo","textColor","color","textWidth","content","lineHeight","textSizeW","textSizeH","fontFamily","fontWeight","fontStyle","letterSpace","autoWidth","size","shapes","shapeData","buildShapeOptions","mapShapePrimitiveType","primitiveType","setScaledNumber","setRawNumber","fills","fill","mapShapePaint","filter","strokes","stroke","strokeWidth","strokeCap","mapLineCap","strokeJoin","mapLineJoin","fillRule","mapShapeFillRule","customPaths","mapCustomPaths","trimPath","repeater","SHAPE_PRIMITIVE_TYPE_TO_GE","IRShapePrimitiveType","Custom","Rectangle","Ellipse","Polygon","Star","FILL_TYPE_TO_GE","IRFillType","Solid","LinearGradient","RadialGradient","AngularGradient","Texture","LINE_CAP_TO_GE","IRLineCap","Butt","Round","Square","LINE_JOIN_TO_GE","IRLineJoin","Bevel","Miter","SHAPE_FILL_RULE_TO_GE","IRShapeFillRule","NonZero","EvenOdd","lineCap","lineJoin","paint","colorToGE","gradientStops","GRADIENT_COLOR","startPoint","vec2ToGE","gradientStart","endPoint","gradientEnd","scaleMode","r","g","paths","easingIns","easingOuts","indexes","index","point","easingIn","easingOut","pointIndex","close","getStaticAnchorBehavior","transformSplit","kind","lottieNeedsTransformSplit","info","anchorScale","anchorOffset","sep","anchorOffCenter","hasRotationAnim","hasScaleAnim","processNullLayer","layerIndex","layerToItemId","visible","visibility","enabled","hidden","renderLevel","items","processedItems","emitNullSpritePair","childScale","nullItemId","nullAnimation","nullPosition","nullTrackId","nullItem","childItemId","childPosition","childColorAnim","childTrackId","layerToComponentId","scaledW","scaledH","childItem","parentId","processParentLayer","processVisualLayer","processShapeLayerMultiItem","strategy","processTransformSplitLayer","colorAnimation","fullAnimation","rawPosition","itemScale","basePosition","shapeIdx","shapeItemId","shapeOffsetX","shapeOffsetY","shapePosition","shapeComponentId","shapeItem","DEFAULT_PLAYER_VERSION","web","native","assembleScene","finalDuration","deriveDuration","timelineAssetId","objectBindingTrackRefs","pi","tracks","compositionComponentId","compositionId","sceneBindings","allItemRefs","timelineAsset","composition","startTime","mapCompositionEndBehavior","previewSize","camera","fov","far","near","clipMode","backgroundColor","colorToRoundedRgba","version","JSONSceneVersion","playerVersion","fonts","plugins","compositions","geometries","materials","shaders","bins","animations","outPoint","inPoint","eb","IREndBehavior","Loop","Hold","applyParenting","layers","layerByIndex","Map","itemById","parentLayer","parentItemId","parentAnchor","adjustX","adjustY","applyMasks","lookup","maskSlotMeta","componentById","comp","maskData","mask","isMaskExactCrop","layerItemId","getItemId","layerComponentId","getComponentId","buildMaskForLayer","getPrimaryPath","maskItemId","maskComponentId","maskBounds","getMaskBounds","anchorX","anchorY","maskPosX","cx","maskPosY","cy","timing","maskDuration","layerIsParent","isParentLayer","isAutoMask","maskArea","hasDescendants","hasClaimableRendererDescendants","maskItem","maskComponent","isSimpleRectMask","roundness","isMask","alphaMaskEnabled","buildPolygonMaskComponent","applyMaskReferenceToDescendants","targetComponent","buildMaskRef","area","maskTrackId","reference","inverted","visit","targetParentId","endsWith","componentRefs","compRef","shouldClaimMaskSlot","hasExistingMask","existing","isCurrentAutoMask","currentMaskArea","computePointBounds","minX","Infinity","minY","maxX","maxY","min","maskW","maskH","precompW","precompH","every","e","bounds","customPoints","customEasingIns","customEasingOuts","customIndexes","idx","pt","ei","eo","applyGeMaskRemap","geComponentIdToNewId","oldId","newId","normalizeChildVisibilityByParentDelays","transformOnlyParentLinkItemIds","Set","processedByItemId","miscById","misc","advanceTransformOnlyParentLinkParents","effectiveDelayCache","getEffectiveDelay","visited","has","add","sortedItems","topologicalSort","parentItem","originalDelay","originalDuration","effectiveDelay","parentDuration","isPrecompChild","newDuration","timeDiff","syncTimelineClips","parentAdvanceMap","parentExtendMap","childDelay","childDuration","parentDelay","advance","childEnd","parentEnd","extend","allParentIds","newDelay","processed","obt","childRef","childTrack","sorted","processedItem","trackType","applyPostProcess","state","applyParentingStep","applySharedMaskPostProcess","applyGeMaskRemapStep","applyVisibilityStep","maskLookup","convertIRToGE","validateIRCompositionWithWarnings","parentIndexSet","workingIR","getLayersWithExtendedParentEndFrames","processLayer","reverse","clonedLayers","maxEnd","child","buildPoolIndex","pool","entry","resolveDataPath","ref","resolveDataPathId","reverseEndBehavior","geBehavior","Stop","reverseCompositionEndBehavior","buildSceneContext","scene","find","c","Error","bg","compositionName","imageById","textureById","itemIdToTrackId","buildSceneBindings","compositionComponent","findCompositionComponent","bindings","binding","compRefs","getCompositionItemIds","itemRefs","parseTimeline","objectBindingTrack","childRefs","transformAsset","spriteColorAsset","assetRef","convert3dTo2dPoint","effectiveRatio","px","py","parseStaticTransform","itemTransform","channels","pos2d","sv","isDefault","hasRotation","inverseLerp","range","parseBezierKeyframes","segments","extractSegments","firstSeg","hasPrependedHold","shift","isHold","prevInCpX","prevInCpY","prevT0","prevV0","prevT1","prevV1","lastSeg","lastT1","lastV1","lastFrameTime","lastInTangent","data","nextEntry","nextType","nextData","parsePositionTimingKeyframes","parseTransformAnimation","posOverLifetime","posAnim","parsePositionAnimation","rotOverLifetime","rotResult","parseRotationAnimation","scaleAnim","parseScaleAnimation","parseOpacityAnimation","valueType","pathData","payload","controlPointsRaw","timingKfs","startIdx","firstPP","secondPP","pendingSpatialIn","kfIndex","pendingSI","segIdx","cp1Idx","cp2Idx","ppStart","ppEnd","ppStart2d","ppEnd2d","cp1_2d","cp2_2d","xData","yData","zData","parseScalarChannel","hasMultiAxis","hasXOrY","vecKeyframes","xKeyframed","yKeyframed","zKeyframed","xKfs","yKfs","zKfs","allTimes","sortedTimes","sort","xv","findValueAtTime","yv","zv","defaultValue","IR_BLEND_MODE_BY_GE","IRBlendMode","reverseBlendMode","geCode","parseComponent","compId","parseSpriteComponent","parseTextComponent","parseShapeComponent","rawMask","textureRef","sourceRef","image","isWhite","textAlignNum","parseShapeOptions","geType","reverseShapePrimitiveType","xSize","ySize","shape","shapeRec","reverseScaledNumber","reverseRawNumber","geFills","f","reverseShapePaint","geStrokes","s","geStrokeWidth","geStrokeCap","reverseLineCap","geStrokeJoin","reverseLineJoin","geFillRule","reverseShapeFillRule","geShapes","reverseCustomPaths","GE_TO_SHAPE_PRIMITIVE_TYPE","typeMap","gradientStopsRaw","stops","pathEasingIns","pathEasingOuts","reverseLayerTiming","mergeNullSpritePairs","descriptors","childByParentId","desc","mergedChildIds","mergeMap","isNull","onlyChild","childType","isVisual","sameName","hasNoComponents","hasVisualComponent","hasSplitPairTiming","hasParentTransformSignal","hasNoIndependentChildTransform","sameNameChild","mergeNullAndSprite","merged","parentTimeline","childTimeline","parentEndBehavior","readItemEndBehavior","childEndBehavior","nearlyEqual","timeline","hasTransformPayload","hasNonDefaultScale","hasNonDefaultEulerHint","hasNonEmptyRecord","nullDesc","childDesc","shapeLayer","childTransform","childSize","parentGE2IR","childGE2IR","resolveHierarchy","idToIndex","idToDesc","parentIndex","parentDesc","getAnchorFromDesc","convertGEToIR","itemIds","reversedItemIds","parseItemToLayer","rawTransformPassthrough","componentData","staticChannels","animChannels","rawPassthrough","posOL","rotOL","sizeOL","rawColorOverLifetime","col","itemSize","hasStaticScale","scaleAdjustX","scaleAdjustY","totalX","totalY","ge2ir","readLottieSpecific","specific","lottie"],"mappings":"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","x_google_ignoreList":[0,1,2,3,11]}
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]}