@lumen5/lottie-web 5.14.0

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.
Files changed (300) hide show
  1. package/.babelrc.json +3 -0
  2. package/.eslintrc.json +46 -0
  3. package/.gitattributes +1 -0
  4. package/.github/FUNDING.yml +1 -0
  5. package/.github/ISSUE_TEMPLATE.md +22 -0
  6. package/.github/workflows/publish.yml +26 -0
  7. package/.github/workflows/testAnimations.yml +29 -0
  8. package/.github/workflows/updateScreenshots.yml +34 -0
  9. package/CHANGELOG.md +601 -0
  10. package/History.md +1230 -0
  11. package/LICENSE.md +21 -0
  12. package/README.md +351 -0
  13. package/bower.json +31 -0
  14. package/build/old_parser/bodymovin_parser.jsx +3023 -0
  15. package/build/old_parser/helperProject.aep +0 -0
  16. package/build/player/cjs/lottie.min.js +18229 -0
  17. package/build/player/cjs/lottie_canvas.min.js +16465 -0
  18. package/build/player/cjs/lottie_html.min.js +16312 -0
  19. package/build/player/cjs/lottie_light.min.js +11584 -0
  20. package/build/player/cjs/lottie_light_canvas.min.js +13518 -0
  21. package/build/player/cjs/lottie_light_html.min.js +12843 -0
  22. package/build/player/cjs/lottie_svg.min.js +15053 -0
  23. package/build/player/esm/lottie.min.js +18225 -0
  24. package/build/player/esm/lottie_canvas.min.js +16461 -0
  25. package/build/player/esm/lottie_html.min.js +16308 -0
  26. package/build/player/esm/lottie_light.min.js +11580 -0
  27. package/build/player/esm/lottie_light_canvas.min.js +13514 -0
  28. package/build/player/esm/lottie_light_html.min.js +12839 -0
  29. package/build/player/esm/lottie_svg.min.js +15049 -0
  30. package/build/player/lottie.d.ts +5 -0
  31. package/build/player/lottie.js +17151 -0
  32. package/build/player/lottie.min.js +1 -0
  33. package/build/player/lottie_canvas.js +15506 -0
  34. package/build/player/lottie_canvas.min.js +1 -0
  35. package/build/player/lottie_canvas_worker.js +18196 -0
  36. package/build/player/lottie_canvas_worker.min.js +15 -0
  37. package/build/player/lottie_html.d.ts +5 -0
  38. package/build/player/lottie_html.js +15354 -0
  39. package/build/player/lottie_html.min.js +1 -0
  40. package/build/player/lottie_light.d.ts +5 -0
  41. package/build/player/lottie_light.js +10854 -0
  42. package/build/player/lottie_light.min.js +1 -0
  43. package/build/player/lottie_light_canvas.d.ts +5 -0
  44. package/build/player/lottie_light_canvas.js +12666 -0
  45. package/build/player/lottie_light_canvas.min.js +1 -0
  46. package/build/player/lottie_light_html.d.ts +5 -0
  47. package/build/player/lottie_light_html.js +12029 -0
  48. package/build/player/lottie_light_html.min.js +1 -0
  49. package/build/player/lottie_svg.d.ts +5 -0
  50. package/build/player/lottie_svg.js +14179 -0
  51. package/build/player/lottie_svg.min.js +1 -0
  52. package/build/player/lottie_worker.js +18196 -0
  53. package/build/player/lottie_worker.min.js +15 -0
  54. package/docs/json/animation.json +101 -0
  55. package/docs/json/effects/angle.json +40 -0
  56. package/docs/json/effects/checkBox.json +40 -0
  57. package/docs/json/effects/color.json +40 -0
  58. package/docs/json/effects/customValue.json +4 -0
  59. package/docs/json/effects/dropDown.json +40 -0
  60. package/docs/json/effects/fill.json +55 -0
  61. package/docs/json/effects/group.json +41 -0
  62. package/docs/json/effects/index.json +51 -0
  63. package/docs/json/effects/layer.json +33 -0
  64. package/docs/json/effects/noValue.json +1 -0
  65. package/docs/json/effects/point.json +43 -0
  66. package/docs/json/effects/proLevels.json +130 -0
  67. package/docs/json/effects/slider.json +40 -0
  68. package/docs/json/effects/stroke.json +64 -0
  69. package/docs/json/effects/tint.json +43 -0
  70. package/docs/json/effects/tritone.json +46 -0
  71. package/docs/json/helpers/blendMode.json +71 -0
  72. package/docs/json/helpers/boolean.json +14 -0
  73. package/docs/json/helpers/composite.json +15 -0
  74. package/docs/json/helpers/lineCap.json +19 -0
  75. package/docs/json/helpers/lineJoin.json +19 -0
  76. package/docs/json/helpers/mask.json +80 -0
  77. package/docs/json/helpers/textBased.json +23 -0
  78. package/docs/json/helpers/textGrouping.json +23 -0
  79. package/docs/json/helpers/textShape.json +31 -0
  80. package/docs/json/helpers/transform.json +146 -0
  81. package/docs/json/layers/image.json +113 -0
  82. package/docs/json/layers/null.json +87 -0
  83. package/docs/json/layers/preComp.json +118 -0
  84. package/docs/json/layers/shape.json +157 -0
  85. package/docs/json/layers/solid.json +120 -0
  86. package/docs/json/layers/text.json +523 -0
  87. package/docs/json/properties/doubleKeyframe.json +50 -0
  88. package/docs/json/properties/multiDimensional.json +21 -0
  89. package/docs/json/properties/multiDimensionalKeyframed.json +35 -0
  90. package/docs/json/properties/offsetKeyframe.json +53 -0
  91. package/docs/json/properties/shape.json +27 -0
  92. package/docs/json/properties/shapeKeyframed.json +35 -0
  93. package/docs/json/properties/shapeProp.json +50 -0
  94. package/docs/json/properties/shapePropKeyframe.json +54 -0
  95. package/docs/json/properties/value.json +21 -0
  96. package/docs/json/properties/valueKeyframe.json +33 -0
  97. package/docs/json/properties/valueKeyframed.json +25 -0
  98. package/docs/json/shapes/ellipse.json +54 -0
  99. package/docs/json/shapes/fill.json +48 -0
  100. package/docs/json/shapes/gFill.json +107 -0
  101. package/docs/json/shapes/gStroke.json +137 -0
  102. package/docs/json/shapes/group.json +89 -0
  103. package/docs/json/shapes/merge.json +27 -0
  104. package/docs/json/shapes/rect.json +66 -0
  105. package/docs/json/shapes/repeater.json +63 -0
  106. package/docs/json/shapes/round.json +35 -0
  107. package/docs/json/shapes/shape.json +40 -0
  108. package/docs/json/shapes/star.json +133 -0
  109. package/docs/json/shapes/stroke.json +78 -0
  110. package/docs/json/shapes/transform.json +102 -0
  111. package/docs/json/shapes/trim.json +61 -0
  112. package/docs/json/sources/chars.json +61 -0
  113. package/docs/json/sources/image.json +31 -0
  114. package/docs/json/sources/precomp.json +39 -0
  115. package/index.d.ts +197 -0
  116. package/package.json +54 -0
  117. package/player/index.html +115 -0
  118. package/player/js/3rd_party/BezierEaser.js +158 -0
  119. package/player/js/3rd_party/howler.js +5 -0
  120. package/player/js/3rd_party/seedrandom.js +237 -0
  121. package/player/js/3rd_party/transformation-matrix.js +449 -0
  122. package/player/js/EffectsManager.js +83 -0
  123. package/player/js/animation/AnimationItem.js +809 -0
  124. package/player/js/animation/AnimationItemWorkerOverride.js +157 -0
  125. package/player/js/animation/AnimationManager.js +248 -0
  126. package/player/js/animation/AnimationManagerWorkerOverride.js +201 -0
  127. package/player/js/effects/EffectsManagerPlaceholder.js +5 -0
  128. package/player/js/effects/SliderEffect.js +37 -0
  129. package/player/js/effects/TransformEffect.js +44 -0
  130. package/player/js/elements/AudioElement.js +102 -0
  131. package/player/js/elements/BaseElement.js +78 -0
  132. package/player/js/elements/BaseTextElement.js +4 -0
  133. package/player/js/elements/CompElement.js +107 -0
  134. package/player/js/elements/FootageElement.js +47 -0
  135. package/player/js/elements/ImageElement.js +42 -0
  136. package/player/js/elements/NullElement.js +39 -0
  137. package/player/js/elements/ShapeElement.js +76 -0
  138. package/player/js/elements/SolidElement.js +23 -0
  139. package/player/js/elements/TextElement.js +94 -0
  140. package/player/js/elements/canvasElements/CVBaseElement.js +167 -0
  141. package/player/js/elements/canvasElements/CVCompBaseElement.js +11 -0
  142. package/player/js/elements/canvasElements/CVCompElement.js +57 -0
  143. package/player/js/elements/canvasElements/CVContextData.js +239 -0
  144. package/player/js/elements/canvasElements/CVEffects.js +57 -0
  145. package/player/js/elements/canvasElements/CVImageElement.js +58 -0
  146. package/player/js/elements/canvasElements/CVMaskElement.js +72 -0
  147. package/player/js/elements/canvasElements/CVShapeElement.js +521 -0
  148. package/player/js/elements/canvasElements/CVSolidElement.js +30 -0
  149. package/player/js/elements/canvasElements/CVTextElement.js +244 -0
  150. package/player/js/elements/canvasElements/effects/CVGaussianBlurEffect.js +29 -0
  151. package/player/js/elements/canvasElements/effects/CVTransformEffect.js +9 -0
  152. package/player/js/elements/helpers/FrameElement.js +54 -0
  153. package/player/js/elements/helpers/HierarchyElement.js +52 -0
  154. package/player/js/elements/helpers/RenderableDOMElement.js +72 -0
  155. package/player/js/elements/helpers/RenderableElement.js +87 -0
  156. package/player/js/elements/helpers/TransformElement.js +140 -0
  157. package/player/js/elements/helpers/shapes/CVShapeData.js +33 -0
  158. package/player/js/elements/helpers/shapes/ProcessedElement.js +6 -0
  159. package/player/js/elements/helpers/shapes/SVGElementsRenderer.js +239 -0
  160. package/player/js/elements/helpers/shapes/SVGFillStyleData.js +18 -0
  161. package/player/js/elements/helpers/shapes/SVGGradientFillStyleData.js +100 -0
  162. package/player/js/elements/helpers/shapes/SVGGradientStrokeStyleData.js +20 -0
  163. package/player/js/elements/helpers/shapes/SVGNoStyleData.js +15 -0
  164. package/player/js/elements/helpers/shapes/SVGShapeData.js +28 -0
  165. package/player/js/elements/helpers/shapes/SVGStrokeStyleData.js +21 -0
  166. package/player/js/elements/helpers/shapes/SVGStyleData.js +19 -0
  167. package/player/js/elements/helpers/shapes/SVGTransformData.js +11 -0
  168. package/player/js/elements/helpers/shapes/ShapeElement.js +5 -0
  169. package/player/js/elements/helpers/shapes/ShapeGroupData.js +9 -0
  170. package/player/js/elements/helpers/shapes/ShapeTransformManager.js +61 -0
  171. package/player/js/elements/htmlElements/HBaseElement.js +88 -0
  172. package/player/js/elements/htmlElements/HCameraElement.js +170 -0
  173. package/player/js/elements/htmlElements/HCompElement.js +61 -0
  174. package/player/js/elements/htmlElements/HEffects.js +3 -0
  175. package/player/js/elements/htmlElements/HImageElement.js +42 -0
  176. package/player/js/elements/htmlElements/HShapeElement.js +261 -0
  177. package/player/js/elements/htmlElements/HSolidElement.js +36 -0
  178. package/player/js/elements/htmlElements/HTextElement.js +290 -0
  179. package/player/js/elements/svgElements/SVGBaseElement.js +181 -0
  180. package/player/js/elements/svgElements/SVGCompElement.js +28 -0
  181. package/player/js/elements/svgElements/SVGEffects.js +70 -0
  182. package/player/js/elements/svgElements/SVGEffectsPlaceholder.js +3 -0
  183. package/player/js/elements/svgElements/SVGShapeElement.js +366 -0
  184. package/player/js/elements/svgElements/SVGTextElement.js +322 -0
  185. package/player/js/elements/svgElements/effects/SVGComposableEffect.js +22 -0
  186. package/player/js/elements/svgElements/effects/SVGDropShadowEffect.js +83 -0
  187. package/player/js/elements/svgElements/effects/SVGFillFilter.js +22 -0
  188. package/player/js/elements/svgElements/effects/SVGGaussianBlurEffect.js +44 -0
  189. package/player/js/elements/svgElements/effects/SVGMatte3Effect.js +101 -0
  190. package/player/js/elements/svgElements/effects/SVGProLevelsFilter.js +108 -0
  191. package/player/js/elements/svgElements/effects/SVGStrokeEffect.js +119 -0
  192. package/player/js/elements/svgElements/effects/SVGTintEffect.js +47 -0
  193. package/player/js/elements/svgElements/effects/SVGTransformEffect.js +10 -0
  194. package/player/js/elements/svgElements/effects/SVGTritoneFilter.js +43 -0
  195. package/player/js/main.js +21 -0
  196. package/player/js/mask.js +239 -0
  197. package/player/js/module.js +153 -0
  198. package/player/js/modules/canvas.js +22 -0
  199. package/player/js/modules/canvas_light.js +25 -0
  200. package/player/js/modules/full.js +70 -0
  201. package/player/js/modules/full_worker.js +0 -0
  202. package/player/js/modules/html.js +37 -0
  203. package/player/js/modules/html_light.js +25 -0
  204. package/player/js/modules/main.js +162 -0
  205. package/player/js/modules/svg.js +37 -0
  206. package/player/js/modules/svg_light.js +25 -0
  207. package/player/js/renderers/BaseRenderer.js +187 -0
  208. package/player/js/renderers/CanvasRenderer.js +67 -0
  209. package/player/js/renderers/CanvasRendererBase.js +318 -0
  210. package/player/js/renderers/CanvasRendererWorkerOverride.js +54 -0
  211. package/player/js/renderers/HybridRenderer.js +47 -0
  212. package/player/js/renderers/HybridRendererBase.js +344 -0
  213. package/player/js/renderers/SVGRenderer.js +82 -0
  214. package/player/js/renderers/SVGRendererBase.js +255 -0
  215. package/player/js/renderers/renderersManager.js +29 -0
  216. package/player/js/utils/BaseEvent.js +42 -0
  217. package/player/js/utils/DataManager.js +676 -0
  218. package/player/js/utils/DataManagerWorkerOverrides.js +13 -0
  219. package/player/js/utils/FontManager.js +443 -0
  220. package/player/js/utils/FontManagerWorkerOverride.js +16 -0
  221. package/player/js/utils/PolynomialBezier.js +253 -0
  222. package/player/js/utils/PropertyFactory.js +489 -0
  223. package/player/js/utils/SlotManager.js +17 -0
  224. package/player/js/utils/TransformProperty.js +251 -0
  225. package/player/js/utils/animationFramePolyFill.js +25 -0
  226. package/player/js/utils/asset_loader.js +53 -0
  227. package/player/js/utils/asset_loader_worker_override.js +3 -0
  228. package/player/js/utils/audio/AudioController.js +85 -0
  229. package/player/js/utils/audio/AudioElement.js +6 -0
  230. package/player/js/utils/bez.js +251 -0
  231. package/player/js/utils/common.js +280 -0
  232. package/player/js/utils/expressions/CompInterface.js +28 -0
  233. package/player/js/utils/expressions/EffectInterface.js +111 -0
  234. package/player/js/utils/expressions/ExpressionManager.js +752 -0
  235. package/player/js/utils/expressions/ExpressionPropertyDecorator.js +463 -0
  236. package/player/js/utils/expressions/ExpressionTextPropertyDecorator.js +40 -0
  237. package/player/js/utils/expressions/ExpressionValue.js +61 -0
  238. package/player/js/utils/expressions/ExpressionValueFactory.js +102 -0
  239. package/player/js/utils/expressions/Expressions.js +48 -0
  240. package/player/js/utils/expressions/FootageInterface.js +60 -0
  241. package/player/js/utils/expressions/InterfacesProvider.js +21 -0
  242. package/player/js/utils/expressions/LayerInterface.js +179 -0
  243. package/player/js/utils/expressions/MaskInterface.js +50 -0
  244. package/player/js/utils/expressions/ProjectInterface.js +31 -0
  245. package/player/js/utils/expressions/PropertyGroupFactory.js +13 -0
  246. package/player/js/utils/expressions/PropertyInterface.js +19 -0
  247. package/player/js/utils/expressions/ShapeInterface.js +543 -0
  248. package/player/js/utils/expressions/TextInterface.js +35 -0
  249. package/player/js/utils/expressions/TextSelectorPropertyDecorator.js +44 -0
  250. package/player/js/utils/expressions/TransformInterface.js +126 -0
  251. package/player/js/utils/expressions/expressionHelpers.js +86 -0
  252. package/player/js/utils/expressions/shapes/ShapePathInterface.js +47 -0
  253. package/player/js/utils/featureSupport.js +16 -0
  254. package/player/js/utils/filters.js +32 -0
  255. package/player/js/utils/functionExtensions.js +27 -0
  256. package/player/js/utils/getFontProperties.js +42 -0
  257. package/player/js/utils/helpers/arrays.js +43 -0
  258. package/player/js/utils/helpers/assetManager.js +96 -0
  259. package/player/js/utils/helpers/blendModes.js +26 -0
  260. package/player/js/utils/helpers/bufferManager.js +61 -0
  261. package/player/js/utils/helpers/dynamicProperties.js +29 -0
  262. package/player/js/utils/helpers/effectTypes.js +3 -0
  263. package/player/js/utils/helpers/html_elements.js +6 -0
  264. package/player/js/utils/helpers/propTypes.js +3 -0
  265. package/player/js/utils/helpers/shapeEnums.js +16 -0
  266. package/player/js/utils/helpers/svg_elements.js +8 -0
  267. package/player/js/utils/imagePreloader.js +213 -0
  268. package/player/js/utils/imagePreloaderWorkerOverride.js +3 -0
  269. package/player/js/utils/markers/markerParser.js +47 -0
  270. package/player/js/utils/pooling/bezier_length_pool.js +20 -0
  271. package/player/js/utils/pooling/point_pool.js +13 -0
  272. package/player/js/utils/pooling/pool_factory.js +44 -0
  273. package/player/js/utils/pooling/pooling.js +15 -0
  274. package/player/js/utils/pooling/segments_length_pool.js +24 -0
  275. package/player/js/utils/pooling/shapeCollection_pool.js +48 -0
  276. package/player/js/utils/pooling/shape_pool.js +44 -0
  277. package/player/js/utils/shapes/DashProperty.js +63 -0
  278. package/player/js/utils/shapes/GradientProperty.js +93 -0
  279. package/player/js/utils/shapes/MouseModifier.js +222 -0
  280. package/player/js/utils/shapes/OffsetPathModifier.js +306 -0
  281. package/player/js/utils/shapes/PuckerAndBloatModifier.js +80 -0
  282. package/player/js/utils/shapes/RepeaterModifier.js +232 -0
  283. package/player/js/utils/shapes/RoundCornersModifier.js +122 -0
  284. package/player/js/utils/shapes/ShapeCollection.js +29 -0
  285. package/player/js/utils/shapes/ShapeModifiers.js +71 -0
  286. package/player/js/utils/shapes/ShapePath.js +100 -0
  287. package/player/js/utils/shapes/ShapeProperty.js +546 -0
  288. package/player/js/utils/shapes/TrimModifier.js +359 -0
  289. package/player/js/utils/shapes/ZigZagModifier.js +174 -0
  290. package/player/js/utils/shapes/shapePathBuilder.js +20 -0
  291. package/player/js/utils/text/LetterProps.js +60 -0
  292. package/player/js/utils/text/TextAnimatorDataProperty.js +34 -0
  293. package/player/js/utils/text/TextAnimatorProperty.js +610 -0
  294. package/player/js/utils/text/TextProperty.js +461 -0
  295. package/player/js/utils/text/TextSelectorProperty.js +179 -0
  296. package/player/js/worker_wrapper.js +1029 -0
  297. package/rollup.config.js +215 -0
  298. package/tasks/build.js +773 -0
  299. package/tasks/build_worker.js +164 -0
  300. package/tasks/watch.js +34 -0
