BaseElement.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import {
  2. createElementID,
  3. getExpressionInterfaces,
  4. } from '../utils/common';
  5. import getBlendMode from '../utils/helpers/blendModes';
  6. import EffectsManager from '../EffectsManager';
  7. function BaseElement() {
  8. }
  9. BaseElement.prototype = {
  10. checkMasks: function () {
  11. if (!this.data.hasMask) {
  12. return false;
  13. }
  14. var i = 0;
  15. var len = this.data.masksProperties.length;
  16. while (i < len) {
  17. if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {
  18. return true;
  19. }
  20. i += 1;
  21. }
  22. return false;
  23. },
  24. initExpressions: function () {
  25. const expressionsInterfaces = getExpressionInterfaces();
  26. if (!expressionsInterfaces) {
  27. return;
  28. }
  29. const LayerExpressionInterface = expressionsInterfaces('layer');
  30. const EffectsExpressionInterface = expressionsInterfaces('effects');
  31. const ShapeExpressionInterface = expressionsInterfaces('shape');
  32. const TextExpressionInterface = expressionsInterfaces('text');
  33. const CompExpressionInterface = expressionsInterfaces('comp');
  34. this.layerInterface = LayerExpressionInterface(this);
  35. if (this.data.hasMask && this.maskManager) {
  36. this.layerInterface.registerMaskInterface(this.maskManager);
  37. }
  38. var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);
  39. this.layerInterface.registerEffectsInterface(effectsInterface);
  40. if (this.data.ty === 0 || this.data.xt) {
  41. this.compInterface = CompExpressionInterface(this);
  42. } else if (this.data.ty === 4) {
  43. this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);
  44. this.layerInterface.content = this.layerInterface.shapeInterface;
  45. } else if (this.data.ty === 5) {
  46. this.layerInterface.textInterface = TextExpressionInterface(this);
  47. this.layerInterface.text = this.layerInterface.textInterface;
  48. }
  49. },
  50. setBlendMode: function () {
  51. var blendModeValue = getBlendMode(this.data.bm);
  52. var elem = this.baseElement || this.layerElement;
  53. elem.style['mix-blend-mode'] = blendModeValue;
  54. },
  55. initBaseData: function (data, globalData, comp) {
  56. this.globalData = globalData;
  57. this.comp = comp;
  58. this.data = data;
  59. this.layerId = createElementID();
  60. // Stretch factor for old animations missing this property.
  61. if (!this.data.sr) {
  62. this.data.sr = 1;
  63. }
  64. // effects manager
  65. this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);
  66. },
  67. getType: function () {
  68. return this.type;
  69. },
  70. sourceRectAtTime: function () {},
  71. };
  72. export default BaseElement;