| var EffectsExpressionInterface = (function () { |
| var ob = { |
| createEffectsInterface: createEffectsInterface, |
| }; |
| |
| function createEffectsInterface(elem, propertyGroup) { |
| if (elem.effectsManager) { |
| |
| var effectElements = []; |
| var effectsData = elem.data.ef; |
| var i, 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; |
| } |
| }; |
| Object.defineProperty(groupInterface, 'numProperties', { |
| get: function () { |
| return effects.length; |
| }, |
| }); |
| return groupInterface; |
| } |
| } |
| |
| function createGroupInterface(data, elements, propertyGroup, elem) { |
| |
| function groupInterface(name) { |
| var effects = data.ef, i = 0, 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]; |
| } else { |
| return effectElements[i](); |
| } |
| } |
| i += 1; |
| } |
| throw new Error(); |
| }; |
| var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup); |
| |
| var effectElements = []; |
| var i, 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.active = groupInterface.enabled = data.en !== 0; |
| 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; |
| |
| }()); |