@vvfx/dsl-ir 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.
- package/LICENSE +22 -0
- package/README.md +240 -0
- package/dist/common/particle-expression.d.ts +6 -0
- package/dist/common/transform.d.ts +11 -0
- package/dist/common/utils.d.ts +19 -0
- package/dist/dsl/number-expression.d.ts +7 -0
- package/dist/dsl/parse-particle-shape.d.ts +2 -0
- package/dist/dsl/particle-shape.d.ts +86 -0
- package/dist/dsl/schema.d.ts +100 -0
- package/dist/dsl/validator/index.d.ts +2 -0
- package/dist/dsl/validator/labels.d.ts +1 -0
- package/dist/dsl/validator/particle.d.ts +8 -0
- package/dist/dsl/validator/types.d.ts +33 -0
- package/dist/dsl/validator/validation.d.ts +15 -0
- package/dist/dsl2ir/assemble.d.ts +3 -0
- package/dist/dsl2ir/content-conversion.d.ts +11 -0
- package/dist/dsl2ir/convert-layers.d.ts +4 -0
- package/dist/dsl2ir/convert-particle.d.ts +4 -0
- package/dist/dsl2ir/convert-property.d.ts +6 -0
- package/dist/dsl2ir/convert.d.ts +4 -0
- package/dist/dsl2ir/recombine/compare-properties.d.ts +18 -0
- package/dist/dsl2ir/recombine/convert.d.ts +5 -0
- package/dist/dsl2ir/recombine/update-ir.d.ts +6 -0
- package/dist/dsl2ir/recombine/update-layer-order.d.ts +5 -0
- package/dist/dsl2ir/recombine/update-layer.d.ts +4 -0
- package/dist/dsl2ir/recombine/update-particle.d.ts +4 -0
- package/dist/dsl2ir/types.d.ts +35 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +4424 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +4418 -0
- package/dist/index.mjs.map +1 -0
- package/dist/ir2dsl/assemble.d.ts +5 -0
- package/dist/ir2dsl/convert-layers.d.ts +10 -0
- package/dist/ir2dsl/convert-particle.d.ts +4 -0
- package/dist/ir2dsl/convert.d.ts +4 -0
- package/dist/ir2dsl/expand-precompositions.d.ts +6 -0
- package/dist/ir2dsl/types.d.ts +45 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_extends.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_type_of.js","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/stringify.js","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/rng.js","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/native.js","../../../node_modules/.pnpm/uuid@13.0.0/node_modules/uuid/dist/v4.js","../src/common/utils.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_is_native_reflect_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_construct.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_get_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_is_native_function.js","../../../node_modules/.pnpm/@swc+helpers@0.5.21/node_modules/@swc/helpers/esm/_wrap_native_super.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/dsl/validator/labels.ts","../src/dsl/number-expression.ts","../src/dsl/validator/particle.ts","../src/dsl/validator/validation.ts","../src/ir2dsl/assemble.ts","../src/common/particle-expression.ts","../src/common/transform.ts","../src/ir2dsl/convert-particle.ts","../src/ir2dsl/convert-layers.ts","../src/ir2dsl/expand-precompositions.ts","../src/ir2dsl/convert.ts","../src/dsl2ir/convert-property.ts","../src/dsl2ir/content-conversion.ts","../src/dsl2ir/recombine/compare-properties.ts","../src/dsl2ir/convert-particle.ts","../src/dsl2ir/recombine/update-particle.ts","../src/dsl2ir/recombine/update-layer.ts","../src/dsl2ir/recombine/update-layer-order.ts","../src/dsl2ir/recombine/update-ir.ts","../src/dsl2ir/recombine/convert.ts","../src/dsl2ir/assemble.ts","../src/dsl2ir/convert-layers.ts","../src/dsl2ir/convert.ts","../src/dsl/parse-particle-shape.ts"],"sourcesContent":["function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n","import type { IRColor } from '@vvfx/animation-ir';\nimport { v4 } from 'uuid';\n\nconst HEX_COLOR_PATTERN = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\n\nexport const EPSILON = 1e-6;\n\nexport type HexColorInput = readonly [number, number, number] | readonly [number, number, number, number] | IRColor;\n\n/** Generate a 32-character hexadecimal UUID v4. */\nexport function createId(): string {\n return v4().replaceAll('-', '');\n}\n\n/** Convert normalized RGB(A) channels to a canonical hex color. */\nexport function colorToHex(color: HexColorInput): string {\n const colorChannels: [number, number, number, number] = [\n color[0] ?? 0,\n color[1] ?? 0,\n color[2] ?? 0,\n color.length >= 4 ? (color[3] ?? 1) : 1,\n ];\n const hexParts = colorChannels.map(channel => {\n const byteValue = Math.max(0, Math.min(255, Math.round(channel * 255)));\n\n return byteValue.toString(16).padStart(2, '0');\n });\n\n return hexParts[3] === 'ff' ? `#${hexParts.slice(0, 3).join('')}` : `#${hexParts.join('')}`;\n}\n\n/** Normalize supported hex forms for semantic comparison. */\nexport function normalizeHex(hexColor: string): string {\n const normalizedHex = hexColor.replace(/^#/, '').toLowerCase();\n\n if (normalizedHex.length === 3) {\n const [red, green, blue] = [\n normalizedHex[0] + normalizedHex[0],\n normalizedHex[1] + normalizedHex[1],\n normalizedHex[2] + normalizedHex[2],\n ];\n\n return `#${red}${green}${blue}`;\n }\n\n if (normalizedHex.length === 6) {\n return `#${normalizedHex}`;\n }\n\n if (normalizedHex.length === 8) {\n const alpha = normalizedHex.slice(6, 8);\n\n return alpha === 'ff' ? `#${normalizedHex.slice(0, 6)}` : `#${normalizedHex}`;\n }\n\n return hexColor.toLowerCase();\n}\n\n/** Compare nullable hex colors after normalization. */\nexport function isHexEqual(leftHex: string | null | undefined, rightHex: string | null | undefined): boolean {\n if (leftHex == null && rightHex == null) {\n return true;\n }\n if (leftHex == null || rightHex == null) {\n return false;\n }\n\n return normalizeHex(leftHex) === normalizeHex(rightHex);\n}\n\nexport function isValidHexColor(value: unknown): value is string {\n return typeof value === 'string' && HEX_COLOR_PATTERN.test(value);\n}\n\nexport function hexToIRColor(hexColor: string): IRColor {\n const hex = hexColor.replace(/^#/, '');\n\n if (hex.length === 3) {\n return [\n parseHexByte(`${hex[0]}${hex[0]}`, hexColor) / 255,\n parseHexByte(`${hex[1]}${hex[1]}`, hexColor) / 255,\n parseHexByte(`${hex[2]}${hex[2]}`, hexColor) / 255,\n 1,\n ];\n }\n\n if (hex.length === 6 || hex.length === 8) {\n return [\n parseHexByte(hex.slice(0, 2), hexColor) / 255,\n parseHexByte(hex.slice(2, 4), hexColor) / 255,\n parseHexByte(hex.slice(4, 6), hexColor) / 255,\n hex.length === 8 ? parseHexByte(hex.slice(6, 8), hexColor) / 255 : 1,\n ];\n }\n\n throw new Error(`[dsl-ir:color] Invalid hex color: ${hexColor}`);\n}\n\nexport function resolveFiniteNumber(value: unknown, fallback: number): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : fallback;\n}\n\nexport function secondsToFrames(seconds: number, frameRate: number): number {\n return resolveFiniteNumber(seconds, 0) * frameRate;\n}\n\nexport function isScalarEqual(leftValue: number, rightValue: number): boolean {\n return Math.abs(leftValue - rightValue) <= EPSILON;\n}\n\nexport function isNumberArrayEqual(leftValues: readonly number[], rightValues: readonly number[]): boolean {\n if (leftValues.length !== rightValues.length) {\n return false;\n }\n\n return leftValues.every((value, index) => Math.abs(value - rightValues[index]) <= EPSILON);\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport function toJSONPath(path: string): string {\n if (path === '') {\n return '$';\n }\n\n return path.startsWith('$') ? path : `$.${path}`;\n}\n\nfunction parseHexByte(value: string, source: string): number {\n if (!/^[\\da-fA-F]{2}$/.test(value)) {\n throw new Error(`[dsl-ir:color] Invalid hex color: ${source}`);\n }\n\n return parseInt(value, 16);\n}\n","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _instanceof(left, right) {\n \"@swc/helpers - instanceof\";\n\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","function _is_native_reflect_construct() {\n // Since Reflect.construct can't be properly polyfilled, some\n // implementations (e.g. core-js@2) don't set the correct internal slots.\n // Those polyfills don't allow us to subclass built-ins, so we need to\n // use our fallback implementation.\n try {\n // If the internal slots aren't set, this throws an error similar to\n // TypeError: this is not a Boolean object.\n var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n } catch (_) {}\n return (_is_native_reflect_construct = function() {\n return !!result;\n })();\n}\n\nexport { _is_native_reflect_construct as _ };\n","import { _ as _is_native_reflect_construct } from \"./_is_native_reflect_construct.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n\n if (Class) _set_prototype_of(instance, Class.prototype);\n\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\nexport { _construct as _ };\n","function _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n\n return _get_prototype_of(o);\n}\nexport { _get_prototype_of as _ };\n","function _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nexport { _is_native_function as _ };\n","import { _ as _construct } from \"./_construct.js\";\nimport { _ as _get_prototype_of } from \"./_get_prototype_of.js\";\nimport { _ as _is_native_function } from \"./_is_native_function.js\";\nimport { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function(Class) {\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } });\n\n return _set_prototype_of(Wrapper, Class);\n };\n\n return _wrap_native_super(Class);\n}\nexport { _wrap_native_super 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 DSL_CODE_LABELS: Readonly<Record<string, string>> = {\n R001: 'DSL 根不是对象',\n R002: '缺少 meta',\n R003: '缺少 layers',\n R004: 'layers 不是数组',\n M001: 'meta 必填字段缺失',\n M002a: 'meta.name 类型错误',\n M002b: 'meta.duration 类型错误',\n M002c: 'meta.fps 类型错误',\n M002d: 'meta.width 类型错误',\n M002e: 'meta.height 类型错误',\n M002f: 'meta.loop 类型错误',\n M003: 'background_color 类型错误',\n M004: 'background_color 非十六进制',\n M005: 'fps 必须 > 0',\n M006: 'width/height 必须 > 0',\n M007: 'duration 非正数',\n L001: '图层缺少 id',\n L002: 'id 不是字符串',\n L003: 'id 为空字符串',\n L004: 'name 缺失',\n L005: 'name 不是字符串',\n L006: 'type 缺失',\n L007: 'type 非法枚举',\n L008: 'width 缺失',\n L009: 'width 非法',\n L010: 'height 缺失',\n L011: 'height 非法',\n L012: 'description 缺失',\n L013: 'description 不是对象',\n L014: 'description.self 缺失',\n L015: 'description.composite 缺失',\n L016: 'description 字段非字符串',\n L018: 'time_range 非二元数组',\n L019: 'time_range 元素非数值',\n L020: 'time_range 不可见',\n L021: '图层项非对象',\n L022: 'children 不是数组',\n L023: 'time_range 超出 composition 范围',\n L024: '图片层或粒子层尺寸必须大于 0',\n P001: '变换属性缺失',\n P002: '变换属性非对象',\n P003: 'a 缺失',\n P004: 'a 不是布尔值',\n P005: '静态属性缺 value',\n P006: '静态属性出现 animation',\n P007: '动画属性缺 animation',\n P008: 'animation 非数组',\n P009: '动画属性出现 value',\n P010: 'animation 为空',\n P011: '三维属性 value 不是三元数组',\n P012: 'opacity value 非标量',\n P013: 'value 元素非数值',\n P014: 'opacity value 越界',\n P015: 'anchor 不支持动画',\n C001: '曲线段非对象',\n C002: 't 缺失',\n C003: 't 非二元数组',\n C004: 't 起止逆序',\n C005: 't 元素非数值',\n C006: 'start 缺失',\n C007: 'end 缺失',\n C008: '三维属性起止非三元数组',\n C009: 'opacity 起止不是一元数组',\n C010: 'opacity 起止为裸标量',\n C011: 'easing 非四元数组(会触发下游崩溃)',\n C012: 'easing 元素非数值',\n C013: 'in/out 出现在非 position 属性',\n C014: 'in/out 非三元数组',\n C016: '曲线 t 越界',\n S002: '曲线时间重叠',\n S003: '曲线时间空隙',\n S004: '曲线未单调',\n X001: '图层 id 全局重复',\n X002: 'parent 自引用',\n X003: 'parent 非字符串',\n X004: 'parent 引用悬空',\n X005: 'parent 与物理嵌套不一致',\n X006: 'parent 链成环',\n A001: '图片层缺 asset',\n A002: 'asset 非对象',\n A003: 'asset.source 缺失',\n A004: 'asset.source 非法枚举',\n A005: 'llm_svg 的 format 非 svg',\n A006: 'llm_svg 缺 svg',\n A007: 'llm_svg 缺 prompt',\n A008: 'user 缺 url',\n A009: 'user 的 prompt 非空',\n A010: 'null 层有不必要的 asset',\n A011: '文字层缺 text 块',\n A012: 'text 非对象',\n A013: 'text.content 缺失/非字符串',\n A014: 'text.size 缺失/非数值',\n A015: 'text.color 缺失/非字符串',\n A016: '图片层有不必要的 text',\n A017: '文字层有不必要的 asset',\n A018: 'text.font 类型错误',\n A019: 'text.align 非法枚举',\n A020: '文字排版数值非法',\n A021: 'asset.url 类型错误',\n A022: '粒子层缺 particle 块',\n A023: 'particle 不是对象',\n A024: '非粒子层有不必要的 particle 块',\n A025: '粒子层有不必要的 asset',\n A026: '粒子层有不必要的 text',\n PT001: 'particle.emission 缺失或不是对象',\n PT002: 'rateOverTime 非法',\n PT003: 'bursts 不是数组',\n PT004: 'burst 字段非法',\n PT005: 'particle 包含未知字段',\n PT006: 'particle.options 缺失或不是对象',\n PT007: 'maxCount 非法',\n PT008: 'startLifetime 非法',\n PT009: 'particle.shape 非法',\n};\n","export enum ValueType {\n CONSTANT = 0,\n RANDOM = 4,\n}\n\nexport type NumberExpression = ConstantNumber | RandomValue;\n\nexport type ConstantNumber = [type: ValueType.CONSTANT, value: number];\n\nexport type RandomValue = [type: ValueType.RANDOM, value: [min: number, max: number]];\n","import { isRecord } from '../../common/utils';\nimport { ValueType } from '../number-expression';\n\ntype DSLRecord = Record<string, unknown>;\n\nconst PARTICLE_SHAPE_NAMES = [\n 'None', 'Sphere', 'Cone', 'Hemisphere', 'Circle',\n 'Donut', 'Rectangle', 'RectangleEdge', 'Edge', 'Texture',\n] as const;\nconst PARTICLE_SHAPE_BASE_FIELDS = [\n 'type', 'shape', 'arcMode', 'alignSpeedDirection', 'upDirection',\n 'turbulenceX', 'turbulenceY', 'turbulenceZ',\n] as const;\nconst PARTICLE_SHAPE_FIELDS_BY_TYPE: Readonly<Record<number, readonly string[]>> = {\n 0: ['type', 'shape', 'upDirection', 'turbulenceX', 'turbulenceY', 'turbulenceZ'],\n 1: [...PARTICLE_SHAPE_BASE_FIELDS, 'radius', 'arc'],\n 2: [...PARTICLE_SHAPE_BASE_FIELDS, 'angle', 'radius', 'arc'],\n 3: [...PARTICLE_SHAPE_BASE_FIELDS, 'radius', 'arc'],\n 4: [...PARTICLE_SHAPE_BASE_FIELDS, 'radius', 'arc'],\n 5: [...PARTICLE_SHAPE_BASE_FIELDS, 'radius', 'donutRadius', 'arc'],\n 6: [...PARTICLE_SHAPE_BASE_FIELDS, 'width', 'height'],\n 7: [...PARTICLE_SHAPE_BASE_FIELDS, 'width', 'height'],\n 8: [...PARTICLE_SHAPE_BASE_FIELDS, 'width'],\n 9: [...PARTICLE_SHAPE_BASE_FIELDS, 'detail', 'random', 'width', 'height'],\n};\nconst PARTICLE_SHAPE_NUMBER_FIELDS_BY_TYPE: Readonly<Record<number, readonly string[]>> = {\n 0: [],\n 1: ['radius', 'arc'],\n 2: ['angle', 'radius', 'arc'],\n 3: ['radius', 'arc'],\n 4: ['radius', 'arc'],\n 5: ['radius', 'donutRadius', 'arc'],\n 6: ['width', 'height'],\n 7: ['width', 'height'],\n 8: ['width'],\n 9: ['random', 'width', 'height'],\n};\n\nexport interface ParticleValidationIssue {\n code: string;\n message: string;\n path: string;\n}\n\nexport function lintParticle(\n particle: DSLRecord,\n layer: DSLRecord,\n particlePath: string,\n): ParticleValidationIssue[] {\n const issues: ParticleValidationIssue[] = [];\n\n reportUnknownFields(particle, new Set(['shape', 'options', 'emission']), 'PT005', particlePath, issues);\n if (Object.hasOwn(particle, 'shape')) {\n checkParticleShapeValue(particle['shape'], `${particlePath}.shape`, issues);\n }\n checkParticleOptionsValue(particle['options'], `${particlePath}.options`, issues);\n checkParticleEmissionValue(particle['emission'], layer, `${particlePath}.emission`, issues);\n\n return issues;\n}\n\nfunction checkParticleShapeValue(\n value: unknown,\n shapePath: string,\n issues: ParticleValidationIssue[],\n): void {\n if (!isRecord(value)) {\n addIssue(issues, 'PT009', `particle.shape is ${describeValueType(value)}, expected an object`, shapePath);\n\n return;\n }\n const type = value['type'];\n\n if (!isIntegerInRange(type, 0, PARTICLE_SHAPE_NAMES.length - 1)) {\n addIssue(issues, 'PT009', 'particle.shape.type must be an integer from 0 to 9', `${shapePath}.type`);\n\n return;\n }\n const expectedName = PARTICLE_SHAPE_NAMES[type];\n\n reportUnknownFields(value, new Set(PARTICLE_SHAPE_FIELDS_BY_TYPE[type]), 'PT009', shapePath, issues);\n if (value['shape'] !== expectedName) {\n addIssue(\n issues,\n 'PT009',\n `particle.shape.shape must be ${JSON.stringify(expectedName)} when type is ${String(type)}`,\n `${shapePath}.shape`,\n );\n }\n for (const field of PARTICLE_SHAPE_NUMBER_FIELDS_BY_TYPE[type]) {\n if (!isFiniteNumber(value[field])) {\n addIssue(issues, 'PT009', `particle.shape.${field} must be a finite number`, `${shapePath}.${field}`);\n }\n }\n for (const field of ['turbulenceX', 'turbulenceY', 'turbulenceZ'] as const) {\n if (Object.hasOwn(value, field) && !isTaggedParticleShapeExpression(value[field])) {\n addIssue(\n issues,\n 'PT009',\n `particle.shape.${field} must be a tagged two-element expression`,\n `${shapePath}.${field}`,\n );\n }\n }\n\n if (type === 0) {\n if (Object.hasOwn(value, 'upDirection') && !isFiniteNumberArray(value['upDirection'])) {\n addIssue(issues, 'PT009', 'particle.shape.upDirection must contain finite numbers', `${shapePath}.upDirection`);\n }\n\n return;\n }\n if (!isIntegerInRange(value['arcMode'], 0, 3)) {\n addIssue(issues, 'PT009', 'particle.shape.arcMode must be an integer from 0 to 3', `${shapePath}.arcMode`);\n }\n if (Object.hasOwn(value, 'alignSpeedDirection') && typeof value['alignSpeedDirection'] !== 'boolean') {\n addIssue(\n issues,\n 'PT009',\n 'particle.shape.alignSpeedDirection must be a boolean',\n `${shapePath}.alignSpeedDirection`,\n );\n }\n if (Object.hasOwn(value, 'upDirection') && !isFiniteNumberTuple(value['upDirection'], 3)) {\n addIssue(\n issues,\n 'PT009',\n 'particle.shape.upDirection must contain three finite numbers',\n `${shapePath}.upDirection`,\n );\n }\n if (type === 9) {\n checkParticleTextureShapeDetail(value['detail'], `${shapePath}.detail`, issues);\n }\n}\n\nfunction checkParticleTextureShapeDetail(\n value: unknown,\n detailPath: string,\n issues: ParticleValidationIssue[],\n): void {\n if (!isRecord(value)) {\n addIssue(issues, 'PT009', 'particle.shape.detail must be an object', detailPath);\n\n return;\n }\n\n reportUnknownFields(value, new Set(['width', 'height', 'block', 'anchors']), 'PT009', detailPath, issues);\n for (const field of ['width', 'height'] as const) {\n if (!isFiniteNumber(value[field])) {\n addIssue(issues, 'PT009', `particle.shape.detail.${field} must be a finite number`, `${detailPath}.${field}`);\n }\n }\n if (!isFiniteNumberTuple(value['block'], 2)) {\n addIssue(issues, 'PT009', 'particle.shape.detail.block must contain two finite numbers', `${detailPath}.block`);\n }\n if (!isFiniteNumberArray(value['anchors'])) {\n addIssue(issues, 'PT009', 'particle.shape.detail.anchors must contain finite numbers', `${detailPath}.anchors`);\n }\n}\n\nfunction checkParticleOptionsValue(\n value: unknown,\n optionsPath: string,\n issues: ParticleValidationIssue[],\n): void {\n if (!isRecord(value)) {\n addIssue(issues, 'PT006', `particle.options is ${describeValueType(value)}, expected an object`, optionsPath);\n\n return;\n }\n\n reportUnknownFields(value, new Set(['maxCount', 'startLifetime']), 'PT005', optionsPath, issues);\n\n const maxCount = value['maxCount'];\n\n if (!isFiniteNumber(maxCount) || !Number.isInteger(maxCount) || maxCount <= 0) {\n addIssue(issues, 'PT007', 'particle.options.maxCount must be a positive integer', `${optionsPath}.maxCount`);\n }\n\n if (!isParticleNumberExpression(value['startLifetime'], true)) {\n addIssue(\n issues,\n 'PT008',\n 'particle.options.startLifetime must be a valid positive NumberExpression',\n `${optionsPath}.startLifetime`,\n );\n }\n}\n\nfunction checkParticleEmissionValue(\n value: unknown,\n layer: DSLRecord,\n emissionPath: string,\n issues: ParticleValidationIssue[],\n): void {\n if (!isRecord(value)) {\n addIssue(issues, 'PT001', `particle.emission is ${describeValueType(value)}, expected an object`, emissionPath);\n\n return;\n }\n\n reportUnknownFields(value, new Set(['rateOverTime', 'bursts']), 'PT005', emissionPath, issues);\n\n if (!isParticleNumberExpression(value['rateOverTime'], false)) {\n addIssue(\n issues,\n 'PT002',\n 'particle.emission.rateOverTime must be a valid non-negative NumberExpression',\n `${emissionPath}.rateOverTime`,\n );\n }\n\n if (!Object.hasOwn(value, 'bursts')) {\n return;\n }\n\n const bursts = value['bursts'];\n\n if (!Array.isArray(bursts)) {\n addIssue(issues, 'PT003', 'particle.emission.bursts must be an array', `${emissionPath}.bursts`);\n\n return;\n }\n\n bursts.forEach((burst, index) => {\n checkParticleBurst(burst, layer, `${emissionPath}.bursts[${index}]`, issues);\n });\n}\n\nfunction checkParticleBurst(\n value: unknown,\n layer: DSLRecord,\n burstPath: string,\n issues: ParticleValidationIssue[],\n): void {\n if (!isRecord(value)) {\n addIssue(issues, 'PT004', `particle burst is ${describeValueType(value)}, expected an object`, burstPath);\n\n return;\n }\n\n reportUnknownFields(value, new Set(['time', 'count', 'cycles', 'interval']), 'PT004', burstPath, issues);\n\n const time = value['time'];\n const duration = readLayerDuration(layer);\n\n if (!isFiniteNumber(time) || time < 0 || (duration != null && time >= duration)) {\n addIssue(issues, 'PT004', 'particle burst time must be within the layer duration', `${burstPath}.time`);\n }\n if (!isNonNegativeInteger(value['count'])) {\n addIssue(issues, 'PT004', 'particle burst count must be a non-negative integer', `${burstPath}.count`);\n }\n if (Object.hasOwn(value, 'cycles') && !isNonNegativeInteger(value['cycles'])) {\n addIssue(\n issues,\n 'PT004',\n 'particle burst cycles must be a non-negative integer; 0 means unbounded',\n `${burstPath}.cycles`,\n );\n }\n if (Object.hasOwn(value, 'interval') && (!isFiniteNumber(value['interval']) || value['interval'] < 0)) {\n addIssue(\n issues,\n 'PT004',\n 'particle burst interval must be a non-negative finite number',\n `${burstPath}.interval`,\n );\n }\n\n const cycles = Object.hasOwn(value, 'cycles') ? value['cycles'] : 1;\n const interval = Object.hasOwn(value, 'interval') ? value['interval'] : 0;\n\n if (\n isNonNegativeInteger(cycles) && (cycles === 0 || cycles > 1) &&\n (!isFiniteNumber(interval) || interval <= 0)\n ) {\n addIssue(\n issues,\n 'PT004',\n 'particle burst interval must be greater than 0 when cycles is 0 or greater than 1',\n `${burstPath}.interval`,\n );\n }\n if (\n duration != null && isFiniteNumber(time) && time >= 0 && time < duration &&\n isPositiveInteger(cycles) && isFiniteNumber(interval) && interval >= 0 &&\n time + (cycles - 1) * interval >= duration\n ) {\n addIssue(issues, 'PT004', 'particle burst cycles extend beyond the layer duration', burstPath);\n }\n}\n\nfunction reportUnknownFields(\n value: DSLRecord,\n fieldSet: ReadonlySet<string>,\n code: string,\n path: string,\n issues: ParticleValidationIssue[],\n): void {\n for (const field of Object.keys(value)) {\n if (!fieldSet.has(field)) {\n addIssue(issues, code, `unknown field ${JSON.stringify(field)}`, `${path}.${field}`);\n }\n }\n}\n\nfunction isParticleNumberExpression(value: unknown, positive: boolean): boolean {\n if (!Array.isArray(value) || value.length !== 2) {\n return false;\n }\n\n const expression = value as unknown[];\n const type = expression[0];\n const payload = expression[1];\n\n if (type === ValueType.CONSTANT) {\n return isParticleNumber(payload, positive);\n }\n if (type === ValueType.RANDOM) {\n return isFiniteNumberTuple(payload, 2) &&\n isParticleNumber(payload[0], positive) && isParticleNumber(payload[1], positive) &&\n payload[0] <= payload[1];\n }\n\n return false;\n}\n\nfunction isParticleNumber(value: unknown, positive: boolean): value is number {\n return isFiniteNumber(value) && (positive ? value > 0 : value >= 0);\n}\n\nfunction readLayerDuration(layer: DSLRecord): number | null {\n const timeRange = layer['time_range'];\n\n if (!isFiniteNumberTuple(timeRange, 2)) {\n return null;\n }\n\n return timeRange[1] - timeRange[0];\n}\n\nfunction isFiniteNumberTuple(value: unknown, length: number): value is number[] {\n return Array.isArray(value) && value.length === length && value.every(isFiniteNumber);\n}\n\nfunction isFiniteNumberArray(value: unknown): value is number[] {\n return Array.isArray(value) && value.every(isFiniteNumber);\n}\n\nfunction isTaggedParticleShapeExpression(value: unknown): boolean {\n return Array.isArray(value) && value.length === 2 && Number.isInteger(value[0]);\n}\n\nfunction isIntegerInRange(value: unknown, minimum: number, maximum: number): value is number {\n return isFiniteNumber(value) && Number.isInteger(value) && value >= minimum && value <= maximum;\n}\n\nfunction isNonNegativeInteger(value: unknown): value is number {\n return isFiniteNumber(value) && Number.isInteger(value) && value >= 0;\n}\n\nfunction isPositiveInteger(value: unknown): value is number {\n return isFiniteNumber(value) && Number.isInteger(value) && value > 0;\n}\n\nfunction isFiniteNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction describeValueType(value: unknown): string {\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return 'an array';\n }\n\n return typeof value;\n}\n\nfunction addIssue(issues: ParticleValidationIssue[], code: string, message: string, path: string): void {\n issues.push({ code, message, path });\n}\n","import { isRecord, isValidHexColor } from '../../common/utils';\nimport { DSL_CODE_LABELS } from './labels';\nimport { lintParticle } from './particle';\nimport type {\n DSLLintIssue,\n DSLLintReport,\n DSLSeverity,\n DSLValidationIssue,\n DSLValidationResult,\n ValidateDSLOptions,\n} from './types';\n\ntype DSLRecord = Record<string, unknown>;\ntype PropertyDimension = 3 | 'scalar';\n\ninterface DSLValidationContext {\n issues: DSLLintIssue[];\n duration: number | null;\n}\ninterface LayerEntry {\n layer: DSLRecord;\n path: string;\n layerId: string | null;\n physicalParentId: string | null;\n}\ninterface ValidatedCurve {\n t: [number, number];\n start: unknown;\n end: unknown;\n}\n\nconst SPATIAL_PROPERTIES = ['position', 'rotation', 'scale', 'anchor'] as const;\nconst VALID_LAYER_TYPE_SET = new Set(['null', 'layer', 'text', 'particle']);\nconst VALID_ASSET_SOURCE_SET = new Set(['user', 'llm_svg']);\nconst EPSILON = 1e-9;\n\n/** Lint an unnormalized DSL value while preserving issue severity. */\nexport function lintDSL(dsl: unknown): DSLLintReport {\n const context: DSLValidationContext = { issues: [], duration: null };\n\n if (containsCircularReference(dsl)) {\n addIssue(context, 'ERROR', 'R001', 'DSL root contains circular references, expected a JSON-compatible object', '');\n\n return createLintReport(context.issues);\n }\n\n if (!checkRoot(dsl, context)) {\n return createLintReport(context.issues);\n }\n\n checkMeta(dsl, context);\n const entries = walkLayers(dsl['layers'], context);\n\n for (const entry of entries) {\n checkLayerBase(entry, context);\n checkProperties(entry, context);\n checkLayerContent(entry, context);\n }\n checkLayerRelationships(entries, context);\n\n return createLintReport(context.issues);\n}\n\n/**\n * Validate DSL and return the public validation result.\n * Strings are interpreted as raw JSON. File-system paths are intentionally not\n * accepted so the same validator works unchanged in Node.js and browsers.\n */\nexport function validateDSL(dsl: unknown, options: ValidateDSLOptions = {}): DSLValidationResult {\n const coerced = coerceInput(dsl);\n\n if ('error' in coerced) {\n return createInputErrorResult(coerced.error);\n }\n\n const report = lintDSL(coerced.value);\n const errors = report.issues.filter(issue => issue.severity === 'ERROR').map(convertToValidationIssue);\n const warnings = report.issues.filter(issue => issue.severity === 'WARNING').map(convertToValidationIssue);\n const hasFailed = errors.length > 0 || (options.strict === true && warnings.length > 0);\n\n return {\n result: hasFailed ? 'fail' : 'pass',\n summary: `${errors.length} errors, ${warnings.length} warnings`,\n errors,\n warnings,\n };\n}\n\n/** Error thrown when a value cannot be used as a valid DSL composition. */\nexport class DSLValidationError extends TypeError {\n readonly issues: DSLValidationIssue[];\n\n constructor(issues: DSLValidationIssue[]) {\n super(issues.map(issue => `${issue.code}: ${issue.message}`).join('; '));\n this.name = 'DSLValidationError';\n this.issues = issues;\n }\n\n static fromValidationResult(validationResult: DSLValidationResult): DSLValidationError {\n return new DSLValidationError([...validationResult.errors, ...validationResult.warnings]);\n }\n}\n\nfunction coerceInput(dsl: unknown): { value: unknown } | { error: string } {\n if (typeof dsl !== 'string') {\n if (isRecord(dsl)) {\n if (containsCircularReference(dsl)) {\n return {\n error: 'DSL value contains circular references and cannot be represented as JSON',\n };\n }\n\n return { value: dsl };\n }\n\n return { error: `expected a DSL object or raw JSON string, got ${describeValueType(dsl)}` };\n }\n\n const firstCharacter = dsl.trimStart()[0];\n\n if (firstCharacter !== '{' && firstCharacter !== '[') {\n return { error: 'expected raw DSL JSON text beginning with { or [' };\n }\n\n try {\n return { value: JSON.parse(dsl) as unknown };\n } catch (error) {\n return { error: `invalid JSON: ${error instanceof Error ? error.message : String(error)}` };\n }\n}\n\nfunction createInputErrorResult(message: string): DSLValidationResult {\n return {\n result: 'fail',\n summary: 'input cannot be read as DSL JSON',\n errors: [\n {\n code: 'INPUT_ERROR',\n label: '输入无法解析为 DSL JSON',\n message,\n path: '',\n layerId: null,\n },\n ],\n warnings: [],\n };\n}\n\nfunction createLintReport(issues: DSLLintIssue[]): DSLLintReport {\n const errorCount = issues.filter(issue => issue.severity === 'ERROR').length;\n const warningCount = issues.length - errorCount;\n\n return {\n ok: issues.length === 0,\n hasErrors: errorCount > 0,\n counts: { ERROR: errorCount, WARNING: warningCount },\n issues,\n };\n}\n\nfunction convertToValidationIssue(issue: DSLLintIssue): DSLValidationIssue {\n return {\n code: issue.code,\n label: DSL_CODE_LABELS[issue.code] ?? '',\n message: issue.message,\n path: issue.path,\n layerId: issue.layerId,\n };\n}\n\nfunction addIssue(\n context: DSLValidationContext,\n severity: DSLSeverity,\n code: string,\n message: string,\n path: string,\n layerId: string | null = null,\n): void {\n context.issues.push({ severity, code, message, path, layerId });\n}\n\nfunction checkRoot(dsl: unknown, context: DSLValidationContext): dsl is DSLRecord {\n if (!isRecord(dsl)) {\n addIssue(context, 'ERROR', 'R001', `DSL root is ${describeValueType(dsl)}, expected an object`, '');\n\n return false;\n }\n if (!hasValue(dsl, 'meta')) {\n addIssue(context, 'ERROR', 'R002', \"missing 'meta' object\", 'meta');\n }\n if (!hasValue(dsl, 'layers')) {\n addIssue(context, 'ERROR', 'R003', \"missing 'layers' array\", 'layers');\n } else if (!Array.isArray(dsl['layers'])) {\n addIssue(context, 'ERROR', 'R004', `layers is ${describeValueType(dsl['layers'])}, expected an array`, 'layers');\n }\n\n return true;\n}\n\nfunction checkMeta(dsl: DSLRecord, context: DSLValidationContext): void {\n const meta = dsl['meta'];\n\n if (!isRecord(meta)) {\n return;\n }\n const required: Array<[string, string, (value: unknown) => boolean, string]> = [\n ['name', 'string', value => typeof value === 'string', 'M002a'],\n ['duration', 'number', isNumber, 'M002b'],\n ['fps', 'integer', isIntLike, 'M002c'],\n ['width', 'integer', isIntLike, 'M002d'],\n ['height', 'integer', isIntLike, 'M002e'],\n ['loop', 'boolean', value => typeof value === 'boolean', 'M002f'],\n ];\n\n for (const [field, expected, accepts, code] of required) {\n if (!hasValue(meta, field)) {\n addIssue(context, 'ERROR', 'M001', `meta.${field} is missing`, `meta.${field}`);\n } else if (!accepts(meta[field])) {\n addIssue(\n context,\n 'ERROR',\n code,\n `meta.${field} is ${describeValueType(meta[field])}, expected ${expected}`,\n `meta.${field}`,\n );\n }\n }\n\n if (meta['background_color'] != null) {\n const background = meta['background_color'];\n\n if (typeof background !== 'string') {\n addIssue(\n context,\n 'ERROR',\n 'M003',\n `meta.background_color is ${describeValueType(background)}, expected a string`,\n 'meta.background_color',\n );\n } else if (!isValidHexColor(background)) {\n addIssue(\n context,\n 'ERROR',\n 'M004',\n `meta.background_color ${formatValue(background)} is not a supported hex color`,\n 'meta.background_color',\n );\n }\n }\n\n const fps = meta['fps'];\n const width = meta['width'];\n const height = meta['height'];\n const duration = meta['duration'];\n\n if (isIntLike(fps) && fps <= 0) {\n addIssue(context, 'ERROR', 'M005', `meta.fps is ${formatNumber(fps)}, must be > 0`, 'meta.fps');\n }\n if (isIntLike(width) && width <= 0) {\n addIssue(context, 'ERROR', 'M006', `meta.width is ${formatNumber(width)}, must be > 0`, 'meta.width');\n }\n if (isIntLike(height) && height <= 0) {\n addIssue(context, 'ERROR', 'M006', `meta.height is ${formatNumber(height)}, must be > 0`, 'meta.height');\n }\n if (isNumber(duration)) {\n if (duration <= 0) {\n addIssue(context, 'ERROR', 'M007', `meta.duration is ${formatNumber(duration)}, must be > 0`, 'meta.duration');\n } else {\n context.duration = duration;\n }\n }\n}\n\nfunction walkLayers(layers: unknown, context: DSLValidationContext): LayerEntry[] {\n const entries: LayerEntry[] = [];\n\n if (!Array.isArray(layers)) {\n return entries;\n }\n\n const visitLayer = (layer: unknown, path: string, physicalParentId: string | null): void => {\n if (!isRecord(layer)) {\n addIssue(\n context,\n 'ERROR',\n 'L021',\n `layer entry is ${describeValueType(layer)}, expected an object`,\n path,\n physicalParentId,\n );\n\n return;\n }\n\n const layerId = readLayerId(layer);\n\n entries.push({ layer, path, layerId, physicalParentId });\n const children = layer['children'];\n\n if (children == null) {\n return;\n }\n if (!Array.isArray(children)) {\n addIssue(\n context,\n 'ERROR',\n 'L022',\n `children is ${describeValueType(children)}, expected an array`,\n `${path}.children`,\n layerId,\n );\n\n return;\n }\n children.forEach((child, index) => visitLayer(child, `${path}.children[${index}]`, layerId));\n };\n\n layers.forEach((layer, index) => visitLayer(layer, `layers[${index}]`, null));\n\n return entries;\n}\n\nfunction checkLayerBase(entry: LayerEntry, context: DSLValidationContext): void {\n const { layer, path, layerId } = entry;\n\n if (!hasValue(layer, 'id')) {\n addIssue(context, 'ERROR', 'L001', 'id is missing', `${path}.id`);\n } else if (typeof layer['id'] !== 'string') {\n addIssue(context, 'ERROR', 'L002', `id is ${describeValueType(layer['id'])}, expected a string`, `${path}.id`);\n } else if (layer['id'] === '') {\n addIssue(context, 'ERROR', 'L003', 'id is an empty string', `${path}.id`);\n }\n\n if (!hasValue(layer, 'name')) {\n addIssue(context, 'ERROR', 'L004', 'name is missing', `${path}.name`);\n } else if (typeof layer['name'] !== 'string') {\n addIssue(context, 'ERROR', 'L005', `name is ${describeValueType(layer['name'])}, expected a string`, `${path}.name`);\n }\n\n if (!hasValue(layer, 'type')) {\n addIssue(context, 'ERROR', 'L006', 'type is missing', `${path}.type`);\n } else if (!VALID_LAYER_TYPE_SET.has(String(layer['type']))) {\n addIssue(\n context,\n 'ERROR',\n 'L007',\n `type ${formatValue(layer['type'])} not in {null, layer, text, particle}`,\n `${path}.type`,\n );\n }\n\n for (const [field, missingCode, typeCode] of [\n ['width', 'L008', 'L009'],\n ['height', 'L010', 'L011'],\n ] as const) {\n if (!hasValue(layer, field)) {\n addIssue(context, 'ERROR', missingCode, `${field} is missing`, `${path}.${field}`);\n } else if (!isNumber(layer[field])) {\n addIssue(\n context,\n 'ERROR',\n typeCode,\n `${field} is ${describeValueType(layer[field])}, expected a number`,\n `${path}.${field}`,\n );\n } else if (layer[field] < 0) {\n addIssue(\n context,\n 'ERROR',\n typeCode,\n `${field} is ${formatNumber(layer[field])}, expected a number greater than or equal to 0`,\n `${path}.${field}`,\n );\n }\n }\n\n const description = layer['description'];\n\n if (!hasValue(layer, 'description')) {\n addIssue(context, 'ERROR', 'L012', 'description is missing', `${path}.description`);\n } else if (!isRecord(description)) {\n addIssue(\n context,\n 'ERROR',\n 'L013',\n `description is ${describeValueType(description)}, expected an object`,\n `${path}.description`,\n );\n } else {\n for (const [field, code] of [\n ['self', 'L014'],\n ['composite', 'L015'],\n ] as const) {\n if (!hasValue(description, field)) {\n addIssue(context, 'ERROR', code, `description.${field} is missing`, `${path}.description.${field}`);\n } else if (typeof description[field] !== 'string') {\n addIssue(\n context,\n 'ERROR',\n 'L016',\n `description.${field} is ${describeValueType(description[field])}, expected a string`,\n `${path}.description.${field}`,\n );\n }\n }\n }\n\n const timeRange = layer['time_range'];\n let hasNumericTimeRange = false;\n\n if (timeRange === undefined) {\n return;\n }\n if (!Array.isArray(timeRange) || timeRange.length !== 2) {\n const got = Array.isArray(timeRange) ? `array of length ${timeRange.length}` : describeValueType(timeRange);\n\n addIssue(context, 'ERROR', 'L018', `time_range is ${got}, expected [number, number]`, `${path}.time_range`);\n } else if (!timeRange.every(isNumber)) {\n addIssue(context, 'ERROR', 'L019', 'time_range elements must be numbers', `${path}.time_range`);\n } else {\n hasNumericTimeRange = true;\n }\n\n if (hasNumericTimeRange && Array.isArray(timeRange)) {\n const start = timeRange[0] as number;\n const end = timeRange[1] as number;\n\n if (start > end) {\n addIssue(\n context,\n 'ERROR',\n 'L020',\n `time_range [${formatNumber(start)}, ${formatNumber(end)}] — start must be <= end`,\n `${path}.time_range`,\n layerId,\n );\n } else if (start === end) {\n addIssue(\n context,\n 'WARNING',\n 'L020',\n `time_range [${formatNumber(start)}, ${formatNumber(end)}] has zero duration`,\n `${path}.time_range`,\n layerId,\n );\n }\n if (context.duration != null && (start < -EPSILON || end > context.duration + EPSILON)) {\n addIssue(\n context,\n 'WARNING',\n 'L023',\n `time_range [${formatNumber(start)}, ${formatNumber(end)}] falls outside [0, ${formatNumber(context.duration)}]`,\n `${path}.time_range`,\n layerId,\n );\n }\n }\n}\n\nfunction checkProperties(entry: LayerEntry, context: DSLValidationContext): void {\n const { layer, path, layerId } = entry;\n\n for (const propertyName of [...SPATIAL_PROPERTIES, 'opacity'] as const) {\n const dimension: PropertyDimension = propertyName === 'opacity' ? 'scalar' : 3;\n const propertyPath = `${path}.${propertyName}`;\n const property = layer[propertyName];\n\n if (propertyName !== 'position' && property === undefined) {\n continue;\n }\n if (property == null) {\n addIssue(context, 'ERROR', 'P001', `${propertyName} is missing`, propertyPath, layerId);\n continue;\n }\n if (!isRecord(property)) {\n addIssue(\n context,\n 'ERROR',\n 'P002',\n `${propertyName} is ${describeValueType(property)}, expected an object`,\n propertyPath,\n layerId,\n );\n continue;\n }\n\n const animated = property['a'];\n\n if (!hasValue(property, 'a')) {\n addIssue(context, 'ERROR', 'P003', `${propertyName}.a is missing`, `${propertyPath}.a`, layerId);\n continue;\n }\n if (typeof animated !== 'boolean') {\n addIssue(\n context,\n 'ERROR',\n 'P004',\n `${propertyName}.a is ${describeValueType(animated)}, expected a boolean`,\n `${propertyPath}.a`,\n layerId,\n );\n continue;\n }\n\n const hasAnimation = hasValue(property, 'animation');\n const hasValueField = hasValue(property, 'value');\n\n if (!animated) {\n checkStaticValue(propertyName, dimension, property, propertyPath, layerId, context);\n if (hasAnimation) {\n addIssue(\n context,\n 'ERROR',\n 'P006',\n `${propertyName}.animation present while a=false`,\n `${propertyPath}.animation`,\n layerId,\n );\n }\n continue;\n }\n\n if (propertyName === 'anchor') {\n addIssue(\n context,\n 'ERROR',\n 'P015',\n 'anchor animation is unsupported; anchor must use a static value',\n propertyPath,\n layerId,\n );\n }\n\n if (!hasAnimation) {\n addIssue(\n context,\n 'ERROR',\n 'P007',\n `${propertyName}.animation missing while a=true`,\n `${propertyPath}.animation`,\n layerId,\n );\n continue;\n }\n const animation = property['animation'];\n\n if (!Array.isArray(animation)) {\n addIssue(\n context,\n 'ERROR',\n 'P008',\n `${propertyName}.animation is ${describeValueType(animation)}, expected an array`,\n `${propertyPath}.animation`,\n layerId,\n );\n continue;\n }\n if (hasValueField) {\n addIssue(\n context,\n 'ERROR',\n 'P009',\n `${propertyName}.value present while a=true`,\n `${propertyPath}.value`,\n layerId,\n );\n }\n if (animation.length === 0) {\n addIssue(\n context,\n 'WARNING',\n 'P010',\n `${propertyName}.animation is empty (no segments)`,\n `${propertyPath}.animation`,\n layerId,\n );\n continue;\n }\n\n const animationPath = `${propertyPath}.animation`;\n const curves = animation.map((curve, index) =>\n checkCurve(propertyName, dimension, curve, `${animationPath}[${index}]`, layerId, context),\n );\n\n checkContinuity(propertyName, curves, animationPath, layerId, context);\n }\n}\n\nfunction checkStaticValue(\n propertyName: string,\n dimension: PropertyDimension,\n property: DSLRecord,\n propertyPath: string,\n layerId: string | null,\n context: DSLValidationContext,\n): void {\n const value = property['value'];\n\n if (!hasValue(property, 'value')) {\n addIssue(context, 'ERROR', 'P005', `${propertyName}.value missing while a=false`, `${propertyPath}.value`, layerId);\n\n return;\n }\n if (dimension === 3) {\n if (!Array.isArray(value) || value.length !== 3) {\n const got = Array.isArray(value) ? `array length ${value.length}` : describeValueType(value);\n\n addIssue(\n context,\n 'ERROR',\n 'P011',\n `${propertyName}.value must be a 3-element array, got ${got}`,\n `${propertyPath}.value`,\n layerId,\n );\n\n return;\n }\n if (!value.every(isNumber)) {\n addIssue(\n context,\n 'WARNING',\n 'P013',\n `${propertyName}.value has non-numeric elements`,\n `${propertyPath}.value`,\n layerId,\n );\n }\n } else if (!isNumber(value)) {\n addIssue(\n context,\n 'ERROR',\n 'P012',\n `opacity.value is ${describeValueType(value)}, expected a number`,\n `${propertyPath}.value`,\n layerId,\n );\n } else if (value < -EPSILON || value > 1 + EPSILON) {\n addIssue(\n context,\n 'ERROR',\n 'P014',\n `opacity.value ${formatNumber(value)} out of [0, 1]`,\n `${propertyPath}.value`,\n layerId,\n );\n }\n}\n\nfunction checkCurve(\n propertyName: string,\n dimension: PropertyDimension,\n curve: unknown,\n segmentPath: string,\n layerId: string | null,\n context: DSLValidationContext,\n): ValidatedCurve | null {\n if (!isRecord(curve)) {\n addIssue(\n context,\n 'ERROR',\n 'C001',\n `animation segment is ${describeValueType(curve)}, expected an object`,\n segmentPath,\n layerId,\n );\n\n return null;\n }\n\n const timeRange = curve['t'];\n let isTimeRangeValid = false;\n\n if (!hasValue(curve, 't')) {\n addIssue(context, 'ERROR', 'C002', 't is missing', `${segmentPath}.t`, layerId);\n } else if (!Array.isArray(timeRange) || timeRange.length !== 2) {\n const got = Array.isArray(timeRange) ? `array length ${timeRange.length}` : describeValueType(timeRange);\n\n addIssue(context, 'ERROR', 'C003', `t must be a 2-element array, got ${got}`, `${segmentPath}.t`, layerId);\n } else if (!timeRange.every(isNumber)) {\n addIssue(context, 'ERROR', 'C005', 't elements must be numbers', `${segmentPath}.t`, layerId);\n } else {\n isTimeRangeValid = true;\n }\n\n if (isTimeRangeValid && Array.isArray(timeRange)) {\n const start = timeRange[0] as number;\n const end = timeRange[1] as number;\n\n if (start >= end) {\n addIssue(\n context,\n 'ERROR',\n 'C004',\n `t [${formatNumber(start)}, ${formatNumber(end)}] — start >= end`,\n `${segmentPath}.t`,\n layerId,\n );\n }\n if (context.duration != null && (start < -EPSILON || end > context.duration + EPSILON)) {\n addIssue(\n context,\n 'WARNING',\n 'C016',\n `t [${formatNumber(start)}, ${formatNumber(end)}] falls outside [0, ${formatNumber(context.duration)}]`,\n `${segmentPath}.t`,\n layerId,\n );\n }\n }\n\n const isStartValid = checkCurveEndpoint(dimension, curve, 'start', 'C006', segmentPath, layerId, context);\n const isEndValid = checkCurveEndpoint(dimension, curve, 'end', 'C007', segmentPath, layerId, context);\n const easing = curve['easing'];\n\n if (!hasValue(curve, 'easing')) {\n addIssue(context, 'ERROR', 'C011', 'easing is missing', `${segmentPath}.easing`, layerId);\n } else if (!Array.isArray(easing) || easing.length !== 4) {\n const got = Array.isArray(easing) ? `array length ${easing.length}` : describeValueType(easing);\n\n addIssue(\n context,\n 'ERROR',\n 'C011',\n `easing must be a 4-element array [x1,y1,x2,y2], got ${got}`,\n `${segmentPath}.easing`,\n layerId,\n );\n } else if (!easing.every(isNumber)) {\n addIssue(context, 'ERROR', 'C012', 'easing elements must be numbers', `${segmentPath}.easing`, layerId);\n } else if (easing[0] < 0 || easing[0] > 1 || easing[2] < 0 || easing[2] > 1) {\n addIssue(\n context,\n 'ERROR',\n 'C012',\n 'easing x control points must be in the [0, 1] range',\n `${segmentPath}.easing`,\n layerId,\n );\n }\n\n for (const key of ['in', 'out'] as const) {\n if (!hasValue(curve, key)) {\n continue;\n }\n if (propertyName !== 'position') {\n addIssue(\n context,\n 'ERROR',\n 'C013',\n `'${key}' tangent only allowed on position, not ${propertyName}`,\n `${segmentPath}.${key}`,\n layerId,\n );\n } else {\n const tangent = curve[key];\n\n if (!Array.isArray(tangent) || tangent.length !== 3 || !tangent.every(isNumber)) {\n const got = Array.isArray(tangent) ? `array length ${tangent.length}` : describeValueType(tangent);\n\n addIssue(\n context,\n 'ERROR',\n 'C014',\n `'${key}' must be a finite 3-element array, got ${got}`,\n `${segmentPath}.${key}`,\n layerId,\n );\n }\n }\n }\n\n if (!isTimeRangeValid || !isStartValid || !isEndValid || !Array.isArray(timeRange)) {\n return null;\n }\n\n return {\n t: [timeRange[0] as number, timeRange[1] as number],\n start: curve['start'],\n end: curve['end'],\n };\n}\n\nfunction checkCurveEndpoint(\n dimension: PropertyDimension,\n curve: DSLRecord,\n key: 'start' | 'end',\n missingCode: string,\n segmentPath: string,\n layerId: string | null,\n context: DSLValidationContext,\n): boolean {\n const value = curve[key];\n\n if (!hasValue(curve, key)) {\n addIssue(context, 'ERROR', missingCode, `${key} is missing`, `${segmentPath}.${key}`, layerId);\n\n return false;\n }\n if (dimension === 3) {\n if (!Array.isArray(value) || value.length !== 3) {\n const got = Array.isArray(value) ? `array length ${value.length}` : describeValueType(value);\n\n addIssue(\n context,\n 'ERROR',\n 'C008',\n `${key} must be a 3-element array, got ${got}`,\n `${segmentPath}.${key}`,\n layerId,\n );\n\n return false;\n }\n\n if (!value.every(isNumber)) {\n addIssue(\n context,\n 'ERROR',\n 'C008',\n `${key} must contain finite numbers`,\n `${segmentPath}.${key}`,\n layerId,\n );\n\n return false;\n }\n\n return true;\n }\n if (isNumber(value)) {\n if (value < -EPSILON || value > 1 + EPSILON) {\n addIssue(\n context,\n 'ERROR',\n 'C009',\n `${key} must be in the [0, 1] range`,\n `${segmentPath}.${key}`,\n layerId,\n );\n\n return false;\n }\n addIssue(\n context,\n 'WARNING',\n 'C010',\n `${key} is a scalar ${formatNumber(value)}; expected a 1-element array (accepted and normalized)`,\n `${segmentPath}.${key}`,\n layerId,\n );\n\n return true;\n }\n if (Array.isArray(value)) {\n if (value.length === 1) {\n if (!isNumber(value[0]) || value[0] < -EPSILON || value[0] > 1 + EPSILON) {\n addIssue(\n context,\n 'ERROR',\n 'C009',\n `${key} must contain one finite number in the [0, 1] range`,\n `${segmentPath}.${key}`,\n layerId,\n );\n\n return false;\n }\n\n return true;\n }\n addIssue(\n context,\n 'ERROR',\n 'C009',\n `${key} must be a 1-element array, got array length ${value.length}`,\n `${segmentPath}.${key}`,\n layerId,\n );\n\n return false;\n }\n addIssue(\n context,\n 'ERROR',\n 'C009',\n `${key} is ${describeValueType(value)}, expected a 1-element array`,\n `${segmentPath}.${key}`,\n layerId,\n );\n\n return false;\n}\n\nfunction checkContinuity(\n propertyName: string,\n curves: Array<ValidatedCurve | null>,\n animationPath: string,\n layerId: string | null,\n context: DSLValidationContext,\n): void {\n const validCurves = curves.filter((curve): curve is ValidatedCurve => curve != null);\n\n for (let index = 0; index < validCurves.length - 1; index++) {\n const left = validCurves[index];\n const right = validCurves[index + 1];\n const path = `${animationPath}[segments ${index}->${index + 1}]`;\n\n if (left.t[1] > right.t[0] + EPSILON) {\n addIssue(\n context,\n 'WARNING',\n 'S002',\n `${propertyName}: segments ${index}/${index + 1} overlap (t ${formatValue(left.t)} / ${formatValue(right.t)})`,\n path,\n layerId,\n );\n } else if (left.t[1] < right.t[0] - EPSILON) {\n addIssue(\n context,\n 'WARNING',\n 'S003',\n `${propertyName}: gap between segments ${index}/${index + 1} (t ${formatValue(left.t)} / ${formatValue(right.t)})`,\n path,\n layerId,\n );\n }\n if (right.t[0] < left.t[0] - EPSILON) {\n addIssue(\n context,\n 'WARNING',\n 'S004',\n `${propertyName}: segments not monotonic at ${index}/${index + 1} (t ${formatValue(left.t)} / ${formatValue(right.t)})`,\n path,\n layerId,\n );\n }\n }\n}\n\nfunction checkLayerContent(entry: LayerEntry, context: DSLValidationContext): void {\n const { layer, path, layerId } = entry;\n const layerType = layer['type'];\n\n if (typeof layerType !== 'string' || !VALID_LAYER_TYPE_SET.has(layerType)) {\n return;\n }\n\n const asset = layer['asset'];\n const hasAsset = hasValue(layer, 'asset');\n const particle = layer['particle'];\n const hasParticle = hasValue(layer, 'particle');\n\n if (layerType !== 'particle' && hasParticle) {\n addIssue(\n context,\n 'WARNING',\n 'A024',\n `type=${layerType} has a particle block (ignored)`,\n `${path}.particle`,\n layerId,\n );\n }\n\n if (layerType === 'null') {\n if (hasAsset) {\n addIssue(context, 'WARNING', 'A010', 'null layer has an asset (ignored)', `${path}.asset`, layerId);\n }\n\n return;\n }\n\n if (layerType === 'layer') {\n if (!hasAsset) {\n addIssue(context, 'ERROR', 'A001', 'type=layer requires an asset', `${path}.asset`, layerId);\n } else if (!isRecord(asset)) {\n addIssue(context, 'ERROR', 'A002', `asset is ${describeValueType(asset)}, expected an object`, `${path}.asset`, layerId);\n } else {\n checkAssetFields(asset, `${path}.asset`, layerId, context);\n }\n if (hasValue(layer, 'text')) {\n addIssue(context, 'WARNING', 'A016', 'type=layer has a text block (ignored)', `${path}.text`, layerId);\n }\n if (\n (isNumber(layer['width']) && layer['width'] <= 0) ||\n (isNumber(layer['height']) && layer['height'] <= 0)\n ) {\n addIssue(\n context,\n 'ERROR',\n 'L024',\n 'image layers require width and height greater than 0',\n path,\n layerId,\n );\n }\n\n return;\n }\n\n if (layerType === 'particle') {\n if (\n (isNumber(layer['width']) && layer['width'] <= 0) ||\n (isNumber(layer['height']) && layer['height'] <= 0)\n ) {\n addIssue(\n context,\n 'ERROR',\n 'L024',\n 'particle layers require width and height greater than 0',\n path,\n layerId,\n );\n }\n if (!hasParticle) {\n addIssue(context, 'ERROR', 'A022', 'type=particle requires a particle block', `${path}.particle`, layerId);\n } else if (!isRecord(particle)) {\n addIssue(\n context,\n 'ERROR',\n 'A023',\n `particle is ${describeValueType(particle)}, expected an object`,\n `${path}.particle`,\n layerId,\n );\n } else {\n for (const issue of lintParticle(particle, layer, `${path}.particle`)) {\n addIssue(context, 'ERROR', issue.code, issue.message, issue.path, layerId);\n }\n }\n if (hasAsset) {\n addIssue(context, 'WARNING', 'A025', 'type=particle has an asset (ignored)', `${path}.asset`, layerId);\n }\n if (hasValue(layer, 'text')) {\n addIssue(context, 'WARNING', 'A026', 'type=particle has a text block (ignored)', `${path}.text`, layerId);\n }\n\n return;\n }\n\n const text = layer['text'];\n\n if (!hasValue(layer, 'text')) {\n addIssue(context, 'ERROR', 'A011', 'type=text requires a text block', `${path}.text`, layerId);\n } else if (!isRecord(text)) {\n addIssue(context, 'ERROR', 'A012', `text is ${describeValueType(text)}, expected an object`, `${path}.text`, layerId);\n } else {\n for (const [field, code, expected] of [\n ['content', 'A013', 'string'],\n ['size', 'A014', 'number'],\n ['color', 'A015', 'string'],\n ] as const) {\n const value = text[field];\n\n if (!hasValue(text, field)) {\n addIssue(context, 'ERROR', code, `text.${field} is missing`, `${path}.text.${field}`, layerId);\n } else if (expected === 'number' && !isNumber(value)) {\n addIssue(\n context,\n 'ERROR',\n code,\n `text.${field} is ${describeValueType(value)}, expected a number`,\n `${path}.text.${field}`,\n layerId,\n );\n } else if (expected === 'string' && typeof value !== 'string') {\n addIssue(\n context,\n 'ERROR',\n code,\n `text.${field} is ${describeValueType(value)}, expected a string`,\n `${path}.text.${field}`,\n layerId,\n );\n }\n }\n if (isNumber(text['size']) && text['size'] < 0) {\n addIssue(\n context,\n 'ERROR',\n 'A014',\n `text.size is ${formatNumber(text['size'])}, expected a number greater than or equal to 0`,\n `${path}.text.size`,\n layerId,\n );\n }\n if (typeof text['color'] === 'string' && !isValidHexColor(text['color'])) {\n addIssue(\n context,\n 'ERROR',\n 'A015',\n `text.color ${formatValue(text['color'])} is not a supported hex color`,\n `${path}.text.color`,\n layerId,\n );\n }\n if (hasValue(text, 'font') && typeof text['font'] !== 'string') {\n addIssue(context, 'ERROR', 'A018', 'text.font must be a string', `${path}.text.font`, layerId);\n }\n if (\n hasValue(text, 'align') &&\n text['align'] !== 'left' &&\n text['align'] !== 'center' &&\n text['align'] !== 'right'\n ) {\n addIssue(\n context,\n 'ERROR',\n 'A019',\n 'text.align must be left, center, or right',\n `${path}.text.align`,\n layerId,\n );\n }\n for (const field of ['line_height', 'letter_spacing'] as const) {\n if (hasValue(text, field) && !isNumber(text[field])) {\n addIssue(\n context,\n 'ERROR',\n 'A020',\n `text.${field} must be a finite number`,\n `${path}.text.${field}`,\n layerId,\n );\n }\n }\n }\n if (hasAsset) {\n addIssue(context, 'WARNING', 'A017', 'type=text has an asset (ignored)', `${path}.asset`, layerId);\n }\n}\n\nfunction checkAssetFields(\n asset: DSLRecord,\n assetPath: string,\n layerId: string | null,\n context: DSLValidationContext,\n): void {\n const source = asset['source'];\n\n if (!hasValue(asset, 'source')) {\n addIssue(context, 'ERROR', 'A003', 'asset.source is missing', `${assetPath}.source`, layerId);\n\n return;\n }\n if (typeof source !== 'string' || !VALID_ASSET_SOURCE_SET.has(source)) {\n addIssue(\n context,\n 'ERROR',\n 'A004',\n `asset.source ${formatValue(source)} not in {user, llm_svg}`,\n `${assetPath}.source`,\n layerId,\n );\n\n return;\n }\n\n if (source === 'llm_svg') {\n if (asset['format'] !== 'svg') {\n addIssue(\n context,\n 'ERROR',\n 'A005',\n `asset.format is ${formatValue(asset['format'])}, must be 'svg' for llm_svg`,\n `${assetPath}.format`,\n layerId,\n );\n }\n if (typeof asset['svg'] !== 'string') {\n addIssue(context, 'ERROR', 'A006', 'asset.svg must be a string', `${assetPath}.svg`, layerId);\n }\n if (typeof asset['prompt'] !== 'string') {\n addIssue(context, 'ERROR', 'A007', 'asset.prompt must be a string', `${assetPath}.prompt`, layerId);\n }\n if (asset['url'] !== undefined && typeof asset['url'] !== 'string') {\n addIssue(context, 'ERROR', 'A021', 'asset.url must be a string when present', `${assetPath}.url`, layerId);\n } else if (typeof asset['url'] === 'string' && asset['url'] !== '' && !isAbsoluteResourceUrl(asset['url'])) {\n addIssue(\n context,\n 'ERROR',\n 'A021',\n 'asset.url must be absolute or a Data URL when non-empty',\n `${assetPath}.url`,\n layerId,\n );\n }\n } else {\n if (typeof asset['url'] !== 'string') {\n addIssue(context, 'ERROR', 'A008', 'asset.url must be a string', `${assetPath}.url`, layerId);\n } else if (!isAbsoluteResourceUrl(asset['url'])) {\n addIssue(\n context,\n 'ERROR',\n 'A008',\n 'asset.url must be absolute or a Data URL',\n `${assetPath}.url`,\n layerId,\n );\n }\n if (asset['prompt'] !== '') {\n addIssue(\n context,\n 'ERROR',\n 'A009',\n `asset.prompt must be '' for source=user, got ${formatValue(asset['prompt'])}`,\n `${assetPath}.prompt`,\n layerId,\n );\n }\n }\n}\n\nfunction checkLayerRelationships(entries: LayerEntry[], context: DSLValidationContext): void {\n const firstLayerById = new Map<string, LayerEntry>();\n const layerCountById = new Map<string, number>();\n\n for (const entry of entries) {\n if (entry.layerId == null) {\n continue;\n }\n layerCountById.set(entry.layerId, (layerCountById.get(entry.layerId) ?? 0) + 1);\n if (!firstLayerById.has(entry.layerId)) {\n firstLayerById.set(entry.layerId, entry);\n }\n }\n\n for (const entry of entries) {\n if (entry.layerId == null || (layerCountById.get(entry.layerId) ?? 0) <= 1) {\n continue;\n }\n addIssue(\n context,\n 'ERROR',\n 'X001',\n `id ${formatValue(entry.layerId)} is not globally unique (${layerCountById.get(entry.layerId)} occurrences)`,\n `${entry.path}.id`,\n entry.layerId,\n );\n }\n\n const logicalParentIdByLayer = new Map<LayerEntry, string | null>();\n\n for (const entry of entries) {\n const parent = entry.layer['parent'];\n let resolvedParentId: string | null = null;\n\n if (parent == null) {\n resolvedParentId = null;\n } else if (typeof parent !== 'string') {\n addIssue(\n context,\n 'ERROR',\n 'X003',\n `parent is ${describeValueType(parent)}, expected a string or null`,\n `${entry.path}.parent`,\n entry.layerId,\n );\n } else if (entry.layerId != null && parent === entry.layerId) {\n addIssue(\n context,\n 'ERROR',\n 'X002',\n `parent ${formatValue(parent)} references own id (self-reference)`,\n `${entry.path}.parent`,\n entry.layerId,\n );\n } else if (!firstLayerById.has(parent)) {\n addIssue(\n context,\n 'ERROR',\n 'X004',\n `parent ${formatValue(parent)} not found (dangling reference)`,\n `${entry.path}.parent`,\n entry.layerId,\n );\n } else {\n resolvedParentId = parent;\n }\n\n logicalParentIdByLayer.set(entry, resolvedParentId);\n\n if (resolvedParentId != null && entry.physicalParentId !== resolvedParentId) {\n addIssue(\n context,\n 'WARNING',\n 'X005',\n `parent=${formatValue(resolvedParentId)} but physical nesting under ${formatValue(entry.physicalParentId)} (parent wins)`,\n `${entry.path}.parent`,\n entry.layerId,\n );\n } else if (resolvedParentId == null && parent == null && entry.physicalParentId != null) {\n addIssue(\n context,\n 'WARNING',\n 'X005',\n `layer nested under ${formatValue(entry.physicalParentId)} but parent is null/absent`,\n `${entry.path}.parent`,\n entry.layerId,\n );\n }\n }\n\n checkParentCycles(entries, firstLayerById, logicalParentIdByLayer, context);\n}\n\nfunction checkParentCycles(\n entries: LayerEntry[],\n firstLayerById: Map<string, LayerEntry>,\n logicalParentIdByLayer: Map<LayerEntry, string | null>,\n context: DSLValidationContext,\n): void {\n const resolvedLayerSet = new Set<LayerEntry>();\n const cycleEntries: LayerEntry[] = [];\n\n for (const start of entries) {\n if (resolvedLayerSet.has(start)) {\n continue;\n }\n\n const pathEntries: LayerEntry[] = [];\n const visitedLayerIdSet = new Set<string>();\n let current: LayerEntry | undefined = start;\n\n while (current != null) {\n const currentId = current.layerId;\n\n if (currentId == null) {\n break;\n }\n if (visitedLayerIdSet.has(currentId)) {\n const cycleStartIndex = pathEntries.findIndex(entry => entry.layerId === currentId);\n\n if (cycleStartIndex >= 0) {\n cycleEntries.push(...pathEntries.slice(cycleStartIndex));\n }\n\n break;\n }\n if (resolvedLayerSet.has(current)) {\n break;\n }\n\n pathEntries.push(current);\n visitedLayerIdSet.add(currentId);\n const parentId = logicalParentIdByLayer.get(current);\n\n current = parentId == null ? undefined : firstLayerById.get(parentId);\n }\n\n pathEntries.forEach(entry => resolvedLayerSet.add(entry));\n }\n\n const reportedCycleLayerSet = new Set<LayerEntry>();\n\n for (const entry of cycleEntries) {\n if (reportedCycleLayerSet.has(entry)) {\n continue;\n }\n reportedCycleLayerSet.add(entry);\n addIssue(\n context,\n 'ERROR',\n 'X006',\n `layer ${formatValue(entry.layerId)} is part of a parent-pointer cycle`,\n `${entry.path}.parent`,\n entry.layerId,\n );\n }\n}\n\nfunction readLayerId(layer: DSLRecord): string | null {\n const id = layer['id'];\n\n return typeof id === 'string' && id.length > 0 ? id : null;\n}\n\nfunction containsCircularReference(value: unknown, ancestorSet = new WeakSet<object>()): boolean {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (ancestorSet.has(value)) {\n return true;\n }\n\n ancestorSet.add(value);\n const hasCircularChild = Object.values(value).some(child => containsCircularReference(child, ancestorSet));\n\n ancestorSet.delete(value);\n\n return hasCircularChild;\n}\n\nfunction hasValue(object: DSLRecord, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(object, key) && object[key] != null;\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value);\n}\n\nfunction isIntLike(value: unknown): value is number {\n return isNumber(value) && Number.isInteger(value);\n}\n\nfunction isAbsoluteResourceUrl(value: string): boolean {\n try {\n new URL(value);\n\n return true;\n } catch {\n return false;\n }\n}\n\nfunction describeValueType(value: unknown): string {\n if (value === null) {\n return 'null';\n }\n if (value === undefined) {\n return 'undefined';\n }\n if (Array.isArray(value)) {\n return 'array';\n }\n if (isRecord(value)) {\n return 'object';\n }\n\n return typeof value;\n}\n\nfunction formatValue(value: unknown): string {\n if (value === null) {\n return 'null';\n }\n if (value === undefined) {\n return 'undefined';\n }\n if (typeof value === 'boolean') {\n return String(value);\n }\n if (typeof value === 'number') {\n return formatNumber(value);\n }\n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n if (Array.isArray(value)) {\n return `[${value.map(formatValue).join(', ')}]`;\n }\n if (isRecord(value)) {\n return `{${Object.entries(value)\n .map(([key, item]) => `${formatValue(key)}: ${formatValue(item)}`)\n .join(', ')}}`;\n }\n\n return String(value);\n}\n\nfunction formatNumber(value: number): string {\n if (Number.isNaN(value)) {\n return 'NaN';\n }\n if (value === Infinity) {\n return 'Infinity';\n }\n if (value === -Infinity) {\n return '-Infinity';\n }\n\n return String(value);\n}\n","import { IREndBehavior, type IRComposition, type IRScene, type IRLayer } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport type { Layer } from '../dsl/schema';\nimport { colorToHex } from '../common/utils';\nimport type { IRToDSLLayerMapping, IRToDSLResult } from './types';\n\nexport function assembleDSLResult(\n baselineScene: IRScene,\n baselineComposition: IRComposition,\n dslLayerByIRId: Map<string, Layer>,\n layerMapping: IRToDSLLayerMapping,\n diagnostics: ConversionDiagnostic[],\n): IRToDSLResult {\n const layers = assembleDSLHierarchy(baselineComposition.layers, dslLayerByIRId);\n const frameRate = baselineComposition.frameRate;\n\n return {\n dsl: {\n meta: {\n name: baselineComposition.name ?? baselineComposition.id,\n duration: Math.max(0, (baselineComposition.outPoint - baselineComposition.inPoint) / frameRate),\n fps: frameRate,\n width: baselineComposition.width,\n height: baselineComposition.height,\n loop: baselineComposition.endBehavior === IREndBehavior.Loop,\n background_color: baselineComposition.backgroundColor != null ? colorToHex(baselineComposition.backgroundColor) : null,\n },\n layers,\n },\n preservedData: {\n baselineScene,\n layerMapping,\n },\n diagnostics,\n };\n}\n\nfunction assembleDSLHierarchy(sourceLayers: IRLayer[], dslLayerByIRId: Map<string, Layer>): Layer[] {\n const rootLayers: Layer[] = [];\n\n // IR is bottom-to-top while each DSL sibling array is top-to-bottom.\n for (const sourceLayer of sourceLayers) {\n const convertedLayer = dslLayerByIRId.get(sourceLayer.id);\n\n if (convertedLayer == null) {\n continue;\n }\n\n const parentLayerId = sourceLayer.parentId;\n const parentLayer = parentLayerId != null ? dslLayerByIRId.get(parentLayerId) : undefined;\n\n if (parentLayer != null) {\n parentLayer.children ??= [];\n parentLayer.children.unshift(convertedLayer);\n } else {\n rootLayers.unshift(convertedLayer);\n }\n }\n\n return rootLayers;\n}\n","import type { IRParticleScalarExpression } from '@vvfx/animation-ir';\nimport { ValueType, type NumberExpression } from '../dsl/number-expression';\n\nexport function mapDSLParticleExpressionToIR(expression: NumberExpression): IRParticleScalarExpression {\n if (expression[0] === ValueType.RANDOM) {\n return {\n type: 'randomBetweenConstants',\n min: expression[1][0],\n max: expression[1][1],\n };\n }\n\n return { type: 'constant', value: expression[1] };\n}\n\nexport function mapIRParticleExpressionToDSL(expression: IRParticleScalarExpression): 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.CONSTANT, expression.keyframes[0]?.value ?? 0];\n }\n}\n\nexport function isDSLCompatibleParticleExpression(expression: IRParticleScalarExpression): boolean {\n return expression.type === 'constant' || expression.type === 'randomBetweenConstants';\n}\n\nexport function isDSLNumberExpressionEqual(left: NumberExpression, right: NumberExpression): boolean {\n if (left[0] !== right[0]) {\n return false;\n }\n if (left[0] === ValueType.CONSTANT && right[0] === ValueType.CONSTANT) {\n return Object.is(left[1], right[1]);\n }\n if (left[0] === ValueType.RANDOM && right[0] === ValueType.RANDOM) {\n return Object.is(left[1][0], right[1][0]) && Object.is(left[1][1], right[1][1]);\n }\n\n return false;\n}\n","import type { Layer } from '../dsl/schema';\n\n/** Static defaults for absent transform channels. */\nexport const TRANSFORM_FALLBACK: {\n position: [number, number, number];\n rotation: [number, number, number];\n scale: [number, number, number];\n anchor: [number, number, number];\n opacity: number;\n} = {\n position: [0, 0, 0],\n rotation: [0, 0, 0],\n scale: [1, 1, 1],\n anchor: [0, 0, 0],\n opacity: 1,\n};\n\nexport function getLayerStackingOrder(layer: Layer): number {\n const value = layer.position.a ? layer.position.animation[0]?.start : layer.position.value;\n\n return Array.isArray(value) ? (value[2] ?? 0) : 0;\n}\n\nexport function withPositionZ(position: Layer['position'], depth: number): Layer['position'] {\n const result = structuredClone(position);\n\n if (result.a) {\n for (const segment of result.animation) {\n segment.start[2] = depth;\n segment.end[2] = depth;\n }\n } else if (Array.isArray(result.value)) {\n result.value[2] = depth;\n }\n\n return result;\n}\n","import type { IRParticleLayer, IRParticleScalarExpression } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport type { ParticleProperties } from '../dsl/schema';\nimport type { NumberExpression } from '../dsl/number-expression';\nimport {\n isDSLCompatibleParticleExpression, mapIRParticleExpressionToDSL,\n} from '../common/particle-expression';\n\nexport function convertIRParticleToDSL(\n layer: IRParticleLayer,\n frameRate: number,\n layerPath: string,\n diagnostics: ConversionDiagnostic[],\n): ParticleProperties {\n const convertExpression = (\n expression: IRParticleScalarExpression,\n fieldPath: string,\n ): NumberExpression => {\n if (!isDSLCompatibleParticleExpression(expression)) {\n diagnostics.push({\n code: 'PARTICLE_EXPRESSION_PROJECTED',\n severity: 'warning',\n action: 'approximated',\n path: `${layerPath}.content.${fieldPath}`,\n sourceId: layer.id,\n feature: fieldPath,\n message: `Particle ${fieldPath} uses an IR ${expression.type} expression and was projected to a representative editable DSL value; the baseline IR preserves the original expression until this field is edited.`,\n });\n }\n\n return mapIRParticleExpressionToDSL(expression);\n };\n\n return {\n options: {\n maxCount: layer.content.maxParticles,\n startLifetime: convertExpression(layer.content.startLifetime, 'startLifetime'),\n },\n emission: {\n rateOverTime: convertExpression(layer.content.emission.rateOverTime, 'emission.rateOverTime'),\n ...(layer.content.emission.bursts != null && {\n bursts: layer.content.emission.bursts.map(burst => ({\n time: burst.frameOffset / frameRate,\n count: burst.count,\n cycles: burst.cycleCount === 'infinite' ? 0 : burst.cycleCount,\n interval: burst.repeatIntervalFrames / frameRate,\n })),\n }),\n },\n };\n}\n","import type {\n IRAnimatedProperty, IRAsset, IRComposition, IRFontAsset, IRImageAsset, IRKeyframe,\n IRLayer, IRPropertyValue, IRTextLayer, IRVec3,\n} from '@vvfx/animation-ir';\nimport { getIRResourceSourceUrl, type ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport type { AnimatedProperty, AnimationCurve, Asset, Layer, TextProperties } from '../dsl/schema';\nimport { isDSLCompatibleParticleExpression } from '../common/particle-expression';\nimport { colorToHex, EPSILON } from '../common/utils';\nimport { TRANSFORM_FALLBACK, withPositionZ } from '../common/transform';\nimport type { IRToDSLLayerMapping } from './types';\nimport { convertIRParticleToDSL } from './convert-particle';\n\nconst LINEAR_EASING: [number, number, number, number] = [0, 0, 1, 1];\n\nexport interface IRLayerConversionResult {\n dslLayerByIRId: Map<string, Layer>;\n layerMapping: IRToDSLLayerMapping;\n diagnostics: ConversionDiagnostic[];\n}\n\nexport function convertIRLayersToDSL(\n baselineComposition: IRComposition,\n assets: IRAsset[],\n frameRate: number,\n): IRLayerConversionResult {\n const layerMapping: IRToDSLLayerMapping = { layers: {} };\n const diagnostics: ConversionDiagnostic[] = [];\n const dslLayerByIRId = new Map<string, Layer>();\n const imageAssetById = new Map(\n assets.filter((asset): asset is IRImageAsset => asset.type === 'image').map(asset => [asset.id, asset] as const),\n );\n const fontAssetById = new Map(\n assets.filter((asset): asset is IRFontAsset => asset.type === 'font').map(asset => [asset.id, asset] as const),\n );\n\n for (const [layerIndex, layer] of baselineComposition.layers.entries()) {\n const layerId = layer.id;\n const layerPath = `$.compositions[id=${JSON.stringify(baselineComposition.id)}].layers[${layerIndex}]`;\n const convertedLayer = convertIRLayerToDSL(\n layer,\n layerId,\n imageAssetById,\n fontAssetById,\n frameRate,\n layerPath,\n diagnostics,\n );\n\n convertedLayer.position = withPositionZ(convertedLayer.position, layerIndex);\n\n layerMapping.layers[layerId] = {\n irCompositionId: baselineComposition.id,\n irLayerId: layer.id,\n };\n dslLayerByIRId.set(layer.id, convertedLayer);\n collectDiagnostics(layer, layerId, layerPath, diagnostics);\n if (convertedLayer.type === 'null' && isVisualLayerWithoutAsset(layer, convertedLayer.asset)) {\n diagnostics.push({\n code: 'LAYER_ASSET_NOT_MATERIALIZED',\n severity: 'warning',\n action: 'approximated',\n path: `${layerPath}.content.assetId`,\n sourceId: layerId,\n feature: 'asset',\n message: `Visual layer type '${layer.type}' has no materialized URL asset and was projected to DSL type=null; the baseline scene preserves the original visual data.`,\n });\n }\n }\n\n return {\n dslLayerByIRId,\n layerMapping,\n diagnostics,\n };\n}\n\nfunction convertIRLayerToDSL(\n layer: IRLayer,\n layerId: string,\n imageAssetById: ReadonlyMap<string, IRImageAsset>,\n fontAssetById: ReadonlyMap<string, IRFontAsset>,\n frameRate: number,\n layerPath: string,\n diagnostics: ConversionDiagnostic[],\n): Layer {\n const size = resolveLayerSize(layer);\n const asset = convertIRAssetToDSL(layer, imageAssetById);\n const layerType = mapLayerType(layer, asset);\n const parentId = layer.parentId ?? null;\n const convertedLayer: Layer = {\n id: layerId,\n name: layer.name ?? layer.id,\n type: layerType,\n width: size.width,\n height: size.height,\n description: {\n self: layer.name ?? layer.id,\n composite: '',\n },\n parent: parentId,\n time_range: [layer.time.inFrame / frameRate, layer.time.outFrame / frameRate],\n position: convertIRVec3PropertyToDSL(layer.transform?.position, TRANSFORM_FALLBACK.position, frameRate, true),\n rotation: convertIRLayerRotationToDSL(layer, frameRate),\n scale: convertIRVec3PropertyToDSL(layer.transform?.scale, TRANSFORM_FALLBACK.scale, frameRate, false),\n anchor: convertIRVec3PropertyToDSL(layer.transform?.anchor, TRANSFORM_FALLBACK.anchor, frameRate, false),\n opacity: convertIRNumberPropertyToDSL(layer.transform?.opacity, TRANSFORM_FALLBACK.opacity, frameRate),\n children: [],\n };\n\n if (layerType === 'layer' && asset != null) {\n convertedLayer.asset = asset;\n }\n\n if (layer.type === 'text') {\n convertedLayer.text = convertIRTextToDSL(layer, fontAssetById);\n }\n if (layer.type === 'particle') {\n convertedLayer.particle = convertIRParticleToDSL(layer, frameRate, layerPath, diagnostics);\n }\n\n return convertedLayer;\n}\n\nfunction mapLayerType(layer: IRLayer, asset: Asset | undefined): Layer['type'] {\n if (layer.type === 'particle') {\n return 'particle';\n }\n if (layer.type === 'text') {\n return 'text';\n }\n\n if (layer.type === 'null' || layer.type === 'precomp') {\n return 'null';\n }\n\n return asset != null ? 'layer' : 'null';\n}\n\nfunction isVisualLayerWithoutAsset(layer: IRLayer, asset: Asset | undefined): boolean {\n return layer.type !== 'null' && layer.type !== 'precomp' && layer.type !== 'text' &&\n layer.type !== 'particle' && asset == null;\n}\n\nfunction resolveLayerSize(layer: IRLayer): { width: number; height: number } {\n if (layer.localBounds != null) {\n const { width, height } = layer.localBounds;\n\n return { width, height };\n }\n\n return { width: 0, height: 0 };\n}\n\nfunction convertIRAssetToDSL(\n layer: IRLayer,\n imageAssetById: ReadonlyMap<string, IRImageAsset>,\n): Asset | undefined {\n if (layer.type !== 'image') {\n return undefined;\n }\n\n const imageAsset = imageAssetById.get(layer.content.assetId);\n\n if (imageAsset == null) {\n return undefined;\n }\n\n return {\n url: getIRResourceSourceUrl(imageAsset.source),\n source: 'user',\n prompt: '',\n };\n}\n\nfunction convertIRTextToDSL(\n layer: IRTextLayer,\n fontAssetById: ReadonlyMap<string, IRFontAsset>,\n): TextProperties {\n const text = layer.content;\n const fontAsset = fontAssetById.get(text.fontAssetId);\n\n if (fontAsset == null) {\n throw new TypeError(`[dsl-ir] Text layer '${layer.id}' references a missing Font Asset: ${text.fontAssetId}`);\n }\n\n return {\n content: text.text,\n font: fontAsset.family,\n size: text.fontSize,\n color: colorToHex(text.color),\n ...(text.textAlign != null && { align: text.textAlign }),\n line_height: text.lineHeight,\n ...(text.letterSpacing != null && { letter_spacing: text.letterSpacing }),\n };\n}\n\nfunction convertIRLayerRotationToDSL(layer: IRLayer, frameRate: number): AnimatedProperty {\n const rotation = layer.transform?.rotation;\n\n if (rotation == null) {\n return convertIRVec3PropertyToDSL(undefined, TRANSFORM_FALLBACK.rotation, frameRate, false);\n }\n\n return convertIRRotationToDSL(rotation, frameRate);\n}\n\n/**\n * Merge per-axis rotation into the DSL's 3D vector track.\n *\n * Aligned channels retain their shared easing. Independent axes fall back to\n * a union-of-keyframe-times projection.\n */\nfunction convertIRRotationToDSL(\n rotation: NonNullable<NonNullable<IRLayer['transform']>['rotation']>,\n frameRate: number,\n): AnimatedProperty {\n const rotationChannels = [rotation.x, rotation.y, rotation.z] as const;\n const animatedChannels = rotationChannels.filter(\n (channel): channel is ScalarKeyframedProperty => channel?.type === 'keyframed',\n );\n\n if (animatedChannels.length === 0) {\n return {\n a: false,\n value: [readNumberStatic(rotation.x, 0), readNumberStatic(rotation.y, 0), readNumberStatic(rotation.z, 0)],\n };\n }\n\n if (isRotationChannelSetAligned(animatedChannels)) {\n const templateChannel = animatedChannels[0];\n const keyframes: IRKeyframe<IRVec3>[] = templateChannel.keyframes.map((keyframe, index) => {\n const hasEndValue = animatedChannels.some(channel => channel.keyframes[index]?.endValue != null);\n\n return {\n frame: keyframe.frame,\n value: readAlignedRotationValue(rotation, index),\n ...(hasEndValue && { endValue: readAlignedRotationEndValue(rotation, index) }),\n ...(keyframe.hold != null && { hold: keyframe.hold }),\n ...(keyframe.inTangent != null && { inTangent: keyframe.inTangent }),\n ...(keyframe.outTangent != null && { outTangent: keyframe.outTangent }),\n };\n });\n\n return convertIRKeyframesToDSLProperty(keyframes, TRANSFORM_FALLBACK.rotation, frameRate, false);\n }\n\n const keyframeFrameSet = new Set<number>();\n\n for (const channel of rotationChannels) {\n if (channel?.type === 'keyframed' && channel.keyframes != null) {\n for (const keyframe of channel.keyframes) {\n keyframeFrameSet.add(keyframe.frame);\n }\n }\n }\n\n // Keep Array.from: loose SWC array-spread lowering does not expand Set in dist.\n const sortedFrames = Array.from(keyframeFrameSet).sort((leftFrame, rightFrame) => leftFrame - rightFrame);\n const keyframes: IRKeyframe<IRVec3>[] = sortedFrames.map(frame => ({\n frame,\n value: [\n readNumberAtFrame(rotation.x, frame, 0),\n readNumberAtFrame(rotation.y, frame, 0),\n readNumberAtFrame(rotation.z, frame, 0),\n ],\n }));\n\n return convertIRKeyframesToDSLProperty(keyframes, TRANSFORM_FALLBACK.rotation, frameRate, false);\n}\n\ntype ScalarKeyframedProperty = Extract<IRAnimatedProperty<number>, { type: 'keyframed' }>;\n\nfunction isRotationChannelSetAligned(rotationChannels: ScalarKeyframedProperty[]): boolean {\n const templateChannel = rotationChannels[0];\n\n return rotationChannels.every(\n channel =>\n channel.keyframes.length === templateChannel.keyframes.length &&\n channel.keyframes.every((keyframe, index) =>\n isRotationKeyframeAligned(keyframe, templateChannel.keyframes[index]),\n ),\n );\n}\n\nfunction isRotationKeyframeAligned(left: IRKeyframe<number>, right: IRKeyframe<number>): boolean {\n return (\n Math.abs(left.frame - right.frame) < EPSILON &&\n left.hold === right.hold &&\n isBezierHandleEqual(left.inTangent, right.inTangent) &&\n isBezierHandleEqual(left.outTangent, right.outTangent)\n );\n}\n\nfunction isBezierHandleEqual(left: IRKeyframe<number>['inTangent'], right: IRKeyframe<number>['inTangent']): boolean {\n if (left == null || right == null) {\n return left === right;\n }\n\n return Math.abs(left.x - right.x) < EPSILON && Math.abs(left.y - right.y) < EPSILON;\n}\n\nfunction readAlignedRotationValue(\n rotation: NonNullable<NonNullable<IRLayer['transform']>['rotation']>,\n index: number,\n): IRVec3 {\n return [\n readAlignedAxisValue(rotation.x, index),\n readAlignedAxisValue(rotation.y, index),\n readAlignedAxisValue(rotation.z, index),\n ];\n}\n\nfunction readAlignedRotationEndValue(\n rotation: NonNullable<NonNullable<IRLayer['transform']>['rotation']>,\n index: number,\n): IRVec3 {\n return [\n readAlignedAxisEndValue(rotation.x, index),\n readAlignedAxisEndValue(rotation.y, index),\n readAlignedAxisEndValue(rotation.z, index),\n ];\n}\n\nfunction readAlignedAxisValue(channel: IRAnimatedProperty<number> | undefined, index: number): number {\n return channel?.type === 'keyframed' ? (channel.keyframes[index]?.value ?? 0) : (channel?.value ?? 0);\n}\n\nfunction readAlignedAxisEndValue(channel: IRAnimatedProperty<number> | undefined, index: number): number {\n if (channel?.type !== 'keyframed') {\n return channel?.value ?? 0;\n }\n\n return (\n channel.keyframes[index]?.endValue ?? channel.keyframes[index + 1]?.value ?? channel.keyframes[index]?.value ?? 0\n );\n}\n\nfunction convertIRVec3PropertyToDSL(\n property: IRAnimatedProperty<IRVec3> | undefined,\n fallback: IRVec3,\n frameRate: number,\n includeSpatialTangents: boolean,\n): AnimatedProperty {\n if (property?.type === 'keyframed') {\n return convertIRKeyframesToDSLProperty(property.keyframes, fallback, frameRate, includeSpatialTangents);\n }\n\n return { a: false, value: property?.value != null ? [...property.value] : [...fallback] };\n}\n\nfunction convertIRNumberPropertyToDSL(\n property: IRAnimatedProperty<number> | undefined,\n fallback: number,\n frameRate: number,\n): AnimatedProperty {\n if (property?.type === 'keyframed') {\n return convertIRKeyframesToDSLProperty(property.keyframes, fallback, frameRate, false);\n }\n\n return { a: false, value: property?.value ?? fallback };\n}\n\nfunction convertIRKeyframesToDSLProperty<T extends IRPropertyValue>(\n keyframes: IRKeyframe<T>[],\n fallback: T,\n frameRate: number,\n includeSpatialTangents: boolean,\n): AnimatedProperty {\n if (keyframes.length < 2) {\n return {\n a: false,\n value: keyframes[0]?.value ?? fallback,\n };\n }\n\n const animation: AnimationCurve[] = [];\n\n for (let keyframeIndex = 0; keyframeIndex < keyframes.length - 1; keyframeIndex++) {\n const currentKeyframe = keyframes[keyframeIndex];\n const nextKeyframe = keyframes[keyframeIndex + 1];\n const endValue = currentKeyframe.endValue ?? nextKeyframe.value;\n const easing: [number, number, number, number] = [\n currentKeyframe.outTangent?.x ?? LINEAR_EASING[0],\n currentKeyframe.outTangent?.y ?? LINEAR_EASING[1],\n nextKeyframe.inTangent?.x ?? LINEAR_EASING[2],\n nextKeyframe.inTangent?.y ?? LINEAR_EASING[3],\n ];\n\n animation.push({\n t: [currentKeyframe.frame / frameRate, nextKeyframe.frame / frameRate],\n start: convertIRPropertyValueToArray(currentKeyframe.value),\n end: convertIRPropertyValueToArray(currentKeyframe.hold === true ? currentKeyframe.value : endValue),\n easing,\n ...(includeSpatialTangents &&\n currentKeyframe.spatialOut != null && {\n out: convertIRSpatialTangentToDSL(currentKeyframe.spatialOut),\n }),\n ...(includeSpatialTangents &&\n nextKeyframe.spatialIn != null && {\n in: convertIRSpatialTangentToDSL(nextKeyframe.spatialIn),\n }),\n });\n }\n\n return { a: true, animation };\n}\n\nfunction convertIRSpatialTangentToDSL(value: readonly number[]): [number, number, number] {\n return [value[0] ?? 0, value[1] ?? 0, value[2] ?? 0];\n}\n\nfunction convertIRPropertyValueToArray(value: IRPropertyValue): number[] {\n return Array.isArray(value) ? [...value] : [value];\n}\n\nfunction readNumberStatic(property: IRAnimatedProperty<number> | undefined, fallback: number): number {\n if (property == null || property.type === 'keyframed') {\n return fallback;\n }\n\n return property.value ?? fallback;\n}\n\nfunction readNumberAtFrame(property: IRAnimatedProperty<number> | undefined, frame: number, fallback: number): number {\n if (property == null) {\n return fallback;\n }\n\n if (property.type === 'static') {\n return property.value ?? fallback;\n }\n\n const keyframe = property.keyframes?.find(candidate => Math.abs(candidate.frame - frame) < EPSILON);\n\n return keyframe?.value ?? fallback;\n}\n\nfunction collectDiagnostics(\n layer: IRLayer,\n layerId: string,\n layerPath: string,\n diagnostics: ConversionDiagnostic[],\n): void {\n const preservedFields: string[] = [];\n const unsupportedFeatures: string[] = [];\n\n collectPreservedField(preservedFields, layer.visible === false ? layer.visible : undefined, 'visible');\n collectPreservedField(\n preservedFields,\n layer.endBehavior != null && layer.endBehavior !== 'destroy' ? layer.endBehavior : undefined,\n 'endBehavior',\n );\n collectPreservedField(preservedFields, layer.blendMode, 'blendMode');\n collectPreservedField(preservedFields, layer.mask, 'mask');\n collectPreservedField(preservedFields, layer.matte, 'matte');\n collectPreservedField(\n preservedFields,\n layer.localBounds != null && layer.localBounds.x !== 0 ? layer.localBounds.x : undefined,\n 'localBounds.x',\n );\n collectPreservedField(\n preservedFields,\n layer.localBounds != null && layer.localBounds.y !== 0 ? layer.localBounds.y : undefined,\n 'localBounds.y',\n );\n collectPreservedField(preservedFields, layer.type === 'shape' ? layer.content?.shapes : undefined, 'shapes');\n collectPreservedField(\n preservedFields,\n layer.type === 'solid' ? layer.content.color : undefined,\n 'content.color',\n );\n if (layer.type === 'particle') {\n collectPreservedField(\n preservedFields,\n isDSLCompatibleParticleExpression(layer.content.startLifetime)\n ? undefined\n : layer.content.startLifetime,\n 'content.startLifetime',\n );\n collectPreservedField(\n preservedFields,\n isDSLCompatibleParticleExpression(layer.content.emission.rateOverTime)\n ? undefined\n : layer.content.emission.rateOverTime,\n 'content.emission.rateOverTime',\n );\n }\n\n if (layer.type === 'shape') {\n unsupportedFeatures.push('shape');\n }\n if (layer.type === 'solid') {\n unsupportedFeatures.push('solid');\n }\n if (layer.type === 'precomp') {\n unsupportedFeatures.push(layer.type);\n }\n if (layer.mask != null || layer.matte != null) {\n unsupportedFeatures.push('mask');\n }\n\n const uniquePreservedFields = Array.from(new Set(preservedFields));\n const uniqueUnsupportedFeatures = Array.from(new Set(unsupportedFeatures));\n\n if (uniqueUnsupportedFeatures.length > 0) {\n diagnostics.push({\n code: 'LAYER_HAS_UNSUPPORTED_FEATURES',\n severity: 'warning',\n action: 'unsupported',\n path: layerPath,\n sourceId: layerId,\n feature: uniqueUnsupportedFeatures.join(','),\n message: `Layer contains features outside the editable DSL surface: ${uniqueUnsupportedFeatures.join(', ')}`,\n });\n }\n\n if (uniquePreservedFields.length > 0) {\n diagnostics.push({\n code: 'LAYER_FIELDS_PRESERVED_IN_BASE_IR',\n severity: 'info',\n action: 'normalized',\n path: layerPath,\n sourceId: layerId,\n feature: uniquePreservedFields.join(','),\n message: `Fields preserved in baseline scene: ${uniquePreservedFields.join(', ')}`,\n });\n }\n}\n\nfunction collectPreservedField(preservedFields: string[], value: unknown, fieldName: string): void {\n if (value == null) {\n return;\n }\n\n if (Array.isArray(value) && value.length === 0) {\n return;\n }\n\n preservedFields.push(fieldName);\n}\n","import type { IRComposition, IRScene, IRLayer } from '@vvfx/animation-ir';\nimport { getIRSceneEntryComposition, type ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport type { Layer } from '../dsl/schema';\nimport type {\n IRToDSLExpandedLayerSource, IRToDSLLayerMapping, IRToDSLResult,\n} from './types';\n\ntype ConvertIRSceneEntryToDSL = (scene: IRScene) => IRToDSLResult;\n\ninterface PrecompExpansionContext {\n irScene: IRScene;\n compositionById: ReadonlyMap<string, IRComposition>;\n layerMapping: IRToDSLLayerMapping;\n diagnostics: ConversionDiagnostic[];\n visitedCompositionIdSet: Set<string>;\n convertIRSceneEntryToDSL: ConvertIRSceneEntryToDSL;\n}\n\n/** Expand referenced IR Compositions into the editable DSL tree. */\nexport function expandDSLPrecompositions(\n dslResult: IRToDSLResult,\n convertIRSceneEntryToDSL: ConvertIRSceneEntryToDSL,\n): void {\n const irScene = dslResult.preservedData.baselineScene;\n const context: PrecompExpansionContext = {\n irScene,\n compositionById: new Map(irScene.compositions.map(composition => [composition.id, composition] as const)),\n layerMapping: dslResult.preservedData.layerMapping,\n diagnostics: dslResult.diagnostics,\n visitedCompositionIdSet: new Set([irScene.entryCompositionId]),\n convertIRSceneEntryToDSL,\n };\n\n expandPrecompLayerTree(dslResult.dsl.layers, getIRSceneEntryComposition(irScene), context);\n}\n\nfunction expandPrecompLayerTree(\n layers: Layer[],\n sourceComposition: IRComposition,\n context: PrecompExpansionContext,\n): void {\n const layerById = new Map(sourceComposition.layers.map(layer => [layer.id, layer] as const));\n\n for (const layer of layers) {\n const referencedComposition = resolveReferencedComposition(layer.id, context.layerMapping, layerById, context);\n const children = layer.children ?? [];\n\n if (referencedComposition != null && children.length === 0) {\n expandPrecompChildren(layer, referencedComposition, context);\n\n continue;\n }\n\n if (children.length > 0) {\n expandPrecompLayerTree(children, sourceComposition, context);\n }\n }\n}\n\nfunction expandPrecompChildren(\n parentLayer: Layer,\n referencedComposition: IRComposition,\n context: PrecompExpansionContext,\n): void {\n if (context.visitedCompositionIdSet.has(referencedComposition.id)) {\n context.diagnostics.push({\n code: 'PRECOMP_EXPAND_CYCLE_SKIPPED',\n severity: 'warning',\n action: 'unsupported',\n path: '$.layers',\n sourceId: parentLayer.id,\n feature: 'precomp-cycle',\n message: `Precomp '${referencedComposition.id}' was not expanded because it would create a cycle.`,\n });\n\n return;\n }\n\n context.visitedCompositionIdSet.add(referencedComposition.id);\n\n try {\n const childScene = { ...context.irScene, entryCompositionId: referencedComposition.id };\n const childResult = context.convertIRSceneEntryToDSL(childScene);\n const prefix = `${parentLayer.id}__precomp_${sanitizeIdPart(referencedComposition.id)}__`;\n const children = cloneExpandedLayers(childResult.dsl.layers, {\n prefix,\n parentLayerId: parentLayer.id,\n irCompositionId: referencedComposition.id,\n childLayerMapping: childResult.preservedData.layerMapping,\n targetLayerMapping: context.layerMapping,\n });\n\n context.diagnostics.push(...childResult.diagnostics);\n parentLayer.children ??= [];\n parentLayer.children.push(...children);\n expandPrecompLayerTree(children, referencedComposition, context);\n } finally {\n context.visitedCompositionIdSet.delete(referencedComposition.id);\n }\n}\n\ninterface CloneExpandedLayersOptions {\n prefix: string;\n parentLayerId: string;\n irCompositionId: string;\n childLayerMapping: IRToDSLLayerMapping;\n targetLayerMapping: IRToDSLLayerMapping;\n}\n\nfunction cloneExpandedLayers(layers: Layer[], options: CloneExpandedLayersOptions): Layer[] {\n const expandedLayerIdBySourceId = buildExpandedLayerIdBySourceId(layers, options.prefix);\n\n const cloneExpandedLayer = (layer: Layer, fallbackParentId: string): Layer => {\n const clonedLayer = structuredClone(layer);\n const expandedLayerId = expandedLayerIdBySourceId.get(layer.id) ?? `${options.prefix}${layer.id}`;\n\n clonedLayer.id = expandedLayerId;\n clonedLayer.parent = layer.parent != null\n ? (expandedLayerIdBySourceId.get(layer.parent) ?? fallbackParentId)\n : fallbackParentId;\n clonedLayer.children = (layer.children ?? []).map(childLayer => cloneExpandedLayer(childLayer, expandedLayerId));\n\n registerExpandedLayer(layer.id, clonedLayer, options);\n\n return clonedLayer;\n };\n\n return layers.map(layer => cloneExpandedLayer(layer, options.parentLayerId));\n}\n\nfunction buildExpandedLayerIdBySourceId(\n layers: Layer[],\n prefix: string,\n expandedLayerIdBySourceId = new Map<string, string>(),\n): Map<string, string> {\n for (const layer of layers) {\n expandedLayerIdBySourceId.set(layer.id, `${prefix}${layer.id}`);\n buildExpandedLayerIdBySourceId(layer.children ?? [], prefix, expandedLayerIdBySourceId);\n }\n\n return expandedLayerIdBySourceId;\n}\n\nfunction registerExpandedLayer(\n sourceLayerId: string,\n expandedLayer: Layer,\n options: CloneExpandedLayersOptions,\n): void {\n const childMapping = options.childLayerMapping.layers[sourceLayerId];\n\n if (childMapping == null) {\n return;\n }\n\n const expandedSource: IRToDSLExpandedLayerSource = {\n irCompositionId: options.irCompositionId,\n parentLayerId: options.parentLayerId,\n baselineTransform: {\n position: structuredClone(expandedLayer.position),\n scale: structuredClone(expandedLayer.scale),\n rotation: structuredClone(expandedLayer.rotation),\n anchor: structuredClone(expandedLayer.anchor),\n opacity: structuredClone(expandedLayer.opacity),\n },\n baselineLayer: {\n name: expandedLayer.name,\n type: expandedLayer.type,\n width: expandedLayer.width,\n height: expandedLayer.height,\n description: structuredClone(expandedLayer.description),\n parent: expandedLayer.parent,\n timeRange: structuredClone(expandedLayer.time_range),\n ...(expandedLayer.text != null && { text: structuredClone(expandedLayer.text) }),\n ...(expandedLayer.asset != null && { asset: structuredClone(expandedLayer.asset) }),\n ...(expandedLayer.particle != null && { particle: structuredClone(expandedLayer.particle) }),\n },\n };\n\n options.targetLayerMapping.layers[expandedLayer.id] = {\n irCompositionId: options.irCompositionId,\n irLayerId: childMapping.irLayerId,\n expandedSource,\n };\n}\n\nfunction resolveReferencedComposition(\n dslLayerId: string,\n layerMapping: IRToDSLLayerMapping,\n layerById: ReadonlyMap<string, IRLayer>,\n context: PrecompExpansionContext,\n): IRComposition | undefined {\n const mapping = layerMapping.layers[dslLayerId];\n const sourceLayer = mapping != null ? layerById.get(mapping.irLayerId) : undefined;\n\n return sourceLayer?.type === 'precomp'\n ? context.compositionById.get(sourceLayer.content.compositionId)\n : undefined;\n}\n\nfunction sanitizeIdPart(value: string): string {\n return value.replace(/[^a-zA-Z0-9_-]/g, '_');\n}\n","import { assertIRScene, type IRScene } from '@vvfx/animation-ir';\nimport { getIRSceneEntryComposition } from '@vvfx/animation-ir/adapter';\nimport { toJSONPath } from '../common/utils';\nimport { DSLValidationError, validateDSL } from '../dsl/validator';\nimport { assembleDSLResult } from './assemble';\nimport { convertIRLayersToDSL } from './convert-layers';\nimport { expandDSLPrecompositions } from './expand-precompositions';\nimport type { IRToDSLResult } from './types';\n\n/** Convert Animation IR to editable DSL and retain source-neutral data for the reverse conversion. */\nexport function convertIRToDSL(baselineScene: IRScene): IRToDSLResult {\n assertIRScene(baselineScene);\n const baselineSnapshot = structuredClone(baselineScene);\n const result = convertIRSceneEntryToDSL(baselineSnapshot);\n\n expandDSLPrecompositions(result, convertIRSceneEntryToDSL);\n validateConvertedDSL(result);\n\n return result;\n}\n\nfunction validateConvertedDSL(result: IRToDSLResult): void {\n const validationResult = validateDSL(result.dsl);\n\n if (validationResult.result === 'fail') {\n throw DSLValidationError.fromValidationResult(validationResult);\n }\n result.diagnostics.push(...validationResult.warnings.map(warning => ({\n code: warning.code,\n severity: 'warning' as const,\n action: 'unsupported' as const,\n path: toJSONPath(warning.path),\n ...(warning.layerId != null && { sourceId: warning.layerId }),\n message: warning.message,\n })));\n}\n\nfunction convertIRSceneEntryToDSL(baselineScene: IRScene): IRToDSLResult {\n const baselineComposition = getIRSceneEntryComposition(baselineScene);\n const convertedLayers = convertIRLayersToDSL(\n baselineComposition,\n baselineScene.assets,\n baselineComposition.frameRate,\n );\n\n return assembleDSLResult(\n baselineScene,\n baselineComposition,\n convertedLayers.dslLayerByIRId,\n convertedLayers.layerMapping,\n convertedLayers.diagnostics,\n );\n}\n","import type {\n IRAnimatedProperty,\n IRKeyframe,\n IRRotation,\n IRSpatialTangent,\n IRStaticProperty,\n IRVec3,\n} from '@vvfx/animation-ir';\nimport { resolveFiniteNumber, secondsToFrames } from '../common/utils';\nimport type { AnimatedProperty, AnimationCurve } from '../dsl/schema';\n\nexport function convertDSLPropertyToIRVec3(\n property: AnimatedProperty | undefined,\n frameRate: number,\n fallback: IRVec3,\n includeSpatialTangents = false,\n): IRAnimatedProperty<IRVec3> {\n if (property?.a === true) {\n if (property.animation.length > 0) {\n return {\n type: 'keyframed',\n keyframes: convertDSLCurvesToIRKeyframes(\n property.animation,\n frameRate,\n value => convertDSLValueToIRVec3(value, fallback),\n includeSpatialTangents,\n ),\n };\n }\n\n return { type: 'static', value: [...fallback] };\n }\n\n return {\n type: 'static',\n value: convertDSLValueToIRVec3(property?.value ?? fallback, fallback),\n };\n}\n\nexport function convertDSLPropertyToStaticIRVec3(\n property: AnimatedProperty | undefined,\n fallback: IRVec3,\n): IRStaticProperty<IRVec3> {\n if (property?.a !== true) {\n return { type: 'static', value: convertDSLValueToIRVec3(property?.value ?? fallback, fallback) };\n }\n\n return {\n type: 'static',\n value: convertDSLValueToIRVec3(property.animation[0]?.start ?? fallback, fallback),\n };\n}\n\nexport function convertDSLPropertyToIRNumber(\n property: AnimatedProperty | undefined,\n frameRate: number,\n fallback: number,\n): IRAnimatedProperty<number> {\n if (property?.a === true) {\n if (property.animation.length > 0) {\n return {\n type: 'keyframed',\n keyframes: convertDSLCurvesToIRKeyframes(\n property.animation,\n frameRate,\n value => convertDSLValueToIRNumber(value, fallback),\n false,\n ),\n };\n }\n\n return { type: 'static', value: fallback };\n }\n\n return {\n type: 'static',\n value: convertDSLValueToIRNumber(property?.value ?? fallback, fallback),\n };\n}\n\nexport function convertDSLPropertyToIRRotation(\n property: AnimatedProperty | undefined,\n frameRate: number,\n fallback: IRVec3,\n): IRRotation {\n const rotationVector = convertDSLPropertyToIRVec3(property, frameRate, fallback, false);\n\n return {\n x: projectVectorAxis(rotationVector, 0),\n y: projectVectorAxis(rotationVector, 1),\n z: projectVectorAxis(rotationVector, 2),\n };\n}\n\nfunction projectVectorAxis(property: IRAnimatedProperty<IRVec3>, axisIndex: number): IRAnimatedProperty<number> {\n if (property.type === 'static') {\n return { type: 'static', value: property.value[axisIndex] ?? 0 };\n }\n\n return {\n type: 'keyframed',\n keyframes: property.keyframes.map((keyframe): IRKeyframe<number> => ({\n frame: keyframe.frame,\n value: keyframe.value[axisIndex] ?? 0,\n ...(keyframe.endValue != null && { endValue: keyframe.endValue[axisIndex] ?? 0 }),\n ...(keyframe.hold != null && { hold: keyframe.hold }),\n ...(keyframe.inTangent != null && { inTangent: keyframe.inTangent }),\n ...(keyframe.outTangent != null && { outTangent: keyframe.outTangent }),\n })),\n };\n}\n\nfunction convertDSLCurvesToIRKeyframes<T extends number | IRVec3>(\n animationCurves: AnimationCurve[],\n frameRate: number,\n convertValue: (value: number[]) => T,\n includeSpatialTangents: boolean,\n): IRKeyframe<T>[] {\n const keyframes: IRKeyframe<T>[] = [];\n\n for (const curve of animationCurves) {\n const startValue = convertValue(curve.start);\n const endValue = convertValue(curve.end);\n const spatialOut = includeSpatialTangents ? convertDSLSpatialTangentToIR(curve.out) : undefined;\n const spatialIn = includeSpatialTangents ? convertDSLSpatialTangentToIR(curve.in) : undefined;\n const startKeyframe: IRKeyframe<T> = {\n frame: secondsToFrames(curve.t[0], frameRate),\n value: startValue,\n endValue,\n outTangent: { x: curve.easing[0], y: curve.easing[1] },\n ...(spatialOut != null && { spatialOut }),\n };\n const endKeyframe: IRKeyframe<T> = {\n frame: secondsToFrames(curve.t[1], frameRate),\n value: endValue,\n inTangent: { x: curve.easing[2], y: curve.easing[3] },\n ...(spatialIn != null && { spatialIn }),\n };\n\n appendOrMergeKeyframe(keyframes, startKeyframe);\n appendOrMergeKeyframe(keyframes, endKeyframe);\n }\n\n return normalizeKeyframeOrder(keyframes);\n}\n\nfunction normalizeKeyframeOrder<T extends number | IRVec3>(keyframes: IRKeyframe<T>[]): IRKeyframe<T>[] {\n const sortedKeyframes = [...keyframes].sort((left, right) => left.frame - right.frame);\n const normalizedKeyframes: IRKeyframe<T>[] = [];\n\n for (const keyframe of sortedKeyframes) {\n appendOrMergeKeyframe(normalizedKeyframes, keyframe);\n }\n\n return normalizedKeyframes;\n}\n\nfunction convertDSLSpatialTangentToIR(value: number[] | undefined): IRSpatialTangent | undefined {\n if (value?.length === 2) {\n return [value[0], value[1]];\n }\n if (value?.length === 3) {\n return [value[0], value[1], value[2]];\n }\n\n return undefined;\n}\n\nfunction appendOrMergeKeyframe<T extends number | IRVec3>(keyframes: IRKeyframe<T>[], keyframe: IRKeyframe<T>): void {\n const previousKeyframe = keyframes[keyframes.length - 1];\n\n if (previousKeyframe == null || previousKeyframe.frame !== keyframe.frame) {\n keyframes.push(keyframe);\n\n return;\n }\n\n previousKeyframe.value = keyframe.value;\n if (keyframe.endValue != null) {\n previousKeyframe.endValue = keyframe.endValue;\n }\n if (keyframe.inTangent != null) {\n previousKeyframe.inTangent = keyframe.inTangent;\n }\n if (keyframe.outTangent != null) {\n previousKeyframe.outTangent = keyframe.outTangent;\n }\n if (keyframe.spatialIn != null) {\n previousKeyframe.spatialIn = keyframe.spatialIn;\n }\n if (keyframe.spatialOut != null) {\n previousKeyframe.spatialOut = keyframe.spatialOut;\n }\n}\n\nfunction convertDSLValueToIRVec3(value: number | number[], fallback: IRVec3): IRVec3 {\n if (Array.isArray(value)) {\n return [\n resolveFiniteNumber(value[0], fallback[0]),\n resolveFiniteNumber(value[1], fallback[1]),\n resolveFiniteNumber(value[2], fallback[2]),\n ];\n }\n\n return [resolveFiniteNumber(value, fallback[0]), fallback[1], fallback[2]];\n}\n\nfunction convertDSLValueToIRNumber(value: number | number[], fallback: number): number {\n return resolveFiniteNumber(Array.isArray(value) ? value[0] : value, fallback);\n}\n","import type { IRAsset, IRFontAsset, IRTextContent } from '@vvfx/animation-ir';\nimport { createId } from '../common/utils';\nimport type { Asset } from '../dsl/schema';\n\nconst DEFAULT_FONT_FAMILY = 'sans-serif';\n\ninterface EstimatedTextBounds {\n width: number;\n height: number;\n}\n\nexport function normalizeDSLFontFamily(family: string | undefined): string {\n const normalizedFamily = family?.trim();\n\n return normalizedFamily != null && normalizedFamily !== '' ? normalizedFamily : DEFAULT_FONT_FAMILY;\n}\n\nexport function ensureSystemFontAsset(\n assets: IRAsset[],\n family: string,\n style: IRFontAsset['style'],\n weight: number,\n): string {\n const normalizedFamily = normalizeDSLFontFamily(family);\n const existingAsset = assets.find(\n (asset): asset is IRFontAsset => asset.type === 'font' && asset.family === normalizedFamily &&\n asset.style === style && asset.weight === weight && asset.source.kind === 'system',\n );\n\n if (existingAsset != null) {\n return existingAsset.id;\n }\n const assetId = createId();\n\n assets.push({\n id: assetId,\n type: 'font',\n family: normalizedFamily,\n style,\n weight,\n source: { kind: 'system' },\n });\n\n return assetId;\n}\n\nexport function estimateTextBounds(text: IRTextContent): EstimatedTextBounds {\n const width = text.text.length * text.fontSize * 0.6 +\n text.letterSpacing * Math.max(text.text.length - 1, 0);\n\n return {\n width: Math.max(width, 1),\n height: Math.max(text.fontSize * 1.2, 1),\n };\n}\n\nexport function resolveAssetUrl(asset: Asset): string {\n if (asset.source === 'user') {\n return asset.url;\n }\n if (asset.url != null && asset.url !== '') {\n return asset.url;\n }\n\n return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(asset.svg)}`;\n}\n","import type { AnimatedProperty, AnimationCurve, Asset, Layer, TextProperties } from '../../dsl/schema';\nimport { isHexEqual, isNumberArrayEqual } from '../../common/utils';\n\nconst TEXT_PROPERTY_FIELDS = ['content', 'font', 'size', 'color', 'align', 'line_height', 'letter_spacing'] as const;\n\ninterface TextPropertyChange {\n field: (typeof TEXT_PROPERTY_FIELDS)[number];\n oldValue: TextProperties[(typeof TEXT_PROPERTY_FIELDS)[number]];\n newValue: TextProperties[(typeof TEXT_PROPERTY_FIELDS)[number]];\n}\n\n/**\n * Structural, epsilon-tolerant equality between two editable-DSL properties.\n *\n * Used for preserved-data change detection so writeback replaces only edited\n * fields in the IR snapshot.\n */\nexport function isAnimatedPropertyEqual(\n leftProperty: AnimatedProperty | undefined,\n rightProperty: AnimatedProperty | undefined,\n): boolean {\n if (leftProperty === undefined || rightProperty === undefined) {\n return leftProperty === rightProperty;\n }\n if (leftProperty.a !== rightProperty.a) {\n return false;\n }\n\n if (!leftProperty.a) {\n return (\n !rightProperty.a && isNumberArrayEqual(toNumberArray(leftProperty.value), toNumberArray(rightProperty.value))\n );\n }\n\n if (!rightProperty.a) {\n return false;\n }\n\n if (leftProperty.animation.length !== rightProperty.animation.length) {\n return false;\n }\n\n return leftProperty.animation.every((curve, curveIndex) =>\n isAnimationCurveEqual(curve, rightProperty.animation[curveIndex]),\n );\n}\n\nexport function collectTextPropertyChanges(\n baselineText: TextProperties,\n editedText: TextProperties,\n): TextPropertyChange[] {\n const changes: TextPropertyChange[] = [];\n\n for (const field of TEXT_PROPERTY_FIELDS) {\n const oldValue = baselineText[field];\n const newValue = editedText[field];\n const isEqual =\n field === 'color' ? isHexEqual(oldValue as string, newValue as string) : Object.is(oldValue, newValue);\n\n if (!isEqual) {\n changes.push({ field, oldValue, newValue });\n }\n }\n\n return changes;\n}\n\nexport function readTextProperties(layer: Layer): TextProperties | undefined {\n return layer.type === 'text' && layer.text != null ? layer.text : undefined;\n}\n\nexport function isAssetEqual(leftAsset: Asset, rightAsset: Asset): boolean {\n if (leftAsset.source !== rightAsset.source) {\n return false;\n }\n if (leftAsset.source === 'user' && rightAsset.source === 'user') {\n return leftAsset.url === rightAsset.url;\n }\n\n return (\n leftAsset.source === 'llm_svg' &&\n rightAsset.source === 'llm_svg' &&\n leftAsset.url === rightAsset.url &&\n leftAsset.svg === rightAsset.svg &&\n leftAsset.prompt === rightAsset.prompt\n );\n}\n\nfunction isAnimationCurveEqual(leftCurve: AnimationCurve, rightCurve: AnimationCurve): boolean {\n return (\n isNumberArrayEqual(leftCurve.t, rightCurve.t) &&\n isNumberArrayEqual(leftCurve.start, rightCurve.start) &&\n isNumberArrayEqual(leftCurve.end, rightCurve.end) &&\n isNumberArrayEqual(leftCurve.easing, rightCurve.easing) &&\n isNumberArrayEqual(toNumberArray(leftCurve.out), toNumberArray(rightCurve.out)) &&\n isNumberArrayEqual(toNumberArray(leftCurve.in), toNumberArray(rightCurve.in))\n );\n}\n\nfunction toNumberArray(value: number | number[] | undefined): number[] {\n if (value == null) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n","import type { IRParticleBurst, IRParticleContent } from '@vvfx/animation-ir';\nimport type { ParticleBurst, ParticleProperties } from '../dsl/schema';\nimport { mapDSLParticleExpressionToIR } from '../common/particle-expression';\nimport { secondsToFrames } from '../common/utils';\n\nexport function convertDSLParticleToIRContent(\n particle: ParticleProperties,\n frameRate: number,\n): IRParticleContent {\n return {\n maxParticles: particle.options.maxCount,\n startLifetime: mapDSLParticleExpressionToIR(particle.options.startLifetime),\n emission: {\n rateOverTime: mapDSLParticleExpressionToIR(particle.emission.rateOverTime),\n ...(particle.emission.bursts != null && {\n bursts: mapDSLParticleBurstsToIR(particle.emission.bursts, frameRate),\n }),\n },\n };\n}\n\nexport function mapDSLParticleBurstsToIR(bursts: ParticleBurst[], frameRate: number): IRParticleBurst[] {\n return bursts.map(burst => ({\n frameOffset: secondsToFrames(burst.time, frameRate),\n count: burst.count,\n cycleCount: burst.cycles === 0 ? 'infinite' : (burst.cycles ?? 1),\n repeatIntervalFrames: secondsToFrames(burst.interval ?? 0, frameRate),\n }));\n}\n","import type { IRLayer } from '@vvfx/animation-ir';\nimport type { Layer, ParticleBurst } from '../../dsl/schema';\nimport { isDSLNumberExpressionEqual, mapDSLParticleExpressionToIR } from '../../common/particle-expression';\nimport { mapDSLParticleBurstsToIR } from '../convert-particle';\nimport type { DSLToIRChangeReporter } from '../types';\n\nexport function updateIRParticle(\n irLayer: IRLayer,\n editedLayer: Layer,\n baselineLayer: Layer,\n frameRate: number,\n reportChange: DSLToIRChangeReporter,\n): void {\n const editedParticle = editedLayer.particle;\n const baselineParticle = baselineLayer.particle;\n\n if (irLayer.type !== 'particle' || editedParticle == null || baselineParticle == null) {\n return;\n }\n\n if (editedParticle.options.maxCount !== baselineParticle.options.maxCount) {\n const previousValue = irLayer.content.maxParticles;\n\n irLayer.content.maxParticles = editedParticle.options.maxCount;\n reportChange({\n kind: 'layer',\n op: 'set',\n field: 'particle.options.maxCount',\n layerId: editedLayer.id,\n oldValue: previousValue,\n newValue: editedParticle.options.maxCount,\n });\n }\n if (!isDSLNumberExpressionEqual(\n editedParticle.options.startLifetime,\n baselineParticle.options.startLifetime,\n )) {\n const previousValue = irLayer.content.startLifetime;\n\n irLayer.content.startLifetime = mapDSLParticleExpressionToIR(\n editedParticle.options.startLifetime,\n );\n reportChange({\n kind: 'layer',\n op: 'set',\n field: 'particle.options.startLifetime',\n layerId: editedLayer.id,\n oldValue: previousValue,\n newValue: irLayer.content.startLifetime,\n });\n }\n if (!isDSLNumberExpressionEqual(\n editedParticle.emission.rateOverTime,\n baselineParticle.emission.rateOverTime,\n )) {\n const previousValue = irLayer.content.emission.rateOverTime;\n\n irLayer.content.emission.rateOverTime = mapDSLParticleExpressionToIR(\n editedParticle.emission.rateOverTime,\n );\n reportChange({\n kind: 'layer',\n op: 'set',\n field: 'particle.emission.rateOverTime',\n layerId: editedLayer.id,\n oldValue: previousValue,\n newValue: irLayer.content.emission.rateOverTime,\n });\n }\n if (!areParticleBurstsEqual(editedParticle.emission.bursts, baselineParticle.emission.bursts)) {\n const previousValue = irLayer.content.emission.bursts;\n const updatedBursts = editedParticle.emission.bursts == null\n ? undefined\n : mapDSLParticleBurstsToIR(editedParticle.emission.bursts, frameRate);\n\n if (updatedBursts == null) {\n delete irLayer.content.emission.bursts;\n } else {\n irLayer.content.emission.bursts = updatedBursts;\n }\n reportChange({\n kind: 'layer',\n op: updatedBursts == null ? 'delete' : 'set',\n field: 'particle.emission.bursts',\n layerId: editedLayer.id,\n oldValue: previousValue,\n newValue: updatedBursts,\n });\n }\n}\n\nfunction areParticleBurstsEqual(\n left: ParticleBurst[] | undefined,\n right: ParticleBurst[] | undefined,\n): boolean {\n if (left == null || right == null) {\n return left === right;\n }\n if (left.length !== right.length) {\n return false;\n }\n\n return left.every((burst, index) => {\n const other = right[index];\n\n return other != null && Object.is(burst.time, other.time) && Object.is(burst.count, other.count) &&\n Object.is(burst.cycles, other.cycles) && Object.is(burst.interval, other.interval);\n });\n}\n","import type {\n IRFontAsset, IRImageAsset, IRLayer, IRScene, IRTextContent,\n} from '@vvfx/animation-ir';\nimport { createIRResourceSource, getIRResourceSourceUrl } from '@vvfx/animation-ir/adapter';\nimport type { Layer, TextProperties } from '../../dsl/schema';\nimport { createId, hexToIRColor, isScalarEqual } from '../../common/utils';\nimport { TRANSFORM_FALLBACK, withPositionZ } from '../../common/transform';\nimport {\n convertDSLPropertyToIRNumber,\n convertDSLPropertyToIRRotation,\n convertDSLPropertyToIRVec3,\n convertDSLPropertyToStaticIRVec3,\n} from '../convert-property';\nimport {\n ensureSystemFontAsset, estimateTextBounds, normalizeDSLFontFamily, resolveAssetUrl,\n} from '../content-conversion';\nimport {\n collectTextPropertyChanges,\n isAnimatedPropertyEqual,\n isAssetEqual,\n readTextProperties,\n} from './compare-properties';\nimport { updateIRParticle } from './update-particle';\nimport type { DSLToIRChangeReporter, DSLToIRWarningReporter } from '../types';\n\nexport function updateIRLayer(\n irLayer: IRLayer,\n irScene: IRScene,\n editedLayer: Layer,\n baselineLayer: Layer,\n dslPath: string,\n frameRate: number,\n strict: boolean,\n reportWarning: DSLToIRWarningReporter,\n reportChange: DSLToIRChangeReporter,\n): void {\n if (editedLayer.name !== baselineLayer.name) {\n const previousName = irLayer.name;\n\n irLayer.name = editedLayer.name;\n reportChange({\n kind: 'layer',\n op: 'set',\n field: 'name',\n layerId: editedLayer.id,\n oldValue: previousName,\n newValue: editedLayer.name,\n });\n }\n\n if (editedLayer.type !== baselineLayer.type) {\n reportUnsupportedLayerEdit(\n strict,\n reportWarning,\n 'LAYER_TYPE_CHANGE_IGNORED',\n `type change on layer '${editedLayer.id}' ('${baselineLayer.type}' -> '${editedLayer.type}') is ignored.`,\n editedLayer.id,\n `${dslPath}.type`,\n );\n }\n\n if (\n editedLayer.description.self !== baselineLayer.description.self ||\n editedLayer.description.composite !== baselineLayer.description.composite\n ) {\n reportUnsupportedLayerEdit(\n strict,\n reportWarning,\n 'LAYER_DESCRIPTION_CHANGE_IGNORED',\n `description change on layer '${editedLayer.id}' is not represented in Animation IR and is ignored.`,\n editedLayer.id,\n `${dslPath}.description`,\n );\n }\n\n if ((editedLayer.parent ?? null) !== (baselineLayer.parent ?? null)) {\n reportUnsupportedLayerEdit(\n strict,\n reportWarning,\n 'PARENT_CHANGE_IGNORED',\n `parent change on layer '${editedLayer.id}' ` +\n `('${baselineLayer.parent}' -> '${editedLayer.parent}') is ignored in this mode.`,\n editedLayer.id,\n `${dslPath}.parent`,\n );\n }\n\n updateIRTransform(irLayer, editedLayer, baselineLayer, frameRate, reportChange);\n updateIRTiming(irLayer, editedLayer, baselineLayer, frameRate, reportChange);\n updateIRText(irLayer, irScene, editedLayer, baselineLayer, reportChange);\n updateIRParticle(irLayer, editedLayer, baselineLayer, frameRate, reportChange);\n updateIRLocalBounds(irLayer, editedLayer, reportChange);\n updateIRAsset(irLayer, irScene, editedLayer, baselineLayer, reportChange);\n}\n\nfunction updateIRLocalBounds(\n irLayer: IRLayer,\n editedLayer: Layer,\n reportChange: DSLToIRChangeReporter,\n): void {\n if (irLayer.type !== 'text' && irLayer.type !== 'image' && irLayer.type !== 'particle') {\n return;\n }\n const previousBounds = irLayer.localBounds;\n const estimatedBounds = irLayer.type === 'text' ? estimateTextBounds(irLayer.content) : undefined;\n const fallbackWidth = previousBounds?.width ?? estimatedBounds?.width ?? editedLayer.width;\n const fallbackHeight = previousBounds?.height ?? estimatedBounds?.height ?? editedLayer.height;\n const updatedBounds = {\n x: previousBounds?.x ?? 0,\n y: previousBounds?.y ?? 0,\n width: Number.isFinite(editedLayer.width) && editedLayer.width > 0 ? editedLayer.width : fallbackWidth,\n height: Number.isFinite(editedLayer.height) && editedLayer.height > 0 ? editedLayer.height : fallbackHeight,\n };\n\n if (\n previousBounds != null &&\n isScalarEqual(updatedBounds.x, previousBounds.x) &&\n isScalarEqual(updatedBounds.y, previousBounds.y) &&\n isScalarEqual(updatedBounds.width, previousBounds.width) &&\n isScalarEqual(updatedBounds.height, previousBounds.height)\n ) {\n return;\n }\n\n irLayer.localBounds = updatedBounds;\n reportChange({\n kind: 'layer',\n op: 'set',\n field: 'localBounds',\n layerId: editedLayer.id,\n oldValue: previousBounds,\n newValue: updatedBounds,\n });\n}\n\nfunction reportUnsupportedLayerEdit(\n strict: boolean,\n reportWarning: DSLToIRWarningReporter,\n code: string,\n message: string,\n layerId: string,\n path: string,\n): void {\n const formattedMessage = `[dsl-ir:preserved-data] ${message}`;\n\n if (strict) {\n throw new Error(formattedMessage);\n }\n reportWarning({ code, message: formattedMessage, path, layerId });\n}\n\nfunction updateIRTransform(\n irLayer: IRLayer,\n editedLayer: Layer,\n baselineLayer: Layer,\n frameRate: number,\n reportChange: DSLToIRChangeReporter,\n): void {\n // Create the transform lazily so no-op updates preserve the baseline shape.\n const ensureTransform = (): NonNullable<IRLayer['transform']> => (irLayer.transform ??= {});\n\n if (!isAnimatedPropertyEqual(withPositionZ(editedLayer.position, 0), withPositionZ(baselineLayer.position, 0))) {\n const sourcePosition = irLayer.transform?.position;\n const position = convertDSLPropertyToIRVec3(\n withPositionZ(editedLayer.position, 0),\n frameRate,\n TRANSFORM_FALLBACK.position,\n true,\n );\n\n if (sourcePosition?.type === 'static') {\n if (position.type === 'static') {\n position.value[2] = sourcePosition.value[2];\n } else {\n for (const keyframe of position.keyframes) {\n keyframe.value[2] = sourcePosition.value[2];\n if (keyframe.endValue != null) {\n keyframe.endValue[2] = sourcePosition.value[2];\n }\n }\n }\n }\n if (sourcePosition?.type === 'keyframed') {\n const depths = sourcePosition.keyframes.flatMap(keyframe =>\n [keyframe.value[2], (keyframe.endValue ?? keyframe.value)[2]],\n );\n const constantDepth = depths.every(depth => depth === depths[0]);\n\n if (position.type === 'static' && constantDepth) {\n position.value[2] = depths[0] ?? 0;\n } else if (position.type === 'keyframed') {\n for (const keyframe of position.keyframes) {\n const source = sourcePosition.keyframes.find(candidate => candidate.frame === keyframe.frame);\n\n if (source == null && !constantDepth) {\n throw new Error('[dsl-ir] Position timing edits on layers with animated source depth are unsupported.');\n }\n keyframe.value[2] = source?.value[2] ?? depths[0] ?? 0;\n if (keyframe.endValue != null) {\n keyframe.endValue[2] = (source?.endValue ?? source?.value)?.[2] ?? depths[0] ?? 0;\n }\n }\n } else {\n throw new Error('[dsl-ir] Replacing animated source depth with static position is unsupported.');\n }\n }\n ensureTransform().position = position;\n reportChange({\n kind: 'transform',\n op: 'set',\n field: 'position',\n layerId: editedLayer.id,\n oldValue: baselineLayer.position,\n newValue: editedLayer.position,\n });\n }\n\n if (editedLayer.rotation !== undefined && !isAnimatedPropertyEqual(editedLayer.rotation, baselineLayer.rotation)) {\n const transform = ensureTransform();\n\n transform.rotation = convertDSLPropertyToIRRotation(editedLayer.rotation, frameRate, TRANSFORM_FALLBACK.rotation);\n reportChange({\n kind: 'transform',\n op: 'set',\n field: 'rotation',\n layerId: editedLayer.id,\n oldValue: baselineLayer.rotation,\n newValue: editedLayer.rotation,\n });\n }\n\n if (editedLayer.scale !== undefined && !isAnimatedPropertyEqual(editedLayer.scale, baselineLayer.scale)) {\n ensureTransform().scale = convertDSLPropertyToIRVec3(editedLayer.scale, frameRate, TRANSFORM_FALLBACK.scale, false);\n reportChange({\n kind: 'transform',\n op: 'set',\n field: 'scale',\n layerId: editedLayer.id,\n oldValue: baselineLayer.scale,\n newValue: editedLayer.scale,\n });\n }\n\n if (editedLayer.anchor !== undefined && !isAnimatedPropertyEqual(editedLayer.anchor, baselineLayer.anchor)) {\n ensureTransform().anchor = convertDSLPropertyToStaticIRVec3(editedLayer.anchor, TRANSFORM_FALLBACK.anchor);\n reportChange({\n kind: 'transform',\n op: 'set',\n field: 'anchor',\n layerId: editedLayer.id,\n oldValue: baselineLayer.anchor,\n newValue: editedLayer.anchor,\n });\n }\n\n if (editedLayer.opacity !== undefined && !isAnimatedPropertyEqual(editedLayer.opacity, baselineLayer.opacity)) {\n ensureTransform().opacity = convertDSLPropertyToIRNumber(\n editedLayer.opacity,\n frameRate,\n TRANSFORM_FALLBACK.opacity,\n );\n reportChange({\n kind: 'transform',\n op: 'set',\n field: 'opacity',\n layerId: editedLayer.id,\n oldValue: baselineLayer.opacity,\n newValue: editedLayer.opacity,\n });\n }\n}\n\nfunction updateIRTiming(\n irLayer: IRLayer,\n editedLayer: Layer,\n baselineLayer: Layer,\n frameRate: number,\n reportChange: DSLToIRChangeReporter,\n): void {\n if (editedLayer.time_range === undefined || (\n baselineLayer.time_range !== undefined &&\n isScalarEqual(editedLayer.time_range[0], baselineLayer.time_range[0]) &&\n isScalarEqual(editedLayer.time_range[1], baselineLayer.time_range[1])\n )) {\n return;\n }\n\n const previousTime = irLayer.time;\n\n irLayer.time = {\n ...irLayer.time,\n inFrame: editedLayer.time_range[0] * frameRate,\n outFrame: editedLayer.time_range[1] * frameRate,\n };\n reportChange({\n kind: 'timing',\n op: 'set',\n field: 'time_range',\n layerId: editedLayer.id,\n oldValue: previousTime,\n newValue: editedLayer.time_range,\n });\n}\n\nfunction updateIRText(\n irLayer: IRLayer,\n irScene: IRScene,\n editedLayer: Layer,\n baselineLayer: Layer,\n reportChange: DSLToIRChangeReporter,\n): void {\n const editedText = readTextProperties(editedLayer);\n const baselineText = readTextProperties(baselineLayer);\n\n if (irLayer.type !== 'text' || editedText == null) {\n return;\n }\n\n const normalizedEditedText = normalizeTextPropertiesForIR(editedText, irLayer.content);\n const textChanges = baselineText != null ? collectTextPropertyChanges(baselineText, normalizedEditedText) : [];\n\n if (baselineText != null && textChanges.length === 0) {\n return;\n }\n\n const previousText = irLayer.content;\n const currentFontAsset = resolveFontAsset(irScene, irLayer.content.fontAssetId);\n const fontAssetId = baselineText == null || textChanges.some(change => change.field === 'font')\n ? ensureSystemFontAsset(\n irScene.assets,\n normalizedEditedText.font ?? currentFontAsset.family,\n currentFontAsset.style,\n currentFontAsset.weight,\n )\n : irLayer.content.fontAssetId;\n\n irLayer.content = buildUpdatedTextData(irLayer.content, normalizedEditedText, fontAssetId);\n if (baselineText == null) {\n reportChange({\n kind: 'text',\n op: 'set',\n field: 'text',\n layerId: editedLayer.id,\n oldValue: previousText,\n newValue: normalizedEditedText,\n });\n } else {\n for (const { field, oldValue, newValue } of textChanges) {\n reportChange({\n kind: 'text',\n op: 'set',\n field: `text.${field}`,\n layerId: editedLayer.id,\n oldValue,\n newValue,\n });\n }\n }\n}\n\nfunction normalizeTextPropertiesForIR(text: TextProperties, currentText: IRTextContent): TextProperties {\n const currentFontSize = Number.isFinite(currentText.fontSize) && currentText.fontSize > 0\n ? currentText.fontSize\n : 16;\n const fontSize = Number.isFinite(text.size) && text.size > 0 ? text.size : currentFontSize;\n const lineHeight = text.line_height != null && Number.isFinite(text.line_height) && text.line_height > 0\n ? text.line_height\n : fontSize;\n const fontFamily = text.font != null ? normalizeDSLFontFamily(text.font) : undefined;\n\n return {\n ...text,\n size: fontSize,\n line_height: lineHeight,\n ...(fontFamily != null && { font: fontFamily }),\n };\n}\n\nfunction buildUpdatedTextData(currentText: IRTextContent, editedText: TextProperties, fontAssetId: string): IRTextContent {\n return {\n text: editedText.content,\n fontAssetId,\n fontSize: editedText.size,\n color: hexToIRColor(editedText.color),\n textAlign: editedText.align ?? currentText.textAlign,\n letterSpacing: editedText.letter_spacing ?? currentText.letterSpacing,\n lineHeight: editedText.line_height ?? currentText.lineHeight,\n };\n}\n\nfunction resolveFontAsset(irScene: IRScene, fontAssetId: string): IRFontAsset {\n const fontAsset = irScene.assets.find(\n (asset): asset is IRFontAsset => asset.type === 'font' && asset.id === fontAssetId,\n );\n\n if (fontAsset == null) {\n throw new TypeError(`[dsl-ir] Text references a missing Font Asset: ${fontAssetId}`);\n }\n\n return fontAsset;\n}\n\nfunction updateIRAsset(\n irLayer: IRLayer,\n irScene: IRScene,\n editedLayer: Layer,\n baselineLayer: Layer,\n reportChange: DSLToIRChangeReporter,\n): void {\n if (irLayer.type !== 'image' || editedLayer.asset == null) {\n return;\n }\n\n let imageAsset = irScene.assets.find(\n (asset): asset is IRImageAsset => asset.type === 'image' && asset.id === irLayer.content.assetId,\n );\n\n if (imageAsset == null) {\n return;\n }\n\n if (baselineLayer.asset != null && isAssetEqual(editedLayer.asset, baselineLayer.asset)) {\n return;\n }\n\n const editedUrl = resolveAssetUrl(editedLayer.asset);\n const baselineUrl = baselineLayer.asset != null ? resolveAssetUrl(baselineLayer.asset) : undefined;\n\n if (editedUrl !== '' && editedUrl !== baselineUrl) {\n const previousUrl = getIRResourceSourceUrl(imageAsset.source);\n\n if (countImageAssetReferences(irScene, imageAsset.id) > 1) {\n const clonedAssetId = createAvailableRecombineAssetId(irScene);\n\n imageAsset = { ...imageAsset, id: clonedAssetId };\n irScene.assets.push(imageAsset);\n irLayer.content.assetId = clonedAssetId;\n }\n imageAsset.source = createIRResourceSource(editedUrl);\n reportChange({\n kind: 'asset',\n op: 'set',\n field: 'asset.url',\n layerId: editedLayer.id,\n oldValue: previousUrl,\n newValue: editedUrl,\n });\n }\n}\n\nfunction countImageAssetReferences(irScene: IRScene, assetId: string): number {\n return irScene.compositions.reduce(\n (count, composition) => count + composition.layers.filter(\n layer => layer.type === 'image' && layer.content.assetId === assetId,\n ).length,\n 0,\n );\n}\n\nfunction createAvailableRecombineAssetId(irScene: IRScene): string {\n const existingAssetIdSet = new Set(irScene.assets.map(asset => asset.id));\n\n while (true) {\n const candidate = createId();\n\n if (!existingAssetIdSet.has(candidate)) {\n return candidate;\n }\n }\n}\n","import { getLayerStackingOrder } from '../../common/transform';\nimport type { IRComposition, IRLayer } from '@vvfx/animation-ir';\nimport type { Layer } from '../../dsl/schema';\nimport type { DSLToIRChangeReporter } from '../types';\n\ninterface LayerOrderContext {\n updatedIR: IRComposition;\n irLayerIdByEditedLayer: Map<Layer, string>;\n irLayerById: Map<string, IRLayer>;\n childIRLayerIdsByParentIRLayerId: Map<string, string[]>;\n reportChange: DSLToIRChangeReporter;\n rootDSLParentId?: string;\n}\n\ninterface IRSibling {\n layer: Layer;\n subtreeLayerIdSet: Set<string>;\n}\n\n/** Apply edited sibling order without changing parent relationships. */\nexport function updateLayerOrder(\n updatedIR: IRComposition,\n editedLayers: Layer[],\n irLayerIdByEditedLayer: Map<Layer, string>,\n reportChange: DSLToIRChangeReporter,\n rootDSLParentId?: string,\n): void {\n const irLayerById = new Map(updatedIR.layers.map(layer => [layer.id, layer] as const));\n const childIRLayerIdsByParentIRLayerId = new Map<string, string[]>();\n\n for (const layer of updatedIR.layers) {\n const parentLayerId = layer.parentId;\n\n if (parentLayerId != null) {\n const childLayerIds = childIRLayerIdsByParentIRLayerId.get(parentLayerId) ?? [];\n\n childLayerIds.push(layer.id);\n childIRLayerIdsByParentIRLayerId.set(parentLayerId, childLayerIds);\n }\n }\n\n updateSiblingGroups(editedLayers, undefined, {\n updatedIR,\n irLayerIdByEditedLayer,\n irLayerById,\n childIRLayerIdsByParentIRLayerId,\n reportChange,\n rootDSLParentId,\n });\n}\n\nfunction updateSiblingGroups(siblingLayers: Layer[], parentLayer: Layer | undefined, context: LayerOrderContext): void {\n updateIRSiblingOrder(siblingLayers, parentLayer, context);\n\n for (const sibling of siblingLayers) {\n updateSiblingGroups(sibling.children ?? [], sibling, context);\n }\n}\n\nfunction updateIRSiblingOrder(\n siblingLayers: Layer[],\n parentLayer: Layer | undefined,\n context: LayerOrderContext,\n): void {\n const parentIRLayerId = parentLayer != null ? context.irLayerIdByEditedLayer.get(parentLayer) : undefined;\n\n if (parentLayer != null && parentIRLayerId == null) {\n return;\n }\n\n const expectedParentId = parentLayer?.id ?? context.rootDSLParentId ?? null;\n const orderedSiblings: IRSibling[] = [];\n\n for (const layer of siblingLayers) {\n const irLayerId = context.irLayerIdByEditedLayer.get(layer);\n\n if (irLayerId == null) {\n continue;\n }\n\n const irLayer = context.irLayerById.get(irLayerId);\n\n if (irLayer == null || (layer.parent ?? null) !== expectedParentId || irLayer.parentId !== parentIRLayerId) {\n continue;\n }\n\n orderedSiblings.push({\n layer,\n subtreeLayerIdSet: collectIRSubtreeLayerIds(irLayerId, context.childIRLayerIdsByParentIRLayerId),\n });\n }\n\n if (orderedSiblings.length < 2) {\n return;\n }\n\n const ownerByIRLayerId = new Map<string, IRSibling>();\n\n for (const sibling of orderedSiblings) {\n for (const irLayerId of sibling.subtreeLayerIdSet) {\n ownerByIRLayerId.set(irLayerId, sibling);\n }\n }\n\n const currentIROrder = collectOwnerOrder(context.updatedIR.layers, layer => ownerByIRLayerId.get(layer.id));\n const currentDSLOrder = [...currentIROrder].reverse();\n\n orderedSiblings.sort((left, right) =>\n getLayerStackingOrder(right.layer) - getLayerStackingOrder(left.layer) ||\n currentDSLOrder.indexOf(left) - currentDSLOrder.indexOf(right),\n );\n\n if (currentDSLOrder.length !== orderedSiblings.length || isOwnerOrderEqual(currentDSLOrder, orderedSiblings)) {\n return;\n }\n\n const reorderedLayers = reorderOwnedEntries(\n context.updatedIR.layers,\n [...orderedSiblings].reverse(),\n layer => ownerByIRLayerId.get(layer.id),\n );\n\n if (reorderedLayers == null) {\n return;\n }\n\n context.updatedIR.layers = reorderedLayers;\n const changedParentLayerId = parentLayer?.id ?? context.rootDSLParentId;\n\n context.reportChange({\n kind: 'layer',\n op: 'set',\n field: 'order',\n ...(changedParentLayerId != null && { layerId: changedParentLayerId }),\n oldValue: currentDSLOrder.map(sibling => sibling.layer.id),\n newValue: orderedSiblings.map(sibling => sibling.layer.id),\n });\n}\n\nfunction collectIRSubtreeLayerIds(\n rootLayerId: string,\n childIRLayerIdsByParentIRLayerId: ReadonlyMap<string, string[]>,\n subtreeLayerIdSet = new Set<string>(),\n): Set<string> {\n if (subtreeLayerIdSet.has(rootLayerId)) {\n return subtreeLayerIdSet;\n }\n\n subtreeLayerIdSet.add(rootLayerId);\n\n for (const childLayerId of childIRLayerIdsByParentIRLayerId.get(rootLayerId) ?? []) {\n collectIRSubtreeLayerIds(childLayerId, childIRLayerIdsByParentIRLayerId, subtreeLayerIdSet);\n }\n\n return subtreeLayerIdSet;\n}\n\nfunction collectOwnerOrder<TEntry, TOwner>(\n entries: TEntry[],\n resolveOwner: (entry: TEntry) => TOwner | undefined,\n): TOwner[] {\n const owners: TOwner[] = [];\n\n for (const entry of entries) {\n const owner = resolveOwner(entry);\n\n if (owner != null && !owners.includes(owner)) {\n owners.push(owner);\n }\n }\n\n return owners;\n}\n\nfunction isOwnerOrderEqual<TOwner>(left: TOwner[], right: TOwner[]): boolean {\n return left.length === right.length && left.every((owner, index) => owner === right[index]);\n}\n\nfunction reorderOwnedEntries<TEntry, TOwner>(\n entries: TEntry[],\n orderedOwners: TOwner[],\n resolveOwner: (entry: TEntry) => TOwner | undefined,\n): TEntry[] | undefined {\n const entriesByOwner = new Map<TOwner, TEntry[]>();\n\n for (const owner of orderedOwners) {\n entriesByOwner.set(owner, []);\n }\n for (const entry of entries) {\n const owner = resolveOwner(entry);\n\n if (owner != null) {\n entriesByOwner.get(owner)?.push(entry);\n }\n }\n if (orderedOwners.some(owner => (entriesByOwner.get(owner)?.length ?? 0) === 0)) {\n return undefined;\n }\n\n const reorderedOwnedEntries = orderedOwners.flatMap(owner => entriesByOwner.get(owner) ?? []);\n let reorderedIndex = 0;\n\n return entries.map(entry => {\n if (resolveOwner(entry) == null) {\n return entry;\n }\n\n return reorderedOwnedEntries[reorderedIndex++];\n });\n}\n","import {\n assertIRScene, IREndBehavior, type IRAnimatedProperty, type IRComposition, type IRLayer, type IRScene,\n} from '@vvfx/animation-ir';\nimport { getIRSceneEntryComposition } from '@vvfx/animation-ir/adapter';\nimport { hexToIRColor, isHexEqual, isScalarEqual } from '../../common/utils';\nimport type { Composition, Layer } from '../../dsl/schema';\nimport { convertIRToDSL } from '../../ir2dsl/convert';\nimport type { IRToDSLLayerMapping } from '../../ir2dsl/types';\nimport { updateIRLayer } from './update-layer';\nimport { updateLayerOrder } from './update-layer-order';\nimport type {\n ConvertDSLToIROptions, DSLToIRChangeReporter, DSLToIRWarning, DSLToIRWarningReporter,\n} from '../types';\n\ninterface LayerEntry {\n layer: Layer;\n path: string;\n}\n\ninterface LayerMatchContext {\n editedLayerById: Map<string, LayerEntry>;\n editedLayerByPath: Map<string, Layer>;\n matchedEditedLayerSet: Set<Layer>;\n}\n\n/** Apply previously validated DSL to a clone of the baseline IR. */\nexport function updateValidatedIRFromDSL(\n baselineScene: IRScene,\n editedDocument: Composition,\n layerMapping: IRToDSLLayerMapping,\n options: ConvertDSLToIROptions = {},\n): IRScene {\n const strict = options.strict === true;\n const reportWarning = createWarningReporter(options.onWarning);\n const reportChange = createChangeReporter(options.onChange);\n\n const baselineDSLResult = convertIRToDSL(baselineScene);\n const baselineDSL = baselineDSLResult.dsl;\n const editedDSL = structuredClone(editedDocument);\n const updatedScene = structuredClone(baselineScene);\n const updatedIR = getIRSceneEntryComposition(updatedScene);\n const compositionById = new Map(updatedScene.compositions.map(composition => [composition.id, composition] as const));\n const targetFrameRate = editedDSL.meta.fps;\n\n // Reframe the clone first; comparisons still use the untouched baseline DSL in seconds.\n for (const composition of updatedScene.compositions) {\n updateIRFrameRate(composition, targetFrameRate, reportChange, composition.id === updatedIR.id);\n }\n updateIRComposition(updatedIR, editedDSL, baselineDSL, targetFrameRate, reportChange);\n\n const baselineLayers = collectLayersWithPaths(baselineDSL.layers);\n const editedLayerEntries = collectLayersWithPaths(editedDSL.layers);\n const editedLayers = editedLayerEntries.map(entry => entry.layer);\n const editedPathByLayer = new Map(editedLayerEntries.map(entry => [entry.layer, entry.path] as const));\n const editedLayerById = new Map<string, LayerEntry>();\n const editedLayerByPath = new Map<string, Layer>();\n\n for (const { layer, path } of editedLayerEntries) {\n const previousEntry = editedLayerById.get(layer.id);\n\n if (previousEntry != null) {\n throw new Error(\n `[dsl-ir:preserved-data] Duplicate layer id '${layer.id}'; earlier occurrence at path '${previousEntry.path}'.`,\n );\n }\n\n editedLayerById.set(layer.id, { layer, path });\n editedLayerByPath.set(path, layer);\n }\n\n const clonedLayerByIRId = new Map<string, IRLayer>();\n\n for (const layer of updatedIR.layers) {\n clonedLayerByIRId.set(layer.id, layer);\n }\n\n // Track object identity because edited IDs may have changed.\n const matchedEditedLayerSet = new Set<Layer>();\n const irLayerIdByEditedLayer = new Map<Layer, string>();\n const deletedIRLayerIdSet = new Set<string>();\n const deletedExpandedIRLayerIdsByCompositionId = new Map<string, Set<string>>();\n const semanticallyDeletedExpandedDSLIds = new Set<string>();\n\n for (const { layer: baselineLayer, path } of baselineLayers) {\n const irLayerId = layerMapping.layers[baselineLayer.id]?.irLayerId;\n\n if (irLayerId == null) {\n continue;\n }\n\n const editedLayer = matchEditedLayer(baselineLayer, path, {\n editedLayerById,\n editedLayerByPath,\n matchedEditedLayerSet,\n });\n\n if (editedLayer == null) {\n const expandedSource = layerMapping.layers[baselineLayer.id]?.expandedSource;\n const expandedComposition = expandedSource != null\n ? compositionById.get(expandedSource.irCompositionId)\n : undefined;\n\n if (expandedSource != null && expandedComposition?.layers.some(layer => layer.id === irLayerId) === true) {\n const deletedIds = deletedExpandedIRLayerIdsByCompositionId.get(expandedSource.irCompositionId) ?? new Set();\n\n deletedIds.add(irLayerId);\n deletedExpandedIRLayerIdsByCompositionId.set(expandedSource.irCompositionId, deletedIds);\n semanticallyDeletedExpandedDSLIds.add(baselineLayer.id);\n } else {\n deletedIRLayerIdSet.add(irLayerId);\n }\n reportChange({ kind: 'layer', op: 'delete', layerId: baselineLayer.id });\n continue;\n }\n\n const irLayer = clonedLayerByIRId.get(irLayerId);\n\n if (irLayer == null) {\n continue;\n }\n\n matchedEditedLayerSet.add(editedLayer);\n irLayerIdByEditedLayer.set(editedLayer, irLayerId);\n updateIRLayer(\n irLayer,\n updatedScene,\n editedLayer,\n baselineLayer,\n path,\n targetFrameRate,\n strict,\n reportWarning,\n reportChange,\n );\n }\n\n const expandedIRLayerIdByEditedLayer = new Map<Layer, string>();\n const editedExpandedCompositionById = new Map<string, IRComposition>();\n\n for (const editedLayer of editedLayers) {\n if (matchedEditedLayerSet.has(editedLayer)) {\n continue;\n }\n\n const expandedSource = layerMapping.layers[editedLayer.id]?.expandedSource;\n\n if (expandedSource != null) {\n const mappingEntry = layerMapping.layers[editedLayer.id];\n const targetComposition = compositionById.get(expandedSource.irCompositionId);\n const targetLayer = mappingEntry?.irLayerId != null\n ? targetComposition?.layers.find(layer => layer.id === mappingEntry.irLayerId)\n : undefined;\n\n if (targetComposition != null && targetLayer != null && mappingEntry?.irLayerId != null) {\n updateIRLayer(\n targetLayer,\n updatedScene,\n editedLayer,\n buildExpandedBaselineLayer(editedLayer, expandedSource),\n editedPathByLayer.get(editedLayer) ?? '$.layers',\n targetFrameRate,\n strict,\n reportWarning,\n reportChange,\n );\n expandedIRLayerIdByEditedLayer.set(editedLayer, mappingEntry.irLayerId);\n editedExpandedCompositionById.set(expandedSource.irCompositionId, targetComposition);\n }\n\n continue;\n }\n\n const message = `[dsl-ir:preserved-data] edited layer '${editedLayer.id}' matches no baseline scene layer; new layers are not supported in this mode.`;\n\n if (strict) {\n throw new Error(message);\n }\n reportWarning({\n code: 'INVENTED_LAYER',\n message,\n path: editedPathByLayer.get(editedLayer) ?? '$.layers',\n layerId: editedLayer.id,\n });\n }\n\n for (const [dslLayerId, mappingEntry] of Object.entries(layerMapping.layers)) {\n const expandedSource = mappingEntry.expandedSource;\n const irLayerId = mappingEntry.irLayerId;\n\n if (\n expandedSource == null ||\n irLayerId == null ||\n editedLayerById.has(dslLayerId) ||\n !editedLayerById.has(expandedSource.parentLayerId) ||\n semanticallyDeletedExpandedDSLIds.has(dslLayerId)\n ) {\n continue;\n }\n const composition = compositionById.get(expandedSource.irCompositionId);\n\n if (composition?.layers.some(layer => layer.id === irLayerId) !== true) {\n continue;\n }\n const deletedIds = deletedExpandedIRLayerIdsByCompositionId.get(expandedSource.irCompositionId) ?? new Set();\n\n deletedIds.add(irLayerId);\n deletedExpandedIRLayerIdsByCompositionId.set(expandedSource.irCompositionId, deletedIds);\n semanticallyDeletedExpandedDSLIds.add(dslLayerId);\n reportChange({ kind: 'layer', op: 'delete', layerId: dslLayerId });\n }\n\n removeIRLayers(updatedIR, deletedIRLayerIdSet, reportChange);\n for (const [compositionId, deletedLayerIds] of deletedExpandedIRLayerIdsByCompositionId) {\n const composition = compositionById.get(compositionId);\n\n if (composition != null) {\n removeIRLayers(composition, deletedLayerIds, reportChange);\n }\n }\n updateLayerOrder(\n updatedIR,\n editedDSL.layers,\n irLayerIdByEditedLayer,\n reportChange,\n );\n updateExpandedCompositionLayerOrder(\n editedDSL.layers,\n editedExpandedCompositionById,\n layerMapping,\n expandedIRLayerIdByEditedLayer,\n reportChange,\n );\n\n assertIRScene(updatedScene);\n\n return updatedScene;\n}\n\nfunction buildExpandedBaselineLayer(\n editedLayer: Layer,\n expandedSource: NonNullable<IRToDSLLayerMapping['layers'][string]['expandedSource']>,\n): Layer {\n const baseline = expandedSource.baselineLayer;\n const transform = expandedSource.baselineTransform;\n\n if (baseline == null || transform == null) {\n return structuredClone(editedLayer);\n }\n\n return {\n ...structuredClone(editedLayer),\n name: baseline.name,\n type: baseline.type,\n width: baseline.width,\n height: baseline.height,\n description: structuredClone(baseline.description),\n parent: baseline.parent,\n time_range: structuredClone(baseline.timeRange),\n position: structuredClone(transform.position),\n scale: structuredClone(transform.scale),\n rotation: structuredClone(transform.rotation),\n anchor: structuredClone(transform.anchor),\n opacity: structuredClone(transform.opacity),\n ...(baseline.text != null && { text: structuredClone(baseline.text) }),\n ...(baseline.asset != null && { asset: structuredClone(baseline.asset) }),\n ...(baseline.particle != null && { particle: structuredClone(baseline.particle) }),\n };\n}\n\nfunction updateExpandedCompositionLayerOrder(\n layers: Layer[],\n compositionById: ReadonlyMap<string, IRComposition>,\n layerMapping: IRToDSLLayerMapping,\n irLayerIdByEditedLayer: Map<Layer, string>,\n reportChange: DSLToIRChangeReporter,\n): void {\n for (const layer of layers) {\n const children = layer.children ?? [];\n const firstExpandedSource = children\n .map(child => layerMapping.layers[child.id]?.expandedSource)\n .find(source => source != null);\n const targetComposition = firstExpandedSource != null\n ? compositionById.get(firstExpandedSource.irCompositionId)\n : undefined;\n\n if (targetComposition != null) {\n updateLayerOrder(\n targetComposition,\n children,\n irLayerIdByEditedLayer,\n reportChange,\n layer.id,\n );\n }\n updateExpandedCompositionLayerOrder(\n children,\n compositionById,\n layerMapping,\n irLayerIdByEditedLayer,\n reportChange,\n );\n }\n}\n\nfunction matchEditedLayer(baselineLayer: Layer, path: string, context: LayerMatchContext): Layer | undefined {\n const layerById = context.editedLayerById.get(baselineLayer.id)?.layer;\n\n if (layerById != null) {\n return layerById;\n }\n\n const layerByPath = context.editedLayerByPath.get(path);\n\n if (\n layerByPath != null &&\n !context.matchedEditedLayerSet.has(layerByPath) &&\n layerByPath.name === baselineLayer.name\n ) {\n return layerByPath;\n }\n\n return undefined;\n}\n\nfunction collectLayersWithPaths(layers: Layer[], prefix = '$.layers', entries: LayerEntry[] = []): LayerEntry[] {\n layers.forEach((layer, index) => {\n const path = `${prefix}[${index}]`;\n\n entries.push({ layer, path });\n collectLayersWithPaths(layer.children ?? [], `${path}.children`, entries);\n });\n\n return entries;\n}\n\nfunction createWarningReporter(onWarning: ConvertDSLToIROptions['onWarning']): DSLToIRWarningReporter {\n if (onWarning == null) {\n return () => {};\n }\n\n return ({ code, message, path, layerId }) => {\n const warning: DSLToIRWarning = { level: 'warning', code, message };\n\n if (path != null) {\n warning.path = path;\n }\n if (layerId != null) {\n warning.layerId = layerId;\n }\n\n onWarning(warning);\n };\n}\n\nfunction createChangeReporter(onChange: ConvertDSLToIROptions['onChange']): DSLToIRChangeReporter {\n if (onChange == null) {\n return () => {};\n }\n\n return change => {\n const normalizedChange = {\n kind: change.kind,\n op: change.op,\n ...(change.field != null && { field: change.field }),\n ...(change.layerId != null && { layerId: change.layerId }),\n ...(change.oldValue !== undefined && { oldValue: structuredClone(change.oldValue) }),\n ...(change.newValue !== undefined && { newValue: structuredClone(change.newValue) }),\n ...(change.note != null && { note: change.note }),\n };\n\n onChange(normalizedChange);\n };\n}\n\nfunction removeIRLayers(\n updatedIR: IRComposition,\n deletedIRLayerIdSet: Set<string>,\n reportChange: DSLToIRChangeReporter,\n): void {\n if (deletedIRLayerIdSet.size === 0) {\n return;\n }\n\n updatedIR.layers = updatedIR.layers.filter(layer => !deletedIRLayerIdSet.has(layer.id));\n\n for (const layer of updatedIR.layers) {\n if (layer.parentId != null && deletedIRLayerIdSet.has(layer.parentId)) {\n delete layer.parentId;\n reportChange({ kind: 'layer', op: 'delete', field: 'parentId', layerId: layer.id });\n }\n if (layer.matte != null && deletedIRLayerIdSet.has(layer.matte.sourceLayerId)) {\n const previousMatte = layer.matte;\n\n delete layer.matte;\n reportChange({\n kind: 'layer',\n op: 'delete',\n field: 'matte',\n layerId: layer.id,\n oldValue: previousMatte,\n });\n }\n }\n}\n\n/** Scale frame-based IR timing so a frame-rate change preserves playback duration. */\nfunction updateIRFrameRate(\n updatedIR: IRComposition,\n targetFrameRate: number,\n reportChange: DSLToIRChangeReporter,\n reportCompositionChange = true,\n): void {\n const previousFrameRate = updatedIR.frameRate;\n\n if (isScalarEqual(targetFrameRate, previousFrameRate)) {\n return;\n }\n\n const frameRateScale = targetFrameRate / previousFrameRate;\n\n updatedIR.frameRate = targetFrameRate;\n updatedIR.inPoint *= frameRateScale;\n updatedIR.outPoint *= frameRateScale;\n\n for (const layer of updatedIR.layers) {\n layer.time.inFrame *= frameRateScale;\n layer.time.outFrame *= frameRateScale;\n if (layer.type === 'precomp' && layer.time.sourceStartFrame != null) {\n layer.time.sourceStartFrame *= frameRateScale;\n }\n\n reframeAnimatedProperty(layer.transform?.position, frameRateScale);\n reframeAnimatedProperty(layer.transform?.scale, frameRateScale);\n reframeAnimatedProperty(layer.transform?.rotation?.x, frameRateScale);\n reframeAnimatedProperty(layer.transform?.rotation?.y, frameRateScale);\n reframeAnimatedProperty(layer.transform?.rotation?.z, frameRateScale);\n reframeAnimatedProperty(layer.transform?.opacity, frameRateScale);\n if (layer.type === 'particle') {\n for (const burst of layer.content.emission.bursts ?? []) {\n burst.frameOffset *= frameRateScale;\n burst.repeatIntervalFrames *= frameRateScale;\n }\n }\n }\n\n if (reportCompositionChange) {\n reportChange({\n kind: 'composition',\n op: 'set',\n field: 'fps',\n oldValue: previousFrameRate,\n newValue: targetFrameRate,\n });\n }\n}\n\nfunction reframeAnimatedProperty(property: IRAnimatedProperty | undefined, frameRateScale: number): void {\n if (property?.type !== 'keyframed') {\n return;\n }\n\n for (const keyframe of property.keyframes) {\n keyframe.frame *= frameRateScale;\n }\n}\n\nfunction updateIRComposition(\n updatedIR: IRComposition,\n editedDSL: Composition,\n baselineDSL: Composition,\n frameRate: number,\n reportChange: DSLToIRChangeReporter,\n): void {\n const baselineMeta = baselineDSL.meta;\n\n if (editedDSL.meta.name !== baselineMeta.name) {\n const previousName = updatedIR.name;\n\n updatedIR.name = editedDSL.meta.name;\n reportChange({\n kind: 'composition',\n op: 'set',\n field: 'name',\n oldValue: previousName,\n newValue: editedDSL.meta.name,\n });\n }\n\n if (!isScalarEqual(editedDSL.meta.duration, baselineMeta.duration)) {\n updatedIR.outPoint = updatedIR.inPoint + editedDSL.meta.duration * frameRate;\n reportChange({\n kind: 'composition',\n op: 'set',\n field: 'duration',\n oldValue: baselineMeta.duration,\n newValue: editedDSL.meta.duration,\n });\n }\n\n if (\n Number.isFinite(editedDSL.meta.width) &&\n editedDSL.meta.width > 0 &&\n editedDSL.meta.width !== baselineMeta.width\n ) {\n const previousWidth = updatedIR.width;\n\n updatedIR.width = editedDSL.meta.width;\n reportChange({\n kind: 'composition',\n op: 'set',\n field: 'width',\n oldValue: previousWidth,\n newValue: editedDSL.meta.width,\n });\n }\n if (\n Number.isFinite(editedDSL.meta.height) &&\n editedDSL.meta.height > 0 &&\n editedDSL.meta.height !== baselineMeta.height\n ) {\n const previousHeight = updatedIR.height;\n\n updatedIR.height = editedDSL.meta.height;\n reportChange({\n kind: 'composition',\n op: 'set',\n field: 'height',\n oldValue: previousHeight,\n newValue: editedDSL.meta.height,\n });\n }\n\n const baselineLoop = baselineMeta.loop;\n\n if (editedDSL.meta.loop !== baselineLoop) {\n updatedIR.endBehavior = editedDSL.meta.loop ? IREndBehavior.Loop : IREndBehavior.Destroy;\n reportChange({\n kind: 'composition',\n op: 'set',\n field: 'loop',\n oldValue: baselineLoop,\n newValue: editedDSL.meta.loop,\n });\n }\n\n const baselineBackgroundColor = baselineMeta.background_color;\n const editedBackgroundColor = editedDSL.meta.background_color ?? null;\n\n if (!isHexEqual(editedBackgroundColor, baselineBackgroundColor)) {\n updatedIR.backgroundColor = editedBackgroundColor != null ? hexToIRColor(editedBackgroundColor) : undefined;\n reportChange({\n kind: 'composition',\n op: 'set',\n field: 'background_color',\n oldValue: baselineBackgroundColor,\n newValue: editedBackgroundColor,\n });\n }\n}\n","import { assertIRScene } from '@vvfx/animation-ir';\nimport type { ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { isRecord } from '../../common/utils';\nimport type { Composition } from '../../dsl/schema';\nimport type { IRToDSLPreservedData } from '../../ir2dsl/types';\nimport type { ConvertDSLToIROptions, DSLToIRResult } from '../types';\nimport { updateValidatedIRFromDSL } from './update-ir';\n\n/** Convert DSL to a clone of the baseline IR carried by the adapter-owned preserved data. */\nexport function convertDSLToIRWithPreservedData(\n composition: Composition,\n preservedData: IRToDSLPreservedData,\n options: ConvertDSLToIROptions = {},\n): DSLToIRResult {\n assertIRToDSLPreservedData(preservedData);\n\n const diagnostics: ConversionDiagnostic[] = [];\n const scene = updateValidatedIRFromDSL(preservedData.baselineScene, composition, preservedData.layerMapping, {\n ...options,\n onWarning: warning => {\n diagnostics.push({\n code: warning.code,\n severity: 'warning',\n action: 'unsupported',\n path: warning.path ?? (warning.layerId != null ? '$.layers' : '$'),\n ...(warning.layerId != null && { sourceId: warning.layerId }),\n message: warning.message,\n });\n options.onWarning?.(warning);\n },\n });\n\n return { scene, diagnostics };\n}\n\nfunction assertIRToDSLPreservedData(preservedData: IRToDSLPreservedData): void {\n if (preservedData == null || typeof preservedData !== 'object') {\n throw new TypeError('[dsl-ir:preserved-data] Expected an IR-to-DSL preserved data object.');\n }\n if (!isRecord(preservedData.layerMapping)) {\n throw new TypeError('[dsl-ir:preserved-data] Invalid IR-to-DSL layer mapping.');\n }\n\n assertIRScene(preservedData.baselineScene);\n assertLayerMapping(preservedData.layerMapping, preservedData.baselineScene);\n}\n\nfunction assertLayerMapping(layerMapping: Record<string, unknown>, baselineScene: IRToDSLPreservedData['baselineScene']): void {\n const layers = layerMapping['layers'];\n\n if (!isRecord(layers)) {\n throw new TypeError('[dsl-ir:preserved-data] Layer mapping entries must be an object.');\n }\n const compositionById = new Map(\n baselineScene.compositions.map(composition => [composition.id, composition] as const),\n );\n\n for (const [dslLayerId, entry] of Object.entries(layers)) {\n if (dslLayerId === '' || !isRecord(entry)) {\n throw new TypeError(`[dsl-ir:preserved-data] Invalid mapping entry for DSL layer '${dslLayerId}'.`);\n }\n const irCompositionId = entry['irCompositionId'];\n const irLayerId = entry['irLayerId'];\n const composition = typeof irCompositionId === 'string' ? compositionById.get(irCompositionId) : undefined;\n\n if (\n composition == null ||\n typeof irLayerId !== 'string' ||\n !composition.layers.some(layer => layer.id === irLayerId)\n ) {\n throw new TypeError(`[dsl-ir:preserved-data] Invalid mapping entry for DSL layer '${dslLayerId}'.`);\n }\n if (entry['expandedSource'] !== undefined && !isExpandedLayerSource(entry['expandedSource'], layers)) {\n throw new TypeError(`[dsl-ir:preserved-data] Invalid expanded mapping for DSL layer '${dslLayerId}'.`);\n }\n }\n}\n\nfunction isExpandedLayerSource(value: unknown, layerEntries: Record<string, unknown>): boolean {\n if (\n !isRecord(value) ||\n typeof value['irCompositionId'] !== 'string' ||\n typeof value['parentLayerId'] !== 'string' ||\n !Object.hasOwn(layerEntries, value['parentLayerId']) ||\n !isRecord(value['baselineTransform']) ||\n !isRecord(value['baselineLayer'])\n ) {\n return false;\n }\n const transform = value['baselineTransform'];\n const layer = value['baselineLayer'];\n\n return ['position', 'scale', 'rotation', 'anchor', 'opacity'].every(field => isRecord(transform[field])) &&\n typeof layer['name'] === 'string' &&\n (layer['type'] === 'null' || layer['type'] === 'layer' || layer['type'] === 'text' ||\n layer['type'] === 'particle') &&\n (layer['type'] !== 'particle' || isRecord(layer['particle'])) &&\n typeof layer['width'] === 'number' && Number.isFinite(layer['width']) &&\n typeof layer['height'] === 'number' && Number.isFinite(layer['height']) &&\n isRecord(layer['description']) &&\n Array.isArray(layer['timeRange']) &&\n layer['timeRange'].length === 2;\n}\n","import { IREndBehavior, type IRComposition } from '@vvfx/animation-ir';\nimport { createId, hexToIRColor, secondsToFrames } from '../common/utils';\nimport type { Composition } from '../dsl/schema';\n\nexport function assembleIRComposition(composition: Composition, layers: IRComposition['layers']): IRComposition {\n const frameRate = composition.meta.fps;\n const durationFrames = secondsToFrames(composition.meta.duration, frameRate);\n\n return {\n id: createId(),\n name: composition.meta.name,\n width: composition.meta.width,\n height: composition.meta.height,\n frameRate,\n inPoint: 0,\n outPoint: durationFrames,\n ...(composition.meta.background_color != null && {\n backgroundColor: hexToIRColor(composition.meta.background_color),\n }),\n endBehavior: composition.meta.loop ? IREndBehavior.Loop : IREndBehavior.Destroy,\n layers,\n };\n}\n","import { getLayerStackingOrder } from '../common/transform';\nimport {\n isIRId, type IRImageAsset, type IRFontAsset, type IRLayer, type IRLayerType,\n type IRTextContent, type IRAnimatedProperty, type IRVec3,\n} from '@vvfx/animation-ir';\nimport { createIRResourceSource } from '@vvfx/animation-ir/adapter';\nimport type { Composition, Layer, ParticleProperties, TextProperties } from '../dsl/schema';\nimport { createId, hexToIRColor, resolveFiniteNumber, secondsToFrames } from '../common/utils';\nimport {\n convertDSLPropertyToIRNumber,\n convertDSLPropertyToIRRotation,\n convertDSLPropertyToIRVec3,\n convertDSLPropertyToStaticIRVec3,\n} from './convert-property';\nimport {\n ensureSystemFontAsset, estimateTextBounds, normalizeDSLFontFamily, resolveAssetUrl,\n} from './content-conversion';\nimport { convertDSLParticleToIRContent } from './convert-particle';\n\ninterface LayerConversionContext {\n layerId: string;\n parentLayerId?: string;\n compositionDurationSeconds: number;\n frameRate: number;\n}\n\ninterface FlattenedLayer {\n layer: Layer;\n nestedParentId: string | null;\n}\n\n/** Convert authored 2D DSL sibling groups to flat IR layers in bottom-to-top painter order. */\nexport function convertDSLLayersToIR(\n composition: Composition,\n imageAssets: IRImageAsset[] = [],\n fontAssets: IRFontAsset[] = [],\n): IRLayer[] {\n const flattenedLayers = flattenLayersInRenderOrder(composition.layers);\n const irLayerIdByDSLId = new Map<string, string>();\n\n for (const { layer } of flattenedLayers) {\n if (!irLayerIdByDSLId.has(layer.id)) {\n irLayerIdByDSLId.set(layer.id, convertLayerIdToIR(layer.id));\n }\n }\n\n return flattenedLayers.map(({ layer, nestedParentId }) => {\n const parentId = layer.parent ?? nestedParentId;\n\n return convertLayerToIR(layer, {\n layerId: irLayerIdByDSLId.get(layer.id) ?? convertLayerIdToIR(layer.id),\n parentLayerId: parentId != null ? irLayerIdByDSLId.get(parentId) : undefined,\n compositionDurationSeconds: composition.meta.duration,\n frameRate: composition.meta.fps,\n }, imageAssets, fontAssets);\n });\n}\n\nfunction convertLayerToIR(\n layer: Layer,\n context: LayerConversionContext,\n imageAssets: IRImageAsset[],\n fontAssets: IRFontAsset[],\n): IRLayer {\n const layerType = mapLayerType(layer.type);\n const imageAssetId = layerType === 'image' && layer.asset != null\n ? createId()\n : undefined;\n const textContent = layer.type === 'text' && layer.text != null\n ? convertTextData(layer.text, fontAssets)\n : undefined;\n const particleContent = layer.type === 'particle'\n ? convertDSLParticleToIRContent(requireParticleProperties(layer), context.frameRate)\n : undefined;\n\n if (imageAssetId != null && layer.asset != null) {\n imageAssets.push({\n id: imageAssetId,\n type: 'image',\n source: createIRResourceSource(resolveAssetUrl(layer.asset)),\n });\n }\n\n const convertedLayer = {\n id: context.layerId,\n name: layer.name,\n type: layerType,\n time: convertLayerTime(layer, context.compositionDurationSeconds, context.frameRate),\n ...(context.parentLayerId != null && {\n parentId: context.parentLayerId,\n }),\n visible: true,\n ...(imageAssetId != null && { content: { assetId: imageAssetId } }),\n ...(textContent != null && { content: textContent }),\n ...(particleContent != null && { content: particleContent }),\n transform: {\n position: convertDSLPositionToIR(layer.position, context.frameRate),\n rotation: convertDSLPropertyToIRRotation(layer.rotation, context.frameRate, [0, 0, 0]),\n scale: convertDSLPropertyToIRVec3(layer.scale, context.frameRate, [1, 1, 1]),\n anchor: convertDSLPropertyToStaticIRVec3(layer.anchor, [0, 0, 0]),\n opacity: convertDSLPropertyToIRNumber(layer.opacity, context.frameRate, 1),\n },\n } as IRLayer;\n\n if (textContent != null) {\n convertedLayer.localBounds = resolveTextLocalBounds(layer, textContent);\n } else if (layer.width > 0 && layer.height > 0) {\n convertedLayer.localBounds = { x: 0, y: 0, width: layer.width, height: layer.height };\n }\n\n return convertedLayer;\n}\n\nfunction convertDSLPositionToIR(position: Layer['position'], frameRate: number): IRAnimatedProperty<IRVec3> {\n const result = convertDSLPropertyToIRVec3(position, frameRate, [0, 0, 0], true);\n\n // Authored DSL uses Z for stacking; its pixel coordinates stay on the 2D plane.\n if (result.type === 'static') {\n result.value[2] = 0;\n } else {\n for (const keyframe of result.keyframes) {\n keyframe.value[2] = 0;\n if (keyframe.endValue != null) {\n keyframe.endValue[2] = 0;\n }\n }\n }\n\n return result;\n}\n\nfunction requireParticleProperties(layer: Layer): ParticleProperties {\n if (layer.particle == null) {\n throw new TypeError(`[dsl-ir] Particle layer '${layer.id}' requires particle data.`);\n }\n\n return layer.particle;\n}\n\nfunction resolveTextLocalBounds(layer: Layer, text: IRTextContent): NonNullable<IRLayer['localBounds']> {\n const estimatedBounds = estimateTextBounds(text);\n\n return {\n x: 0,\n y: 0,\n width: Number.isFinite(layer.width) && layer.width > 0 ? layer.width : estimatedBounds.width,\n height: Number.isFinite(layer.height) && layer.height > 0 ? layer.height : estimatedBounds.height,\n };\n}\n\nfunction convertLayerIdToIR(layerId: string): string {\n return isIRId(layerId) ? layerId : createId();\n}\n\nfunction flattenLayersInRenderOrder(\n layers: Layer[],\n nestedParentId: string | null = null,\n flattenedLayers: FlattenedLayer[] = [],\n): FlattenedLayer[] {\n const orderedLayers = [...layers].sort((left, right) =>\n getLayerStackingOrder(left) - getLayerStackingOrder(right) || left.id.localeCompare(right.id),\n );\n\n for (const layer of orderedLayers) {\n flattenedLayers.push({ layer, nestedParentId });\n flattenLayersInRenderOrder(layer.children ?? [], layer.id, flattenedLayers);\n }\n\n return flattenedLayers;\n}\n\nfunction mapLayerType(type: Layer['type']): IRLayerType {\n switch (type) {\n case 'layer':\n return 'image';\n case 'text':\n return 'text';\n case 'null':\n return 'null';\n case 'particle':\n return 'particle';\n }\n}\n\nfunction convertLayerTime(layer: Layer, compositionDurationSeconds: number, frameRate: number): IRLayer['time'] {\n const startSeconds = resolveFiniteNumber(layer.time_range?.[0], 0);\n const endSeconds = resolveFiniteNumber(layer.time_range?.[1], compositionDurationSeconds);\n\n return {\n inFrame: secondsToFrames(startSeconds, frameRate),\n outFrame: secondsToFrames(endSeconds, frameRate),\n };\n}\n\nfunction convertTextData(text: TextProperties, fontAssets: IRFontAsset[]): IRTextContent {\n const fontFamily = normalizeDSLFontFamily(text.font);\n // DSL text cannot express style or weight, so new IR fonts use the canonical normal/400 defaults.\n const fontAssetId = ensureSystemFontAsset(fontAssets, fontFamily, 'normal', 400);\n const fontSize = Number.isFinite(text.size) && text.size > 0 ? text.size : 16;\n\n return {\n text: text.content,\n fontAssetId,\n fontSize,\n color: hexToIRColor(text.color !== '' ? text.color : '#000000'),\n letterSpacing: resolveFiniteNumber(text.letter_spacing, 0),\n lineHeight: text.line_height != null && Number.isFinite(text.line_height) && text.line_height > 0\n ? text.line_height\n : fontSize,\n textAlign: text.align ?? 'left',\n };\n}\n","import { assertIRScene, type IRFontAsset, type IRImageAsset } from '@vvfx/animation-ir';\nimport { createIRScene, type ConversionDiagnostic } from '@vvfx/animation-ir/adapter';\nimport { toJSONPath } from '../common/utils';\nimport type { Composition } from '../dsl/schema';\nimport { DSLValidationError, validateDSL, type DSLValidationIssue } from '../dsl/validator';\nimport { convertDSLToIRWithPreservedData } from './recombine/convert';\nimport { assembleIRComposition } from './assemble';\nimport { convertDSLLayersToIR } from './convert-layers';\nimport type { ConvertDSLToIROptions, DSLToIRResult } from './types';\n\n/** Convert an editable DSL composition into a shared Animation IR scene. */\nexport function convertDSLToIR(\n composition: Composition,\n options: ConvertDSLToIROptions = {},\n): DSLToIRResult {\n const validationResult = validateDSL(composition, { strict: options.strict });\n\n if (validationResult.result === 'fail') {\n throw DSLValidationError.fromValidationResult(validationResult);\n }\n\n const diagnostics = reportDSLValidationWarnings(validationResult.warnings, options);\n\n if (options.preservedData != null) {\n const preservedResult = convertDSLToIRWithPreservedData(composition, options.preservedData, options);\n\n assertIRScene(preservedResult.scene);\n\n return {\n scene: preservedResult.scene,\n diagnostics: [...diagnostics, ...preservedResult.diagnostics],\n };\n }\n\n const imageAssets: IRImageAsset[] = [];\n const fontAssets: IRFontAsset[] = [];\n const convertedLayers = convertDSLLayersToIR(composition, imageAssets, fontAssets);\n const scene = createIRScene(assembleIRComposition(composition, convertedLayers), [...imageAssets, ...fontAssets]);\n\n assertIRScene(scene);\n\n return {\n scene,\n diagnostics,\n };\n}\n\nfunction reportDSLValidationWarnings(\n warnings: DSLValidationIssue[],\n options: ConvertDSLToIROptions,\n): ConversionDiagnostic[] {\n return warnings.map(warning => {\n const path = toJSONPath(warning.path);\n\n options.onWarning?.({\n level: 'warning',\n code: warning.code,\n message: warning.message,\n path,\n ...(warning.layerId != null && { layerId: warning.layerId }),\n });\n\n return {\n code: warning.code,\n severity: 'warning' as const,\n action: 'unsupported' as const,\n path,\n ...(warning.layerId != null && { sourceId: warning.layerId }),\n message: warning.message,\n };\n });\n}\n","import type {\n ParticleShape, ParticleShapeArcMode, ParticleShapeNumberExpression, ParticleTextureShapeDetail,\n} from './particle-shape';\n\ninterface ProjectedShapeBase {\n arcMode: ParticleShapeArcMode;\n alignSpeedDirection?: boolean;\n upDirection?: [x: number, y: number, z: number];\n turbulenceX?: ParticleShapeNumberExpression;\n turbulenceY?: ParticleShapeNumberExpression;\n turbulenceZ?: ParticleShapeNumberExpression;\n}\n\nexport function parseParticleShape(value: unknown): ParticleShape | undefined {\n if (!isRecord(value) || !isIntegerInRange(value['type'], 0, 9)) {\n return undefined;\n }\n const type = value['type'];\n\n if (type === 0) {\n return {\n type: 0,\n shape: 'None',\n ...projectDirectionExpressions(value),\n ...(isFiniteNumberArray(value['upDirection']) && { upDirection: [...value['upDirection']] }),\n };\n }\n const base = projectShapeBase(value);\n\n if (base == null) {\n return undefined;\n }\n\n switch (type) {\n case 1: {\n const radial = projectRadialFields(value);\n\n return radial == null ? undefined : { type: 1, shape: 'Sphere', ...base, ...radial };\n }\n case 2: {\n const radial = projectRadialFields(value);\n const angle = readFiniteNumber(value['angle']);\n\n return radial == null || angle == null\n ? undefined\n : { type: 2, shape: 'Cone', ...base, angle, ...radial };\n }\n case 3: {\n const radial = projectRadialFields(value);\n\n return radial == null ? undefined : { type: 3, shape: 'Hemisphere', ...base, ...radial };\n }\n case 4: {\n const radial = projectRadialFields(value);\n\n return radial == null ? undefined : { type: 4, shape: 'Circle', ...base, ...radial };\n }\n case 5: {\n const radial = projectRadialFields(value);\n const donutRadius = readFiniteNumber(value['donutRadius']);\n\n return radial == null || donutRadius == null\n ? undefined\n : { type: 5, shape: 'Donut', ...base, ...radial, donutRadius };\n }\n case 6: {\n const rectangle = projectRectangleFields(value);\n\n return rectangle == null ? undefined : { type: 6, shape: 'Rectangle', ...base, ...rectangle };\n }\n case 7: {\n const rectangle = projectRectangleFields(value);\n\n return rectangle == null ? undefined : { type: 7, shape: 'RectangleEdge', ...base, ...rectangle };\n }\n case 8: {\n const width = readFiniteNumber(value['width']);\n\n return width == null ? undefined : { type: 8, shape: 'Edge', ...base, width };\n }\n case 9:\n return projectTextureShape(value, base);\n }\n}\n\nfunction projectRadialFields(\n value: Record<string, unknown>,\n): { radius: number; arc: number } | undefined {\n const radius = readFiniteNumber(value['radius']);\n const arc = readFiniteNumber(value['arc']);\n\n if (radius == null || arc == null) {\n return undefined;\n }\n\n return { radius, arc };\n}\n\nfunction projectRectangleFields(\n value: Record<string, unknown>,\n): { width: number; height: number } | undefined {\n const width = readFiniteNumber(value['width']);\n const height = readFiniteNumber(value['height']);\n\n if (width == null || height == null) {\n return undefined;\n }\n\n return { width, height };\n}\n\nfunction projectTextureShape(\n value: Record<string, unknown>,\n base: ProjectedShapeBase,\n): Extract<ParticleShape, { type: 9 }> | undefined {\n const detail = projectTextureShapeDetail(value['detail']);\n const random = readFiniteNumber(value['random']);\n const width = readFiniteNumber(value['width']);\n const height = readFiniteNumber(value['height']);\n\n if (detail == null || random == null || width == null || height == null) {\n return undefined;\n }\n\n return { type: 9, shape: 'Texture', ...base, detail, random, width, height };\n}\n\nfunction projectTextureShapeDetail(value: unknown): ParticleTextureShapeDetail | undefined {\n if (!isRecord(value)) {\n return undefined;\n }\n const width = readFiniteNumber(value['width']);\n const height = readFiniteNumber(value['height']);\n const block = value['block'];\n const anchors = value['anchors'];\n\n if (width == null || height == null || !isFiniteNumberTuple(block, 2) || !isFiniteNumberArray(anchors)) {\n return undefined;\n }\n\n return { width, height, block: [block[0], block[1]], anchors: [...anchors] };\n}\n\nfunction projectShapeBase(value: Record<string, unknown>): ProjectedShapeBase | undefined {\n const arcMode = value['arcMode'] === undefined ? 0 : value['arcMode'];\n\n if (!isParticleShapeArcMode(arcMode)) {\n return undefined;\n }\n\n return {\n arcMode,\n ...(typeof value['alignSpeedDirection'] === 'boolean' && {\n alignSpeedDirection: value['alignSpeedDirection'],\n }),\n ...(isFiniteNumberTuple(value['upDirection'], 3) && {\n upDirection: [value['upDirection'][0], value['upDirection'][1], value['upDirection'][2]],\n }),\n ...projectDirectionExpressions(value),\n };\n}\n\nfunction projectDirectionExpressions(value: Record<string, unknown>): Partial<ProjectedShapeBase> {\n const result: Partial<ProjectedShapeBase> = {};\n\n for (const field of ['turbulenceX', 'turbulenceY', 'turbulenceZ'] as const) {\n const expression = value[field];\n\n if (isTaggedExpression(expression)) {\n result[field] = [expression[0], structuredClone(expression[1])];\n }\n }\n\n return result;\n}\n\nfunction readFiniteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction isFiniteNumberArray(value: unknown): value is number[] {\n return Array.isArray(value) && value.every(entry => readFiniteNumber(entry) != null);\n}\n\nfunction isFiniteNumberTuple(value: unknown, length: number): value is number[] {\n return isFiniteNumberArray(value) && value.length === length;\n}\n\nfunction isTaggedExpression(value: unknown): value is [number, unknown] {\n return Array.isArray(value) && value.length === 2 && Number.isInteger(value[0]);\n}\n\nfunction isIntegerInRange(value: unknown, minimum: number, maximum: number): value is number {\n return typeof value === 'number' && Number.isInteger(value) && value >= minimum && value <= maximum;\n}\n\nfunction isParticleShapeArcMode(value: unknown): value is ParticleShapeArcMode {\n return isIntegerInRange(value, 0, 3);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","_type_of","obj","Symbol","byteToHex","push","toString","slice","unsafeStringify","arr","offset","toLowerCase","getRandomValues","rnds8","Uint8Array","rng","crypto","Error","bind","randomUUID","_v4","options","buf","rnds","random","v4","native","HEX_COLOR_PATTERN","EPSILON","createId","replaceAll","colorToHex","color","colorChannels","hexParts","map","channel","byteValue","Math","max","min","round","padStart","join","normalizeHex","hexColor","normalizedHex","replace","red","green","blue","alpha","isHexEqual","leftHex","rightHex","isValidHexColor","value","test","hexToIRColor","hex","parseHexByte","resolveFiniteNumber","fallback","Number","isFinite","secondsToFrames","seconds","frameRate","isScalarEqual","leftValue","rightValue","abs","isNumberArrayEqual","leftValues","rightValues","every","index","isRecord","Array","isArray","toJSONPath","path","startsWith","parseInt","_set_prototype_of","o","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","create","writable","configurable","_instanceof","left","right","hasInstance","_is_native_reflect_construct","result","Boolean","valueOf","Reflect","construct","_","_construct","Parent","args","Class","a","Constructor","Function","instance","_get_prototype_of","getPrototypeOf","_is_native_function","fn","indexOf","_wrap_native_super","_cache","Map","undefined","has","get","set","Wrapper","enumerable","_array_like_to_array","len","arr2","_unsupported_iterable_to_array","minLen","n","name","from","_create_for_of_iterator_helper_loose","allowArrayLike","it","iterator","next","done","DSL_CODE_LABELS","R001","R002","R003","R004","M001","M002a","M002b","M002c","M002d","M002e","M002f","M003","M004","M005","M006","M007","L001","L002","L003","L004","L005","L006","L007","L008","L009","L010","L011","L012","L013","L014","L015","L016","L018","L019","L020","L021","L022","L023","L024","P001","P002","P003","P004","P005","P006","P007","P008","P009","P010","P011","P012","P013","P014","P015","C001","C002","C003","C004","C005","C006","C007","C008","C009","C010","C011","C012","C013","C014","C016","S002","S003","S004","X001","X002","X003","X004","X005","X006","A001","A002","A003","A004","A005","A006","A007","A008","A009","A010","A011","A012","A013","A014","A015","A016","A017","A018","A019","A020","A021","A022","A023","A024","A025","A026","PT001","PT002","PT003","PT004","PT005","PT006","PT007","PT008","PT009","ValueType","PARTICLE_SHAPE_NAMES","PARTICLE_SHAPE_BASE_FIELDS","PARTICLE_SHAPE_FIELDS_BY_TYPE","PARTICLE_SHAPE_NUMBER_FIELDS_BY_TYPE","lintParticle","particle","layer","particlePath","issues","reportUnknownFields","Set","hasOwn","checkParticleShapeValue","checkParticleOptionsValue","checkParticleEmissionValue","shapePath","addIssue","describeValueType","type","isIntegerInRange","expectedName","JSON","stringify","String","field","isFiniteNumber","isTaggedParticleShapeExpression","isFiniteNumberArray","isFiniteNumberTuple","checkParticleTextureShapeDetail","detailPath","optionsPath","maxCount","isInteger","isParticleNumberExpression","emissionPath","bursts","forEach","burst","checkParticleBurst","burstPath","time","duration","readLayerDuration","isNonNegativeInteger","cycles","interval","isPositiveInteger","fieldSet","code","keys","positive","expression","payload","CONSTANT","isParticleNumber","RANDOM","timeRange","minimum","maximum","message","SPATIAL_PROPERTIES","VALID_LAYER_TYPE_SET","VALID_ASSET_SOURCE_SET","lintDSL","dsl","context","containsCircularReference","createLintReport","checkRoot","checkMeta","entries","walkLayers","entry","checkLayerBase","checkProperties","checkLayerContent","checkLayerRelationships","validateDSL","coerced","coerceInput","createInputErrorResult","error","report","errors","filter","issue","severity","convertToValidationIssue","warnings","hasFailed","strict","summary","DSLValidationError","fromValidationResult","validationResult","firstCharacter","trimStart","parse","label","layerId","errorCount","warningCount","ok","hasErrors","counts","ERROR","WARNING","hasValue","meta","required","isNumber","isIntLike","expected","accepts","background","formatValue","fps","width","height","formatNumber","layers","visitLayer","physicalParentId","readLayerId","children","child","missingCode","typeCode","description","hasNumericTimeRange","got","start","end","propertyName","dimension","propertyPath","property","animated","hasAnimation","hasValueField","checkStaticValue","animation","animationPath","curves","curve","checkCurve","checkContinuity","segmentPath","isTimeRangeValid","isStartValid","checkCurveEndpoint","isEndValid","easing","tangent","t","validCurves","layerType","asset","hasAsset","hasParticle","checkAssetFields","text","assetPath","isAbsoluteResourceUrl","firstLayerById","layerCountById","logicalParentIdByLayer","parent","resolvedParentId","checkParentCycles","resolvedLayerSet","cycleEntries","currentId","current","visitedLayerIdSet","cycleStartIndex","pathEntries","findIndex","add","parentId","reportedCycleLayerSet","id","ancestorSet","WeakSet","hasCircularChild","values","some","delete","object","URL","item","isNaN","Infinity","assembleDSLResult","baselineScene","baselineComposition","dslLayerByIRId","layerMapping","diagnostics","assembleDSLHierarchy","outPoint","inPoint","loop","endBehavior","IREndBehavior","Loop","background_color","backgroundColor","preservedData","sourceLayers","rootLayers","sourceLayer","convertedLayer","parentLayerId","parentLayer","unshift","mapDSLParticleExpressionToIR","mapIRParticleExpressionToDSL","keyframes","isDSLCompatibleParticleExpression","isDSLNumberExpressionEqual","is","TRANSFORM_FALLBACK","position","rotation","scale","anchor","opacity","getLayerStackingOrder","withPositionZ","depth","structuredClone","segment","convertIRParticleToDSL","layerPath","convertExpression","fieldPath","action","sourceId","feature","content","maxParticles","startLifetime","emission","rateOverTime","frameOffset","count","cycleCount","repeatIntervalFrames","LINEAR_EASING","convertIRLayersToDSL","assets","imageAssetById","fontAssetById","layerIndex","convertIRLayerToDSL","irCompositionId","irLayerId","collectDiagnostics","isVisualLayerWithoutAsset","size","resolveLayerSize","convertIRAssetToDSL","mapLayerType","self","composite","time_range","inFrame","outFrame","convertIRVec3PropertyToDSL","transform","convertIRLayerRotationToDSL","convertIRNumberPropertyToDSL","convertIRTextToDSL","localBounds","imageAsset","assetId","url","getIRResourceSourceUrl","prompt","fontAsset","fontAssetId","font","family","fontSize","textAlign","align","line_height","lineHeight","letterSpacing","letter_spacing","convertIRRotationToDSL","rotationChannels","x","y","z","animatedChannels","readNumberStatic","isRotationChannelSetAligned","templateChannel","keyframe","hasEndValue","endValue","frame","readAlignedRotationValue","readAlignedRotationEndValue","hold","inTangent","outTangent","convertIRKeyframesToDSLProperty","keyframeFrameSet","sortedFrames","sort","leftFrame","rightFrame","readNumberAtFrame","isRotationKeyframeAligned","isBezierHandleEqual","readAlignedAxisValue","readAlignedAxisEndValue","includeSpatialTangents","keyframeIndex","currentKeyframe","nextKeyframe","convertIRPropertyValueToArray","spatialOut","out","convertIRSpatialTangentToDSL","spatialIn","in","find","candidate","preservedFields","unsupportedFeatures","collectPreservedField","visible","blendMode","mask","matte","shapes","uniquePreservedFields","uniqueUnsupportedFeatures","fieldName","expandDSLPrecompositions","dslResult","convertIRSceneEntryToDSL","irScene","compositionById","compositions","composition","visitedCompositionIdSet","entryCompositionId","expandPrecompLayerTree","getIRSceneEntryComposition","sourceComposition","layerById","referencedComposition","resolveReferencedComposition","expandPrecompChildren","childScene","childResult","prefix","sanitizeIdPart","cloneExpandedLayers","childLayerMapping","targetLayerMapping","expandedLayerIdBySourceId","buildExpandedLayerIdBySourceId","cloneExpandedLayer","fallbackParentId","clonedLayer","expandedLayerId","childLayer","registerExpandedLayer","sourceLayerId","expandedLayer","childMapping","expandedSource","baselineTransform","baselineLayer","dslLayerId","mapping","compositionId","convertIRToDSL","assertIRScene","baselineSnapshot","validateConvertedDSL","warning","convertedLayers","convertDSLPropertyToIRVec3","convertDSLCurvesToIRKeyframes","convertDSLValueToIRVec3","convertDSLPropertyToStaticIRVec3","convertDSLPropertyToIRNumber","convertDSLValueToIRNumber","convertDSLPropertyToIRRotation","rotationVector","projectVectorAxis","axisIndex","animationCurves","convertValue","startValue","convertDSLSpatialTangentToIR","startKeyframe","endKeyframe","appendOrMergeKeyframe","normalizeKeyframeOrder","sortedKeyframes","normalizedKeyframes","previousKeyframe","DEFAULT_FONT_FAMILY","normalizeDSLFontFamily","normalizedFamily","trim","ensureSystemFontAsset","style","weight","existingAsset","kind","estimateTextBounds","resolveAssetUrl","encodeURIComponent","svg","TEXT_PROPERTY_FIELDS","isAnimatedPropertyEqual","leftProperty","rightProperty","toNumberArray","curveIndex","isAnimationCurveEqual","collectTextPropertyChanges","baselineText","editedText","changes","oldValue","newValue","isEqual","readTextProperties","isAssetEqual","leftAsset","rightAsset","leftCurve","rightCurve","convertDSLParticleToIRContent","mapDSLParticleBurstsToIR","updateIRParticle","irLayer","editedLayer","reportChange","editedParticle","baselineParticle","previousValue","op","areParticleBurstsEqual","updatedBursts","other","updateIRLayer","dslPath","reportWarning","previousName","reportUnsupportedLayerEdit","updateIRTransform","updateIRTiming","updateIRText","updateIRLocalBounds","updateIRAsset","previousBounds","estimatedBounds","fallbackWidth","fallbackHeight","updatedBounds","formattedMessage","ensureTransform","sourcePosition","depths","flatMap","constantDepth","previousTime","normalizedEditedText","normalizeTextPropertiesForIR","textChanges","previousText","currentFontAsset","resolveFontAsset","change","buildUpdatedTextData","currentText","currentFontSize","fontFamily","editedUrl","baselineUrl","previousUrl","countImageAssetReferences","clonedAssetId","createAvailableRecombineAssetId","createIRResourceSource","reduce","existingAssetIdSet","updateLayerOrder","updatedIR","editedLayers","irLayerIdByEditedLayer","rootDSLParentId","irLayerById","childIRLayerIdsByParentIRLayerId","childLayerIds","updateSiblingGroups","siblingLayers","updateIRSiblingOrder","sibling","parentIRLayerId","expectedParentId","orderedSiblings","subtreeLayerIdSet","collectIRSubtreeLayerIds","ownerByIRLayerId","currentIROrder","collectOwnerOrder","currentDSLOrder","reverse","isOwnerOrderEqual","reorderedLayers","reorderOwnedEntries","changedParentLayerId","rootLayerId","childLayerId","resolveOwner","owners","owner","includes","orderedOwners","entriesByOwner","reorderedOwnedEntries","reorderedIndex","updateValidatedIRFromDSL","editedDocument","matchEditedLayer","editedLayerById","editedLayerByPath","matchedEditedLayerSet","expandedComposition","deletedExpandedIRLayerIdsByCompositionId","deletedIds","semanticallyDeletedExpandedDSLIds","deletedIRLayerIdSet","clonedLayerByIRId","updatedScene","targetFrameRate","editedPathByLayer","mappingEntry","targetComposition","targetLayer","buildExpandedBaselineLayer","expandedIRLayerIdByEditedLayer","editedExpandedCompositionById","createWarningReporter","onWarning","createChangeReporter","onChange","baselineDSLResult","baselineDSL","editedDSL","updateIRFrameRate","updateIRComposition","baselineLayers","collectLayersWithPaths","editedLayerEntries","previousEntry","removeIRLayers","deletedLayerIds","updateExpandedCompositionLayerOrder","baseline","firstExpandedSource","layerByPath","level","normalizedChange","note","previousMatte","reportCompositionChange","previousFrameRate","frameRateScale","sourceStartFrame","reframeAnimatedProperty","baselineMeta","previousWidth","previousHeight","baselineLoop","Destroy","baselineBackgroundColor","editedBackgroundColor","convertDSLToIRWithPreservedData","assertIRToDSLPreservedData","scene","assertLayerMapping","isExpandedLayerSource","layerEntries","assembleIRComposition","durationFrames","convertDSLLayersToIR","imageAssets","fontAssets","flattenedLayers","flattenLayersInRenderOrder","irLayerIdByDSLId","convertLayerIdToIR","nestedParentId","convertLayerToIR","compositionDurationSeconds","imageAssetId","textContent","convertTextData","particleContent","requireParticleProperties","convertLayerTime","convertDSLPositionToIR","resolveTextLocalBounds","isIRId","orderedLayers","localeCompare","startSeconds","endSeconds","convertDSLToIR","reportDSLValidationWarnings","preservedResult","createIRScene","parseParticleShape","shape","projectDirectionExpressions","upDirection","base","projectShapeBase","radial","projectRadialFields","angle","readFiniteNumber","donutRadius","rectangle","projectRectangleFields","projectTextureShape","radius","arc","detail","projectTextureShapeDetail","block","anchors","arcMode","isParticleShapeArcMode","alignSpeedDirection","isTaggedExpression"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17]}
|