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