CompElement.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import {
  2. extendPrototype,
  3. } from '../utils/functionExtensions';
  4. import BaseElement from './BaseElement';
  5. import TransformElement from './helpers/TransformElement';
  6. import HierarchyElement from './helpers/HierarchyElement';
  7. import FrameElement from './helpers/FrameElement';
  8. import RenderableDOMElement from './helpers/RenderableDOMElement';
  9. function ICompElement() {}
  10. extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);
  11. ICompElement.prototype.initElement = function (data, globalData, comp) {
  12. this.initFrame();
  13. this.initBaseData(data, globalData, comp);
  14. this.initTransform(data, globalData, comp);
  15. this.initRenderable();
  16. this.initHierarchy();
  17. this.initRendererElement();
  18. this.createContainerElements();
  19. this.createRenderableComponents();
  20. if (this.data.xt || !globalData.progressiveLoad) {
  21. this.buildAllItems();
  22. }
  23. this.hide();
  24. };
  25. /* ICompElement.prototype.hide = function(){
  26. if(!this.hidden){
  27. this.hideElement();
  28. var i,len = this.elements.length;
  29. for( i = 0; i < len; i+=1 ){
  30. if(this.elements[i]){
  31. this.elements[i].hide();
  32. }
  33. }
  34. }
  35. }; */
  36. ICompElement.prototype.prepareFrame = function (num) {
  37. this._mdf = false;
  38. this.prepareRenderableFrame(num);
  39. this.prepareProperties(num, this.isInRange);
  40. if (!this.isInRange && !this.data.xt) {
  41. return;
  42. }
  43. if (!this.tm._placeholder) {
  44. var timeRemapped = this.tm.v;
  45. if (timeRemapped === this.data.op) {
  46. timeRemapped = this.data.op - 1;
  47. }
  48. this.renderedFrame = timeRemapped;
  49. } else {
  50. this.renderedFrame = num / this.data.sr;
  51. }
  52. var i;
  53. var len = this.elements.length;
  54. if (!this.completeLayers) {
  55. this.checkLayers(this.renderedFrame);
  56. }
  57. // This iteration needs to be backwards because of how expressions connect between each other
  58. for (i = len - 1; i >= 0; i -= 1) {
  59. if (this.completeLayers || this.elements[i]) {
  60. this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);
  61. if (this.elements[i]._mdf) {
  62. this._mdf = true;
  63. }
  64. }
  65. }
  66. };
  67. ICompElement.prototype.renderInnerContent = function () {
  68. var i;
  69. var len = this.layers.length;
  70. for (i = 0; i < len; i += 1) {
  71. if (this.completeLayers || this.elements[i]) {
  72. this.elements[i].renderFrame();
  73. }
  74. }
  75. };
  76. ICompElement.prototype.setElements = function (elems) {
  77. this.elements = elems;
  78. };
  79. ICompElement.prototype.getElements = function () {
  80. return this.elements;
  81. };
  82. ICompElement.prototype.destroyElements = function () {
  83. var i;
  84. var len = this.layers.length;
  85. for (i = 0; i < len; i += 1) {
  86. if (this.elements[i]) {
  87. this.elements[i].destroy();
  88. }
  89. }
  90. };
  91. ICompElement.prototype.destroy = function () {
  92. this.destroyElements();
  93. this.destroyBaseElement();
  94. };
  95. export default ICompElement;