@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,239 @@
1
+ import { getLocationHref } from './main';
2
+ import {
3
+ createElementID,
4
+ } from './utils/common';
5
+ import {
6
+ createSizedArray,
7
+ } from './utils/helpers/arrays';
8
+ import PropertyFactory from './utils/PropertyFactory';
9
+ import ShapePropertyFactory from './utils/shapes/ShapeProperty';
10
+ import createNS from './utils/helpers/svg_elements';
11
+
12
+ function MaskElement(data, element, globalData) {
13
+ this.data = data;
14
+ this.element = element;
15
+ this.globalData = globalData;
16
+ this.storedData = [];
17
+ this.masksProperties = this.data.masksProperties || [];
18
+ this.maskElement = null;
19
+ var defs = this.globalData.defs;
20
+ var i;
21
+ var len = this.masksProperties ? this.masksProperties.length : 0;
22
+ this.viewData = createSizedArray(len);
23
+ this.solidPath = '';
24
+
25
+ var path;
26
+ var properties = this.masksProperties;
27
+ var count = 0;
28
+ var currentMasks = [];
29
+ var j;
30
+ var jLen;
31
+ var layerId = createElementID();
32
+ var rect;
33
+ var expansor;
34
+ var feMorph;
35
+ var x;
36
+ var maskType = 'clipPath';
37
+ var maskRef = 'clip-path';
38
+ for (i = 0; i < len; i += 1) {
39
+ if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {
40
+ maskType = 'mask';
41
+ maskRef = 'mask';
42
+ }
43
+
44
+ if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {
45
+ rect = createNS('rect');
46
+ rect.setAttribute('fill', '#ffffff');
47
+ rect.setAttribute('width', this.element.comp.data.w || 0);
48
+ rect.setAttribute('height', this.element.comp.data.h || 0);
49
+ currentMasks.push(rect);
50
+ } else {
51
+ rect = null;
52
+ }
53
+
54
+ path = createNS('path');
55
+ if (properties[i].mode === 'n') {
56
+ // TODO move this to a factory or to a constructor
57
+ this.viewData[i] = {
58
+ op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),
59
+ prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),
60
+ elem: path,
61
+ lastPath: '',
62
+ };
63
+ defs.appendChild(path);
64
+ } else {
65
+ count += 1;
66
+
67
+ path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');
68
+ path.setAttribute('clip-rule', 'nonzero');
69
+ var filterID;
70
+
71
+ if (properties[i].x.k !== 0) {
72
+ maskType = 'mask';
73
+ maskRef = 'mask';
74
+ x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);
75
+ filterID = createElementID();
76
+ expansor = createNS('filter');
77
+ expansor.setAttribute('id', filterID);
78
+ feMorph = createNS('feMorphology');
79
+ feMorph.setAttribute('operator', 'erode');
80
+ feMorph.setAttribute('in', 'SourceGraphic');
81
+ feMorph.setAttribute('radius', '0');
82
+ expansor.appendChild(feMorph);
83
+ defs.appendChild(expansor);
84
+ path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');
85
+ } else {
86
+ feMorph = null;
87
+ x = null;
88
+ }
89
+
90
+ // TODO move this to a factory or to a constructor
91
+ this.storedData[i] = {
92
+ elem: path,
93
+ x: x,
94
+ expan: feMorph,
95
+ lastPath: '',
96
+ lastOperator: '',
97
+ filterId: filterID,
98
+ lastRadius: 0,
99
+ };
100
+ if (properties[i].mode === 'i') {
101
+ jLen = currentMasks.length;
102
+ var g = createNS('g');
103
+ for (j = 0; j < jLen; j += 1) {
104
+ g.appendChild(currentMasks[j]);
105
+ }
106
+ var mask = createNS('mask');
107
+ mask.setAttribute('mask-type', 'alpha');
108
+ mask.setAttribute('id', layerId + '_' + count);
109
+ mask.appendChild(path);
110
+ defs.appendChild(mask);
111
+ g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');
112
+
113
+ currentMasks.length = 0;
114
+ currentMasks.push(g);
115
+ } else {
116
+ currentMasks.push(path);
117
+ }
118
+ if (properties[i].inv && !this.solidPath) {
119
+ this.solidPath = this.createLayerSolidPath();
120
+ }
121
+ // TODO move this to a factory or to a constructor
122
+ this.viewData[i] = {
123
+ elem: path,
124
+ lastPath: '',
125
+ op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),
126
+ prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),
127
+ invRect: rect,
128
+ };
129
+ if (!this.viewData[i].prop.k) {
130
+ this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);
131
+ }
132
+ }
133
+ }
134
+
135
+ this.maskElement = createNS(maskType);
136
+
137
+ len = currentMasks.length;
138
+ for (i = 0; i < len; i += 1) {
139
+ this.maskElement.appendChild(currentMasks[i]);
140
+ }
141
+
142
+ if (count > 0) {
143
+ this.maskElement.setAttribute('id', layerId);
144
+ this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');
145
+ defs.appendChild(this.maskElement);
146
+ }
147
+ if (this.viewData.length) {
148
+ this.element.addRenderableComponent(this);
149
+ }
150
+ }
151
+
152
+ MaskElement.prototype.getMaskProperty = function (pos) {
153
+ return this.viewData[pos].prop;
154
+ };
155
+
156
+ MaskElement.prototype.renderFrame = function (isFirstFrame) {
157
+ var finalMat = this.element.finalTransform.mat;
158
+ var i;
159
+ var len = this.masksProperties.length;
160
+ for (i = 0; i < len; i += 1) {
161
+ if (this.viewData[i].prop._mdf || isFirstFrame) {
162
+ this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);
163
+ }
164
+ if (this.viewData[i].op._mdf || isFirstFrame) {
165
+ this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);
166
+ }
167
+ if (this.masksProperties[i].mode !== 'n') {
168
+ if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {
169
+ this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());
170
+ }
171
+ if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {
172
+ var feMorph = this.storedData[i].expan;
173
+ if (this.storedData[i].x.v < 0) {
174
+ if (this.storedData[i].lastOperator !== 'erode') {
175
+ this.storedData[i].lastOperator = 'erode';
176
+ this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');
177
+ }
178
+ feMorph.setAttribute('radius', -this.storedData[i].x.v);
179
+ } else {
180
+ if (this.storedData[i].lastOperator !== 'dilate') {
181
+ this.storedData[i].lastOperator = 'dilate';
182
+ this.storedData[i].elem.setAttribute('filter', null);
183
+ }
184
+ this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);
185
+ }
186
+ }
187
+ }
188
+ }
189
+ };
190
+
191
+ MaskElement.prototype.getMaskelement = function () {
192
+ return this.maskElement;
193
+ };
194
+
195
+ MaskElement.prototype.createLayerSolidPath = function () {
196
+ var path = 'M0,0 ';
197
+ path += ' h' + this.globalData.compSize.w;
198
+ path += ' v' + this.globalData.compSize.h;
199
+ path += ' h-' + this.globalData.compSize.w;
200
+ path += ' v-' + this.globalData.compSize.h + ' ';
201
+ return path;
202
+ };
203
+
204
+ MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {
205
+ var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];
206
+ var i;
207
+ var len;
208
+ len = pathNodes._length;
209
+ for (i = 1; i < len; i += 1) {
210
+ // pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[i][0]+','+pathNodes.i[i][1] + " "+pathNodes.v[i][0]+','+pathNodes.v[i][1];
211
+ pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];
212
+ }
213
+ // pathString += " C"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + " "+pathNodes.i[0][0]+','+pathNodes.i[0][1] + " "+pathNodes.v[0][0]+','+pathNodes.v[0][1];
214
+ if (pathNodes.c && len > 1) {
215
+ pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];
216
+ }
217
+ // pathNodes.__renderedString = pathString;
218
+
219
+ if (viewData.lastPath !== pathString) {
220
+ var pathShapeValue = '';
221
+ if (viewData.elem) {
222
+ if (pathNodes.c) {
223
+ pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;
224
+ }
225
+ viewData.elem.setAttribute('d', pathShapeValue);
226
+ }
227
+ viewData.lastPath = pathString;
228
+ }
229
+ };
230
+
231
+ MaskElement.prototype.destroy = function () {
232
+ this.element = null;
233
+ this.globalData = null;
234
+ this.maskElement = null;
235
+ this.data = null;
236
+ this.masksProperties = null;
237
+ };
238
+
239
+ export default MaskElement;
@@ -0,0 +1,153 @@
1
+ /* <%= contents %> */
2
+ import { setLocationHref, setWebWorker } from './main';
3
+ import animationManager from './animation/AnimationManager';
4
+ import {
5
+ setDefaultCurveSegments,
6
+ getDefaultCurveSegments,
7
+ roundValues,
8
+ setIdPrefix,
9
+ setSubframeEnabled,
10
+ setExpressionsPlugin,
11
+ } from './utils/common';
12
+ import PropertyFactory from './utils/PropertyFactory';
13
+ import ShapePropertyFactory from './utils/shapes/ShapeProperty';
14
+ import Matrix from './3rd_party/transformation-matrix';
15
+
16
+ const lottie = {};
17
+
18
+ function setLocation(href) {
19
+ setLocationHref(href);
20
+ }
21
+
22
+ function searchAnimations() {
23
+ if (standalone === true) {
24
+ animationManager.searchAnimations(animationData, standalone, renderer);
25
+ } else {
26
+ animationManager.searchAnimations();
27
+ }
28
+ }
29
+
30
+ function setSubframeRendering(flag) {
31
+ setSubframeEnabled(flag);
32
+ }
33
+
34
+ function setPrefix(prefix) {
35
+ setIdPrefix(prefix);
36
+ }
37
+
38
+ function loadAnimation(params) {
39
+ if (standalone === true) {
40
+ params.animationData = JSON.parse(animationData);
41
+ }
42
+ return animationManager.loadAnimation(params);
43
+ }
44
+
45
+ function setQuality(value) {
46
+ if (typeof value === 'string') {
47
+ switch (value) {
48
+ case 'high':
49
+ setDefaultCurveSegments(200);
50
+ break;
51
+ default:
52
+ case 'medium':
53
+ setDefaultCurveSegments(50);
54
+ break;
55
+ case 'low':
56
+ setDefaultCurveSegments(10);
57
+ break;
58
+ }
59
+ } else if (!isNaN(value) && value > 1) {
60
+ setDefaultCurveSegments(value);
61
+ }
62
+ if (getDefaultCurveSegments() >= 50) {
63
+ roundValues(false);
64
+ } else {
65
+ roundValues(true);
66
+ }
67
+ }
68
+
69
+ function inBrowser() {
70
+ return typeof navigator !== 'undefined';
71
+ }
72
+
73
+ function installPlugin(type, plugin) {
74
+ if (type === 'expressions') {
75
+ setExpressionsPlugin(plugin);
76
+ }
77
+ }
78
+
79
+ function getFactory(name) {
80
+ switch (name) {
81
+ case 'propertyFactory':
82
+ return PropertyFactory;
83
+ case 'shapePropertyFactory':
84
+ return ShapePropertyFactory;
85
+ case 'matrix':
86
+ return Matrix;
87
+ default:
88
+ return null;
89
+ }
90
+ }
91
+
92
+ lottie.play = animationManager.play;
93
+ lottie.pause = animationManager.pause;
94
+ lottie.setLocationHref = setLocation;
95
+ lottie.togglePause = animationManager.togglePause;
96
+ lottie.setSpeed = animationManager.setSpeed;
97
+ lottie.setDirection = animationManager.setDirection;
98
+ lottie.stop = animationManager.stop;
99
+ lottie.searchAnimations = searchAnimations;
100
+ lottie.registerAnimation = animationManager.registerAnimation;
101
+ lottie.loadAnimation = loadAnimation;
102
+ lottie.setSubframeRendering = setSubframeRendering;
103
+ lottie.resize = animationManager.resize;
104
+ // lottie.start = start;
105
+ lottie.goToAndStop = animationManager.goToAndStop;
106
+ lottie.destroy = animationManager.destroy;
107
+ lottie.setQuality = setQuality;
108
+ lottie.inBrowser = inBrowser;
109
+ lottie.installPlugin = installPlugin;
110
+ lottie.freeze = animationManager.freeze;
111
+ lottie.unfreeze = animationManager.unfreeze;
112
+ lottie.setVolume = animationManager.setVolume;
113
+ lottie.mute = animationManager.mute;
114
+ lottie.unmute = animationManager.unmute;
115
+ lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;
116
+ lottie.useWebWorker = setWebWorker;
117
+ lottie.setIDPrefix = setPrefix;
118
+ lottie.__getFactory = getFactory;
119
+ lottie.version = '[[BM_VERSION]]';
120
+
121
+ function checkReady() {
122
+ if (document.readyState === 'complete') {
123
+ clearInterval(readyStateCheckInterval);
124
+ searchAnimations();
125
+ }
126
+ }
127
+
128
+ function getQueryVariable(variable) {
129
+ var vars = queryString.split('&');
130
+ for (var i = 0; i < vars.length; i += 1) {
131
+ var pair = vars[i].split('=');
132
+ if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq
133
+ return decodeURIComponent(pair[1]);
134
+ }
135
+ }
136
+ return null;
137
+ }
138
+ var standalone = '__[STANDALONE]__';
139
+ var animationData = '__[ANIMATIONDATA]__';
140
+ var renderer = '';
141
+ var queryString;
142
+ if (standalone) {
143
+ var scripts = document.getElementsByTagName('script');
144
+ var index = scripts.length - 1;
145
+ var myScript = scripts[index] || {
146
+ src: '',
147
+ };
148
+ queryString = myScript.src ? myScript.src.replace(/^[^\?]+\??/, '') : ''; // eslint-disable-line no-useless-escape
149
+ renderer = getQueryVariable('renderer');
150
+ }
151
+ var readyStateCheckInterval = setInterval(checkReady, 100);
152
+
153
+ export default lottie;
@@ -0,0 +1,22 @@
1
+ import lottie from './canvas_light';
2
+ import {
3
+ setExpressionsPlugin,
4
+ setExpressionInterfaces,
5
+ } from '../utils/common';
6
+ import Expressions from '../utils/expressions/Expressions';
7
+ import interfacesProvider from '../utils/expressions/InterfacesProvider';
8
+ import expressionPropertyDecorator from '../utils/expressions/ExpressionPropertyDecorator';
9
+ import expressionTextPropertyDecorator from '../utils/expressions/ExpressionTextPropertyDecorator';
10
+ import CVTransformEffect from '../elements/canvasElements/effects/CVTransformEffect';
11
+ import CVGaussianBlurEffect from '../elements/canvasElements/effects/CVGaussianBlurEffect';
12
+ import { registerEffect } from '../elements/canvasElements/CVEffects';
13
+
14
+ // Registering expression plugin
15
+ setExpressionsPlugin(Expressions);
16
+ setExpressionInterfaces(interfacesProvider);
17
+ expressionPropertyDecorator();
18
+ expressionTextPropertyDecorator();
19
+ registerEffect(29, CVGaussianBlurEffect);
20
+ registerEffect(35, CVTransformEffect);
21
+
22
+ export default lottie;
@@ -0,0 +1,25 @@
1
+ import lottie from './main';
2
+ import { ShapeModifiers } from '../utils/shapes/ShapeModifiers';
3
+ import TrimModifier from '../utils/shapes/TrimModifier';
4
+ import PuckerAndBloatModifier from '../utils/shapes/PuckerAndBloatModifier';
5
+ import RepeaterModifier from '../utils/shapes/RepeaterModifier';
6
+ import RoundCornersModifier from '../utils/shapes/RoundCornersModifier';
7
+ import ZigZagModifier from '../utils/shapes/ZigZagModifier';
8
+ import OffsetPathModifier from '../utils/shapes/OffsetPathModifier';
9
+ import CanvasRenderer from '../renderers/CanvasRenderer';
10
+ import {
11
+ registerRenderer,
12
+ } from '../renderers/renderersManager';
13
+
14
+ // Registering renderers
15
+ registerRenderer('canvas', CanvasRenderer);
16
+
17
+ // Registering shape modifiers
18
+ ShapeModifiers.registerModifier('tm', TrimModifier);
19
+ ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);
20
+ ShapeModifiers.registerModifier('rp', RepeaterModifier);
21
+ ShapeModifiers.registerModifier('rd', RoundCornersModifier);
22
+ ShapeModifiers.registerModifier('zz', ZigZagModifier);
23
+ ShapeModifiers.registerModifier('op', OffsetPathModifier);
24
+
25
+ export default lottie;
@@ -0,0 +1,70 @@
1
+ import lottie from './main';
2
+ import {
3
+ setExpressionsPlugin,
4
+ setExpressionInterfaces,
5
+ } from '../utils/common';
6
+ import { ShapeModifiers } from '../utils/shapes/ShapeModifiers';
7
+ import TrimModifier from '../utils/shapes/TrimModifier';
8
+ import PuckerAndBloatModifier from '../utils/shapes/PuckerAndBloatModifier';
9
+ import RepeaterModifier from '../utils/shapes/RepeaterModifier';
10
+ import RoundCornersModifier from '../utils/shapes/RoundCornersModifier';
11
+ import ZigZagModifier from '../utils/shapes/ZigZagModifier';
12
+ import OffsetPathModifier from '../utils/shapes/OffsetPathModifier';
13
+ import CanvasRenderer from '../renderers/CanvasRenderer';
14
+ import HybridRenderer from '../renderers/HybridRenderer';
15
+ import SVGRenderer from '../renderers/SVGRenderer';
16
+ import {
17
+ registerRenderer,
18
+ } from '../renderers/renderersManager';
19
+ import Expressions from '../utils/expressions/Expressions';
20
+ import interfacesProvider from '../utils/expressions/InterfacesProvider';
21
+ import expressionPropertyDecorator from '../utils/expressions/ExpressionPropertyDecorator';
22
+ import expressionTextPropertyDecorator from '../utils/expressions/ExpressionTextPropertyDecorator';
23
+ // SVG effects
24
+ import { registerEffect } from '../elements/svgElements/SVGEffects';
25
+ import SVGTintFilter from '../elements/svgElements/effects/SVGTintEffect';
26
+ import SVGFillFilter from '../elements/svgElements/effects/SVGFillFilter';
27
+ import SVGStrokeEffect from '../elements/svgElements/effects/SVGStrokeEffect';
28
+ import SVGTritoneFilter from '../elements/svgElements/effects/SVGTritoneFilter';
29
+ import SVGProLevelsFilter from '../elements/svgElements/effects/SVGProLevelsFilter';
30
+ import SVGDropShadowEffect from '../elements/svgElements/effects/SVGDropShadowEffect';
31
+ import SVGMatte3Effect from '../elements/svgElements/effects/SVGMatte3Effect';
32
+ import SVGGaussianBlurEffect from '../elements/svgElements/effects/SVGGaussianBlurEffect';
33
+ import SVGTransformEffect from '../elements/svgElements/effects/SVGTransformEffect';
34
+ import CVTransformEffect from '../elements/canvasElements/effects/CVTransformEffect';
35
+ import CVGaussianBlurEffect from '../elements/canvasElements/effects/CVGaussianBlurEffect';
36
+ import { registerEffect as canvasRegisterEffect } from '../elements/canvasElements/CVEffects';
37
+
38
+ // Registering renderers
39
+ registerRenderer('canvas', CanvasRenderer);
40
+ registerRenderer('html', HybridRenderer);
41
+ registerRenderer('svg', SVGRenderer);
42
+
43
+ // Registering shape modifiers
44
+ ShapeModifiers.registerModifier('tm', TrimModifier);
45
+ ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);
46
+ ShapeModifiers.registerModifier('rp', RepeaterModifier);
47
+ ShapeModifiers.registerModifier('rd', RoundCornersModifier);
48
+ ShapeModifiers.registerModifier('zz', ZigZagModifier);
49
+ ShapeModifiers.registerModifier('op', OffsetPathModifier);
50
+
51
+ // Registering expression plugin
52
+ setExpressionsPlugin(Expressions);
53
+ setExpressionInterfaces(interfacesProvider);
54
+ expressionPropertyDecorator();
55
+ expressionTextPropertyDecorator();
56
+
57
+ // Registering svg effects
58
+ registerEffect(20, SVGTintFilter, true);
59
+ registerEffect(21, SVGFillFilter, true);
60
+ registerEffect(22, SVGStrokeEffect, false);
61
+ registerEffect(23, SVGTritoneFilter, true);
62
+ registerEffect(24, SVGProLevelsFilter, true);
63
+ registerEffect(25, SVGDropShadowEffect, true);
64
+ registerEffect(28, SVGMatte3Effect, false);
65
+ registerEffect(29, SVGGaussianBlurEffect, true);
66
+ registerEffect(35, SVGTransformEffect, false);
67
+ canvasRegisterEffect(29, CVGaussianBlurEffect);
68
+ canvasRegisterEffect(35, CVTransformEffect);
69
+
70
+ export default lottie;
File without changes
@@ -0,0 +1,37 @@
1
+ import lottie from './html_light';
2
+ import {
3
+ setExpressionsPlugin,
4
+ setExpressionInterfaces,
5
+ } from '../utils/common';
6
+ import Expressions from '../utils/expressions/Expressions';
7
+ import interfacesProvider from '../utils/expressions/InterfacesProvider';
8
+ import expressionPropertyDecorator from '../utils/expressions/ExpressionPropertyDecorator';
9
+ import expressionTextPropertyDecorator from '../utils/expressions/ExpressionTextPropertyDecorator';
10
+ // SVG effects
11
+ import { registerEffect } from '../elements/svgElements/SVGEffects';
12
+ import SVGTintFilter from '../elements/svgElements/effects/SVGTintEffect';
13
+ import SVGFillFilter from '../elements/svgElements/effects/SVGFillFilter';
14
+ import SVGStrokeEffect from '../elements/svgElements/effects/SVGStrokeEffect';
15
+ import SVGTritoneFilter from '../elements/svgElements/effects/SVGTritoneFilter';
16
+ import SVGProLevelsFilter from '../elements/svgElements/effects/SVGProLevelsFilter';
17
+ import SVGDropShadowEffect from '../elements/svgElements/effects/SVGDropShadowEffect';
18
+ import SVGMatte3Effect from '../elements/svgElements/effects/SVGMatte3Effect';
19
+ import SVGGaussianBlurEffect from '../elements/svgElements/effects/SVGGaussianBlurEffect';
20
+ import SVGTransformEffect from '../elements/svgElements/effects/SVGTransformEffect';
21
+
22
+ // Registering expression plugin
23
+ setExpressionsPlugin(Expressions);
24
+ setExpressionInterfaces(interfacesProvider);
25
+ expressionPropertyDecorator();
26
+ expressionTextPropertyDecorator();
27
+ registerEffect(20, SVGTintFilter, true);
28
+ registerEffect(21, SVGFillFilter, true);
29
+ registerEffect(22, SVGStrokeEffect, false);
30
+ registerEffect(23, SVGTritoneFilter, true);
31
+ registerEffect(24, SVGProLevelsFilter, true);
32
+ registerEffect(25, SVGDropShadowEffect, true);
33
+ registerEffect(28, SVGMatte3Effect, false);
34
+ registerEffect(29, SVGGaussianBlurEffect, true);
35
+ registerEffect(35, SVGTransformEffect, false);
36
+
37
+ export default lottie;
@@ -0,0 +1,25 @@
1
+ import lottie from './main';
2
+ import { ShapeModifiers } from '../utils/shapes/ShapeModifiers';
3
+ import TrimModifier from '../utils/shapes/TrimModifier';
4
+ import PuckerAndBloatModifier from '../utils/shapes/PuckerAndBloatModifier';
5
+ import RepeaterModifier from '../utils/shapes/RepeaterModifier';
6
+ import RoundCornersModifier from '../utils/shapes/RoundCornersModifier';
7
+ import ZigZagModifier from '../utils/shapes/ZigZagModifier';
8
+ import OffsetPathModifier from '../utils/shapes/OffsetPathModifier';
9
+ import HybridRenderer from '../renderers/HybridRenderer';
10
+ import {
11
+ registerRenderer,
12
+ } from '../renderers/renderersManager';
13
+
14
+ // Registering renderers
15
+ registerRenderer('html', HybridRenderer);
16
+
17
+ // Registering shape modifiers
18
+ ShapeModifiers.registerModifier('tm', TrimModifier);
19
+ ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);
20
+ ShapeModifiers.registerModifier('rp', RepeaterModifier);
21
+ ShapeModifiers.registerModifier('rd', RoundCornersModifier);
22
+ ShapeModifiers.registerModifier('zz', ZigZagModifier);
23
+ ShapeModifiers.registerModifier('op', OffsetPathModifier);
24
+
25
+ export default lottie;