112 lines
3.2 KiB
Plaintext
112 lines
3.2 KiB
Plaintext
|
import ExpressionPropertyInterface from './ExpressionValueFactory';
|
||
|
import propertyGroupFactory from './PropertyGroupFactory';
|
||
|
import PropertyInterface from './PropertyInterface';
|
||
|
|
||
|
const EffectsExpressionInterface = (function () {
|
||
|
var ob = {
|
||
|
createEffectsInterface: createEffectsInterface,
|
||
|
};
|
||
|
|
||
|
function createEffectsInterface(elem, propertyGroup) {
|
||
|
if (elem.effectsManager) {
|
||
|
var effectElements = [];
|
||
|
var effectsData = elem.data.ef;
|
||
|
var i;
|
||
|
var len = elem.effectsManager.effectElements.length;
|
||
|
for (i = 0; i < len; i += 1) {
|
||
|
effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));
|
||
|
}
|
||
|
|
||
|
var effects = elem.data.ef || [];
|
||
|
var groupInterface = function (name) {
|
||
|
i = 0;
|
||
|
len = effects.length;
|
||
|
while (i < len) {
|
||
|
if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {
|
||
|
return effectElements[i];
|
||
|
}
|
||
|
i += 1;
|
||
|
}
|
||
|
return null;
|
||
|
};
|
||
|
Object.defineProperty(groupInterface, 'numProperties', {
|
||
|
get: function () {
|
||
|
return effects.length;
|
||
|
},
|
||
|
});
|
||
|
return groupInterface;
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
function createGroupInterface(data, elements, propertyGroup, elem) {
|
||
|
function groupInterface(name) {
|
||
|
var effects = data.ef;
|
||
|
var i = 0;
|
||
|
var len = effects.length;
|
||
|
while (i < len) {
|
||
|
if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {
|
||
|
if (effects[i].ty === 5) {
|
||
|
return effectElements[i];
|
||
|
}
|
||
|
return effectElements[i]();
|
||
|
}
|
||
|
i += 1;
|
||
|
}
|
||
|
throw new Error();
|
||
|
}
|
||
|
var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);
|
||
|
|
||
|
var effectElements = [];
|
||
|
var i;
|
||
|
var len = data.ef.length;
|
||
|
for (i = 0; i < len; i += 1) {
|
||
|
if (data.ef[i].ty === 5) {
|
||
|
effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));
|
||
|
} else {
|
||
|
effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (data.mn === 'ADBE Color Control') {
|
||
|
Object.defineProperty(groupInterface, 'color', {
|
||
|
get: function () {
|
||
|
return effectElements[0]();
|
||
|
},
|
||
|
});
|
||
|
}
|
||
|
Object.defineProperties(groupInterface, {
|
||
|
numProperties: {
|
||
|
get: function () {
|
||
|
return data.np;
|
||
|
},
|
||
|
},
|
||
|
_name: { value: data.nm },
|
||
|
propertyGroup: { value: _propertyGroup },
|
||
|
});
|
||
|
groupInterface.enabled = data.en !== 0;
|
||
|
groupInterface.active = groupInterface.enabled;
|
||
|
return groupInterface;
|
||
|
}
|
||
|
|
||
|
function createValueInterface(element, type, elem, propertyGroup) {
|
||
|
var expressionProperty = ExpressionPropertyInterface(element.p);
|
||
|
function interfaceFunction() {
|
||
|
if (type === 10) {
|
||
|
return elem.comp.compInterface(element.p.v);
|
||
|
}
|
||
|
return expressionProperty();
|
||
|
}
|
||
|
|
||
|
if (element.p.setGroupProperty) {
|
||
|
element.p.setGroupProperty(PropertyInterface('', propertyGroup));
|
||
|
}
|
||
|
|
||
|
return interfaceFunction;
|
||
|
}
|
||
|
|
||
|
return ob;
|
||
|
}());
|
||
|
|
||
|
export default EffectsExpressionInterface;
|