@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,126 @@
1
+ import ExpressionPropertyInterface from './ExpressionValueFactory';
2
+
3
+ const TransformExpressionInterface = (function () {
4
+ return function (transform) {
5
+ function _thisFunction(name) {
6
+ switch (name) {
7
+ case 'scale':
8
+ case 'Scale':
9
+ case 'ADBE Scale':
10
+ case 6:
11
+ return _thisFunction.scale;
12
+ case 'rotation':
13
+ case 'Rotation':
14
+ case 'ADBE Rotation':
15
+ case 'ADBE Rotate Z':
16
+ case 10:
17
+ return _thisFunction.rotation;
18
+ case 'ADBE Rotate X':
19
+ return _thisFunction.xRotation;
20
+ case 'ADBE Rotate Y':
21
+ return _thisFunction.yRotation;
22
+ case 'position':
23
+ case 'Position':
24
+ case 'ADBE Position':
25
+ case 2:
26
+ return _thisFunction.position;
27
+ case 'ADBE Position_0':
28
+ return _thisFunction.xPosition;
29
+ case 'ADBE Position_1':
30
+ return _thisFunction.yPosition;
31
+ case 'ADBE Position_2':
32
+ return _thisFunction.zPosition;
33
+ case 'anchorPoint':
34
+ case 'AnchorPoint':
35
+ case 'Anchor Point':
36
+ case 'ADBE AnchorPoint':
37
+ case 1:
38
+ return _thisFunction.anchorPoint;
39
+ case 'opacity':
40
+ case 'Opacity':
41
+ case 11:
42
+ return _thisFunction.opacity;
43
+ default:
44
+ return null;
45
+ }
46
+ }
47
+ Object.defineProperty(_thisFunction, 'rotation', {
48
+ get: ExpressionPropertyInterface(transform.r || transform.rz),
49
+ });
50
+
51
+ Object.defineProperty(_thisFunction, 'zRotation', {
52
+ get: ExpressionPropertyInterface(transform.rz || transform.r),
53
+ });
54
+
55
+ Object.defineProperty(_thisFunction, 'xRotation', {
56
+ get: ExpressionPropertyInterface(transform.rx),
57
+ });
58
+
59
+ Object.defineProperty(_thisFunction, 'yRotation', {
60
+ get: ExpressionPropertyInterface(transform.ry),
61
+ });
62
+ Object.defineProperty(_thisFunction, 'scale', {
63
+ get: ExpressionPropertyInterface(transform.s),
64
+ });
65
+ var _px;
66
+ var _py;
67
+ var _pz;
68
+ var _transformFactory;
69
+ if (transform.p) {
70
+ _transformFactory = ExpressionPropertyInterface(transform.p);
71
+ } else {
72
+ _px = ExpressionPropertyInterface(transform.px);
73
+ _py = ExpressionPropertyInterface(transform.py);
74
+ if (transform.pz) {
75
+ _pz = ExpressionPropertyInterface(transform.pz);
76
+ }
77
+ }
78
+ Object.defineProperty(_thisFunction, 'position', {
79
+ get: function () {
80
+ if (transform.p) {
81
+ return _transformFactory();
82
+ }
83
+ return [
84
+ _px(),
85
+ _py(),
86
+ _pz ? _pz() : 0];
87
+ },
88
+ });
89
+
90
+ Object.defineProperty(_thisFunction, 'xPosition', {
91
+ get: ExpressionPropertyInterface(transform.px),
92
+ });
93
+
94
+ Object.defineProperty(_thisFunction, 'yPosition', {
95
+ get: ExpressionPropertyInterface(transform.py),
96
+ });
97
+
98
+ Object.defineProperty(_thisFunction, 'zPosition', {
99
+ get: ExpressionPropertyInterface(transform.pz),
100
+ });
101
+
102
+ Object.defineProperty(_thisFunction, 'anchorPoint', {
103
+ get: ExpressionPropertyInterface(transform.a),
104
+ });
105
+
106
+ Object.defineProperty(_thisFunction, 'opacity', {
107
+ get: ExpressionPropertyInterface(transform.o),
108
+ });
109
+
110
+ Object.defineProperty(_thisFunction, 'skew', {
111
+ get: ExpressionPropertyInterface(transform.sk),
112
+ });
113
+
114
+ Object.defineProperty(_thisFunction, 'skewAxis', {
115
+ get: ExpressionPropertyInterface(transform.sa),
116
+ });
117
+
118
+ Object.defineProperty(_thisFunction, 'orientation', {
119
+ get: ExpressionPropertyInterface(transform.or),
120
+ });
121
+
122
+ return _thisFunction;
123
+ };
124
+ }());
125
+
126
+ export default TransformExpressionInterface;
@@ -0,0 +1,86 @@
1
+ import {
2
+ createTypedArray,
3
+ } from '../helpers/arrays';
4
+ import ExpressionManager from './ExpressionManager';
5
+
6
+ const expressionHelpers = (function () {
7
+ function searchExpressions(elem, data, prop) {
8
+ if (data.x) {
9
+ prop.k = true;
10
+ prop.x = true;
11
+ prop.initiateExpression = ExpressionManager.initiateExpression;
12
+ prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));
13
+ }
14
+ }
15
+
16
+ function getValueAtTime(frameNum) {
17
+ frameNum *= this.elem.globalData.frameRate;
18
+ frameNum -= this.offsetTime;
19
+ if (frameNum !== this._cachingAtTime.lastFrame) {
20
+ this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;
21
+ this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);
22
+ this._cachingAtTime.lastFrame = frameNum;
23
+ }
24
+ return this._cachingAtTime.value;
25
+ }
26
+
27
+ function getSpeedAtTime(frameNum) {
28
+ var delta = -0.01;
29
+ var v1 = this.getValueAtTime(frameNum);
30
+ var v2 = this.getValueAtTime(frameNum + delta);
31
+ var speed = 0;
32
+ if (v1.length) {
33
+ var i;
34
+ for (i = 0; i < v1.length; i += 1) {
35
+ speed += Math.pow(v2[i] - v1[i], 2);
36
+ }
37
+ speed = Math.sqrt(speed) * 100;
38
+ } else {
39
+ speed = 0;
40
+ }
41
+ return speed;
42
+ }
43
+
44
+ function getVelocityAtTime(frameNum) {
45
+ if (this.vel !== undefined) {
46
+ return this.vel;
47
+ }
48
+ var delta = -0.001;
49
+ // frameNum += this.elem.data.st;
50
+ var v1 = this.getValueAtTime(frameNum);
51
+ var v2 = this.getValueAtTime(frameNum + delta);
52
+ var velocity;
53
+ if (v1.length) {
54
+ velocity = createTypedArray('float32', v1.length);
55
+ var i;
56
+ for (i = 0; i < v1.length; i += 1) {
57
+ // removing frameRate
58
+ // if needed, don't add it here
59
+ // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);
60
+ velocity[i] = (v2[i] - v1[i]) / delta;
61
+ }
62
+ } else {
63
+ velocity = (v2 - v1) / delta;
64
+ }
65
+ return velocity;
66
+ }
67
+
68
+ function getStaticValueAtTime() {
69
+ return this.pv;
70
+ }
71
+
72
+ function setGroupProperty(propertyGroup) {
73
+ this.propertyGroup = propertyGroup;
74
+ }
75
+
76
+ return {
77
+ searchExpressions: searchExpressions,
78
+ getSpeedAtTime: getSpeedAtTime,
79
+ getVelocityAtTime: getVelocityAtTime,
80
+ getValueAtTime: getValueAtTime,
81
+ getStaticValueAtTime: getStaticValueAtTime,
82
+ setGroupProperty: setGroupProperty,
83
+ };
84
+ }());
85
+
86
+ export default expressionHelpers;
@@ -0,0 +1,47 @@
1
+ import propertyGroupFactory from '../PropertyGroupFactory';
2
+ import PropertyInterface from '../PropertyInterface';
3
+
4
+ const ShapePathInterface = (
5
+
6
+ function () {
7
+ return function pathInterfaceFactory(shape, view, propertyGroup) {
8
+ var prop = view.sh;
9
+
10
+ function interfaceFunction(val) {
11
+ if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {
12
+ return interfaceFunction.path;
13
+ }
14
+ return null;
15
+ }
16
+
17
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
18
+ prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));
19
+ Object.defineProperties(interfaceFunction, {
20
+ path: {
21
+ get: function () {
22
+ if (prop.k) {
23
+ prop.getValue();
24
+ }
25
+ return prop;
26
+ },
27
+ },
28
+ shape: {
29
+ get: function () {
30
+ if (prop.k) {
31
+ prop.getValue();
32
+ }
33
+ return prop;
34
+ },
35
+ },
36
+ _name: { value: shape.nm },
37
+ ix: { value: shape.ix },
38
+ propertyIndex: { value: shape.ix },
39
+ mn: { value: shape.mn },
40
+ propertyGroup: { value: propertyGroup },
41
+ });
42
+ return interfaceFunction;
43
+ };
44
+ }()
45
+ );
46
+
47
+ export default ShapePathInterface;
@@ -0,0 +1,16 @@
1
+ const featureSupport = (function () {
2
+ var ob = {
3
+ maskType: true,
4
+ svgLumaHidden: true,
5
+ offscreenCanvas: typeof OffscreenCanvas !== 'undefined',
6
+ };
7
+ if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) {
8
+ ob.maskType = false;
9
+ }
10
+ if (/firefox/i.test(navigator.userAgent)) {
11
+ ob.svgLumaHidden = false;
12
+ }
13
+ return ob;
14
+ }());
15
+
16
+ export default featureSupport;
@@ -0,0 +1,32 @@
1
+ import createNS from './helpers/svg_elements';
2
+
3
+ const filtersFactory = (function () {
4
+ var ob = {};
5
+ ob.createFilter = createFilter;
6
+ ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;
7
+
8
+ function createFilter(filId, skipCoordinates) {
9
+ var fil = createNS('filter');
10
+ fil.setAttribute('id', filId);
11
+ if (skipCoordinates !== true) {
12
+ fil.setAttribute('filterUnits', 'objectBoundingBox');
13
+ fil.setAttribute('x', '0%');
14
+ fil.setAttribute('y', '0%');
15
+ fil.setAttribute('width', '100%');
16
+ fil.setAttribute('height', '100%');
17
+ }
18
+ return fil;
19
+ }
20
+
21
+ function createAlphaToLuminanceFilter() {
22
+ var feColorMatrix = createNS('feColorMatrix');
23
+ feColorMatrix.setAttribute('type', 'matrix');
24
+ feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');
25
+ feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');
26
+ return feColorMatrix;
27
+ }
28
+
29
+ return ob;
30
+ }());
31
+
32
+ export default filtersFactory;
@@ -0,0 +1,27 @@
1
+ function extendPrototype(sources, destination) {
2
+ var i;
3
+ var len = sources.length;
4
+ var sourcePrototype;
5
+ for (i = 0; i < len; i += 1) {
6
+ sourcePrototype = sources[i].prototype;
7
+ for (var attr in sourcePrototype) {
8
+ if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];
9
+ }
10
+ }
11
+ }
12
+
13
+ function getDescriptor(object, prop) {
14
+ return Object.getOwnPropertyDescriptor(object, prop);
15
+ }
16
+
17
+ function createProxyFunction(prototype) {
18
+ function ProxyFunction() {}
19
+ ProxyFunction.prototype = prototype;
20
+ return ProxyFunction;
21
+ }
22
+
23
+ export {
24
+ extendPrototype,
25
+ getDescriptor,
26
+ createProxyFunction,
27
+ };
@@ -0,0 +1,42 @@
1
+ function getFontProperties(fontData) {
2
+ var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];
3
+
4
+ var fWeight = 'normal'; var
5
+ fStyle = 'normal';
6
+ var len = styles.length;
7
+ var styleName;
8
+ for (var i = 0; i < len; i += 1) {
9
+ styleName = styles[i].toLowerCase();
10
+ switch (styleName) {
11
+ case 'italic':
12
+ fStyle = 'italic';
13
+ break;
14
+ case 'bold':
15
+ fWeight = '700';
16
+ break;
17
+ case 'black':
18
+ fWeight = '900';
19
+ break;
20
+ case 'medium':
21
+ fWeight = '500';
22
+ break;
23
+ case 'regular':
24
+ case 'normal':
25
+ fWeight = '400';
26
+ break;
27
+ case 'light':
28
+ case 'thin':
29
+ fWeight = '200';
30
+ break;
31
+ default:
32
+ break;
33
+ }
34
+ }
35
+
36
+ return {
37
+ style: fStyle,
38
+ weight: fontData.fWeight || fWeight,
39
+ };
40
+ }
41
+
42
+ export default getFontProperties;
@@ -0,0 +1,43 @@
1
+ const createTypedArray = (function () {
2
+ function createRegularArray(type, len) {
3
+ var i = 0;
4
+ var arr = [];
5
+ var value;
6
+ switch (type) {
7
+ case 'int16':
8
+ case 'uint8c':
9
+ value = 1;
10
+ break;
11
+ default:
12
+ value = 1.1;
13
+ break;
14
+ }
15
+ for (i = 0; i < len; i += 1) {
16
+ arr.push(value);
17
+ }
18
+ return arr;
19
+ }
20
+ function createTypedArrayFactory(type, len) {
21
+ if (type === 'float32') {
22
+ return new Float32Array(len);
23
+ } if (type === 'int16') {
24
+ return new Int16Array(len);
25
+ } if (type === 'uint8c') {
26
+ return new Uint8ClampedArray(len);
27
+ }
28
+ return createRegularArray(type, len);
29
+ }
30
+ if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {
31
+ return createTypedArrayFactory;
32
+ }
33
+ return createRegularArray;
34
+ }());
35
+
36
+ function createSizedArray(len) {
37
+ return Array.apply(null, { length: len });
38
+ }
39
+
40
+ export {
41
+ createTypedArray,
42
+ createSizedArray,
43
+ };
@@ -0,0 +1,96 @@
1
+ import createTag from './html_elements';
2
+ import createNS from './svg_elements';
3
+ import featureSupport from '../featureSupport';
4
+
5
+ var lumaLoader = (function () {
6
+ var id = '__lottie_element_luma_buffer';
7
+ var lumaBuffer = null;
8
+ var lumaBufferCtx = null;
9
+ var svg = null;
10
+
11
+ // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.
12
+ // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.
13
+ // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.
14
+ // Naming it solution 2 to mark the extra comment lines.
15
+ /*
16
+ var svgString = [
17
+ '<svg xmlns="http://www.w3.org/2000/svg">',
18
+ '<filter id="' + id + '">',
19
+ '<feColorMatrix type="matrix" color-interpolation-filters="sRGB" values="',
20
+ '0.3, 0.3, 0.3, 0, 0, ',
21
+ '0.3, 0.3, 0.3, 0, 0, ',
22
+ '0.3, 0.3, 0.3, 0, 0, ',
23
+ '0.3, 0.3, 0.3, 0, 0',
24
+ '"/>',
25
+ '</filter>',
26
+ '</svg>',
27
+ ].join('');
28
+ var blob = new Blob([svgString], { type: 'image/svg+xml' });
29
+ var url = URL.createObjectURL(blob);
30
+ */
31
+
32
+ function createLumaSvgFilter() {
33
+ var _svg = createNS('svg');
34
+ var fil = createNS('filter');
35
+ var matrix = createNS('feColorMatrix');
36
+ fil.setAttribute('id', id);
37
+ matrix.setAttribute('type', 'matrix');
38
+ matrix.setAttribute('color-interpolation-filters', 'sRGB');
39
+ matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');
40
+ fil.appendChild(matrix);
41
+ _svg.appendChild(fil);
42
+ _svg.setAttribute('id', id + '_svg');
43
+ if (featureSupport.svgLumaHidden) {
44
+ _svg.style.display = 'none';
45
+ }
46
+ return _svg;
47
+ }
48
+
49
+ function loadLuma() {
50
+ if (!lumaBuffer) {
51
+ svg = createLumaSvgFilter();
52
+ document.body.appendChild(svg);
53
+ lumaBuffer = createTag('canvas');
54
+ lumaBufferCtx = lumaBuffer.getContext('2d');
55
+ // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2
56
+ lumaBufferCtx.filter = 'url(#' + id + ')';
57
+ lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';
58
+ lumaBufferCtx.fillRect(0, 0, 1, 1);
59
+ }
60
+ }
61
+
62
+ function getLuma(canvas) {
63
+ if (!lumaBuffer) {
64
+ loadLuma();
65
+ }
66
+ lumaBuffer.width = canvas.width;
67
+ lumaBuffer.height = canvas.height;
68
+ // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2
69
+ lumaBufferCtx.filter = 'url(#' + id + ')';
70
+ return lumaBuffer;
71
+ }
72
+ return {
73
+ load: loadLuma,
74
+ get: getLuma,
75
+ };
76
+ });
77
+
78
+ function createCanvas(width, height) {
79
+ if (featureSupport.offscreenCanvas) {
80
+ return new OffscreenCanvas(width, height);
81
+ }
82
+ var canvas = createTag('canvas');
83
+ canvas.width = width;
84
+ canvas.height = height;
85
+ return canvas;
86
+ }
87
+
88
+ const assetLoader = (function () {
89
+ return {
90
+ loadLumaCanvas: lumaLoader.load,
91
+ getLumaCanvas: lumaLoader.get,
92
+ createCanvas: createCanvas,
93
+ };
94
+ }());
95
+
96
+ export default assetLoader;
@@ -0,0 +1,26 @@
1
+ const getBlendMode = (function () {
2
+ var blendModeEnums = {
3
+ 0: 'source-over',
4
+ 1: 'multiply',
5
+ 2: 'screen',
6
+ 3: 'overlay',
7
+ 4: 'darken',
8
+ 5: 'lighten',
9
+ 6: 'color-dodge',
10
+ 7: 'color-burn',
11
+ 8: 'hard-light',
12
+ 9: 'soft-light',
13
+ 10: 'difference',
14
+ 11: 'exclusion',
15
+ 12: 'hue',
16
+ 13: 'saturation',
17
+ 14: 'color',
18
+ 15: 'luminosity',
19
+ };
20
+
21
+ return function (mode) {
22
+ return blendModeEnums[mode] || '';
23
+ };
24
+ }());
25
+
26
+ export default getBlendMode;
@@ -0,0 +1,61 @@
1
+ import assetManager from './assetManager';
2
+
3
+ const pool = [];
4
+ const checkedOut = new Set();
5
+
6
+ let maxWidth = 0;
7
+ let maxHeight = 0;
8
+
9
+ function reallocate() {
10
+ for (let i = 0; i < pool.length; i += 1) {
11
+ const canvas = pool[i];
12
+ if (canvas.width < maxWidth) {
13
+ canvas.width = maxWidth;
14
+ }
15
+ if (canvas.height < maxHeight) {
16
+ canvas.height = maxHeight;
17
+ }
18
+ }
19
+ }
20
+
21
+ function reallocateIfNeeded(width, height) {
22
+ let needsReallocation = false;
23
+ if (maxWidth < width) {
24
+ maxWidth = width;
25
+ needsReallocation = true;
26
+ }
27
+ if (maxHeight < height) {
28
+ maxHeight = height;
29
+ needsReallocation = true;
30
+ }
31
+ if (needsReallocation) {
32
+ reallocate();
33
+ }
34
+ }
35
+
36
+ function allocate(width, height) {
37
+ reallocateIfNeeded(width, height);
38
+ const canvas = pool.length ? pool.pop() : assetManager.createCanvas(width, height);
39
+ checkedOut.add(canvas);
40
+ return canvas;
41
+ }
42
+
43
+ function release(canvas) {
44
+ checkedOut.delete(canvas);
45
+ pool.push(canvas);
46
+ }
47
+
48
+ function releaseAll() {
49
+ checkedOut.forEach((canvas) => {
50
+ pool.push(canvas);
51
+ });
52
+ checkedOut.clear();
53
+ }
54
+
55
+ const bufferManager = {
56
+ allocate,
57
+ release,
58
+ releaseAll,
59
+ };
60
+
61
+ export default bufferManager;
@@ -0,0 +1,29 @@
1
+ function DynamicPropertyContainer() {}
2
+ DynamicPropertyContainer.prototype = {
3
+ addDynamicProperty: function (prop) {
4
+ if (this.dynamicProperties.indexOf(prop) === -1) {
5
+ this.dynamicProperties.push(prop);
6
+ this.container.addDynamicProperty(this);
7
+ this._isAnimated = true;
8
+ }
9
+ },
10
+ iterateDynamicProperties: function () {
11
+ this._mdf = false;
12
+ var i;
13
+ var len = this.dynamicProperties.length;
14
+ for (i = 0; i < len; i += 1) {
15
+ this.dynamicProperties[i].getValue();
16
+ if (this.dynamicProperties[i]._mdf) {
17
+ this._mdf = true;
18
+ }
19
+ }
20
+ },
21
+ initDynamicPropertyContainer: function (container) {
22
+ this.container = container;
23
+ this.dynamicProperties = [];
24
+ this._mdf = false;
25
+ this._isAnimated = false;
26
+ },
27
+ };
28
+
29
+ export default DynamicPropertyContainer;
@@ -0,0 +1,3 @@
1
+ export default {
2
+ TRANSFORM_EFFECT: 'transformEFfect',
3
+ };
@@ -0,0 +1,6 @@
1
+ function createTag(type) {
2
+ // return {appendChild:function(){},setAttribute:function(){},style:{}}
3
+ return document.createElement(type);
4
+ }
5
+
6
+ export default createTag;
@@ -0,0 +1,3 @@
1
+ export default {
2
+ SHAPE: 'shape',
3
+ };
@@ -0,0 +1,16 @@
1
+ const lineCapEnum = {
2
+ 1: 'butt',
3
+ 2: 'round',
4
+ 3: 'square',
5
+ };
6
+
7
+ const lineJoinEnum = {
8
+ 1: 'miter',
9
+ 2: 'round',
10
+ 3: 'bevel',
11
+ };
12
+
13
+ export {
14
+ lineCapEnum,
15
+ lineJoinEnum,
16
+ };
@@ -0,0 +1,8 @@
1
+ import { svgNS } from '../../main';
2
+
3
+ function createNS(type) {
4
+ // return {appendChild:function(){},setAttribute:function(){},style:{}}
5
+ return document.createElementNS(svgNS, type);
6
+ }
7
+
8
+ export default createNS;