@@ -0,0 +1,213 @@
1
+ import { isSafari } from './common';
2
+ import createNS from './helpers/svg_elements';
3
+ import dataManager from './DataManager';
4
+ import createTag from './helpers/html_elements';
5
+
6
+ const ImagePreloader = (function () {
7
+ var proxyImage = (function () {
8
+ var canvas = createTag('canvas');
9
+ canvas.width = 1;
10
+ canvas.height = 1;
11
+ var ctx = canvas.getContext('2d');
12
+ ctx.fillStyle = 'rgba(0,0,0,0)';
13
+ ctx.fillRect(0, 0, 1, 1);
14
+ return canvas;
15
+ }());
16
+
17
+ function imageLoaded() {
18
+ this.loadedAssets += 1;
19
+ if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {
20
+ if (this.imagesLoadedCb) {
21
+ this.imagesLoadedCb(null);
22
+ }
23
+ }
24
+ }
25
+ function footageLoaded() {
26
+ this.loadedFootagesCount += 1;
27
+ if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {
28
+ if (this.imagesLoadedCb) {
29
+ this.imagesLoadedCb(null);
30
+ }
31
+ }
32
+ }
33
+
34
+ function getAssetsPath(assetData, assetsPath, originalPath) {
35
+ var path = '';
36
+ if (assetData.e) {
37
+ path = assetData.p;
38
+ } else if (assetsPath) {
39
+ var imagePath = assetData.p;
40
+ if (imagePath.indexOf('images/') !== -1) {
41
+ imagePath = imagePath.split('/')[1];
42
+ }
43
+ path = assetsPath + imagePath;
44
+ } else {
45
+ path = originalPath;
46
+ path += assetData.u ? assetData.u : '';
47
+ path += assetData.p;
48
+ }
49
+ return path;
50
+ }
51
+
52
+ function testImageLoaded(img) {
53
+ var _count = 0;
54
+ var intervalId = setInterval(function () {
55
+ var box = img.getBBox();
56
+ if (box.width || _count > 500) {
57
+ this._imageLoaded();
58
+ clearInterval(intervalId);
59
+ }
60
+ _count += 1;
61
+ }.bind(this), 50);
62
+ }
63
+
64
+ function createImageData(assetData) {
65
+ var path = getAssetsPath(assetData, this.assetsPath, this.path);
66
+ var img = createNS('image');
67
+ if (isSafari) {
68
+ this.testImageLoaded(img);
69
+ } else {
70
+ img.addEventListener('load', this._imageLoaded, false);
71
+ }
72
+ img.addEventListener('error', function () {
73
+ ob.img = proxyImage;
74
+ this._imageLoaded();
75
+ }.bind(this), false);
76
+ img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);
77
+ if (this._elementHelper.append) {
78
+ this._elementHelper.append(img);
79
+ } else {
80
+ this._elementHelper.appendChild(img);
81
+ }
82
+ var ob = {
83
+ img: img,
84
+ assetData: assetData,
85
+ };
86
+ return ob;
87
+ }
88
+
89
+ function createImgData(assetData) {
90
+ var path = getAssetsPath(assetData, this.assetsPath, this.path);
91
+ var img = createTag('img');
92
+ img.crossOrigin = 'anonymous';
93
+ img.addEventListener('load', this._imageLoaded, false);
94
+ img.addEventListener('error', function () {
95
+ ob.img = proxyImage;
96
+ this._imageLoaded();
97
+ }.bind(this), false);
98
+ img.src = path;
99
+ var ob = {
100
+ img: img,
101
+ assetData: assetData,
102
+ };
103
+ return ob;
104
+ }
105
+
106
+ function createFootageData(data) {
107
+ var ob = {
108
+ assetData: data,
109
+ };
110
+ var path = getAssetsPath(data, this.assetsPath, this.path);
111
+ dataManager.loadData(path, function (footageData) {
112
+ ob.img = footageData;
113
+ this._footageLoaded();
114
+ }.bind(this), function () {
115
+ ob.img = {};
116
+ this._footageLoaded();
117
+ }.bind(this));
118
+ return ob;
119
+ }
120
+
121
+ function loadAssets(assets, cb) {
122
+ this.imagesLoadedCb = cb;
123
+ var i;
124
+ var len = assets.length;
125
+ for (i = 0; i < len; i += 1) {
126
+ if (!assets[i].layers) {
127
+ if (!assets[i].t || assets[i].t === 'seq') {
128
+ this.totalImages += 1;
129
+ this.images.push(this._createImageData(assets[i]));
130
+ } else if (assets[i].t === 3) {
131
+ this.totalFootages += 1;
132
+ this.images.push(this.createFootageData(assets[i]));
133
+ }
134
+ }
135
+ }
136
+ }
137
+
138
+ function setPath(path) {
139
+ this.path = path || '';
140
+ }
141
+
142
+ function setAssetsPath(path) {
143
+ this.assetsPath = path || '';
144
+ }
145
+
146
+ function getAsset(assetData) {
147
+ var i = 0;
148
+ var len = this.images.length;
149
+ while (i < len) {
150
+ if (this.images[i].assetData === assetData) {
151
+ return this.images[i].img;
152
+ }
153
+ i += 1;
154
+ }
155
+ return null;
156
+ }
157
+
158
+ function destroy() {
159
+ this.imagesLoadedCb = null;
160
+ this.images.length = 0;
161
+ }
162
+
163
+ function loadedImages() {
164
+ return this.totalImages === this.loadedAssets;
165
+ }
166
+
167
+ function loadedFootages() {
168
+ return this.totalFootages === this.loadedFootagesCount;
169
+ }
170
+
171
+ function setCacheType(type, elementHelper) {
172
+ if (type === 'svg') {
173
+ this._elementHelper = elementHelper;
174
+ this._createImageData = this.createImageData.bind(this);
175
+ } else {
176
+ this._createImageData = this.createImgData.bind(this);
177
+ }
178
+ }
179
+
180
+ function ImagePreloaderFactory() {
181
+ this._imageLoaded = imageLoaded.bind(this);
182
+ this._footageLoaded = footageLoaded.bind(this);
183
+ this.testImageLoaded = testImageLoaded.bind(this);
184
+ this.createFootageData = createFootageData.bind(this);
185
+ this.assetsPath = '';
186
+ this.path = '';
187
+ this.totalImages = 0;
188
+ this.totalFootages = 0;
189
+ this.loadedAssets = 0;
190
+ this.loadedFootagesCount = 0;
191
+ this.imagesLoadedCb = null;
192
+ this.images = [];
193
+ }
194
+
195
+ ImagePreloaderFactory.prototype = {
196
+ loadAssets: loadAssets,
197
+ setAssetsPath: setAssetsPath,
198
+ setPath: setPath,
199
+ loadedImages: loadedImages,
200
+ loadedFootages: loadedFootages,
201
+ destroy: destroy,
202
+ getAsset: getAsset,
203
+ createImgData: createImgData,
204
+ createImageData: createImageData,
205
+ imageLoaded: imageLoaded,
206
+ footageLoaded: footageLoaded,
207
+ setCacheType: setCacheType,
208
+ };
209
+
210
+ return ImagePreloaderFactory;
211
+ }());
212
+
213
+ export default ImagePreloader;
@@ -0,0 +1,3 @@
1
+ const ImagePreloader = function () {};
2
+
3
+ export default ImagePreloader;
@@ -0,0 +1,47 @@
1
+ const markerParser = (
2
+
3
+ function () {
4
+ function parsePayloadLines(payload) {
5
+ var lines = payload.split('\r\n');
6
+ var keys = {};
7
+ var line;
8
+ var keysCount = 0;
9
+ for (var i = 0; i < lines.length; i += 1) {
10
+ line = lines[i].split(':');
11
+ if (line.length === 2) {
12
+ keys[line[0]] = line[1].trim();
13
+ keysCount += 1;
14
+ }
15
+ }
16
+ if (keysCount === 0) {
17
+ throw new Error();
18
+ }
19
+ return keys;
20
+ }
21
+
22
+ return function (_markers) {
23
+ var markers = [];
24
+ for (var i = 0; i < _markers.length; i += 1) {
25
+ var _marker = _markers[i];
26
+ var markerData = {
27
+ time: _marker.tm,
28
+ duration: _marker.dr,
29
+ };
30
+ try {
31
+ markerData.payload = JSON.parse(_markers[i].cm);
32
+ } catch (_) {
33
+ try {
34
+ markerData.payload = parsePayloadLines(_markers[i].cm);
35
+ } catch (__) {
36
+ markerData.payload = {
37
+ name: _markers[i].cm,
38
+ };
39
+ }
40
+ }
41
+ markers.push(markerData);
42
+ }
43
+ return markers;
44
+ };
45
+ }());
46
+
47
+ export default markerParser;
@@ -0,0 +1,20 @@
1
+ import {
2
+ getDefaultCurveSegments,
3
+ } from '../common';
4
+ import {
5
+ createTypedArray,
6
+ } from '../helpers/arrays';
7
+ import poolFactory from './pool_factory';
8
+
9
+ const bezierLengthPool = (function () {
10
+ function create() {
11
+ return {
12
+ addedLength: 0,
13
+ percents: createTypedArray('float32', getDefaultCurveSegments()),
14
+ lengths: createTypedArray('float32', getDefaultCurveSegments()),
15
+ };
16
+ }
17
+ return poolFactory(8, create);
18
+ }());
19
+
20
+ export default bezierLengthPool;
@@ -0,0 +1,13 @@
1
+ import {
2
+ createTypedArray,
3
+ } from '../helpers/arrays';
4
+ import poolFactory from './pool_factory';
5
+
6
+ const pointPool = (function () {
7
+ function create() {
8
+ return createTypedArray('float32', 2);
9
+ }
10
+ return poolFactory(8, create);
11
+ }());
12
+
13
+ export default pointPool;
@@ -0,0 +1,44 @@
1
+ import {
2
+ createSizedArray,
3
+ } from '../helpers/arrays';
4
+ import pooling from './pooling';
5
+
6
+ const poolFactory = (function () {
7
+ return function (initialLength, _create, _release) {
8
+ var _length = 0;
9
+ var _maxLength = initialLength;
10
+ var pool = createSizedArray(_maxLength);
11
+
12
+ var ob = {
13
+ newElement: newElement,
14
+ release: release,
15
+ };
16
+
17
+ function newElement() {
18
+ var element;
19
+ if (_length) {
20
+ _length -= 1;
21
+ element = pool[_length];
22
+ } else {
23
+ element = _create();
24
+ }
25
+ return element;
26
+ }
27
+
28
+ function release(element) {
29
+ if (_length === _maxLength) {
30
+ pool = pooling.double(pool);
31
+ _maxLength *= 2;
32
+ }
33
+ if (_release) {
34
+ _release(element);
35
+ }
36
+ pool[_length] = element;
37
+ _length += 1;
38
+ }
39
+
40
+ return ob;
41
+ };
42
+ }());
43
+
44
+ export default poolFactory;
@@ -0,0 +1,15 @@
1
+ import {
2
+ createSizedArray,
3
+ } from '../helpers/arrays';
4
+
5
+ const pooling = (function () {
6
+ function double(arr) {
7
+ return arr.concat(createSizedArray(arr.length));
8
+ }
9
+
10
+ return {
11
+ double: double,
12
+ };
13
+ }());
14
+
15
+ export default pooling;
@@ -0,0 +1,24 @@
1
+ import bezierLengthPool from './bezier_length_pool';
2
+ import poolFactory from './pool_factory';
3
+
4
+ const segmentsLengthPool = (function () {
5
+ function create() {
6
+ return {
7
+ lengths: [],
8
+ totalLength: 0,
9
+ };
10
+ }
11
+
12
+ function release(element) {
13
+ var i;
14
+ var len = element.lengths.length;
15
+ for (i = 0; i < len; i += 1) {
16
+ bezierLengthPool.release(element.lengths[i]);
17
+ }
18
+ element.lengths.length = 0;
19
+ }
20
+
21
+ return poolFactory(8, create, release);
22
+ }());
23
+
24
+ export default segmentsLengthPool;
@@ -0,0 +1,48 @@
1
+ import {
2
+ createSizedArray,
3
+ } from '../helpers/arrays';
4
+ import shapePool from './shape_pool';
5
+ import pooling from './pooling';
6
+ import ShapeCollection from '../shapes/ShapeCollection';
7
+
8
+ const shapeCollectionPool = (function () {
9
+ var ob = {
10
+ newShapeCollection: newShapeCollection,
11
+ release: release,
12
+ };
13
+
14
+ var _length = 0;
15
+ var _maxLength = 4;
16
+ var pool = createSizedArray(_maxLength);
17
+
18
+ function newShapeCollection() {
19
+ var shapeCollection;
20
+ if (_length) {
21
+ _length -= 1;
22
+ shapeCollection = pool[_length];
23
+ } else {
24
+ shapeCollection = new ShapeCollection();
25
+ }
26
+ return shapeCollection;
27
+ }
28
+
29
+ function release(shapeCollection) {
30
+ var i;
31
+ var len = shapeCollection._length;
32
+ for (i = 0; i < len; i += 1) {
33
+ shapePool.release(shapeCollection.shapes[i]);
34
+ }
35
+ shapeCollection._length = 0;
36
+
37
+ if (_length === _maxLength) {
38
+ pool = pooling.double(pool);
39
+ _maxLength *= 2;
40
+ }
41
+ pool[_length] = shapeCollection;
42
+ _length += 1;
43
+ }
44
+
45
+ return ob;
46
+ }());
47
+
48
+ export default shapeCollectionPool;
@@ -0,0 +1,44 @@
1
+ import poolFactory from './pool_factory';
2
+ import pointPool from './point_pool';
3
+ import ShapePath from '../shapes/ShapePath';
4
+
5
+ const shapePool = (function () {
6
+ function create() {
7
+ return new ShapePath();
8
+ }
9
+
10
+ function release(shapePath) {
11
+ var len = shapePath._length;
12
+ var i;
13
+ for (i = 0; i < len; i += 1) {
14
+ pointPool.release(shapePath.v[i]);
15
+ pointPool.release(shapePath.i[i]);
16
+ pointPool.release(shapePath.o[i]);
17
+ shapePath.v[i] = null;
18
+ shapePath.i[i] = null;
19
+ shapePath.o[i] = null;
20
+ }
21
+ shapePath._length = 0;
22
+ shapePath.c = false;
23
+ }
24
+
25
+ function clone(shape) {
26
+ var cloned = factory.newElement();
27
+ var i;
28
+ var len = shape._length === undefined ? shape.v.length : shape._length;
29
+ cloned.setLength(len);
30
+ cloned.c = shape.c;
31
+
32
+ for (i = 0; i < len; i += 1) {
33
+ cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);
34
+ }
35
+ return cloned;
36
+ }
37
+
38
+ var factory = poolFactory(4, create, release);
39
+ factory.clone = clone;
40
+
41
+ return factory;
42
+ }());
43
+
44
+ export default shapePool;
@@ -0,0 +1,63 @@
1
+ import {
2
+ extendPrototype,
3
+ } from '../functionExtensions';
4
+ import DynamicPropertyContainer from '../helpers/dynamicProperties';
5
+ import {
6
+ createSizedArray,
7
+ createTypedArray,
8
+ } from '../helpers/arrays';
9
+ import PropertyFactory from '../PropertyFactory';
10
+
11
+ function DashProperty(elem, data, renderer, container) {
12
+ this.elem = elem;
13
+ this.frameId = -1;
14
+ this.dataProps = createSizedArray(data.length);
15
+ this.renderer = renderer;
16
+ this.k = false;
17
+ this.dashStr = '';
18
+ this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);
19
+ this.dashoffset = createTypedArray('float32', 1);
20
+ this.initDynamicPropertyContainer(container);
21
+ var i;
22
+ var len = data.length || 0;
23
+ var prop;
24
+ for (i = 0; i < len; i += 1) {
25
+ prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);
26
+ this.k = prop.k || this.k;
27
+ this.dataProps[i] = { n: data[i].n, p: prop };
28
+ }
29
+ if (!this.k) {
30
+ this.getValue(true);
31
+ }
32
+ this._isAnimated = this.k;
33
+ }
34
+
35
+ DashProperty.prototype.getValue = function (forceRender) {
36
+ if (this.elem.globalData.frameId === this.frameId && !forceRender) {
37
+ return;
38
+ }
39
+ this.frameId = this.elem.globalData.frameId;
40
+ this.iterateDynamicProperties();
41
+ this._mdf = this._mdf || forceRender;
42
+ if (this._mdf) {
43
+ var i = 0;
44
+ var len = this.dataProps.length;
45
+ if (this.renderer === 'svg') {
46
+ this.dashStr = '';
47
+ }
48
+ for (i = 0; i < len; i += 1) {
49
+ if (this.dataProps[i].n !== 'o') {
50
+ if (this.renderer === 'svg') {
51
+ this.dashStr += ' ' + this.dataProps[i].p.v;
52
+ } else {
53
+ this.dashArray[i] = this.dataProps[i].p.v;
54
+ }
55
+ } else {
56
+ this.dashoffset[0] = this.dataProps[i].p.v;
57
+ }
58
+ }
59
+ }
60
+ };
61
+ extendPrototype([DynamicPropertyContainer], DashProperty);
62
+
63
+ export default DashProperty;
@@ -0,0 +1,93 @@
1
+ import {
2
+ extendPrototype,
3
+ } from '../functionExtensions';
4
+ import DynamicPropertyContainer from '../helpers/dynamicProperties';
5
+ import {
6
+ createTypedArray,
7
+ } from '../helpers/arrays';
8
+ import PropertyFactory from '../PropertyFactory';
9
+
10
+ function GradientProperty(elem, data, container) {
11
+ this.data = data;
12
+ this.c = createTypedArray('uint8c', data.p * 4);
13
+ var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4;
14
+ this.o = createTypedArray('float32', cLength);
15
+ this._cmdf = false;
16
+ this._omdf = false;
17
+ this._collapsable = this.checkCollapsable();
18
+ this._hasOpacity = cLength;
19
+ this.initDynamicPropertyContainer(container);
20
+ this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);
21
+ this.k = this.prop.k;
22
+ this.getValue(true);
23
+ }
24
+
25
+ GradientProperty.prototype.comparePoints = function (values, points) {
26
+ var i = 0;
27
+ var len = this.o.length / 2;
28
+ var diff;
29
+ while (i < len) {
30
+ diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);
31
+ if (diff > 0.01) {
32
+ return false;
33
+ }
34
+ i += 1;
35
+ }
36
+ return true;
37
+ };
38
+
39
+ GradientProperty.prototype.checkCollapsable = function () {
40
+ if (this.o.length / 2 !== this.c.length / 4) {
41
+ return false;
42
+ }
43
+ if (this.data.k.k[0].s) {
44
+ var i = 0;
45
+ var len = this.data.k.k.length;
46
+ while (i < len) {
47
+ if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {
48
+ return false;
49
+ }
50
+ i += 1;
51
+ }
52
+ } else if (!this.comparePoints(this.data.k.k, this.data.p)) {
53
+ return false;
54
+ }
55
+ return true;
56
+ };
57
+
58
+ GradientProperty.prototype.getValue = function (forceRender) {
59
+ this.prop.getValue();
60
+ this._mdf = false;
61
+ this._cmdf = false;
62
+ this._omdf = false;
63
+ if (this.prop._mdf || forceRender) {
64
+ var i;
65
+ var len = this.data.p * 4;
66
+ var mult;
67
+ var val;
68
+ for (i = 0; i < len; i += 1) {
69
+ mult = i % 4 === 0 ? 100 : 255;
70
+ val = Math.round(this.prop.v[i] * mult);
71
+ if (this.c[i] !== val) {
72
+ this.c[i] = val;
73
+ this._cmdf = !forceRender;
74
+ }
75
+ }
76
+ if (this.o.length) {
77
+ len = this.prop.v.length;
78
+ for (i = this.data.p * 4; i < len; i += 1) {
79
+ mult = i % 2 === 0 ? 100 : 1;
80
+ val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];
81
+ if (this.o[i - this.data.p * 4] !== val) {
82
+ this.o[i - this.data.p * 4] = val;
83
+ this._omdf = !forceRender;
84
+ }
85
+ }
86
+ }
87
+ this._mdf = !forceRender;
88
+ }
89
+ };
90
+
91
+ extendPrototype([DynamicPropertyContainer], GradientProperty);
92
+
93
+ export default GradientProperty;