@vvfx/ge-ir 0.0.1-beta.2 → 0.0.1-beta.3
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/dist/ge2ir/types.d.ts +2 -0
- package/dist/index.js +373 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +373 -25
- package/dist/index.mjs.map +1 -1
- package/dist/ir2ge/builders/layer.d.ts +1 -0
- package/dist/shared/ge2ir-metadata.d.ts +14 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects and animation IR bidirectional conversion package
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 澄弈
|
|
6
|
-
* Version: v0.0.1-beta.
|
|
6
|
+
* Version: v0.0.1-beta.3
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import { IRBlendMode, IRShapePrimitiveType, IRFillType, IRLineCap, IRLineJoin, IRShapeFillRule, IREndBehavior, validateIRCompositionWithWarnings } from '@vvfx/animation-ir';
|
|
@@ -21,6 +21,11 @@ function _extends() {
|
|
|
21
21
|
return _extends.apply(this, arguments);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
function _type_of(obj) {
|
|
25
|
+
"@swc/helpers - typeof";
|
|
26
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
27
|
+
}
|
|
28
|
+
|
|
24
29
|
function _array_like_to_array(arr, len) {
|
|
25
30
|
if (len == null || len > arr.length) len = arr.length;
|
|
26
31
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
@@ -124,6 +129,9 @@ var DEFAULT_CLIP_MODE = 1;
|
|
|
124
129
|
var childTrackIds = [];
|
|
125
130
|
childTrackIds.push(toDataPath(buildActivationTrack(collector, delay, duration, endBehavior)));
|
|
126
131
|
childTrackIds.push(toDataPath(buildTransformTrack(collector, delay, duration, endBehavior, animation)));
|
|
132
|
+
if (isPrecompItemType(itemType)) {
|
|
133
|
+
childTrackIds.push(toDataPath(buildSubCompositionTrack(collector, delay, duration, endBehavior)));
|
|
134
|
+
}
|
|
127
135
|
if (!isNullItemType(itemType)) {
|
|
128
136
|
childTrackIds.push(toDataPath(buildSpriteColorTrack(collector, delay, duration, endBehavior, animation)));
|
|
129
137
|
}
|
|
@@ -136,7 +144,10 @@ var DEFAULT_CLIP_MODE = 1;
|
|
|
136
144
|
return objectBindingTrackId;
|
|
137
145
|
}
|
|
138
146
|
function isNullItemType(itemType) {
|
|
139
|
-
return itemType === 'null' || itemType === '3';
|
|
147
|
+
return itemType === 'null' || itemType === '3' || isPrecompItemType(itemType);
|
|
148
|
+
}
|
|
149
|
+
function isPrecompItemType(itemType) {
|
|
150
|
+
return itemType === 'precomp' || itemType === '7';
|
|
140
151
|
}
|
|
141
152
|
function buildActivationTrack(collector, delay, duration, endBehavior) {
|
|
142
153
|
var assetId = createId();
|
|
@@ -224,6 +235,28 @@ function buildSpriteColorTrack(collector, delay, duration, endBehavior, animatio
|
|
|
224
235
|
});
|
|
225
236
|
return trackId;
|
|
226
237
|
}
|
|
238
|
+
function buildSubCompositionTrack(collector, delay, duration, endBehavior) {
|
|
239
|
+
var assetId = createId();
|
|
240
|
+
collector.miscs.push({
|
|
241
|
+
id: assetId,
|
|
242
|
+
dataType: 'SubCompositionPlayableAsset'
|
|
243
|
+
});
|
|
244
|
+
var trackId = createId();
|
|
245
|
+
collector.miscs.push({
|
|
246
|
+
id: trackId,
|
|
247
|
+
dataType: 'SubCompositionTrack',
|
|
248
|
+
children: [],
|
|
249
|
+
clips: [
|
|
250
|
+
{
|
|
251
|
+
start: roundNumber(delay, 4),
|
|
252
|
+
duration: roundNumber(duration, 4),
|
|
253
|
+
endBehavior: endBehavior,
|
|
254
|
+
asset: toDataPath(assetId)
|
|
255
|
+
}
|
|
256
|
+
]
|
|
257
|
+
});
|
|
258
|
+
return trackId;
|
|
259
|
+
}
|
|
227
260
|
|
|
228
261
|
var DEFAULT_OUT_TANGENT = {
|
|
229
262
|
x: 0.33,
|
|
@@ -772,11 +805,6 @@ function getTimeContext(layer) {
|
|
|
772
805
|
};
|
|
773
806
|
}
|
|
774
807
|
|
|
775
|
-
function _type_of(obj) {
|
|
776
|
-
"@swc/helpers - typeof";
|
|
777
|
-
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
778
|
-
}
|
|
779
|
-
|
|
780
808
|
function readGE2IRMetadata(ir, layer) {
|
|
781
809
|
if (ir.source !== 'ge') {
|
|
782
810
|
return undefined;
|
|
@@ -786,7 +814,7 @@ function readGE2IRMetadata(ir, layer) {
|
|
|
786
814
|
return undefined;
|
|
787
815
|
}
|
|
788
816
|
var namespaced = metadata['ge2ir'];
|
|
789
|
-
if (isRecord$
|
|
817
|
+
if (isRecord$4(namespaced)) {
|
|
790
818
|
return namespaced;
|
|
791
819
|
}
|
|
792
820
|
var legacy = readLegacyGE2IRMetadata(metadata);
|
|
@@ -800,27 +828,46 @@ function readLegacyGE2IRMetadata(metadata) {
|
|
|
800
828
|
var colorOverLifetime = metadata['colorOverLifetime'];
|
|
801
829
|
var geComponentId = metadata['geComponentId'];
|
|
802
830
|
var geMask = metadata['geMask'];
|
|
803
|
-
|
|
831
|
+
var precompRefId = metadata['precompRefId'];
|
|
832
|
+
var precompContent = metadata['precompContent'];
|
|
833
|
+
if (isRecord$4(positionOverLifetime)) {
|
|
804
834
|
legacy.positionOverLifetime = positionOverLifetime;
|
|
805
835
|
}
|
|
806
|
-
if (isRecord$
|
|
836
|
+
if (isRecord$4(rotationOverLifetime)) {
|
|
807
837
|
legacy.rotationOverLifetime = rotationOverLifetime;
|
|
808
838
|
}
|
|
809
|
-
if (isRecord$
|
|
839
|
+
if (isRecord$4(sizeOverLifetime)) {
|
|
810
840
|
legacy.sizeOverLifetime = sizeOverLifetime;
|
|
811
841
|
}
|
|
812
|
-
if (isRecord$
|
|
842
|
+
if (isRecord$4(colorOverLifetime)) {
|
|
813
843
|
legacy.colorOverLifetime = colorOverLifetime;
|
|
814
844
|
}
|
|
815
845
|
if (typeof geComponentId === 'string') {
|
|
816
846
|
legacy.geComponentId = geComponentId;
|
|
817
847
|
}
|
|
818
|
-
if (isRecord$
|
|
848
|
+
if (isRecord$4(geMask)) {
|
|
819
849
|
legacy.geMask = geMask;
|
|
820
850
|
}
|
|
851
|
+
if (typeof precompRefId === 'string') {
|
|
852
|
+
legacy.precompRefId = precompRefId;
|
|
853
|
+
}
|
|
854
|
+
if (isRecord$4(precompContent)) {
|
|
855
|
+
legacy.precompContent = precompContent;
|
|
856
|
+
}
|
|
821
857
|
return legacy;
|
|
822
858
|
}
|
|
823
|
-
function
|
|
859
|
+
function readGE2IRCompositionMetadata(ir) {
|
|
860
|
+
if (ir.source !== 'ge') {
|
|
861
|
+
return undefined;
|
|
862
|
+
}
|
|
863
|
+
var metadata = ir.metadata;
|
|
864
|
+
if (metadata == null) {
|
|
865
|
+
return undefined;
|
|
866
|
+
}
|
|
867
|
+
var namespaced = metadata['ge2ir'];
|
|
868
|
+
return isRecord$4(namespaced) ? namespaced : undefined;
|
|
869
|
+
}
|
|
870
|
+
function isRecord$4(value) {
|
|
824
871
|
return value != null && (typeof value === "undefined" ? "undefined" : _type_of(value)) === 'object' && !Array.isArray(value);
|
|
825
872
|
}
|
|
826
873
|
|
|
@@ -1702,6 +1749,61 @@ function processNullLayer(layer, ctx) {
|
|
|
1702
1749
|
layerIndex: layerIndex
|
|
1703
1750
|
});
|
|
1704
1751
|
}
|
|
1752
|
+
function processPrecompLayer(layer, ctx) {
|
|
1753
|
+
var itemId = createId();
|
|
1754
|
+
var layerIndex = layer.index;
|
|
1755
|
+
ctx.layerToItemId[layerIndex] = itemId;
|
|
1756
|
+
var _computeLayerTiming = computeLayerTiming(layer, ctx.frameRate), delay = _computeLayerTiming.delay, layerDuration = _computeLayerTiming.layerDuration;
|
|
1757
|
+
var animation = buildTransformAnimation(layer, ctx);
|
|
1758
|
+
var position = computeStaticPosition(layer, ctx);
|
|
1759
|
+
var objectBindingTrackId = buildTimelineTracks(ctx.collector, delay, layerDuration, 4, animation, 'precomp');
|
|
1760
|
+
var geMetadata = readGE2IRMetadata(ctx.ir, layer);
|
|
1761
|
+
var content = buildPrecompContent(geMetadata == null ? void 0 : geMetadata.precompContent, geMetadata == null ? void 0 : geMetadata.precompRefId);
|
|
1762
|
+
var item = {
|
|
1763
|
+
id: itemId,
|
|
1764
|
+
dataType: 'VFXItemData',
|
|
1765
|
+
name: layer.name,
|
|
1766
|
+
duration: layerDuration,
|
|
1767
|
+
type: '7',
|
|
1768
|
+
visible: layer.visibility.enabled && !layer.visibility.hidden,
|
|
1769
|
+
endBehavior: 4,
|
|
1770
|
+
delay: delay,
|
|
1771
|
+
renderLevel: 'B+',
|
|
1772
|
+
content: content,
|
|
1773
|
+
components: [],
|
|
1774
|
+
transform: buildGETransform(position, [
|
|
1775
|
+
0,
|
|
1776
|
+
0,
|
|
1777
|
+
0
|
|
1778
|
+
], [
|
|
1779
|
+
1,
|
|
1780
|
+
1,
|
|
1781
|
+
1
|
|
1782
|
+
])
|
|
1783
|
+
};
|
|
1784
|
+
ctx.collector.items.push(item);
|
|
1785
|
+
ctx.processedItems.push({
|
|
1786
|
+
itemId: itemId,
|
|
1787
|
+
objectBindingTrackId: objectBindingTrackId,
|
|
1788
|
+
layerIndex: layerIndex
|
|
1789
|
+
});
|
|
1790
|
+
}
|
|
1791
|
+
function buildPrecompContent(rawContent, refId) {
|
|
1792
|
+
var content = rawContent != null ? cloneRecord(rawContent) : {};
|
|
1793
|
+
var rawOptions = content['options'];
|
|
1794
|
+
var options = isRecord$3(rawOptions) ? _extends({}, rawOptions) : {};
|
|
1795
|
+
if (refId != null) {
|
|
1796
|
+
options['refId'] = refId;
|
|
1797
|
+
}
|
|
1798
|
+
content['options'] = options;
|
|
1799
|
+
return content;
|
|
1800
|
+
}
|
|
1801
|
+
function cloneRecord(value) {
|
|
1802
|
+
return JSON.parse(JSON.stringify(value));
|
|
1803
|
+
}
|
|
1804
|
+
function isRecord$3(value) {
|
|
1805
|
+
return value != null && (typeof value === "undefined" ? "undefined" : _type_of(value)) === 'object' && !Array.isArray(value);
|
|
1806
|
+
}
|
|
1705
1807
|
/**
|
|
1706
1808
|
* Emit a null+sprite pair: the null carries the layer transform and sits at
|
|
1707
1809
|
* the layer's logical position; the sprite/text child carries the visual
|
|
@@ -2925,10 +3027,16 @@ function applyVisibilityStep(ir, state) {
|
|
|
2925
3027
|
});
|
|
2926
3028
|
collector.items.reverse();
|
|
2927
3029
|
processedItems.reverse();
|
|
2928
|
-
return assembleScene(workingIR, collector, processedItems, duration);
|
|
3030
|
+
return mergePreservedPrecompScene(assembleScene(workingIR, collector, processedItems, duration), workingIR);
|
|
2929
3031
|
}
|
|
2930
3032
|
function processLayer(layer, ctx) {
|
|
2931
|
-
if (layer.type === '
|
|
3033
|
+
if (layer.type === 'precomp') {
|
|
3034
|
+
if (hasGEPrecompMetadata(ctx.ir, layer)) {
|
|
3035
|
+
processPrecompLayer(layer, ctx);
|
|
3036
|
+
} else {
|
|
3037
|
+
processNullLayer(layer, ctx);
|
|
3038
|
+
}
|
|
3039
|
+
} else if (layer.type === 'null') {
|
|
2932
3040
|
processNullLayer(layer, ctx);
|
|
2933
3041
|
} else if (ctx.parentIndexSet.has(layer.index)) {
|
|
2934
3042
|
processParentLayer(layer, ctx);
|
|
@@ -2936,6 +3044,10 @@ function processLayer(layer, ctx) {
|
|
|
2936
3044
|
processVisualLayer(layer, ctx);
|
|
2937
3045
|
}
|
|
2938
3046
|
}
|
|
3047
|
+
function hasGEPrecompMetadata(ir, layer) {
|
|
3048
|
+
var metadata = readGE2IRMetadata(ir, layer);
|
|
3049
|
+
return (metadata == null ? void 0 : metadata.precompRefId) != null || (metadata == null ? void 0 : metadata.precompContent) != null;
|
|
3050
|
+
}
|
|
2939
3051
|
/**
|
|
2940
3052
|
* Extend parent layers' endFrame to cover transform-only children's time spans.
|
|
2941
3053
|
*
|
|
@@ -2973,6 +3085,209 @@ function processLayer(layer, ctx) {
|
|
|
2973
3085
|
}
|
|
2974
3086
|
return clonedLayers;
|
|
2975
3087
|
}
|
|
3088
|
+
function mergePreservedPrecompScene(generated, ir) {
|
|
3089
|
+
var _loop = function() {
|
|
3090
|
+
var pool = _step.value;
|
|
3091
|
+
result[pool] = mergePool(asArray(generated[pool]), asArray(sourceScene[pool]).filter(function(entry) {
|
|
3092
|
+
return !isExcludedPoolEntry(pool, entry, excluded);
|
|
3093
|
+
}));
|
|
3094
|
+
};
|
|
3095
|
+
var metadata = readGE2IRCompositionMetadata(ir);
|
|
3096
|
+
var sourceScene = metadata == null ? void 0 : metadata.sourceScene;
|
|
3097
|
+
if (sourceScene == null) {
|
|
3098
|
+
return generated;
|
|
3099
|
+
}
|
|
3100
|
+
var result = _extends({}, generated);
|
|
3101
|
+
var sourceCompositionId = metadata == null ? void 0 : metadata.sourceCompositionId;
|
|
3102
|
+
var excluded = collectRootCompositionIds(sourceScene, sourceCompositionId);
|
|
3103
|
+
var pools = [
|
|
3104
|
+
'images',
|
|
3105
|
+
'fonts',
|
|
3106
|
+
'plugins',
|
|
3107
|
+
'components',
|
|
3108
|
+
'geometries',
|
|
3109
|
+
'materials',
|
|
3110
|
+
'items',
|
|
3111
|
+
'shaders',
|
|
3112
|
+
'bins',
|
|
3113
|
+
'textures',
|
|
3114
|
+
'animations',
|
|
3115
|
+
'miscs'
|
|
3116
|
+
];
|
|
3117
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(pools), _step; !(_step = _iterator()).done;)_loop();
|
|
3118
|
+
result['compositions'] = mergePool(asRecordArray(generated['compositions']), asRecordArray(sourceScene['compositions']).filter(function(comp) {
|
|
3119
|
+
return comp['id'] !== sourceCompositionId;
|
|
3120
|
+
}));
|
|
3121
|
+
return result;
|
|
3122
|
+
}
|
|
3123
|
+
function collectRootCompositionIds(sourceScene, sourceCompositionId) {
|
|
3124
|
+
var excluded = {
|
|
3125
|
+
components: new Set(),
|
|
3126
|
+
items: new Set(),
|
|
3127
|
+
miscs: new Set()
|
|
3128
|
+
};
|
|
3129
|
+
if (sourceCompositionId == null) {
|
|
3130
|
+
return excluded;
|
|
3131
|
+
}
|
|
3132
|
+
var components = asRecordArray(sourceScene['components']);
|
|
3133
|
+
var items = asRecordArray(sourceScene['items']);
|
|
3134
|
+
var miscs = asRecordArray(sourceScene['miscs']);
|
|
3135
|
+
var componentById = indexById(components);
|
|
3136
|
+
var itemById = indexById(items);
|
|
3137
|
+
var miscById = indexById(miscs);
|
|
3138
|
+
var rootComposition = asRecordArray(sourceScene['compositions']).find(function(composition) {
|
|
3139
|
+
return composition['id'] === sourceCompositionId;
|
|
3140
|
+
});
|
|
3141
|
+
if (rootComposition == null) {
|
|
3142
|
+
return excluded;
|
|
3143
|
+
}
|
|
3144
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(asDataPathArray(rootComposition['components'])), _step; !(_step = _iterator()).done;){
|
|
3145
|
+
var componentRef = _step.value;
|
|
3146
|
+
var componentId = componentRef.id;
|
|
3147
|
+
var component = componentById.get(componentId);
|
|
3148
|
+
if (component == null) {
|
|
3149
|
+
continue;
|
|
3150
|
+
}
|
|
3151
|
+
excluded.components.add(componentId);
|
|
3152
|
+
for(var _iterator1 = _create_for_of_iterator_helper_loose(asDataPathArray(component['items'])), _step1; !(_step1 = _iterator1()).done;){
|
|
3153
|
+
var itemRef = _step1.value;
|
|
3154
|
+
collectItemAndOwnedComponents(itemRef.id, itemById, excluded);
|
|
3155
|
+
}
|
|
3156
|
+
var timelineAssetId = readDataPathId(component['timelineAsset']);
|
|
3157
|
+
if (timelineAssetId != null) {
|
|
3158
|
+
collectMiscGraph(timelineAssetId, miscById, excluded);
|
|
3159
|
+
}
|
|
3160
|
+
for(var _iterator2 = _create_for_of_iterator_helper_loose(asRecordArray(component['sceneBindings'])), _step2; !(_step2 = _iterator2()).done;){
|
|
3161
|
+
var binding = _step2.value;
|
|
3162
|
+
var trackId = readDataPathId(binding['key']);
|
|
3163
|
+
if (trackId != null) {
|
|
3164
|
+
collectMiscGraph(trackId, miscById, excluded);
|
|
3165
|
+
}
|
|
3166
|
+
}
|
|
3167
|
+
}
|
|
3168
|
+
return excluded;
|
|
3169
|
+
}
|
|
3170
|
+
function collectItemAndOwnedComponents(itemId, itemById, excluded) {
|
|
3171
|
+
var item = itemById.get(itemId);
|
|
3172
|
+
if (item == null || excluded.items.has(itemId)) {
|
|
3173
|
+
return;
|
|
3174
|
+
}
|
|
3175
|
+
excluded.items.add(itemId);
|
|
3176
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(asDataPathArray(item['components'])), _step; !(_step = _iterator()).done;){
|
|
3177
|
+
var componentRef = _step.value;
|
|
3178
|
+
excluded.components.add(componentRef.id);
|
|
3179
|
+
}
|
|
3180
|
+
}
|
|
3181
|
+
function collectMiscGraph(miscId, miscById, excluded) {
|
|
3182
|
+
if (excluded.miscs.has(miscId)) {
|
|
3183
|
+
return;
|
|
3184
|
+
}
|
|
3185
|
+
var misc = miscById.get(miscId);
|
|
3186
|
+
if (misc == null) {
|
|
3187
|
+
return;
|
|
3188
|
+
}
|
|
3189
|
+
excluded.miscs.add(miscId);
|
|
3190
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(asDataPathArray(misc['tracks'])), _step; !(_step = _iterator()).done;){
|
|
3191
|
+
var childRef = _step.value;
|
|
3192
|
+
collectMiscGraph(childRef.id, miscById, excluded);
|
|
3193
|
+
}
|
|
3194
|
+
for(var _iterator1 = _create_for_of_iterator_helper_loose(asDataPathArray(misc['children'])), _step1; !(_step1 = _iterator1()).done;){
|
|
3195
|
+
var childRef1 = _step1.value;
|
|
3196
|
+
collectMiscGraph(childRef1.id, miscById, excluded);
|
|
3197
|
+
}
|
|
3198
|
+
for(var _iterator2 = _create_for_of_iterator_helper_loose(asRecordArray(misc['clips'])), _step2; !(_step2 = _iterator2()).done;){
|
|
3199
|
+
var clip = _step2.value;
|
|
3200
|
+
var assetId = readDataPathId(clip['asset']);
|
|
3201
|
+
if (assetId != null) {
|
|
3202
|
+
collectMiscGraph(assetId, miscById, excluded);
|
|
3203
|
+
}
|
|
3204
|
+
}
|
|
3205
|
+
}
|
|
3206
|
+
function isExcludedPoolEntry(pool, entry, excluded) {
|
|
3207
|
+
if (!isRecord$2(entry)) {
|
|
3208
|
+
return false;
|
|
3209
|
+
}
|
|
3210
|
+
var id = entry['id'];
|
|
3211
|
+
if (typeof id !== 'string') {
|
|
3212
|
+
return false;
|
|
3213
|
+
}
|
|
3214
|
+
if (pool === 'components') {
|
|
3215
|
+
return excluded.components.has(id);
|
|
3216
|
+
}
|
|
3217
|
+
if (pool === 'items') {
|
|
3218
|
+
return excluded.items.has(id);
|
|
3219
|
+
}
|
|
3220
|
+
if (pool === 'miscs') {
|
|
3221
|
+
return excluded.miscs.has(id);
|
|
3222
|
+
}
|
|
3223
|
+
return false;
|
|
3224
|
+
}
|
|
3225
|
+
function mergePool(generated, preserved) {
|
|
3226
|
+
var result = [].concat(generated);
|
|
3227
|
+
var seen = new Set();
|
|
3228
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(result), _step; !(_step = _iterator()).done;){
|
|
3229
|
+
var entry = _step.value;
|
|
3230
|
+
var key = poolEntryKey(entry);
|
|
3231
|
+
if (key != null) {
|
|
3232
|
+
seen.add(key);
|
|
3233
|
+
}
|
|
3234
|
+
}
|
|
3235
|
+
for(var _iterator1 = _create_for_of_iterator_helper_loose(preserved), _step1; !(_step1 = _iterator1()).done;){
|
|
3236
|
+
var entry1 = _step1.value;
|
|
3237
|
+
var key1 = poolEntryKey(entry1);
|
|
3238
|
+
if (key1 != null) {
|
|
3239
|
+
if (seen.has(key1)) {
|
|
3240
|
+
continue;
|
|
3241
|
+
}
|
|
3242
|
+
seen.add(key1);
|
|
3243
|
+
}
|
|
3244
|
+
result.push(cloneJson$1(entry1));
|
|
3245
|
+
}
|
|
3246
|
+
return result;
|
|
3247
|
+
}
|
|
3248
|
+
function poolEntryKey(entry) {
|
|
3249
|
+
var id = isRecord$2(entry) ? entry['id'] : undefined;
|
|
3250
|
+
if (typeof id === 'string') {
|
|
3251
|
+
return "id:" + id;
|
|
3252
|
+
}
|
|
3253
|
+
return "json:" + JSON.stringify(entry);
|
|
3254
|
+
}
|
|
3255
|
+
function asArray(value) {
|
|
3256
|
+
return Array.isArray(value) ? value : [];
|
|
3257
|
+
}
|
|
3258
|
+
function asRecordArray(value) {
|
|
3259
|
+
return Array.isArray(value) ? value.filter(function(entry) {
|
|
3260
|
+
return entry != null && (typeof entry === "undefined" ? "undefined" : _type_of(entry)) === 'object' && !Array.isArray(entry);
|
|
3261
|
+
}) : [];
|
|
3262
|
+
}
|
|
3263
|
+
function asDataPathArray(value) {
|
|
3264
|
+
return Array.isArray(value) ? value.filter(function(entry) {
|
|
3265
|
+
return isRecord$2(entry) && typeof entry['id'] === 'string';
|
|
3266
|
+
}) : [];
|
|
3267
|
+
}
|
|
3268
|
+
function readDataPathId(value) {
|
|
3269
|
+
return isRecord$2(value) && typeof value['id'] === 'string' ? value['id'] : undefined;
|
|
3270
|
+
}
|
|
3271
|
+
function indexById(entries) {
|
|
3272
|
+
var map = new Map();
|
|
3273
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(entries), _step; !(_step = _iterator()).done;){
|
|
3274
|
+
var entry = _step.value;
|
|
3275
|
+
var id = entry['id'];
|
|
3276
|
+
if (typeof id === 'string') {
|
|
3277
|
+
map.set(id, entry);
|
|
3278
|
+
}
|
|
3279
|
+
}
|
|
3280
|
+
return map;
|
|
3281
|
+
}
|
|
3282
|
+
function cloneJson$1(value) {
|
|
3283
|
+
if (value === undefined) {
|
|
3284
|
+
return value;
|
|
3285
|
+
}
|
|
3286
|
+
return JSON.parse(JSON.stringify(value));
|
|
3287
|
+
}
|
|
3288
|
+
function isRecord$2(value) {
|
|
3289
|
+
return value != null && (typeof value === "undefined" ? "undefined" : _type_of(value)) === 'object' && !Array.isArray(value);
|
|
3290
|
+
}
|
|
2976
3291
|
|
|
2977
3292
|
function buildPoolIndex(pool) {
|
|
2978
3293
|
var map = new Map();
|
|
@@ -3070,6 +3385,7 @@ function buildSceneContext(scene, options) {
|
|
|
3070
3385
|
var textureById = buildPoolIndex(textures);
|
|
3071
3386
|
var itemIdToTrackId = buildSceneBindings(componentById, miscById, composition);
|
|
3072
3387
|
return {
|
|
3388
|
+
compositionId: compositionId,
|
|
3073
3389
|
width: width,
|
|
3074
3390
|
height: height,
|
|
3075
3391
|
frameRate: frameRate,
|
|
@@ -4333,7 +4649,7 @@ function hasParentTransformSignal(desc, ctx) {
|
|
|
4333
4649
|
return true;
|
|
4334
4650
|
}
|
|
4335
4651
|
var transform = desc.item['transform'];
|
|
4336
|
-
return isRecord(transform) && (hasNonDefaultScale(transform) || hasNonDefaultEulerHint(transform));
|
|
4652
|
+
return isRecord$1(transform) && (hasNonDefaultScale(transform) || hasNonDefaultEulerHint(transform));
|
|
4337
4653
|
}
|
|
4338
4654
|
function hasNoIndependentChildTransform(desc, ctx) {
|
|
4339
4655
|
var timeline = parseTimeline(desc.itemId, ctx);
|
|
@@ -4347,7 +4663,7 @@ function hasTransformPayload(asset) {
|
|
|
4347
4663
|
}
|
|
4348
4664
|
function hasNonDefaultScale(transform) {
|
|
4349
4665
|
var scale = transform['scale'];
|
|
4350
|
-
if (!isRecord(scale)) {
|
|
4666
|
+
if (!isRecord$1(scale)) {
|
|
4351
4667
|
return false;
|
|
4352
4668
|
}
|
|
4353
4669
|
var x = typeof scale['x'] === 'number' ? scale['x'] : 1;
|
|
@@ -4357,7 +4673,7 @@ function hasNonDefaultScale(transform) {
|
|
|
4357
4673
|
}
|
|
4358
4674
|
function hasNonDefaultEulerHint(transform) {
|
|
4359
4675
|
var eulerHint = transform['eulerHint'];
|
|
4360
|
-
if (!isRecord(eulerHint)) {
|
|
4676
|
+
if (!isRecord$1(eulerHint)) {
|
|
4361
4677
|
return false;
|
|
4362
4678
|
}
|
|
4363
4679
|
var x = typeof eulerHint['x'] === 'number' ? eulerHint['x'] : 0;
|
|
@@ -4366,7 +4682,7 @@ function hasNonDefaultEulerHint(transform) {
|
|
|
4366
4682
|
return Math.abs(x) > 1e-6 || Math.abs(y) > 1e-6 || Math.abs(z) > 1e-6;
|
|
4367
4683
|
}
|
|
4368
4684
|
function hasNonEmptyRecord(value) {
|
|
4369
|
-
return isRecord(value) && Object.keys(value).length > 0;
|
|
4685
|
+
return isRecord$1(value) && Object.keys(value).length > 0;
|
|
4370
4686
|
}
|
|
4371
4687
|
function readItemEndBehavior(item) {
|
|
4372
4688
|
var endBehavior = item['endBehavior'];
|
|
@@ -4375,7 +4691,7 @@ function readItemEndBehavior(item) {
|
|
|
4375
4691
|
function nearlyEqual(a, b) {
|
|
4376
4692
|
return Math.abs(a - b) < 1e-6;
|
|
4377
4693
|
}
|
|
4378
|
-
function isRecord(value) {
|
|
4694
|
+
function isRecord$1(value) {
|
|
4379
4695
|
return value != null && (typeof value === "undefined" ? "undefined" : _type_of(value)) === 'object' && !Array.isArray(value);
|
|
4380
4696
|
}
|
|
4381
4697
|
function mergeNullAndSprite(nullDesc, childDesc, ctx) {
|
|
@@ -4429,8 +4745,8 @@ function mergeNullAndSprite(nullDesc, childDesc, ctx) {
|
|
|
4429
4745
|
// side overwrites the other's GE round-trip data.
|
|
4430
4746
|
if (childDesc.layer.metadata != null) {
|
|
4431
4747
|
var _merged_metadata;
|
|
4432
|
-
var parentGE2IR = isRecord((_merged_metadata = merged.metadata) == null ? void 0 : _merged_metadata['ge2ir']) ? merged.metadata['ge2ir'] : undefined;
|
|
4433
|
-
var childGE2IR = isRecord(childDesc.layer.metadata['ge2ir']) ? childDesc.layer.metadata['ge2ir'] : undefined;
|
|
4748
|
+
var parentGE2IR = isRecord$1((_merged_metadata = merged.metadata) == null ? void 0 : _merged_metadata['ge2ir']) ? merged.metadata['ge2ir'] : undefined;
|
|
4749
|
+
var childGE2IR = isRecord$1(childDesc.layer.metadata['ge2ir']) ? childDesc.layer.metadata['ge2ir'] : undefined;
|
|
4434
4750
|
merged.metadata = _extends({}, merged.metadata, childDesc.layer.metadata);
|
|
4435
4751
|
if (parentGE2IR != null || childGE2IR != null) {
|
|
4436
4752
|
merged.metadata['ge2ir'] = _extends({}, parentGE2IR != null ? parentGE2IR : {}, childGE2IR != null ? childGE2IR : {});
|
|
@@ -4538,7 +4854,8 @@ function convertGEToIR(scene, options) {
|
|
|
4538
4854
|
outPoint: ctx.outPoint,
|
|
4539
4855
|
backgroundColor: ctx.backgroundColor,
|
|
4540
4856
|
endBehavior: ctx.endBehavior,
|
|
4541
|
-
layers: layers
|
|
4857
|
+
layers: layers,
|
|
4858
|
+
metadata: buildCompositionMetadata(scene, ctx.compositionId, itemIds, ctx)
|
|
4542
4859
|
};
|
|
4543
4860
|
}
|
|
4544
4861
|
function parseItemToLayer(item, itemId, index, ctx) {
|
|
@@ -4562,6 +4879,8 @@ function parseItemToLayer(item, itemId, index, ctx) {
|
|
|
4562
4879
|
type = 'shape';
|
|
4563
4880
|
} else if ((componentData == null ? void 0 : componentData.type) === 'image') {
|
|
4564
4881
|
type = 'image';
|
|
4882
|
+
} else if (geType === '7') {
|
|
4883
|
+
type = 'precomp';
|
|
4565
4884
|
} else if ((componentData == null ? void 0 : componentData.solidColor) != null) {
|
|
4566
4885
|
type = 'solid';
|
|
4567
4886
|
} else if (geType === '1') {
|
|
@@ -4752,7 +5071,9 @@ function parseItemToLayer(item, itemId, index, ctx) {
|
|
|
4752
5071
|
}
|
|
4753
5072
|
var geComponentId = componentData == null ? void 0 : componentData.geComponentId;
|
|
4754
5073
|
var rawMask = componentData == null ? void 0 : componentData.rawMask;
|
|
4755
|
-
|
|
5074
|
+
var precompContent = geType === '7' ? item['content'] : undefined;
|
|
5075
|
+
var precompRefId = isRecord(precompContent == null ? void 0 : precompContent['options']) ? precompContent['options']['refId'] : undefined;
|
|
5076
|
+
if (rawTransformPassthrough != null || rawColorOverLifetime != null || geComponentId != null || rawMask != null || typeof precompRefId === 'string' || precompContent != null) {
|
|
4756
5077
|
// Mask round-trip: geComponentId is the rendezvous key linking a target's
|
|
4757
5078
|
// mask.reference.id (a GE1 component id) to the regenerated GE2 component id.
|
|
4758
5079
|
// ir2ge copies ge2ir.geMask onto the rebuilt component and a post-process pass
|
|
@@ -4763,6 +5084,10 @@ function parseItemToLayer(item, itemId, index, ctx) {
|
|
|
4763
5084
|
geComponentId: geComponentId
|
|
4764
5085
|
}, rawMask != null && {
|
|
4765
5086
|
geMask: rawMask
|
|
5087
|
+
}, typeof precompRefId === 'string' && {
|
|
5088
|
+
precompRefId: precompRefId
|
|
5089
|
+
}, precompContent != null && {
|
|
5090
|
+
precompContent: cloneJson(precompContent)
|
|
4766
5091
|
});
|
|
4767
5092
|
layer.metadata = _extends({}, layer.metadata, {
|
|
4768
5093
|
ge2ir: ge2irMetadata
|
|
@@ -4770,6 +5095,29 @@ function parseItemToLayer(item, itemId, index, ctx) {
|
|
|
4770
5095
|
}
|
|
4771
5096
|
return layer;
|
|
4772
5097
|
}
|
|
5098
|
+
function buildCompositionMetadata(scene, compositionId, itemIds, ctx) {
|
|
5099
|
+
if (!hasPrecompItem(itemIds, ctx)) {
|
|
5100
|
+
return undefined;
|
|
5101
|
+
}
|
|
5102
|
+
return {
|
|
5103
|
+
ge2ir: {
|
|
5104
|
+
sourceCompositionId: compositionId,
|
|
5105
|
+
sourceScene: cloneJson(scene)
|
|
5106
|
+
}
|
|
5107
|
+
};
|
|
5108
|
+
}
|
|
5109
|
+
function hasPrecompItem(itemIds, ctx) {
|
|
5110
|
+
return itemIds.some(function(itemId) {
|
|
5111
|
+
var _ctx_itemById_get;
|
|
5112
|
+
return ((_ctx_itemById_get = ctx.itemById.get(itemId)) == null ? void 0 : _ctx_itemById_get['type']) === '7';
|
|
5113
|
+
});
|
|
5114
|
+
}
|
|
5115
|
+
function cloneJson(value) {
|
|
5116
|
+
return JSON.parse(JSON.stringify(value));
|
|
5117
|
+
}
|
|
5118
|
+
function isRecord(value) {
|
|
5119
|
+
return value != null && (typeof value === "undefined" ? "undefined" : _type_of(value)) === 'object' && !Array.isArray(value);
|
|
5120
|
+
}
|
|
4773
5121
|
|
|
4774
5122
|
/**
|
|
4775
5123
|
* Read-side accessors for the `IRLayerNode.specific.lottie` slot.
|