@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
package/tasks/build.js ADDED
@@ -0,0 +1,773 @@
1
+ const fs = require('fs');
2
+ const UglifyJS = require("uglify-js");
3
+
4
+ const rootFolder = 'player/';
5
+ const bm_version = '5.8.1';
6
+ const buildReducedVersion = process.argv[2] === 'reduced'
7
+ const defaultBuilds = ['full','svg_light','svg','canvas','html', 'canvas_light', 'html_light', 'canvas_worker', 'lottie_worker']
8
+
9
+ const scripts = [
10
+ {
11
+ src: 'js/main.js',
12
+ builds: defaultBuilds
13
+ },
14
+ {
15
+ src: 'js/utils/common.js',
16
+ builds: defaultBuilds
17
+ },
18
+ {
19
+ src: 'js/utils/BaseEvent.js',
20
+ builds: defaultBuilds
21
+ },
22
+ {
23
+ src: 'js/utils/helpers/arrays.js',
24
+ builds: defaultBuilds
25
+ },
26
+ {
27
+ src: 'js/utils/helpers/svg_elements.js',
28
+ builds: ['full','svg','svg_light','html','html_light','lottie_worker']
29
+ },
30
+ {
31
+ src: 'js/utils/helpers/html_elements.js',
32
+ builds: defaultBuilds
33
+ },
34
+ {
35
+ src: 'js/utils/helpers/dynamicProperties.js',
36
+ builds: defaultBuilds
37
+ },
38
+ {
39
+ src: 'js/utils/helpers/blendModes.js',
40
+ builds: defaultBuilds
41
+ },
42
+ {
43
+ src: 'js/utils/helpers/shapeEnums.js',
44
+ builds: defaultBuilds
45
+ },
46
+ {
47
+ src: 'js/3rd_party/transformation-matrix.js',
48
+ builds: defaultBuilds
49
+ },
50
+ {
51
+ src: 'js/3rd_party/seedrandom.js',
52
+ builds: defaultBuilds
53
+ },
54
+ {
55
+ src: 'js/3rd_party/BezierEaser.js',
56
+ builds: defaultBuilds
57
+ },
58
+ {
59
+ src: 'js/utils/animationFramePolyFill.js',
60
+ builds: defaultBuilds
61
+ },
62
+ {
63
+ src: 'js/utils/functionExtensions.js',
64
+ builds: defaultBuilds
65
+ },
66
+ {
67
+ src: 'js/utils/bez.js',
68
+ builds: defaultBuilds
69
+ },
70
+ {
71
+ src: 'js/utils/DataManager.js',
72
+ builds: defaultBuilds
73
+ },
74
+ {
75
+ src: 'js/utils/getFontProperties.js',
76
+ builds: defaultBuilds
77
+ },
78
+ {
79
+ src: 'js/utils/FontManager.js',
80
+ builds: defaultBuilds
81
+ },
82
+ {
83
+ src: 'js/utils/PropertyFactory.js',
84
+ builds: defaultBuilds
85
+ },
86
+ {
87
+ src: 'js/utils/TransformProperty.js',
88
+ builds: defaultBuilds
89
+ },
90
+ {
91
+ src: 'js/utils/shapes/ShapePath.js',
92
+ builds: defaultBuilds
93
+ },
94
+ {
95
+ src: 'js/utils/shapes/ShapeProperty.js',
96
+ builds: defaultBuilds
97
+ },
98
+ {
99
+ src: 'js/utils/shapes/ShapeModifiers.js',
100
+ builds: defaultBuilds
101
+ },
102
+ {
103
+ src: 'js/utils/shapes/TrimModifier.js',
104
+ builds: defaultBuilds
105
+ },
106
+ {
107
+ src: 'js/utils/shapes/RoundCornersModifier.js',
108
+ builds: defaultBuilds
109
+ },
110
+ {
111
+ src: 'js/utils/shapes/PuckerAndBloatModifier.js',
112
+ builds: defaultBuilds
113
+ },
114
+ {
115
+ src: 'js/utils/shapes/RepeaterModifier.js',
116
+ builds: defaultBuilds
117
+ },
118
+ {
119
+ src: 'js/utils/shapes/ShapeCollection.js',
120
+ builds: defaultBuilds
121
+ },
122
+ {
123
+ src: 'js/utils/shapes/DashProperty.js',
124
+ builds: defaultBuilds
125
+ },
126
+ {
127
+ src: 'js/utils/shapes/GradientProperty.js',
128
+ builds: defaultBuilds
129
+ },
130
+ {
131
+ src: 'js/utils/shapes/shapePathBuilder.js',
132
+ builds: defaultBuilds
133
+ },
134
+ {
135
+ src: 'js/utils/audio/AudioController.js',
136
+ builds: defaultBuilds
137
+ },
138
+ {
139
+ src: 'js/utils/imagePreloader.js',
140
+ builds: ['full','canvas','canvas_light','html','html_light','svg','svg_light','lottie_worker', 'canvas_worker']
141
+ },
142
+ {
143
+ src: 'js/utils/featureSupport.js',
144
+ builds: defaultBuilds
145
+ },
146
+ {
147
+ src: 'js/utils/filters.js',
148
+ builds: defaultBuilds
149
+ },
150
+ {
151
+ src: 'js/utils/text/TextAnimatorProperty.js',
152
+ builds: defaultBuilds
153
+ },
154
+ {
155
+ src: 'js/utils/text/TextAnimatorDataProperty.js',
156
+ builds: defaultBuilds
157
+ },
158
+ {
159
+ src: 'js/utils/text/LetterProps.js',
160
+ builds: defaultBuilds
161
+ },
162
+ {
163
+ src: 'js/utils/text/TextProperty.js',
164
+ builds: defaultBuilds
165
+ },
166
+ {
167
+ src: 'js/utils/text/TextSelectorProperty.js',
168
+ builds: defaultBuilds
169
+ },
170
+ {
171
+ src: 'js/utils/pooling/pool_factory.js',
172
+ builds: defaultBuilds
173
+ },
174
+ {
175
+ src: 'js/utils/pooling/pooling.js',
176
+ builds: defaultBuilds
177
+ },
178
+ {
179
+ src: 'js/utils/pooling/point_pool.js',
180
+ builds: defaultBuilds
181
+ },
182
+ {
183
+ src: 'js/utils/pooling/shape_pool.js',
184
+ builds: defaultBuilds
185
+ },
186
+ {
187
+ src: 'js/utils/pooling/shapeCollection_pool.js',
188
+ builds: defaultBuilds
189
+ },
190
+ {
191
+ src: 'js/utils/pooling/segments_length_pool.js',
192
+ builds: defaultBuilds
193
+ },
194
+ {
195
+ src: 'js/utils/pooling/bezier_length_pool.js',
196
+ builds: defaultBuilds
197
+ },
198
+ {
199
+ src: 'js/utils/markers/markerParser.js',
200
+ builds: defaultBuilds
201
+ },
202
+ {
203
+ src: 'js/renderers/BaseRenderer.js',
204
+ builds: defaultBuilds
205
+ },
206
+ {
207
+ src: 'js/renderers/SVGRenderer.js',
208
+ builds: defaultBuilds
209
+ },
210
+ {
211
+ src: 'js/renderers/CanvasRenderer.js',
212
+ builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
213
+ },
214
+ {
215
+ src: 'js/renderers/HybridRenderer.js',
216
+ builds: ['full','html','html_light']
217
+ },
218
+ {
219
+ src: 'js/mask.js',
220
+ builds: defaultBuilds
221
+ },
222
+ {
223
+ src: 'js/elements/helpers/HierarchyElement.js',
224
+ builds: defaultBuilds
225
+ },
226
+ {
227
+ src: 'js/elements/helpers/FrameElement.js',
228
+ builds: defaultBuilds
229
+ },
230
+ {
231
+ src: 'js/elements/helpers/TransformElement.js',
232
+ builds: defaultBuilds
233
+ },
234
+ {
235
+ src: 'js/elements/helpers/RenderableElement.js',
236
+ builds: defaultBuilds
237
+ },
238
+ {
239
+ src: 'js/elements/helpers/RenderableDOMElement.js',
240
+ builds: defaultBuilds
241
+ },
242
+ {
243
+ src: 'js/elements/helpers/shapes/ProcessedElement.js',
244
+ builds: defaultBuilds
245
+ },
246
+ {
247
+ src: 'js/elements/helpers/shapes/SVGStyleData.js',
248
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
249
+ },
250
+ {
251
+ src: 'js/elements/helpers/shapes/SVGShapeData.js',
252
+ builds: defaultBuilds
253
+ },
254
+ {
255
+ src: 'js/elements/helpers/shapes/SVGTransformData.js',
256
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
257
+ },
258
+ {
259
+ src: 'js/elements/helpers/shapes/SVGStrokeStyleData.js',
260
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
261
+ },
262
+ {
263
+ src: 'js/elements/helpers/shapes/SVGFillStyleData.js',
264
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
265
+ },
266
+ {
267
+ src: 'js/elements/helpers/shapes/SVGGradientFillStyleData.js',
268
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
269
+ },
270
+ {
271
+ src: 'js/elements/helpers/shapes/SVGGradientStrokeStyleData.js',
272
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
273
+ },
274
+ {
275
+ src: 'js/elements/helpers/shapes/ShapeGroupData.js',
276
+ builds: defaultBuilds
277
+ },
278
+ {
279
+ src: 'js/elements/helpers/shapes/SVGElementsRenderer.js',
280
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
281
+ },
282
+ {
283
+ src: 'js/elements/helpers/shapes/ShapeTransformManager.js',
284
+ builds: defaultBuilds
285
+ },
286
+ {
287
+ src: 'js/elements/helpers/shapes/CVShapeData.js',
288
+ builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
289
+ },
290
+ {
291
+ src: 'js/elements/BaseElement.js',
292
+ builds: defaultBuilds
293
+ },
294
+ {
295
+ src: 'js/elements/NullElement.js',
296
+ builds: defaultBuilds
297
+ },
298
+ {
299
+ src: 'js/elements/svgElements/SVGBaseElement.js',
300
+ builds: defaultBuilds
301
+ },
302
+ {
303
+ src: 'js/elements/ShapeElement.js',
304
+ builds: defaultBuilds
305
+ },
306
+ {
307
+ src: 'js/elements/TextElement.js',
308
+ builds: defaultBuilds
309
+ },
310
+ {
311
+ src: 'js/elements/CompElement.js',
312
+ builds: defaultBuilds
313
+ },
314
+ {
315
+ src: 'js/elements/ImageElement.js',
316
+ builds: defaultBuilds
317
+ },
318
+ {
319
+ src: 'js/elements/SolidElement.js',
320
+ builds: defaultBuilds
321
+ },
322
+ {
323
+ src: 'js/elements/AudioElement.js',
324
+ builds: defaultBuilds
325
+ },
326
+ {
327
+ src: 'js/elements/FootageElement.js',
328
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker'],
329
+ },
330
+ {
331
+ src: 'js/elements/svgElements/SVGCompElement.js',
332
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
333
+ },
334
+ {
335
+ src: 'js/elements/svgElements/SVGTextElement.js',
336
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
337
+ },
338
+ {
339
+ src: 'js/elements/svgElements/SVGShapeElement.js',
340
+ builds: defaultBuilds
341
+ },
342
+ {
343
+ src: 'js/elements/svgElements/effects/SVGTintEffect.js',
344
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
345
+ },
346
+ {
347
+ src: 'js/elements/svgElements/effects/SVGFillFilter.js',
348
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
349
+ },
350
+ {
351
+ src: 'js/elements/svgElements/effects/SVGGaussianBlurEffect.js',
352
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
353
+ },
354
+ {
355
+ src: 'js/elements/svgElements/effects/SVGStrokeEffect.js',
356
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
357
+ },
358
+ {
359
+ src: 'js/elements/svgElements/effects/SVGTritoneFilter.js',
360
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
361
+ },
362
+ {
363
+ src: 'js/elements/svgElements/effects/SVGProLevelsFilter.js',
364
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
365
+ },
366
+ {
367
+ src: 'js/elements/svgElements/effects/SVGDropShadowEffect.js',
368
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
369
+ },
370
+ {
371
+ src: 'js/elements/svgElements/effects/SVGMatte3Effect.js',
372
+ builds: ['full','svg','svg_light','html','html_light', 'lottie_worker']
373
+ },
374
+ {
375
+ src: 'js/elements/svgElements/SVGEffects.js',
376
+ builds: ['full','svg','html', 'lottie_worker']
377
+ },
378
+ {
379
+ src: 'js/elements/svgElements/SVGEffectsPlaceholder.js',
380
+ builds: ['svg_light','html_light']
381
+ },
382
+ {
383
+ src: 'js/elements/canvasElements/CVContextData.js',
384
+ builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
385
+ },
386
+ {
387
+ src: 'js/elements/canvasElements/CVBaseElement.js',
388
+ builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
389
+ },
390
+ {
391
+ src: 'js/elements/canvasElements/CVImageElement.js',
392
+ builds: ['full','canvas','canvas_light']
393
+ },
394
+ {
395
+ src: 'js/elements/canvasElements/CVCompElement.js',
396
+ builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
397
+ },
398
+ {
399
+ src: 'js/elements/canvasElements/CVMaskElement.js',
400
+ builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
401
+ },
402
+ {
403
+ src: 'js/elements/canvasElements/CVShapeElement.js',
404
+ builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
405
+ },
406
+ {
407
+ src: 'js/elements/canvasElements/CVSolidElement.js',
408
+ builds: ['full','canvas','canvas_light','canvas_worker', 'lottie_worker']
409
+ },
410
+ {
411
+ src: 'js/elements/canvasElements/CVTextElement.js',
412
+ builds: ['full','canvas','canvas_light']
413
+ },
414
+ {
415
+ src: 'js/elements/canvasElements/CVEffects.js',
416
+ builds: ['full','canvas','canvas_light','html','html_light','canvas_worker', 'lottie_worker']
417
+ },
418
+ {
419
+ src: 'js/elements/htmlElements/HBaseElement.js',
420
+ builds: ['full','html','html_light']
421
+ },
422
+ {
423
+ src: 'js/elements/htmlElements/HSolidElement.js',
424
+ builds: ['full','html','html_light']
425
+ },
426
+ {
427
+ src: 'js/elements/htmlElements/HCompElement.js',
428
+ builds: ['full','html','html_light']
429
+ },
430
+ {
431
+ src: 'js/elements/htmlElements/HShapeElement.js',
432
+ builds: ['full','html','html_light']
433
+ },
434
+ {
435
+ src: 'js/elements/htmlElements/HTextElement.js',
436
+ builds: ['full','html','html_light']
437
+ },
438
+ {
439
+ src: 'js/elements/htmlElements/HImageElement.js',
440
+ builds: ['full','html','html_light']
441
+ },
442
+ {
443
+ src: 'js/elements/htmlElements/HCameraElement.js',
444
+ builds: ['full','html','html_light']
445
+ },
446
+ {
447
+ src: 'js/elements/htmlElements/HEffects.js',
448
+ builds: ['full','html','html_light']
449
+ },
450
+ {
451
+ src: 'js/animation/AnimationManager.js',
452
+ builds: defaultBuilds
453
+ },
454
+ {
455
+ src: 'js/animation/AnimationItem.js',
456
+ builds: defaultBuilds
457
+ },
458
+ {
459
+ src: 'js/utils/expressions/Expressions.js',
460
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
461
+ },
462
+ {
463
+ src: 'js/utils/expressions/ExpressionManager.js',
464
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
465
+ },
466
+ {
467
+ src: 'js/utils/expressions/expressionHelpers.js',
468
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
469
+ },
470
+ {
471
+ src: 'js/utils/expressions/ExpressionPropertyDecorator.js',
472
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
473
+ },
474
+ {
475
+ src: 'js/utils/expressions/ExpressionTextPropertyDecorator.js',
476
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
477
+ },
478
+ {
479
+ src: 'js/utils/expressions/shapes/ShapePathInterface.js',
480
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
481
+ },
482
+ {
483
+ src: 'js/utils/expressions/PropertyGroupFactory.js',
484
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
485
+ },
486
+ {
487
+ src: 'js/utils/expressions/PropertyInterface.js',
488
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
489
+ },
490
+ {
491
+ src: 'js/utils/expressions/ShapeInterface.js',
492
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
493
+ },
494
+ {
495
+ src: 'js/utils/expressions/TextInterface.js',
496
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
497
+ },
498
+ {
499
+ src: 'js/utils/expressions/LayerInterface.js',
500
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
501
+ },
502
+ {
503
+ src: 'js/utils/expressions/FootageInterface.js',
504
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
505
+ },
506
+ {
507
+ src: 'js/utils/expressions/CompInterface.js',
508
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
509
+ },
510
+ {
511
+ src: 'js/utils/expressions/TransformInterface.js',
512
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
513
+ },
514
+ {
515
+ src: 'js/utils/expressions/ProjectInterface.js',
516
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
517
+ },
518
+ {
519
+ src: 'js/utils/expressions/EffectInterface.js',
520
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
521
+ },
522
+ {
523
+ src: 'js/utils/expressions/MaskInterface.js',
524
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
525
+ },
526
+ {
527
+ src: 'js/utils/expressions/ExpressionValueFactory.js',
528
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
529
+ },
530
+ {
531
+ src: 'js/utils/expressions/TextSelectorPropertyDecorator.js',
532
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
533
+ },
534
+ {
535
+ src: 'js/effects/SliderEffect.js',
536
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
537
+ },
538
+ {
539
+ src: 'js/effects/EffectsManagerPlaceholder.js',
540
+ builds: ['svg_light','html_light']
541
+ },
542
+ {
543
+ src: 'js/EffectsManager.js',
544
+ builds: ['full','svg','canvas','html','canvas_worker', 'lottie_worker']
545
+ }
546
+ ]
547
+
548
+ function concatScripts(scripts, build) {
549
+ return new Promise((resolve, reject)=>{
550
+ // Concatenating scripts
551
+ try {
552
+ let scriptsString = ''
553
+ scripts.forEach((script)=> {
554
+ if(script.builds.indexOf(build) !== -1) {
555
+ scriptsString += fs.readFileSync(`${rootFolder}${script.src}`, {encoding: 'utf8'});
556
+ scriptsString += '\r\n';
557
+ }
558
+ })
559
+ resolve(scriptsString);
560
+ } catch(err) {
561
+ reject(err);
562
+ }
563
+ });
564
+ }
565
+
566
+ function wrapScriptWithModule(code, build) {
567
+ return new Promise((resolve, reject)=>{
568
+ try {
569
+ // Wrapping with module
570
+ let moduleFileName = (build =='canvas_worker' || build =='lottie_worker') ? 'module_worker' : 'module';
571
+ let wrappedCode = fs.readFileSync(`${rootFolder}js/${moduleFileName}.js`, "utf8");
572
+ wrappedCode = wrappedCode.replace('/* <%= contents %> */',code);
573
+ wrappedCode = wrappedCode.replace('[[BM_VERSION]]',bm_version);
574
+ resolve(wrappedCode);
575
+ } catch(err) {
576
+ reject(err);
577
+ }
578
+ });
579
+ }
580
+
581
+ function uglifyCode(code) {
582
+ return new Promise((resolve, reject)=>{
583
+ try {
584
+ const result = UglifyJS.minify(code, {
585
+ output:
586
+ {
587
+ ascii_only:true
588
+ },
589
+ toplevel:true,
590
+ mangle: {
591
+ reserved: ['lottie']
592
+ }
593
+ });
594
+ if (result.error) {
595
+ reject(result.error)
596
+ } else {
597
+ resolve(result.code)
598
+ }
599
+ } catch(err) {
600
+ reject(err)
601
+ }
602
+ })
603
+ }
604
+
605
+ async function modularizeCode(code, build) {
606
+ const globalScope = (build =='canvas_worker' || build =='lottie_worker') ? 'self' : 'window'
607
+ return `(typeof navigator !== "undefined") && (function(root, factory) {
608
+ if (typeof define === "function" && define.amd) {
609
+ define(function() {
610
+ return factory(root);
611
+ });
612
+ } else if (typeof module === "object" && module.exports) {
613
+ module.exports = factory(root);
614
+ } else {
615
+ root.lottie = factory(root);
616
+ root.bodymovin = root.lottie;
617
+ }
618
+ }((${globalScope} || {}), function(window) {
619
+ ${code}
620
+ return lottie;
621
+ }));`
622
+ }
623
+
624
+ async function buildVersion(scripts, version) {
625
+ const code = await concatScripts(scripts, version.build)
626
+ const wrappedCode = await wrapScriptWithModule(code, version.build)
627
+ const processedCode = await version.process(wrappedCode)
628
+ const modularizedCode = await modularizeCode(processedCode, version.build)
629
+ const saved = await save(modularizedCode, version.fileName)
630
+ return saved
631
+ }
632
+
633
+ function save(code, fileName) {
634
+ return new Promise((resolve, reject)=> {
635
+ fs.writeFile(`build/player/${fileName}`, code, (err) => {
636
+ if (err) {
637
+ reject(err)
638
+ } else {
639
+ resolve(true)
640
+ }
641
+ });
642
+ })
643
+ }
644
+
645
+ function noop(code) {
646
+ return Promise.resolve(code)
647
+ }
648
+
649
+ function buildVersions(scripts) {
650
+ return new Promise((resolve, reject) => {
651
+ let versions = [
652
+ {
653
+ fileName: 'lottie.js',
654
+ build: 'full',
655
+ process: noop
656
+ },
657
+ {
658
+ fileName: 'lottie.min.js',
659
+ build: 'full',
660
+ process: uglifyCode
661
+ },
662
+ {
663
+ fileName: 'lottie_light.js',
664
+ build: 'svg_light',
665
+ process: noop
666
+ },
667
+ {
668
+ fileName: 'lottie_light.min.js',
669
+ build: 'svg_light',
670
+ process: uglifyCode
671
+ },
672
+ {
673
+ fileName: 'lottie_svg.js',
674
+ build: 'svg',
675
+ process: noop
676
+ },
677
+ {
678
+ fileName: 'lottie_svg.min.js',
679
+ build: 'svg',
680
+ process: uglifyCode
681
+ },
682
+ {
683
+ fileName: 'lottie_light_canvas.js',
684
+ build: 'canvas_light',
685
+ process: noop
686
+ },
687
+ {
688
+ fileName: 'lottie_light_canvas.min.js',
689
+ build: 'canvas_light',
690
+ process: uglifyCode
691
+ },
692
+ {
693
+ fileName: 'lottie_canvas.js',
694
+ build: 'canvas',
695
+ process: noop
696
+ },
697
+ {
698
+ fileName: 'lottie_canvas.min.js',
699
+ build: 'canvas',
700
+ process: uglifyCode
701
+ },
702
+ {
703
+ fileName: 'lottie_canvas_worker.js',
704
+ build: 'canvas_worker',
705
+ process: noop
706
+ },
707
+ {
708
+ fileName: 'lottie_canvas_worker.min.js',
709
+ build: 'canvas_worker',
710
+ process: uglifyCode
711
+ },
712
+ {
713
+ fileName: 'lottie_worker.js',
714
+ build: 'lottie_worker',
715
+ process: noop
716
+ },
717
+ {
718
+ fileName: 'lottie_worker.min.js',
719
+ build: 'lottie_worker',
720
+ process: uglifyCode
721
+ },
722
+ {
723
+ fileName: 'lottie_html.js',
724
+ build: 'html',
725
+ process: noop
726
+ },
727
+ {
728
+ fileName: 'lottie_html.min.js',
729
+ build: 'html',
730
+ process: uglifyCode
731
+ },
732
+ {
733
+ fileName: 'lottie_light_html.js',
734
+ build: 'html_light',
735
+ process: noop
736
+ },
737
+ {
738
+ fileName: 'lottie_light_html.min.js',
739
+ build: 'html_light',
740
+ process: uglifyCode
741
+ }];
742
+
743
+ if (buildReducedVersion) {
744
+ versions = versions.splice(0,1);
745
+ }
746
+
747
+ const buildProcesses = versions.map((version)=>{
748
+ return buildVersion(scripts, version)
749
+ })
750
+ Promise.all(buildProcesses)
751
+ .then(() => {
752
+ resolve('Build Process Ended')
753
+ })
754
+ .catch((err)=>{
755
+ reject(err)
756
+ })
757
+ })
758
+ }
759
+
760
+ function handleError(err) {
761
+ console.log(err);
762
+ }
763
+
764
+ async function build() {
765
+ try {
766
+ const result = await buildVersions(scripts);
767
+
768
+ } catch(err) {
769
+ handleError(err);
770
+ }
771
+ }
772
+
773
+ build()