@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,752 @@
1
+ /* eslint-disable camelcase */
2
+
3
+ import {
4
+ degToRads,
5
+ BMMath,
6
+ } from '../common';
7
+ import {
8
+ createTypedArray,
9
+ } from '../helpers/arrays';
10
+ import BezierFactory from '../../3rd_party/BezierEaser';
11
+ import shapePool from '../pooling/shape_pool';
12
+ import seedrandom from '../../3rd_party/seedrandom';
13
+ import propTypes from '../helpers/propTypes';
14
+
15
+ const ExpressionManager = (function () {
16
+ 'use strict';
17
+
18
+ var ob = {};
19
+ var Math = BMMath;
20
+ var window = null;
21
+ var document = null;
22
+ var XMLHttpRequest = null;
23
+ var fetch = null;
24
+ var frames = null;
25
+ var _lottieGlobal = {};
26
+ seedrandom(BMMath);
27
+
28
+ function resetFrame() {
29
+ _lottieGlobal = {};
30
+ }
31
+
32
+ function $bm_isInstanceOfArray(arr) {
33
+ return arr.constructor === Array || arr.constructor === Float32Array;
34
+ }
35
+
36
+ function isNumerable(tOfV, v) {
37
+ return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';
38
+ }
39
+
40
+ function $bm_neg(a) {
41
+ var tOfA = typeof a;
42
+ if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {
43
+ return -a;
44
+ }
45
+ if ($bm_isInstanceOfArray(a)) {
46
+ var i;
47
+ var lenA = a.length;
48
+ var retArr = [];
49
+ for (i = 0; i < lenA; i += 1) {
50
+ retArr[i] = -a[i];
51
+ }
52
+ return retArr;
53
+ }
54
+ if (a.propType) {
55
+ return a.v;
56
+ }
57
+ return -a;
58
+ }
59
+
60
+ var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;
61
+ var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;
62
+ var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;
63
+
64
+ function sum(a, b) {
65
+ var tOfA = typeof a;
66
+ var tOfB = typeof b;
67
+ if ((isNumerable(tOfA, a) && isNumerable(tOfB, b)) || tOfA === 'string' || tOfB === 'string') {
68
+ return a + b;
69
+ }
70
+ if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {
71
+ a = a.slice(0);
72
+ a[0] += b;
73
+ return a;
74
+ }
75
+ if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
76
+ b = b.slice(0);
77
+ b[0] = a + b[0];
78
+ return b;
79
+ }
80
+ if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {
81
+ var i = 0;
82
+ var lenA = a.length;
83
+ var lenB = b.length;
84
+ var retArr = [];
85
+ while (i < lenA || i < lenB) {
86
+ if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {
87
+ retArr[i] = a[i] + b[i];
88
+ } else {
89
+ retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];
90
+ }
91
+ i += 1;
92
+ }
93
+ return retArr;
94
+ }
95
+ return 0;
96
+ }
97
+ var add = sum;
98
+
99
+ function sub(a, b) {
100
+ var tOfA = typeof a;
101
+ var tOfB = typeof b;
102
+ if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
103
+ if (tOfA === 'string') {
104
+ a = parseInt(a, 10);
105
+ }
106
+ if (tOfB === 'string') {
107
+ b = parseInt(b, 10);
108
+ }
109
+ return a - b;
110
+ }
111
+ if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {
112
+ a = a.slice(0);
113
+ a[0] -= b;
114
+ return a;
115
+ }
116
+ if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
117
+ b = b.slice(0);
118
+ b[0] = a - b[0];
119
+ return b;
120
+ }
121
+ if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {
122
+ var i = 0;
123
+ var lenA = a.length;
124
+ var lenB = b.length;
125
+ var retArr = [];
126
+ while (i < lenA || i < lenB) {
127
+ if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {
128
+ retArr[i] = a[i] - b[i];
129
+ } else {
130
+ retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];
131
+ }
132
+ i += 1;
133
+ }
134
+ return retArr;
135
+ }
136
+ return 0;
137
+ }
138
+
139
+ function mul(a, b) {
140
+ var tOfA = typeof a;
141
+ var tOfB = typeof b;
142
+ var arr;
143
+ if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
144
+ return a * b;
145
+ }
146
+
147
+ var i;
148
+ var len;
149
+ if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {
150
+ len = a.length;
151
+ arr = createTypedArray('float32', len);
152
+ for (i = 0; i < len; i += 1) {
153
+ arr[i] = a[i] * b;
154
+ }
155
+ return arr;
156
+ }
157
+ if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
158
+ len = b.length;
159
+ arr = createTypedArray('float32', len);
160
+ for (i = 0; i < len; i += 1) {
161
+ arr[i] = a * b[i];
162
+ }
163
+ return arr;
164
+ }
165
+ return 0;
166
+ }
167
+
168
+ function div(a, b) {
169
+ var tOfA = typeof a;
170
+ var tOfB = typeof b;
171
+ var arr;
172
+ if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {
173
+ return a / b;
174
+ }
175
+ var i;
176
+ var len;
177
+ if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {
178
+ len = a.length;
179
+ arr = createTypedArray('float32', len);
180
+ for (i = 0; i < len; i += 1) {
181
+ arr[i] = a[i] / b;
182
+ }
183
+ return arr;
184
+ }
185
+ if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {
186
+ len = b.length;
187
+ arr = createTypedArray('float32', len);
188
+ for (i = 0; i < len; i += 1) {
189
+ arr[i] = a / b[i];
190
+ }
191
+ return arr;
192
+ }
193
+ return 0;
194
+ }
195
+ function mod(a, b) {
196
+ if (typeof a === 'string') {
197
+ a = parseInt(a, 10);
198
+ }
199
+ if (typeof b === 'string') {
200
+ b = parseInt(b, 10);
201
+ }
202
+ return a % b;
203
+ }
204
+ var $bm_sum = sum;
205
+ var $bm_sub = sub;
206
+ var $bm_mul = mul;
207
+ var $bm_div = div;
208
+ var $bm_mod = mod;
209
+
210
+ function clamp(num, min, max) {
211
+ if (min > max) {
212
+ var mm = max;
213
+ max = min;
214
+ min = mm;
215
+ }
216
+ return Math.min(Math.max(num, min), max);
217
+ }
218
+
219
+ function radiansToDegrees(val) {
220
+ return val / degToRads;
221
+ }
222
+ var radians_to_degrees = radiansToDegrees;
223
+
224
+ function degreesToRadians(val) {
225
+ return val * degToRads;
226
+ }
227
+ var degrees_to_radians = radiansToDegrees;
228
+
229
+ var helperLengthArray = [0, 0, 0, 0, 0, 0];
230
+
231
+ function length(arr1, arr2) {
232
+ if (typeof arr1 === 'number' || arr1 instanceof Number) {
233
+ arr2 = arr2 || 0;
234
+ return Math.abs(arr1 - arr2);
235
+ }
236
+ if (!arr2) {
237
+ arr2 = helperLengthArray;
238
+ }
239
+ var i;
240
+ var len = Math.min(arr1.length, arr2.length);
241
+ var addedLength = 0;
242
+ for (i = 0; i < len; i += 1) {
243
+ addedLength += Math.pow(arr2[i] - arr1[i], 2);
244
+ }
245
+ return Math.sqrt(addedLength);
246
+ }
247
+
248
+ function normalize(vec) {
249
+ return div(vec, length(vec));
250
+ }
251
+
252
+ function rgbToHsl(val) {
253
+ var r = val[0]; var g = val[1]; var b = val[2];
254
+ var max = Math.max(r, g, b);
255
+ var min = Math.min(r, g, b);
256
+ var h;
257
+ var s;
258
+ var l = (max + min) / 2;
259
+
260
+ if (max === min) {
261
+ h = 0; // achromatic
262
+ s = 0; // achromatic
263
+ } else {
264
+ var d = max - min;
265
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
266
+ switch (max) {
267
+ case r: h = (g - b) / d + (g < b ? 6 : 0); break;
268
+ case g: h = (b - r) / d + 2; break;
269
+ case b: h = (r - g) / d + 4; break;
270
+ default: break;
271
+ }
272
+ h /= 6;
273
+ }
274
+
275
+ return [h, s, l, val[3]];
276
+ }
277
+
278
+ function hue2rgb(p, q, t) {
279
+ if (t < 0) t += 1;
280
+ if (t > 1) t -= 1;
281
+ if (t < 1 / 6) return p + (q - p) * 6 * t;
282
+ if (t < 1 / 2) return q;
283
+ if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
284
+ return p;
285
+ }
286
+
287
+ function hslToRgb(val) {
288
+ var h = val[0];
289
+ var s = val[1];
290
+ var l = val[2];
291
+
292
+ var r;
293
+ var g;
294
+ var b;
295
+
296
+ if (s === 0) {
297
+ r = l; // achromatic
298
+ b = l; // achromatic
299
+ g = l; // achromatic
300
+ } else {
301
+ var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
302
+ var p = 2 * l - q;
303
+ r = hue2rgb(p, q, h + 1 / 3);
304
+ g = hue2rgb(p, q, h);
305
+ b = hue2rgb(p, q, h - 1 / 3);
306
+ }
307
+
308
+ return [r, g, b, val[3]];
309
+ }
310
+
311
+ function linear(t, tMin, tMax, value1, value2) {
312
+ if (value1 === undefined || value2 === undefined) {
313
+ value1 = tMin;
314
+ value2 = tMax;
315
+ tMin = 0;
316
+ tMax = 1;
317
+ }
318
+ if (tMax < tMin) {
319
+ var _tMin = tMax;
320
+ tMax = tMin;
321
+ tMin = _tMin;
322
+ }
323
+ if (t <= tMin) {
324
+ return value1;
325
+ } if (t >= tMax) {
326
+ return value2;
327
+ }
328
+ var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);
329
+ if (!value1.length) {
330
+ return value1 + (value2 - value1) * perc;
331
+ }
332
+ var i;
333
+ var len = value1.length;
334
+ var arr = createTypedArray('float32', len);
335
+ for (i = 0; i < len; i += 1) {
336
+ arr[i] = value1[i] + (value2[i] - value1[i]) * perc;
337
+ }
338
+ return arr;
339
+ }
340
+ function random(min, max) {
341
+ if (max === undefined) {
342
+ if (min === undefined) {
343
+ min = 0;
344
+ max = 1;
345
+ } else {
346
+ max = min;
347
+ min = undefined;
348
+ }
349
+ }
350
+ if (max.length) {
351
+ var i;
352
+ var len = max.length;
353
+ if (!min) {
354
+ min = createTypedArray('float32', len);
355
+ }
356
+ var arr = createTypedArray('float32', len);
357
+ var rnd = BMMath.random();
358
+ for (i = 0; i < len; i += 1) {
359
+ arr[i] = min[i] + rnd * (max[i] - min[i]);
360
+ }
361
+ return arr;
362
+ }
363
+ if (min === undefined) {
364
+ min = 0;
365
+ }
366
+ var rndm = BMMath.random();
367
+ return min + rndm * (max - min);
368
+ }
369
+
370
+ function createPath(points, inTangents, outTangents, closed) {
371
+ var i;
372
+ var len = points.length;
373
+ var path = shapePool.newElement();
374
+ path.setPathData(!!closed, len);
375
+ var arrPlaceholder = [0, 0];
376
+ var inVertexPoint;
377
+ var outVertexPoint;
378
+ for (i = 0; i < len; i += 1) {
379
+ inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;
380
+ outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;
381
+ path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);
382
+ }
383
+ return path;
384
+ }
385
+
386
+ function initiateExpression(elem, data, property) {
387
+ // Bail out if we don't want expressions
388
+ function noOp(_value) {
389
+ return _value;
390
+ }
391
+ if (!elem.globalData.renderConfig.runExpressions) {
392
+ return noOp;
393
+ }
394
+
395
+ var val = data.x;
396
+ var needsVelocity = /velocity(?![\w\d])/.test(val);
397
+ var _needsRandom = val.indexOf('random') !== -1;
398
+ var elemType = elem.data.ty;
399
+ var transform;
400
+ var $bm_transform;
401
+ var content;
402
+ var effect;
403
+ var thisProperty = property;
404
+ thisProperty._name = elem.data.nm;
405
+ thisProperty.valueAtTime = thisProperty.getValueAtTime;
406
+ Object.defineProperty(thisProperty, 'value', {
407
+ get: function () {
408
+ return thisProperty.v;
409
+ },
410
+ });
411
+ elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;
412
+ elem.comp.displayStartTime = 0;
413
+ var inPoint = elem.data.ip / elem.comp.globalData.frameRate;
414
+ var outPoint = elem.data.op / elem.comp.globalData.frameRate;
415
+ var width = elem.data.sw ? elem.data.sw : 0;
416
+ var height = elem.data.sh ? elem.data.sh : 0;
417
+ var name = elem.data.nm;
418
+ var loopIn;
419
+ var loop_in;
420
+ var loopOut;
421
+ var loop_out;
422
+ var smooth;
423
+ var toWorld;
424
+ var fromWorld;
425
+ var fromComp;
426
+ var toComp;
427
+ var fromCompToSurface;
428
+ var position;
429
+ var rotation;
430
+ var anchorPoint;
431
+ var scale;
432
+ var thisLayer;
433
+ var thisComp;
434
+ var mask;
435
+ var valueAtTime;
436
+ var velocityAtTime;
437
+
438
+ var scoped_bm_rt;
439
+ // val = val.replace(/(\\?"|')((http)(s)?(:\/))?\/.*?(\\?"|')/g, "\"\""); // deter potential network calls
440
+ var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval
441
+ var numKeys = property.kf ? data.k.length : 0;
442
+
443
+ var active = !this.data || this.data.hd !== true;
444
+
445
+ var wiggle = function wiggle(freq, amp) {
446
+ var iWiggle;
447
+ var j;
448
+ var lenWiggle = this.pv.length ? this.pv.length : 1;
449
+ var addedAmps = createTypedArray('float32', lenWiggle);
450
+ freq = 5;
451
+ var iterations = Math.floor(time * freq);
452
+ iWiggle = 0;
453
+ j = 0;
454
+ while (iWiggle < iterations) {
455
+ // var rnd = BMMath.random();
456
+ for (j = 0; j < lenWiggle; j += 1) {
457
+ addedAmps[j] += -amp + amp * 2 * BMMath.random();
458
+ // addedAmps[j] += -amp + amp*2*rnd;
459
+ }
460
+ iWiggle += 1;
461
+ }
462
+ // var rnd2 = BMMath.random();
463
+ var periods = time * freq;
464
+ var perc = periods - Math.floor(periods);
465
+ var arr = createTypedArray('float32', lenWiggle);
466
+ if (lenWiggle > 1) {
467
+ for (j = 0; j < lenWiggle; j += 1) {
468
+ arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;
469
+ // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;
470
+ // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);
471
+ }
472
+ return arr;
473
+ }
474
+ return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;
475
+ }.bind(this);
476
+
477
+ if (thisProperty.loopIn) {
478
+ loopIn = thisProperty.loopIn.bind(thisProperty);
479
+ loop_in = loopIn;
480
+ }
481
+
482
+ if (thisProperty.loopOut) {
483
+ loopOut = thisProperty.loopOut.bind(thisProperty);
484
+ loop_out = loopOut;
485
+ }
486
+
487
+ if (thisProperty.smooth) {
488
+ smooth = thisProperty.smooth.bind(thisProperty);
489
+ }
490
+
491
+ function loopInDuration(type, duration) {
492
+ return loopIn(type, duration, true);
493
+ }
494
+
495
+ function loopOutDuration(type, duration) {
496
+ return loopOut(type, duration, true);
497
+ }
498
+
499
+ if (this.getValueAtTime) {
500
+ valueAtTime = this.getValueAtTime.bind(this);
501
+ }
502
+
503
+ if (this.getVelocityAtTime) {
504
+ velocityAtTime = this.getVelocityAtTime.bind(this);
505
+ }
506
+
507
+ var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);
508
+
509
+ function lookAt(elem1, elem2) {
510
+ var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];
511
+ var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;
512
+ var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;
513
+ return [yaw, pitch, 0];
514
+ }
515
+
516
+ function easeOut(t, tMin, tMax, val1, val2) {
517
+ return applyEase(easeOutBez, t, tMin, tMax, val1, val2);
518
+ }
519
+
520
+ function easeIn(t, tMin, tMax, val1, val2) {
521
+ return applyEase(easeInBez, t, tMin, tMax, val1, val2);
522
+ }
523
+
524
+ function ease(t, tMin, tMax, val1, val2) {
525
+ return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);
526
+ }
527
+
528
+ function applyEase(fn, t, tMin, tMax, val1, val2) {
529
+ if (val1 === undefined) {
530
+ val1 = tMin;
531
+ val2 = tMax;
532
+ } else {
533
+ t = (t - tMin) / (tMax - tMin);
534
+ }
535
+ if (t > 1) {
536
+ t = 1;
537
+ } else if (t < 0) {
538
+ t = 0;
539
+ }
540
+ var mult = fn(t);
541
+ if ($bm_isInstanceOfArray(val1)) {
542
+ var iKey;
543
+ var lenKey = val1.length;
544
+ var arr = createTypedArray('float32', lenKey);
545
+ for (iKey = 0; iKey < lenKey; iKey += 1) {
546
+ arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];
547
+ }
548
+ return arr;
549
+ }
550
+ return (val2 - val1) * mult + val1;
551
+ }
552
+
553
+ function nearestKey(time) {
554
+ var iKey;
555
+ var lenKey = data.k.length;
556
+ var index;
557
+ var keyTime;
558
+ if (!data.k.length || typeof (data.k[0]) === 'number') {
559
+ index = 0;
560
+ keyTime = 0;
561
+ } else {
562
+ index = -1;
563
+ time *= elem.comp.globalData.frameRate;
564
+ if (time < data.k[0].t) {
565
+ index = 1;
566
+ keyTime = data.k[0].t;
567
+ } else {
568
+ for (iKey = 0; iKey < lenKey - 1; iKey += 1) {
569
+ if (time === data.k[iKey].t) {
570
+ index = iKey + 1;
571
+ keyTime = data.k[iKey].t;
572
+ break;
573
+ } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {
574
+ if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {
575
+ index = iKey + 2;
576
+ keyTime = data.k[iKey + 1].t;
577
+ } else {
578
+ index = iKey + 1;
579
+ keyTime = data.k[iKey].t;
580
+ }
581
+ break;
582
+ }
583
+ }
584
+ if (index === -1) {
585
+ index = iKey + 1;
586
+ keyTime = data.k[iKey].t;
587
+ }
588
+ }
589
+ }
590
+ var obKey = {};
591
+ obKey.index = index;
592
+ obKey.time = keyTime / elem.comp.globalData.frameRate;
593
+ return obKey;
594
+ }
595
+
596
+ function key(ind) {
597
+ var obKey;
598
+ var iKey;
599
+ var lenKey;
600
+ if (!data.k.length || typeof (data.k[0]) === 'number') {
601
+ throw new Error('The property has no keyframe at index ' + ind);
602
+ }
603
+ ind -= 1;
604
+ obKey = {
605
+ time: data.k[ind].t / elem.comp.globalData.frameRate,
606
+ value: [],
607
+ };
608
+ var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;
609
+
610
+ lenKey = arr.length;
611
+ for (iKey = 0; iKey < lenKey; iKey += 1) {
612
+ obKey[iKey] = arr[iKey];
613
+ obKey.value[iKey] = arr[iKey];
614
+ }
615
+ return obKey;
616
+ }
617
+
618
+ function framesToTime(fr, fps) {
619
+ if (!fps) {
620
+ fps = elem.comp.globalData.frameRate;
621
+ }
622
+ return fr / fps;
623
+ }
624
+
625
+ function timeToFrames(t, fps) {
626
+ if (!t && t !== 0) {
627
+ t = time;
628
+ }
629
+ if (!fps) {
630
+ fps = elem.comp.globalData.frameRate;
631
+ }
632
+ return t * fps;
633
+ }
634
+
635
+ function seedRandom(seed) {
636
+ BMMath.seedrandom(randSeed + seed);
637
+ }
638
+
639
+ function sourceRectAtTime() {
640
+ return elem.sourceRectAtTime();
641
+ }
642
+
643
+ function substring(init, end) {
644
+ if (typeof value === 'string') {
645
+ if (end === undefined) {
646
+ return value.substring(init);
647
+ }
648
+ return value.substring(init, end);
649
+ }
650
+ return '';
651
+ }
652
+
653
+ function substr(init, end) {
654
+ if (typeof value === 'string') {
655
+ if (end === undefined) {
656
+ return value.substr(init);
657
+ }
658
+ return value.substr(init, end);
659
+ }
660
+ return '';
661
+ }
662
+
663
+ function posterizeTime(framesPerSecond) {
664
+ time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;
665
+ value = valueAtTime(time);
666
+ }
667
+
668
+ var time;
669
+ var velocity;
670
+ var value;
671
+ var text;
672
+ var textIndex;
673
+ var textTotal;
674
+ var selectorValue;
675
+ var index = elem.data.ind;
676
+ var hasParent = !!(elem.hierarchy && elem.hierarchy.length);
677
+ var parent;
678
+ var randSeed = Math.floor(Math.random() * 1000000);
679
+ var globalData = elem.globalData;
680
+
681
+ function executeExpression(_value) {
682
+ // globalData.pushExpression();
683
+ value = _value;
684
+ if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {
685
+ return value;
686
+ }
687
+ if (this.propType === 'textSelector') {
688
+ textIndex = this.textIndex;
689
+ textTotal = this.textTotal;
690
+ selectorValue = this.selectorValue;
691
+ }
692
+ if (!thisLayer) {
693
+ text = elem.layerInterface.text;
694
+ thisLayer = elem.layerInterface;
695
+ thisComp = elem.comp.compInterface;
696
+ toWorld = thisLayer.toWorld.bind(thisLayer);
697
+ fromWorld = thisLayer.fromWorld.bind(thisLayer);
698
+ fromComp = thisLayer.fromComp.bind(thisLayer);
699
+ toComp = thisLayer.toComp.bind(thisLayer);
700
+ mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;
701
+ fromCompToSurface = fromComp;
702
+ }
703
+ if (!transform) {
704
+ transform = elem.layerInterface('ADBE Transform Group');
705
+ $bm_transform = transform;
706
+ if (transform) {
707
+ anchorPoint = transform.anchorPoint;
708
+ /* position = transform.position;
709
+ rotation = transform.rotation;
710
+ scale = transform.scale; */
711
+ }
712
+ }
713
+
714
+ if (elemType === 4 && !content) {
715
+ content = thisLayer('ADBE Root Vectors Group');
716
+ }
717
+ if (!effect) {
718
+ effect = thisLayer(4);
719
+ }
720
+ hasParent = !!(elem.hierarchy && elem.hierarchy.length);
721
+ if (hasParent && !parent) {
722
+ parent = elem.hierarchy[0].layerInterface;
723
+ }
724
+ time = this.comp.renderedFrame / this.comp.globalData.frameRate;
725
+ if (_needsRandom) {
726
+ seedRandom(randSeed + time);
727
+ }
728
+ if (needsVelocity) {
729
+ velocity = velocityAtTime(time);
730
+ }
731
+ expression_function();
732
+ this.frameExpressionId = elem.globalData.frameId;
733
+
734
+ // TODO: Check if it's possible to return on ShapeInterface the .v value
735
+ // Changed this to a ternary operation because Rollup failed compiling it correctly
736
+ scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE
737
+ ? scoped_bm_rt.v
738
+ : scoped_bm_rt;
739
+ return scoped_bm_rt;
740
+ }
741
+ // Bundlers will see these as dead code and unless we reference them
742
+ executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];
743
+ return executeExpression;
744
+ }
745
+
746
+ ob.initiateExpression = initiateExpression;
747
+ ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];
748
+ ob.resetFrame = resetFrame;
749
+ return ob;
750
+ }());
751
+
752
+ export default ExpressionManager;