@lumen5/lottie-web 5.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/.babelrc.json +3 -0
  2. package/.eslintrc.json +46 -0
  3. package/.gitattributes +1 -0
  4. package/.github/FUNDING.yml +1 -0
  5. package/.github/ISSUE_TEMPLATE.md +22 -0
  6. package/.github/workflows/publish.yml +26 -0
  7. package/.github/workflows/testAnimations.yml +29 -0
  8. package/.github/workflows/updateScreenshots.yml +34 -0
  9. package/CHANGELOG.md +601 -0
  10. package/History.md +1230 -0
  11. package/LICENSE.md +21 -0
  12. package/README.md +351 -0
  13. package/bower.json +31 -0
  14. package/build/old_parser/bodymovin_parser.jsx +3023 -0
  15. package/build/old_parser/helperProject.aep +0 -0
  16. package/build/player/cjs/lottie.min.js +18229 -0
  17. package/build/player/cjs/lottie_canvas.min.js +16465 -0
  18. package/build/player/cjs/lottie_html.min.js +16312 -0
  19. package/build/player/cjs/lottie_light.min.js +11584 -0
  20. package/build/player/cjs/lottie_light_canvas.min.js +13518 -0
  21. package/build/player/cjs/lottie_light_html.min.js +12843 -0
  22. package/build/player/cjs/lottie_svg.min.js +15053 -0
  23. package/build/player/esm/lottie.min.js +18225 -0
  24. package/build/player/esm/lottie_canvas.min.js +16461 -0
  25. package/build/player/esm/lottie_html.min.js +16308 -0
  26. package/build/player/esm/lottie_light.min.js +11580 -0
  27. package/build/player/esm/lottie_light_canvas.min.js +13514 -0
  28. package/build/player/esm/lottie_light_html.min.js +12839 -0
  29. package/build/player/esm/lottie_svg.min.js +15049 -0
  30. package/build/player/lottie.d.ts +5 -0
  31. package/build/player/lottie.js +17151 -0
  32. package/build/player/lottie.min.js +1 -0
  33. package/build/player/lottie_canvas.js +15506 -0
  34. package/build/player/lottie_canvas.min.js +1 -0
  35. package/build/player/lottie_canvas_worker.js +18196 -0
  36. package/build/player/lottie_canvas_worker.min.js +15 -0
  37. package/build/player/lottie_html.d.ts +5 -0
  38. package/build/player/lottie_html.js +15354 -0
  39. package/build/player/lottie_html.min.js +1 -0
  40. package/build/player/lottie_light.d.ts +5 -0
  41. package/build/player/lottie_light.js +10854 -0
  42. package/build/player/lottie_light.min.js +1 -0
  43. package/build/player/lottie_light_canvas.d.ts +5 -0
  44. package/build/player/lottie_light_canvas.js +12666 -0
  45. package/build/player/lottie_light_canvas.min.js +1 -0
  46. package/build/player/lottie_light_html.d.ts +5 -0
  47. package/build/player/lottie_light_html.js +12029 -0
  48. package/build/player/lottie_light_html.min.js +1 -0
  49. package/build/player/lottie_svg.d.ts +5 -0
  50. package/build/player/lottie_svg.js +14179 -0
  51. package/build/player/lottie_svg.min.js +1 -0
  52. package/build/player/lottie_worker.js +18196 -0
  53. package/build/player/lottie_worker.min.js +15 -0
  54. package/docs/json/animation.json +101 -0
  55. package/docs/json/effects/angle.json +40 -0
  56. package/docs/json/effects/checkBox.json +40 -0
  57. package/docs/json/effects/color.json +40 -0
  58. package/docs/json/effects/customValue.json +4 -0
  59. package/docs/json/effects/dropDown.json +40 -0
  60. package/docs/json/effects/fill.json +55 -0
  61. package/docs/json/effects/group.json +41 -0
  62. package/docs/json/effects/index.json +51 -0
  63. package/docs/json/effects/layer.json +33 -0
  64. package/docs/json/effects/noValue.json +1 -0
  65. package/docs/json/effects/point.json +43 -0
  66. package/docs/json/effects/proLevels.json +130 -0
  67. package/docs/json/effects/slider.json +40 -0
  68. package/docs/json/effects/stroke.json +64 -0
  69. package/docs/json/effects/tint.json +43 -0
  70. package/docs/json/effects/tritone.json +46 -0
  71. package/docs/json/helpers/blendMode.json +71 -0
  72. package/docs/json/helpers/boolean.json +14 -0
  73. package/docs/json/helpers/composite.json +15 -0
  74. package/docs/json/helpers/lineCap.json +19 -0
  75. package/docs/json/helpers/lineJoin.json +19 -0
  76. package/docs/json/helpers/mask.json +80 -0
  77. package/docs/json/helpers/textBased.json +23 -0
  78. package/docs/json/helpers/textGrouping.json +23 -0
  79. package/docs/json/helpers/textShape.json +31 -0
  80. package/docs/json/helpers/transform.json +146 -0
  81. package/docs/json/layers/image.json +113 -0
  82. package/docs/json/layers/null.json +87 -0
  83. package/docs/json/layers/preComp.json +118 -0
  84. package/docs/json/layers/shape.json +157 -0
  85. package/docs/json/layers/solid.json +120 -0
  86. package/docs/json/layers/text.json +523 -0
  87. package/docs/json/properties/doubleKeyframe.json +50 -0
  88. package/docs/json/properties/multiDimensional.json +21 -0
  89. package/docs/json/properties/multiDimensionalKeyframed.json +35 -0
  90. package/docs/json/properties/offsetKeyframe.json +53 -0
  91. package/docs/json/properties/shape.json +27 -0
  92. package/docs/json/properties/shapeKeyframed.json +35 -0
  93. package/docs/json/properties/shapeProp.json +50 -0
  94. package/docs/json/properties/shapePropKeyframe.json +54 -0
  95. package/docs/json/properties/value.json +21 -0
  96. package/docs/json/properties/valueKeyframe.json +33 -0
  97. package/docs/json/properties/valueKeyframed.json +25 -0
  98. package/docs/json/shapes/ellipse.json +54 -0
  99. package/docs/json/shapes/fill.json +48 -0
  100. package/docs/json/shapes/gFill.json +107 -0
  101. package/docs/json/shapes/gStroke.json +137 -0
  102. package/docs/json/shapes/group.json +89 -0
  103. package/docs/json/shapes/merge.json +27 -0
  104. package/docs/json/shapes/rect.json +66 -0
  105. package/docs/json/shapes/repeater.json +63 -0
  106. package/docs/json/shapes/round.json +35 -0
  107. package/docs/json/shapes/shape.json +40 -0
  108. package/docs/json/shapes/star.json +133 -0
  109. package/docs/json/shapes/stroke.json +78 -0
  110. package/docs/json/shapes/transform.json +102 -0
  111. package/docs/json/shapes/trim.json +61 -0
  112. package/docs/json/sources/chars.json +61 -0
  113. package/docs/json/sources/image.json +31 -0
  114. package/docs/json/sources/precomp.json +39 -0
  115. package/index.d.ts +197 -0
  116. package/package.json +54 -0
  117. package/player/index.html +115 -0
  118. package/player/js/3rd_party/BezierEaser.js +158 -0
  119. package/player/js/3rd_party/howler.js +5 -0
  120. package/player/js/3rd_party/seedrandom.js +237 -0
  121. package/player/js/3rd_party/transformation-matrix.js +449 -0
  122. package/player/js/EffectsManager.js +83 -0
  123. package/player/js/animation/AnimationItem.js +809 -0
  124. package/player/js/animation/AnimationItemWorkerOverride.js +157 -0
  125. package/player/js/animation/AnimationManager.js +248 -0
  126. package/player/js/animation/AnimationManagerWorkerOverride.js +201 -0
  127. package/player/js/effects/EffectsManagerPlaceholder.js +5 -0
  128. package/player/js/effects/SliderEffect.js +37 -0
  129. package/player/js/effects/TransformEffect.js +44 -0
  130. package/player/js/elements/AudioElement.js +102 -0
  131. package/player/js/elements/BaseElement.js +78 -0
  132. package/player/js/elements/BaseTextElement.js +4 -0
  133. package/player/js/elements/CompElement.js +107 -0
  134. package/player/js/elements/FootageElement.js +47 -0
  135. package/player/js/elements/ImageElement.js +42 -0
  136. package/player/js/elements/NullElement.js +39 -0
  137. package/player/js/elements/ShapeElement.js +76 -0
  138. package/player/js/elements/SolidElement.js +23 -0
  139. package/player/js/elements/TextElement.js +94 -0
  140. package/player/js/elements/canvasElements/CVBaseElement.js +167 -0
  141. package/player/js/elements/canvasElements/CVCompBaseElement.js +11 -0
  142. package/player/js/elements/canvasElements/CVCompElement.js +57 -0
  143. package/player/js/elements/canvasElements/CVContextData.js +239 -0
  144. package/player/js/elements/canvasElements/CVEffects.js +57 -0
  145. package/player/js/elements/canvasElements/CVImageElement.js +58 -0
  146. package/player/js/elements/canvasElements/CVMaskElement.js +72 -0
  147. package/player/js/elements/canvasElements/CVShapeElement.js +521 -0
  148. package/player/js/elements/canvasElements/CVSolidElement.js +30 -0
  149. package/player/js/elements/canvasElements/CVTextElement.js +244 -0
  150. package/player/js/elements/canvasElements/effects/CVGaussianBlurEffect.js +29 -0
  151. package/player/js/elements/canvasElements/effects/CVTransformEffect.js +9 -0
  152. package/player/js/elements/helpers/FrameElement.js +54 -0
  153. package/player/js/elements/helpers/HierarchyElement.js +52 -0
  154. package/player/js/elements/helpers/RenderableDOMElement.js +72 -0
  155. package/player/js/elements/helpers/RenderableElement.js +87 -0
  156. package/player/js/elements/helpers/TransformElement.js +140 -0
  157. package/player/js/elements/helpers/shapes/CVShapeData.js +33 -0
  158. package/player/js/elements/helpers/shapes/ProcessedElement.js +6 -0
  159. package/player/js/elements/helpers/shapes/SVGElementsRenderer.js +239 -0
  160. package/player/js/elements/helpers/shapes/SVGFillStyleData.js +18 -0
  161. package/player/js/elements/helpers/shapes/SVGGradientFillStyleData.js +100 -0
  162. package/player/js/elements/helpers/shapes/SVGGradientStrokeStyleData.js +20 -0
  163. package/player/js/elements/helpers/shapes/SVGNoStyleData.js +15 -0
  164. package/player/js/elements/helpers/shapes/SVGShapeData.js +28 -0
  165. package/player/js/elements/helpers/shapes/SVGStrokeStyleData.js +21 -0
  166. package/player/js/elements/helpers/shapes/SVGStyleData.js +19 -0
  167. package/player/js/elements/helpers/shapes/SVGTransformData.js +11 -0
  168. package/player/js/elements/helpers/shapes/ShapeElement.js +5 -0
  169. package/player/js/elements/helpers/shapes/ShapeGroupData.js +9 -0
  170. package/player/js/elements/helpers/shapes/ShapeTransformManager.js +61 -0
  171. package/player/js/elements/htmlElements/HBaseElement.js +88 -0
  172. package/player/js/elements/htmlElements/HCameraElement.js +170 -0
  173. package/player/js/elements/htmlElements/HCompElement.js +61 -0
  174. package/player/js/elements/htmlElements/HEffects.js +3 -0
  175. package/player/js/elements/htmlElements/HImageElement.js +42 -0
  176. package/player/js/elements/htmlElements/HShapeElement.js +261 -0
  177. package/player/js/elements/htmlElements/HSolidElement.js +36 -0
  178. package/player/js/elements/htmlElements/HTextElement.js +290 -0
  179. package/player/js/elements/svgElements/SVGBaseElement.js +181 -0
  180. package/player/js/elements/svgElements/SVGCompElement.js +28 -0
  181. package/player/js/elements/svgElements/SVGEffects.js +70 -0
  182. package/player/js/elements/svgElements/SVGEffectsPlaceholder.js +3 -0
  183. package/player/js/elements/svgElements/SVGShapeElement.js +366 -0
  184. package/player/js/elements/svgElements/SVGTextElement.js +322 -0
  185. package/player/js/elements/svgElements/effects/SVGComposableEffect.js +22 -0
  186. package/player/js/elements/svgElements/effects/SVGDropShadowEffect.js +83 -0
  187. package/player/js/elements/svgElements/effects/SVGFillFilter.js +22 -0
  188. package/player/js/elements/svgElements/effects/SVGGaussianBlurEffect.js +44 -0
  189. package/player/js/elements/svgElements/effects/SVGMatte3Effect.js +101 -0
  190. package/player/js/elements/svgElements/effects/SVGProLevelsFilter.js +108 -0
  191. package/player/js/elements/svgElements/effects/SVGStrokeEffect.js +119 -0
  192. package/player/js/elements/svgElements/effects/SVGTintEffect.js +47 -0
  193. package/player/js/elements/svgElements/effects/SVGTransformEffect.js +10 -0
  194. package/player/js/elements/svgElements/effects/SVGTritoneFilter.js +43 -0
  195. package/player/js/main.js +21 -0
  196. package/player/js/mask.js +239 -0
  197. package/player/js/module.js +153 -0
  198. package/player/js/modules/canvas.js +22 -0
  199. package/player/js/modules/canvas_light.js +25 -0
  200. package/player/js/modules/full.js +70 -0
  201. package/player/js/modules/full_worker.js +0 -0
  202. package/player/js/modules/html.js +37 -0
  203. package/player/js/modules/html_light.js +25 -0
  204. package/player/js/modules/main.js +162 -0
  205. package/player/js/modules/svg.js +37 -0
  206. package/player/js/modules/svg_light.js +25 -0
  207. package/player/js/renderers/BaseRenderer.js +187 -0
  208. package/player/js/renderers/CanvasRenderer.js +67 -0
  209. package/player/js/renderers/CanvasRendererBase.js +318 -0
  210. package/player/js/renderers/CanvasRendererWorkerOverride.js +54 -0
  211. package/player/js/renderers/HybridRenderer.js +47 -0
  212. package/player/js/renderers/HybridRendererBase.js +344 -0
  213. package/player/js/renderers/SVGRenderer.js +82 -0
  214. package/player/js/renderers/SVGRendererBase.js +255 -0
  215. package/player/js/renderers/renderersManager.js +29 -0
  216. package/player/js/utils/BaseEvent.js +42 -0
  217. package/player/js/utils/DataManager.js +676 -0
  218. package/player/js/utils/DataManagerWorkerOverrides.js +13 -0
  219. package/player/js/utils/FontManager.js +443 -0
  220. package/player/js/utils/FontManagerWorkerOverride.js +16 -0
  221. package/player/js/utils/PolynomialBezier.js +253 -0
  222. package/player/js/utils/PropertyFactory.js +489 -0
  223. package/player/js/utils/SlotManager.js +17 -0
  224. package/player/js/utils/TransformProperty.js +251 -0
  225. package/player/js/utils/animationFramePolyFill.js +25 -0
  226. package/player/js/utils/asset_loader.js +53 -0
  227. package/player/js/utils/asset_loader_worker_override.js +3 -0
  228. package/player/js/utils/audio/AudioController.js +85 -0
  229. package/player/js/utils/audio/AudioElement.js +6 -0
  230. package/player/js/utils/bez.js +251 -0
  231. package/player/js/utils/common.js +280 -0
  232. package/player/js/utils/expressions/CompInterface.js +28 -0
  233. package/player/js/utils/expressions/EffectInterface.js +111 -0
  234. package/player/js/utils/expressions/ExpressionManager.js +752 -0
  235. package/player/js/utils/expressions/ExpressionPropertyDecorator.js +463 -0
  236. package/player/js/utils/expressions/ExpressionTextPropertyDecorator.js +40 -0
  237. package/player/js/utils/expressions/ExpressionValue.js +61 -0
  238. package/player/js/utils/expressions/ExpressionValueFactory.js +102 -0
  239. package/player/js/utils/expressions/Expressions.js +48 -0
  240. package/player/js/utils/expressions/FootageInterface.js +60 -0
  241. package/player/js/utils/expressions/InterfacesProvider.js +21 -0
  242. package/player/js/utils/expressions/LayerInterface.js +179 -0
  243. package/player/js/utils/expressions/MaskInterface.js +50 -0
  244. package/player/js/utils/expressions/ProjectInterface.js +31 -0
  245. package/player/js/utils/expressions/PropertyGroupFactory.js +13 -0
  246. package/player/js/utils/expressions/PropertyInterface.js +19 -0
  247. package/player/js/utils/expressions/ShapeInterface.js +543 -0
  248. package/player/js/utils/expressions/TextInterface.js +35 -0
  249. package/player/js/utils/expressions/TextSelectorPropertyDecorator.js +44 -0
  250. package/player/js/utils/expressions/TransformInterface.js +126 -0
  251. package/player/js/utils/expressions/expressionHelpers.js +86 -0
  252. package/player/js/utils/expressions/shapes/ShapePathInterface.js +47 -0
  253. package/player/js/utils/featureSupport.js +16 -0
  254. package/player/js/utils/filters.js +32 -0
  255. package/player/js/utils/functionExtensions.js +27 -0
  256. package/player/js/utils/getFontProperties.js +42 -0
  257. package/player/js/utils/helpers/arrays.js +43 -0
  258. package/player/js/utils/helpers/assetManager.js +96 -0
  259. package/player/js/utils/helpers/blendModes.js +26 -0
  260. package/player/js/utils/helpers/bufferManager.js +61 -0
  261. package/player/js/utils/helpers/dynamicProperties.js +29 -0
  262. package/player/js/utils/helpers/effectTypes.js +3 -0
  263. package/player/js/utils/helpers/html_elements.js +6 -0
  264. package/player/js/utils/helpers/propTypes.js +3 -0
  265. package/player/js/utils/helpers/shapeEnums.js +16 -0
  266. package/player/js/utils/helpers/svg_elements.js +8 -0
  267. package/player/js/utils/imagePreloader.js +213 -0
  268. package/player/js/utils/imagePreloaderWorkerOverride.js +3 -0
  269. package/player/js/utils/markers/markerParser.js +47 -0
  270. package/player/js/utils/pooling/bezier_length_pool.js +20 -0
  271. package/player/js/utils/pooling/point_pool.js +13 -0
  272. package/player/js/utils/pooling/pool_factory.js +44 -0
  273. package/player/js/utils/pooling/pooling.js +15 -0
  274. package/player/js/utils/pooling/segments_length_pool.js +24 -0
  275. package/player/js/utils/pooling/shapeCollection_pool.js +48 -0
  276. package/player/js/utils/pooling/shape_pool.js +44 -0
  277. package/player/js/utils/shapes/DashProperty.js +63 -0
  278. package/player/js/utils/shapes/GradientProperty.js +93 -0
  279. package/player/js/utils/shapes/MouseModifier.js +222 -0
  280. package/player/js/utils/shapes/OffsetPathModifier.js +306 -0
  281. package/player/js/utils/shapes/PuckerAndBloatModifier.js +80 -0
  282. package/player/js/utils/shapes/RepeaterModifier.js +232 -0
  283. package/player/js/utils/shapes/RoundCornersModifier.js +122 -0
  284. package/player/js/utils/shapes/ShapeCollection.js +29 -0
  285. package/player/js/utils/shapes/ShapeModifiers.js +71 -0
  286. package/player/js/utils/shapes/ShapePath.js +100 -0
  287. package/player/js/utils/shapes/ShapeProperty.js +546 -0
  288. package/player/js/utils/shapes/TrimModifier.js +359 -0
  289. package/player/js/utils/shapes/ZigZagModifier.js +174 -0
  290. package/player/js/utils/shapes/shapePathBuilder.js +20 -0
  291. package/player/js/utils/text/LetterProps.js +60 -0
  292. package/player/js/utils/text/TextAnimatorDataProperty.js +34 -0
  293. package/player/js/utils/text/TextAnimatorProperty.js +610 -0
  294. package/player/js/utils/text/TextProperty.js +461 -0
  295. package/player/js/utils/text/TextSelectorProperty.js +179 -0
  296. package/player/js/worker_wrapper.js +1029 -0
  297. package/rollup.config.js +215 -0
  298. package/tasks/build.js +773 -0
  299. package/tasks/build_worker.js +164 -0
  300. package/tasks/watch.js +34 -0
package/History.md ADDED
@@ -0,0 +1,1230 @@
1
+ ## V 5.13.0
2
+ - FIX: rollup config updated to prevent lottie-web from running in Server-Side Rendering contexts
3
+ - FIX: fixed renderGradient() cache invalidation issue so that both start and end points are checked for changes
4
+ - IMPROVEMENT: avoid recalculating static transform matrices, results in a significant performance improvement
5
+ - FIX: reloadShapes() no longer has the side effect of creating duplicate styles
6
+ - FEATURE: Web Worker supports resetSegments
7
+ - FIX: hidden styles were forcibly set as visible when using searchShapes()
8
+ - IMPROVEMENT: expressions can access unidimensional values by index
9
+ - IMPROVEMENT: expression support for thisProperty.name
10
+
11
+ ## V 5.12.1
12
+ - FIX: Transform Effect opacity reset
13
+ - FEATURE: esm support
14
+ - FIX: Fix transform matrix precalc when adding effects
15
+ - IMPROVEMENT: canvas renderer signifcantly improved in performance
16
+ - IMPROVEMENT: improved text support for emojis
17
+ - IMPROVEMENT: text renderer performance improvement when rendering out of the work area
18
+ - FIX: canvas expressions render order
19
+
20
+ ## V 5.12.0
21
+ - FEATURE: Transform Effect support
22
+ - FIX: play / pause behavior on worker
23
+ - IMPROVEMENT: move text rendering to render phase
24
+ - FEATURE: expose global object _lottieGlobal for expressions
25
+
26
+ ## V 5.11.0
27
+ - FEATURE: Essential Graphics support
28
+ - FEATURE: slots support
29
+ - FIX: update data when updateDocumentData is called
30
+ - FIX: using unregistered renderer or missing path
31
+ - FIX: added destroy null check
32
+ - FEATURE: Implement setLoop in Web Worker
33
+
34
+ ## V 5.10.2
35
+ - FEATURE: add setLoop method
36
+ - FEATURE: support for all matte masks in canvas
37
+ - FEATURE: support for alpha matte in canvas worker
38
+ - FEATURE: support for canvas renderer in Safari
39
+ - FEATURE: add DOM loaded event for canvas worker
40
+ - FIX: tint effect opacity
41
+
42
+ ## V 5.10.1
43
+ - FIX: track matte masks transform fix
44
+
45
+ ## V 5.10.0
46
+ - FIX: light versions referencing expressions interfaces
47
+ - FEATURE: Add support for new track masks by layer index
48
+ - FEATURE: Add support for zigzag (thanks @mbasaglia)
49
+ - FEATURE: Add support for offset path (thanks @mbasaglia)
50
+ - FEATURE: Customizable canvas renderer width and height
51
+ - FIX: Workaround for banner validation
52
+
53
+ ## V 5.9.6
54
+ - FIX: Bodymovin export missing comps
55
+ - FIX: Disambiguate bevelEmboss properties (thanks @mbasaglia)
56
+ - FEATURE: Add support for image export individual settings via annotations
57
+
58
+ ## V 5.9.5
59
+ - FIX: Expand the hybrid shape bounding box on stroke (thanks @mbasaglia)
60
+ - FEATURE: support filter size on drop shadow property
61
+ - FIX: canvas worker - handle destroying animation instance before data is loaded
62
+ - FIX: canvas worker = pass own canvas fix (thanks @knenkne)
63
+ - FIX: bodymovin extension out of storage
64
+ - FEATURE: integration with canilottie
65
+
66
+ ## V 5.9.4
67
+ - FIX: support for all marker definitions
68
+ - FIX: improve composable filters
69
+ - FIX: strokes with correct width on fonts
70
+
71
+ ## V 5.9.3
72
+ - FEATURE: Add support for isPaused property on lottie worker
73
+ - FEATURE: Adds support for changing volume based on the audio layer data
74
+ - FEATURE: add support for removeEventListener on worker
75
+ - FEATURE: add support for updateDocumentData on worker
76
+ - FEATURE: add text as font support on worker
77
+ - FIX: avoid crash when script does not have src
78
+
79
+ ## V 5.9.2
80
+ - FEATURE: add support for playsegments and blend mode on lottie worker
81
+ - FIX: Fix ts typing for loadAnimation parameter
82
+ - FEATURE: allows to set width and height of svg from config
83
+ - FIX: Fix getMarkerData bug
84
+ - FEATURE: Add type for goToAndPlay & goToAndStop
85
+ - FIX: add time to list of code for preventing removal
86
+ - FIX: glyphs removed from DOM before reloading
87
+
88
+ ## V 5.9.1
89
+ - FIX: navigator validation for SSR
90
+
91
+ ## V 5.9.0
92
+ - FEATURE: Added support for using shapes as animated characters
93
+ - FIX: added methods used by expressions to an array to prevent treeshaking
94
+ - DEV: Migrated code to imports
95
+ - DEV: Use Rollup for build process
96
+
97
+ ## V 5.8.1
98
+ - FEATURE: added more methods available for the lottie worker player
99
+
100
+ ## V 5.8.0
101
+ - FEATURE: lottie player as a worker support
102
+ - FEATURE: added content-visibility prop support
103
+ - FEATURE: added header check for json type (improves initial parsing specially on large files)
104
+ - FEATURE: added lottie.useWebWorker method to support loading file on a separate web worker (different than the first feature)
105
+ - FEATURE: added frame rate to comp on export (not supported by payers yet)
106
+ - FIX: random seed expression fix
107
+
108
+ ## V 5.7.14
109
+ - FEATURE: added support for Smoothness property on animated texts
110
+ - FEATURE: added support for animated text path properties
111
+ - FEATURE: added support for exporting source names as ids
112
+ - FEATURE: added clear cache button
113
+ - FIX: fixed importer with last keyframe
114
+
115
+ ## V 5.7.13
116
+ - FEATURE: added support for emoji modifiers and sequences
117
+ - FEATURE: added support for metadata export on json files
118
+
119
+ ## V 5.7.12
120
+ - FEATURE: added support for masked strokes line cap and line join
121
+ - FIX: callbacks list executing beyond index list
122
+ - FIX: missing TextExpressionSelectorPropFactor
123
+ - FEATURE: exporter improvements
124
+
125
+ ## V 5.7.11
126
+ - FIX: another exporter fix
127
+
128
+ ## V 5.7.10
129
+ - FIX: exporter fix
130
+
131
+ ## V 5.7.9
132
+ - FEATURE: added support for prefixig ids
133
+ - FEATURE: security updates
134
+ - FIX: fix image sequencing preloading
135
+ - FEATURE: added support for gradient fill expressions
136
+
137
+ ## V 5.7.8
138
+ - FIX: disable screen reader visibility of created font-nodes (thanks @)
139
+ - FEATURE: added FootageElement that supports json data layer types with expressions
140
+
141
+ ## V 5.7.7
142
+ - FIX: xhr open order
143
+ - FEATURE: added markers support
144
+ - FIX: repeaters with reduced copies
145
+ - FIX: unintentional stroke clipping on shapes with large stroke-width (thanks Manan Jadhav)
146
+ - FIX: ie11 append missing
147
+ - FIX: repeater calling trim twice
148
+
149
+ ## V 5.7.6
150
+ - FIX: es6 support on export
151
+ - IMPROVEMENT: added linting rules
152
+ - FIX: seedrandom and main fix
153
+ - FIX: image export fix
154
+
155
+ ## V 5.7.5
156
+ - FIX: Enable HImageElement to use preloaded images thanks @dbettini
157
+ - FIX: lottie-light effects breaking on destroy
158
+ - FIX: loaded_images event fired in safari
159
+ - FIX: original asset names for audios
160
+
161
+ ## V 5.7.4
162
+ - FIX: `addEventListener` method returns function except `void`
163
+ - EXPRESSIONS: added support for toWorldVec, fromWorldVec and getValueAtTime for transforms
164
+ - EXPRESSIONS: fixed propertyGroup expression
165
+ - FIX: added svg effects placeholder
166
+ - FIX: added check for wrapper on destroy canvas
167
+ - EXPORTER: missing layer styles
168
+ - EXPORTER: export only work area
169
+
170
+ ## V 5.7.3
171
+ - EXPRESSIONS: Added more expressions support
172
+
173
+ ## V 5.7.2
174
+ - FIX: Trusted Types compliance by removing calls to .innerHTML
175
+ - FIX: make callback parameter of removeEventListener optional
176
+ - FEATURE: Audio Support
177
+
178
+ ## V 5.7.1
179
+ - REPORT: Improved animation report
180
+ - FIX: Expressions separate dimensions
181
+ - FIX: propertyGroup for expressions (Duik bones are supported)
182
+ - FEATURE: supported Pucked and Bloat
183
+
184
+ ## V 5.7.0
185
+ - FEATURE: Extension: reports for not supported features
186
+ - FEATURE: Extension: baking keyframes for unsupported expressions
187
+ - FEATURE: Extension: improved preview and added Skottie preview
188
+
189
+ ## V 5.6.10
190
+ - FIX: default loop to true
191
+ - FIX: removing sans-serif and monospace from font preloader to calculate correctly when font is loaded
192
+ - FIX: improved image caching when preloading svg image tags
193
+ - updated definitions
194
+
195
+ ## V 5.6.9
196
+ - fix compression options
197
+ - initialization improvement
198
+
199
+ ## V 5.6.8
200
+ - not using non breaking spaces for text spaces
201
+ - added support for exporting video layers (only export, players don't support them)
202
+ - fix for path properties open without nodes
203
+
204
+ ## V 5.6.7
205
+ - use original comp name as export name
206
+ - added default filter values for banner template
207
+ - added option to load local file as lottie player
208
+ - initialSegment set before animation configuration
209
+
210
+ ## V 5.6.6
211
+ - reading file extension correctly when copying original assets
212
+ - fixed inlined json objects with carriage returns
213
+ - added loop support for banners
214
+ - exporting adjustment layers as null layers
215
+ - added checkbox to select comp names as default
216
+ - added filter size configuration and defaulting to 100%
217
+ - Add missing animation event name definitions
218
+
219
+ ## V 5.6.5
220
+ - added initialSegment property
221
+ - fix for zip file without root folder
222
+ - support for including json in banner html template
223
+ - Export 'blur' text animator property
224
+
225
+ ## V 5.6.4
226
+ - added support for using original images as assets
227
+ - Improved log error fix
228
+ - Fixed missing assets during export
229
+
230
+ ## V 5.6.3
231
+ - Fix saving json files with special characters
232
+ - Improved lottie import
233
+
234
+ ## V 5.6.2
235
+ - Fix lottie importer gradient data without keyframes
236
+ - Added hidden layers and hidden properties support for importer
237
+ - Improved error messaging
238
+ - Added assetsPath configuration for typescript
239
+ - fixed mangled lottie declaration
240
+
241
+ ## V 5.6.1
242
+ - Fix on the exporter for older AE versions when a new project didn't have a saved destination yet
243
+
244
+ ## V 5.6.0
245
+ - Support new export mode: Rive
246
+ - Support new export mode: Banner
247
+ - Improved existing export modes
248
+ - Improved image compression solution (now PNGs get well compressed as jpegs)
249
+ - Support for importing Lottie Animations!
250
+ - fixed build to prevent polluting global scope
251
+ - text animator multiplier fix
252
+ - fixes #1883 text offset
253
+ - fixes #1878 supports id attribute for container
254
+
255
+ ## V 5.5.10
256
+ - Improvement: validating if transform is linear to remove spatial interpolation
257
+ - Fix: subtract mask transformed fix
258
+ - Expressions: added posterize time support
259
+ - Fix: incorrect easing function calculation in TextSelectorProperty
260
+ - Fix: auto oriented properties with not keyframes
261
+ - New: Implement a new Canvas renderer that can run on worker threads
262
+
263
+ ## V 5.5.9
264
+ - Typing: added resize to type definitions
265
+ - Feature: added image sequence support
266
+ - FIX: clipping compositions in canvas renderer
267
+ - FIX: added precision to auto orient
268
+
269
+ ## V 5.5.8
270
+ - FIX: Setting assets data before loading extra compositions
271
+ - FIX: Removed appending json at end of url
272
+ - FIX: Camera separate position properties
273
+ - Typing: Added animation event name to Lottie definitions
274
+ - Feature: Add focusable renderer setting for SVGs
275
+ - Feature: Added error handling for config and frame rendering
276
+
277
+ ## V 5.5.7
278
+ - EXPRESSIONS: added support for propertyIndex on shapes
279
+ - PERFORMANCE: big performance improvement on trim paths (and other modifiers) for paths that don't change over time
280
+ - NEW: improved support for astral plane characters (like emojis)
281
+
282
+ ## V 5.5.6
283
+ - FIX: surrogate pairs character support in animated text
284
+ - FIX: new expressions supported
285
+
286
+ ## V 5.5.5
287
+ - changed failed image bg to transparent
288
+ - FIX: fix for old json expressions in key function
289
+
290
+ ## V 5.5.4
291
+ - FIX: Updates to TypeScript definitions
292
+ - FEATURE: support for new expressions
293
+
294
+ ## V 5.5.3
295
+ - FEATURE: Add SVG support for Gaussian Blur effects (thanks fmalita)
296
+ - FEATURE: Add TypeScript type definitions (thanks D34THWINGS)
297
+ - FIX: removed warning of text when created by text formatted
298
+ - FIX: fixed merged characters in fonts
299
+ - FEATURE: added mutiple settings functionality to extension
300
+ - FEATURE: added support for mask opacity in expressions
301
+ - FIX: fixes #1552 html renderer wrong font measurement
302
+ - FIX: Fix masksProperties key name in JSON docs (thanks john-preston)
303
+
304
+ ## V 5.5.2
305
+ - FIX: Fix loader issue on pre-kitkat Android webview
306
+ - FIX: eroded masks in svg renderer
307
+ - FIX: text alognment in text boxes
308
+
309
+ ## V 5.5.1
310
+ - FIX: key expression for new json format
311
+ - IMPROVEMENT: forcing a rerender when resize is called in canvas
312
+ - ACCESSIBILITY: added title, description and aria label for text layers for svg renderer
313
+
314
+ ## V 5.5.0
315
+ - IMPROVEMENT: JSON filesize reduction. Around 25 to 33% filesize reduction with this new version.
316
+ - FEATURE: Bodymovin panel with new advanced settings to reduce filesize.
317
+ - FIX: honor `forceFlag` when calling `playSegments` (thanks @mrmos)
318
+ - FIX: added source-over as default blending mode for canvas renderer resetting
319
+ - FIX: fixed bezier easing property validation
320
+ - FIX: fixed property caching by index instead of bezier data
321
+ - FIX: added thisProperty expression value
322
+
323
+ ## V 5.4.4
324
+ - FIX: viewport meta tag on android with mask fix
325
+ - FIX: fixed enterFrame direction property
326
+ - FIX: explicitly iterating math methods
327
+ - FIX: added missing expression properties
328
+ - FIX: setting class attribute via setAttribute
329
+ - FIX: added value property in key method expression
330
+ - FIX: text animator expression fix
331
+ - FIX: added smooth expression support
332
+ - FIX: hcamera expression fix
333
+ - FIX: fix animated dash property canvas
334
+ - NEW: sourceRectAtTime for images fix
335
+ - NEW: Advanced option in Bodymovin extension to skip expression properties
336
+ - NEW: removed some unused json properties
337
+
338
+ ## V 5.4.3
339
+ - NEW: added blend mode support for shapes in svg renderer
340
+ - NEW: removed random ids in favour of incremental ids
341
+ - NEW: added new players
342
+ - NEW: updated build process. Removed vulnerable dependencies.
343
+ - FIX: canvas repeater fix
344
+ - FIX: Replaced typekit with Adobe Fonts support
345
+ - FIX: subtracting offsetTime for valueAtTime calculation on shapes
346
+ - FIX: expressions targetting keys fix
347
+ - FIX: multidimensional easing using first dimension value when set to 0
348
+
349
+ ## V 5.4.2
350
+ - FIX: added enabled property on effect interfaces for expression
351
+ - FIX: font measuring fix for white spaces
352
+ - FIX: supporting Effects property on layers in expressions
353
+ - FIX: canvas sibling shapes with same style fix
354
+ - FIX: caching valueAtTime correctly
355
+ - FIX: AVD exporter fix on clip paths
356
+ - FIX: AVD exporter fix on initial and end values
357
+ - FIX: formatResponse if responseText - thanks @ansmonjol
358
+ - NEW: renders class name for nested group elements - thanks @russellgoldenberg
359
+
360
+ ## V 5.4.1
361
+ - FIX: missing variable declaration
362
+
363
+ ## V 5.4.0
364
+ - EXPRESSIONS: easing functions refactored
365
+ - FIX: stroke effect fix with multiple children elements
366
+ - FIX: adding max and min values to trim path start and end
367
+ - EXPRESSIONS: added velocity property
368
+ - FIX(text): Fix charCode assignment and optimize FontManager (thanks @kwilliams-curago)
369
+ - FIX: fix for small trim paths
370
+ - EXPRESSIONS: added valueAtTime property to expression thisProperty variable
371
+ - FIX: added locationHref to gradient data
372
+ - EXPRESSIONS: big performance improvement for all expressions that use Expression Values heavily
373
+
374
+ ## V 5.3.4
375
+ - FIX: font load fix
376
+ - TEXT: End of Text character support
377
+
378
+ ## V 5.3.3
379
+ - FIX: light version fix
380
+
381
+ ## V 5.3.2
382
+ - FIX: .playSegments when forcing a new segment correctly removes the previous list
383
+ - FIX: loading external assets before rendering the first frame of the animation on canvas renderer
384
+ - FIX: clearing caching spatial bezier data when previous frame is reached
385
+ - FIX: promoting text property to dynamic properties when using text update methods
386
+ - FIX: extra comps width and height properties supported
387
+ - FIX: multiple trims fixed
388
+
389
+ ## V 5.3.1
390
+ - FIX: expressions with non computed memberExpressions
391
+ - FIX: animated gradient in svgs
392
+
393
+ ## V 5.3.0
394
+ - REFACTOR: canvas shape renderer had an important refactor. Should support new render cases and have a performance improvement.
395
+ - EXPRESSIONS: preprocessing expressions allows to prevent getting values if not needed on expressions
396
+ - EXPRESSIONS: support for position, scale and anchorPoint variables
397
+ - EXPRESSIONS: added numLayer property support to comp interfaces
398
+ - REPEATERS: support for start and end opacity
399
+ - FIX: Rendering effects before masks fixes some small render cases
400
+ - FIX: added orientation support for 3d cameras
401
+ - FIX: dashed lines were not resetted in some scenarios
402
+
403
+ ## V 5.2.1
404
+ - FIX: text animators based on words and percentages
405
+ - EXPRESSIONS: Latest Duik version support
406
+
407
+ ## V 5.2.0
408
+ - FEATURE: gradient support in canvas renderer (some cases are not supported)
409
+ - EXPRESSIONS: layer name support for expressions
410
+ - FIX: reverse play on non loops
411
+ - SUPPORT: Orient along path with separate dimensions
412
+ - FIX: trim cache issue fixed
413
+
414
+ ## V 5.1.20
415
+ - FIX: instaceof Array on expressions fixed
416
+ - FIX: text value on expressions fix
417
+ - FEATURE: new expressions supported
418
+
419
+ ## V 5.1.19
420
+ - FIX: Trim Paths with empty paths fix
421
+ - FIX: linear method fix for inverted values
422
+ - FEATURE: Ignoring merge path's last path if square
423
+ - FIX: Camera zoom
424
+ - FIX: Validating if text data is complete on first render
425
+ - FIX: Loop counting when playing backwards
426
+ - FEATURE: Added inPoint and outPoint to layer's expressions
427
+
428
+ ## V 5.1.18
429
+ - FIX: Moved defs to top to avoid Safari issues
430
+ - FEATURE: Added crossOrigin attribute to images to avoid tainted canvases
431
+ - FEATURE: Added imagePreserveAspectRatio to rendererSettings for image layers
432
+ - FIX: splitting animations in multiple files
433
+
434
+ ## V 5.1.17
435
+ - FIX: asset error handling
436
+ - FEATURE: Rove across time support
437
+ - FIX: bevel line support
438
+
439
+ ## V 5.1.16
440
+ - FIX: exporting images for older version of AE.
441
+ - FEATURE: if needed can skip images export once exported a first time.
442
+
443
+ ## V 5.1.15
444
+ - FEATURE: Added freeze/unfreeze methods to stop prevent any animation from playing
445
+ - FEATURE: Added getRegisterdAnimations method to get all current animations handled by lottie
446
+ - FEATURE: Exporting PNGs with render queue in order to fix black pixels around images
447
+ - FEATURE: Support for compressed jpgs when image is not transparent
448
+ - FEATURE: Support for exporting base 64 encoded images inlined in the json file
449
+ - FIX: Some small expression fixes
450
+
451
+ ## V 5.1.14
452
+ - FIX: Dash property animated
453
+ - FIX: Canvas renderer skips hidden layers
454
+ - FIX: When clearCanvas is set to true on the canvas renderer, every frame is rendered
455
+ - FIX: calculation error on masks
456
+
457
+ ## V 5.1.13
458
+ - EXPRESSIONS: fix for global variables used in functions
459
+ - EXPRESSIONS: operations supported for arrays
460
+
461
+ ## V 5.1.12
462
+ - EXPRESSIONS: improved memory management for declared functions
463
+ - EXPRESSIONS: speedAtTime support
464
+ - FIX: trimmed paths fix
465
+ - FIX: destroy method fix
466
+ - SSR: checking for navigator to create library
467
+
468
+ ## V 5.1.11
469
+ - PERFORMANCE: significant improvement on the svg and canvas renderers
470
+ - FIX: floating points fix
471
+
472
+ ## V 5.1.10
473
+ - TEXT LAYERS: font measuring and some text fixes
474
+ - FIX: 2d and 3d layers stack fix
475
+ - FEATURE: added support for assetsPath when using animationData (@kwilliams-curago)
476
+ - FEATURE: added getDuration method. In frames and in seconds.
477
+ - FIX: fixed breaking change from AE 15.1 with text layers
478
+
479
+ ## V 5.1.9
480
+ - EXPRESSIONS: adding name property to shape property group
481
+ - FIX: adding timeout before checking loaded fonts
482
+ - IMPROVEMENT: html elements now hide their base container when off render time bounds
483
+ - FIX: undeclared variable in reverse method
484
+ - FIX: text font issues
485
+
486
+ ## V 5.1.8
487
+ - FIX: centered tracking
488
+ - FIX: augmenting linearity threshold
489
+ - FIX: using quaternions to calculate 3d orientation
490
+ - FIX: undeclared variables
491
+ - FIX: CW CCW ellipse fix
492
+ - EXPRESSIONS: added xRotation and yRotation support
493
+ - FEATURE: added skew to transform calculations
494
+ - FIX: Time remap on html renderer
495
+ - FEATURE: calculating shape bounds for html shape elements without depending on getBBox
496
+ - FEATURE: Supporting custom tags on html renderer
497
+ - FIX: dash array fix
498
+
499
+ ## V 5.1.7
500
+ - FIX: looping and non looping animations end frame fix
501
+
502
+ ## V 5.1.6
503
+ - FIX: HTMLRenderer image fix
504
+ - FIX: HTMLRenderer masked comp fix
505
+ - FIX: Text fWeight precedence over fStyle (thanks @nick-vincent)
506
+
507
+ ## V 5.1.5
508
+ - FIX: text selector fix
509
+ - FIX: text expression fix
510
+ - FEATURE: more expressions supported
511
+
512
+ ## V 5.1.4
513
+ - FIX: hidden parented layer with mask
514
+ - FIX: gradient property animated
515
+ - FIX: hindi combined characters support with text as font
516
+
517
+ ## V 5.1.3
518
+ - FIX: Color interpolation fix
519
+ - FIX: id and classes fix for images and solids
520
+ - FIX: canvas nested groups transform fix
521
+ - FIX: lottie_light.js fix
522
+
523
+ ## V 5.1.2
524
+ - FIX: Expressions switch statements adding variable declaration when missing
525
+
526
+ ## V 5.1.1
527
+ - Text Layer keyframed fix
528
+
529
+ ## V 5.1.0
530
+ - FEATURE: support for all text document property updates usign TextLayer.updateDocumentData (check Wiki for more information)
531
+ - FEATURE: text layers with text boxes have two new methods: TextLayer.canResizeFont and TextLayer.setMinimumFontSize (check Wiki for more information)
532
+ - PERFORMANCE: Significant performance improvement on all renderers
533
+ - PERFORMANCE: repeaters significant performance improvement
534
+ - PERFORMANCE: gradients with opacity significant performance improvement
535
+ - REFACTOR: reduced and organized main element classes
536
+ - TEXT: text align fix for font based text layers
537
+
538
+ ## V 5.0.6
539
+ - FIX: totalFrames and resetFrames
540
+ - FIX: canvas destroy method
541
+ - FIX: expressions rect size support
542
+ - FIX: multiple requestAnimationFrame fix
543
+ - FIX: variable not being declared
544
+ - FEATURE: support for custom viewBox
545
+
546
+ ## V 5.0.5
547
+ - FIX: totalFrames now ends at previous frame to respect AE's last frame
548
+ - FIX: duplicate requestAnimationFrame call
549
+ - CHANGE: removed M0,0 added to every path. Should fix chrome issues.
550
+ - REFACTOR: small changes on AnimationItem
551
+
552
+ ## V 5.0.4
553
+ - FIX: if initial value for multidimensional properties was 0 and not in start point, it wasn't getting rendered
554
+ - EXPRESSIONS: support for "anchor_point"
555
+ - PERFORMANCE: separated opacity from transform properties
556
+ - FIX: effects properties offset
557
+ - FIX: 3d orientation for negative values
558
+
559
+ ## V 5.0.3
560
+ - FIX: IE Arrays support
561
+ - FIX: destroy method wasn't releasing all memory if a single animation was loaded.
562
+ - FIX: IE masks fix when used as Alpha Masks with gradients.
563
+
564
+ ## V 5.0.2
565
+ - IE 10 fix
566
+ - loopIn and loopOut fix
567
+
568
+ ## V 5.0.1
569
+ - expression fixes
570
+ - text box fix
571
+ - performance improvements
572
+
573
+ ## V 5.0.0
574
+ - bodymovin renamed to lottie
575
+ - gradients performance improved
576
+ - cleaned up code
577
+ - new expressions
578
+
579
+ ## V 4.13.0
580
+ - text expression support
581
+ - text update support with updateDocumentData (check wiki)
582
+ - tangentOnPath, normalOnPath and more expressions
583
+ - loaded_images event
584
+ - fixed global calls
585
+ - fixed ie9 error
586
+
587
+ ## V 4.12.3
588
+ - valueAtTime fix
589
+
590
+ ## V 4.12.2
591
+ - caching fix
592
+
593
+ ## V 4.12.1
594
+ - velocityAtTime fix
595
+
596
+ ## V 4.12.0
597
+ - pointOnLine support
598
+ - createPath support
599
+ - points, inTangents, outTangents support
600
+ - expressions fixes
601
+ - className for container via loading config
602
+ - 3d orientation fix
603
+
604
+ ## V 4.11.2
605
+ - new line text fix
606
+ - expression fromComp support
607
+ - rounding to decimals shapes to prevent exponential values
608
+
609
+ ## V 4.11.1
610
+ - 3d and 2d layers html renderer fix
611
+ - text new lines fix
612
+ - text tracking with alignment fix
613
+
614
+ ## V 4.11.0
615
+ - bodymovin.setLocationHref method to set base url for svg fragments
616
+ - optional viewBox only settings on renderConfig
617
+ - sourceRectAtTime support for text on svg renderer
618
+ - text fixes and performance improvements
619
+
620
+ ## V 4.10.3
621
+ - fix for AE CC2014 when reopening App
622
+ - line cap - projecting cap support
623
+ - AVD fix for AE CC2014
624
+
625
+ ## V 4.10.2
626
+ - AVD fixes
627
+
628
+ ## V 4.10.1
629
+ - Expression fix
630
+
631
+ ## V 4.10.0
632
+ - Lots of new expressions
633
+ - Ouroboros 2.0 support! (in beta just in case)
634
+ - AVD Format export!
635
+
636
+ ## V 4.9.0
637
+ - Full repeaters support
638
+ - Keyframes interpolation fix for stretched layers
639
+ - inBrowser method added
640
+
641
+ ## V 4.8.0
642
+ - Fonts fix for Lottie compatibility
643
+ - fonts reduced exported filesize
644
+ - fonts fix for non-zero width character
645
+ - expressions transform separate dimensions fix
646
+ - expression shape rectangle size support
647
+
648
+ ## V 4.7.1
649
+ - still images validation fix
650
+ - expression for transform on separate dimensions fix
651
+
652
+ ## V 4.7.0
653
+ - hiding elements when opacity is at 0
654
+ - colinear points fix
655
+ - anchor point expression fix
656
+ - server side rendering window object validation (thanks @zephinzer)
657
+
658
+ ## V 4.6.11
659
+ - Non spatial interpolation fix
660
+ - new expressions supported
661
+ - fonts fix
662
+
663
+ ## V 4.6.10
664
+ - AE language export fix
665
+ - nearestKey expression fix
666
+
667
+ ## V 4.6.9
668
+ - new expressions. More Rubberhose support
669
+ - expression fixes
670
+ - expression sandboxing window and document
671
+ - pointInLine 3d fix
672
+
673
+ ## V 4.6.8
674
+ - 3d camera fix
675
+ - fix for tests
676
+
677
+ ## V 4.6.7
678
+ - Trim path with Rectangle fix
679
+
680
+ ## V 4.6.6
681
+ - Text baseline supported (from After Effects 13.6 (CC 2015))
682
+ - text animator fixes
683
+
684
+ ## V 4.6.5
685
+ - trim path full fix
686
+
687
+ ## V 4.6.4
688
+ - velocityAtTime expression fix
689
+
690
+ ## V 4.6.3
691
+ - bodymovin_light fix
692
+ - rubberhose autoflop patch for inactive admin property
693
+
694
+ ## V 4.6.2
695
+ - repeaters! (partially but should cover many cases)
696
+ - new expressions
697
+ - render improvements
698
+ - reduced garbage collection
699
+
700
+ ## V 4.6.1
701
+ - 3D orientation fix
702
+ - render improvements
703
+
704
+ ## V 4.6.0
705
+ - New UI!
706
+ - Drop shadow effect support
707
+ - performance improvement on animations with offsetted layers
708
+ - big performance improvement on expressions
709
+ - expressions expressions expressions
710
+
711
+ ## V 4.5.9
712
+ - expressions variable declaration fix
713
+ - effect control type fix
714
+
715
+ ## V 4.5.8
716
+ - fill-rule for fills and gradient fills on shapes
717
+ - rounding colors values with an extra decimal
718
+ - property expressions that return strings are evaluated as numbers
719
+
720
+ ## V 4.5.7
721
+ - standalone autoplay fix
722
+
723
+ ## V 4.5.6
724
+ - expression instance fix for CEP
725
+ - new variables declarations in expression conditional statements
726
+ - reduced filesize on exported shapes with different vertex count
727
+ - setting parents context when calling destroy (fixes webpack issue)
728
+
729
+ ## V 4.5.5
730
+ - Text selector Triangle fix
731
+ - Expressions support for "active" property on effects
732
+ - Rearranged exporting properties
733
+ - Included "a" property for animated props
734
+ - Docs updated
735
+
736
+ ## V 4.5.4
737
+ - Trim path individually supported
738
+ - bug fix that messed with webpack build
739
+
740
+ ## V 4.5.3
741
+ - Skipping non breaking space on characters
742
+ - levels effect optimizations
743
+ - shape expressions transform properties added (Needed to fix a Rubberhose 2 issue)
744
+ - transform properties in expression through transformInterface
745
+
746
+ ## V 4.5.2
747
+ - Comp expression interface default return
748
+ - HTML renderer validation fix
749
+
750
+ ## V 4.5.1
751
+ - Trim path fix
752
+ - Html renderer fixes
753
+
754
+ ## V 4.5.0
755
+ - Tritone effect supported
756
+ - Levels effect supported. The one called "Levels (Individual Controls)"
757
+
758
+ ## V 4.4.30
759
+ - Gradient Fill default value breaking render fix
760
+ - Demo file fix when json is renamed
761
+
762
+ ## V 4.4.29
763
+ - Trim path fix
764
+ - html renderer fixes
765
+
766
+ ## V 4.4.28
767
+ - expressions: better seeded random, properties by matchName, normalize support
768
+ - single shape text with keyframes fix
769
+ - masked track matted comps fix
770
+ - trim path 0% to 100% fix
771
+
772
+ ## V 4.4.27
773
+ - playSegments fix
774
+ - inverting alphas with color matrices
775
+
776
+ ## V 4.4.26
777
+ - expressions Math.abs fix
778
+ - Layer Index expression support
779
+ - Nested group effects fix
780
+
781
+ ## V 4.4.25
782
+ - text properties matched by matchName
783
+ - destroy anims fix for animation count
784
+ - checking callbacks array before dispatching event
785
+
786
+ ## V 4.4.24
787
+ - text mask path fixes
788
+ - text tracking fix on texts without animators
789
+ - transform yPosition and xPosition expression interface
790
+ - rounded corners expression interface
791
+ - shape hold keyframes last frame fix
792
+ - mask with single vertex fix
793
+ - reversed shapes on hold keyframes fix
794
+ - shape interfaces fixes
795
+ - fromWorld and toWorld expression support
796
+ - function invoked from function expression support
797
+ - inner grouped shapes transformation fix
798
+ - opacity on masks supported for svg renderer
799
+ - duplicate ellipse export fix
800
+ - rounded corners on rectangle shapes fix
801
+ - rounded corners multiple shapes fix
802
+ - time remapped stretched layers fix
803
+ - shapes with no vertices fix
804
+ - more stroke effect types support
805
+ - luminance mask fix
806
+ - alpha mask support IE and Edge
807
+
808
+ ## V 4.4.23
809
+ - expressions transform opacity interface
810
+ - removing rAF when idle (thanks to @mpeterson2 for the suggestion and PR)
811
+
812
+ ## V 4.4.22
813
+ - text layer defaulting line height value when first char is new line
814
+
815
+ ## V 4.4.21
816
+ - stroke effect improvement
817
+
818
+ ## V 4.4.20
819
+ - previous versions masks fix
820
+
821
+ ## V 4.4.19
822
+ - getValueAtTime expression fix
823
+ - shape and mask expression support
824
+ - open and close shapes support per keyframe
825
+ - html renderer cyclic fix
826
+
827
+ ## V 4.4.18
828
+ - standalone export fix
829
+
830
+ ## V 4.4.17
831
+ - expression support for effect and effect group match name
832
+
833
+ ## V 4.4.16
834
+ - support for text source keyframes
835
+ - fix parented masked layers
836
+ - new expressions
837
+ - rect shape expressions interface
838
+
839
+ ## V 4.4.15
840
+ - new expressions
841
+ - blend mode fix
842
+
843
+ ## V 4.4.14
844
+ - fixed bodymovin_light
845
+ - fixed translations with same origin and destination
846
+
847
+ ## V 4.4.13
848
+ - preserveAspectRatio all values for canvas
849
+ - Different vertices between keyframes supported
850
+ - New expressions
851
+ - First effects: Stroke, Fill, Tint.
852
+ - Orient along path
853
+
854
+ ## V 4.4.12
855
+ - Trim path fix on offsetted shapes
856
+
857
+ ## V 4.4.11
858
+ - html and canvas renderer fixes
859
+ - more expressions supported
860
+ - better subtracted mask support on the svg renderer
861
+ - trim paths memory management corrected. If you're using Trim paths with animated strokes please update to this build!
862
+
863
+ ## V 4.4.10
864
+ - fix on canvas nested compositions if only element animated was a mask
865
+
866
+ ## V 4.4.9
867
+ - included preserveAspectRatio for canvas 'xMidYMid' and 'none' supported for now
868
+
869
+ ## V 4.4.8
870
+ - animation new method "setSubframe" to enable subframe rendering (true by default).
871
+ - hidden guided layers and parenting restore
872
+ - split animations export resetting segments
873
+
874
+ ## V 4.4.7
875
+ - Performance improvement
876
+ - Stroke gradient support
877
+
878
+ ## V 4.4.6
879
+ - Nested gradient fix
880
+
881
+ ## V 4.4.5
882
+ - Alpha masks fix
883
+
884
+ ## V 4.4.4
885
+ - performance improvement on redrawing svg
886
+
887
+ ## V 4.4.3
888
+ - gradient fixes
889
+ - transparency fixes
890
+ - more fixes
891
+ - assetsPath param to set where to look for assets
892
+
893
+ ## V 4.4.2
894
+ - shape color interpolation fix
895
+
896
+ ## V 4.4.1
897
+ - hold keyframes fix
898
+
899
+ ## V 4.4.0
900
+ - Gradients! for svg and html renderer
901
+ - hidden track matte layers fix
902
+ - shape stroke performance and fix improvements
903
+
904
+ ## V 4.3.3
905
+ - Hidden layer and Guided layers are now exportable if configured (could be needed for expressions)
906
+ - Config is remembered
907
+ - Filter for Comps
908
+ - Trim path fix
909
+ - Canvas images fix
910
+
911
+ ## V 4.3.2
912
+ - preserveAspectRatio editable
913
+
914
+ ## V 4.3.1
915
+ - Expression frameDuration property added
916
+ - shape last hold keyframe fix
917
+
918
+ ## V 4.2.3
919
+ - Expressions framesToTime and timeToFrames
920
+ - Layer stretching. Negative values not supported yet.
921
+ - Firefox canvas save/restore performance fix
922
+ - Blend Modes (read blend modes page for specifications here https://github.com/bodymovin/bodymovin/wiki/Blend-Modes)
923
+
924
+ ## V 4.2.2
925
+ - Compatibility fix for colors
926
+
927
+ ## V 4.2.1
928
+ - Expressions fix for AE 2015.3
929
+ - Added bodymovin_light.js
930
+
931
+ ## V 4.2.0
932
+ - More expressions support
933
+ - Rounded corners supported on shapes
934
+ - added goToAndPlay
935
+ - Fixes
936
+
937
+ ## V 4.1.8
938
+ - Fixed easing bezier values for dimensional properties
939
+
940
+ ## V 4.1.7
941
+ - removing non ASCII chars from file that would break the extension in some languages.
942
+
943
+ ## V 4.1.6
944
+ - module definition fix
945
+
946
+ ## V 4.1.5
947
+ - stroke transform fix
948
+
949
+ ## V 4.1.4
950
+ - last hold keyframe fix
951
+
952
+ ## V 4.1.3
953
+ - Unary expressions
954
+ - svg compositions opacity fix
955
+ - data-bm-renderer tag fix
956
+ - evaluating expression slider values before returning
957
+
958
+ ## V 4.1.1
959
+ - UMD fix
960
+
961
+ ## V 4.1.0
962
+ - UMD compatible
963
+ - more expressions
964
+ - improved bezier interpolation
965
+ - fixes
966
+
967
+ ## V 4.0.10
968
+ - miter join trim fix
969
+
970
+ ## V 4.0.9
971
+ - html renderer shape fix
972
+
973
+ ## V 4.0.7
974
+ - some expression fixes
975
+ - trimmed closed shapes fix
976
+
977
+ ## V 4.0.5
978
+ - more expressions supported
979
+ - miter closed shapes fix
980
+ - demo.html can be exported from AE for local playback
981
+ - Snapshot button renamed to Preview
982
+
983
+ ## V 4.0.1
984
+ - separate dimensions fix
985
+
986
+ ## V 4.0.0
987
+ - 3d
988
+ - expressions
989
+ - text
990
+ - star shape
991
+
992
+ ## V 3.1.7:
993
+ - Fix rounded rects
994
+
995
+ ## V 3.1.5:
996
+ - Fix AE 13.6
997
+
998
+ ## V 3.1.4:
999
+ - svg transform bug fix
1000
+
1001
+ ## V 3.1.3: Naming convention
1002
+ - if you name your AE layers with a '#' in front, they will get their id attribute set to that name on the svg renderer. You can use it to add interaction to specific shapes or add additional styles.
1003
+
1004
+ ## V 3.1.2:
1005
+ - shape hold keyframe fix
1006
+ - snapshot feature fix
1007
+
1008
+ ## V 3.1.1:
1009
+ - translation bug fix
1010
+
1011
+ ## V 3.1.0: the big refactor
1012
+ - reduced filesize
1013
+ - increased performance
1014
+ - improved memory management
1015
+ - fixed scaled strokes on canvas
1016
+ - events
1017
+
1018
+ ## V 3.0.8
1019
+ - changed masks to clipping paths when only using AE additive masks. Performance improvement and fixes issue with strokes.
1020
+
1021
+ ## V 3.0.7
1022
+ - rounded rects fix
1023
+ - stroke dash export fix
1024
+
1025
+ ## V 3.0.5
1026
+ - major memory management optimizations. and more to come.
1027
+ - big performance improvements for svg animations
1028
+ - segments fixes
1029
+ - devicePixelRatio support. contribution from @snorpey
1030
+
1031
+ ## V 3.0.3
1032
+ - nested strokes and shapes fix
1033
+ - reverse rectangles fix
1034
+ - mask fix
1035
+ - reversed non closed shapes fix
1036
+
1037
+ ## V 3.0.2
1038
+ - bug fix for rounded rectangles
1039
+ - default quality settings modified
1040
+
1041
+ ## V 3.0.0
1042
+ - bodymovin.setQuality to optimize player performance. explained below.
1043
+ - segments: export animation in segments. more below.
1044
+ - snapshot: take an svg snapshot of the animation to use as poster. more below.
1045
+
1046
+ ## Installing extensions: Until I find a way to upload it to the Adobe Exchange store, there are two possible ways to install it.
1047
+
1048
+ ### Option 1:
1049
+
1050
+ - Close After Effects<br/>
1051
+ - Extract the zipped file on build/extension/bodymovin.zip to the adobe CEP folder:<br/>
1052
+ WINDOWS:<br/>
1053
+ C:\Program Files (x86)\Common Files\Adobe\CEP\extensions or<br/>
1054
+ C:\<username>\AppData\Roaming\Adobe\CEP\extensions<br/>
1055
+ MAC:<br/>
1056
+ /Library/Application\ Support/Adobe/CEP/extensions/bodymovin<br/>
1057
+ (you can open the terminal and type:<br/>
1058
+ cp -R YOURUNZIPEDFOLDERPATH/extension /Library/Application\ Support/Adobe/CEP/extensions/bodymovin<br/>
1059
+ then type:<br/>
1060
+ ls /Library/Application\ Support/Adobe/CEP/extensions/bodymovin<br/>
1061
+ to make sure it was copied correctly type)<br/>
1062
+
1063
+ - Edit the registry key:<br/>
1064
+ WINDOWS:<br/>
1065
+ open the registry key HKEY_CURRENT_USER/Software/Adobe/CSXS.6 and add a key named PlayerDebugMode, of type String, and value 1.<br/>
1066
+ MAC:<br/>
1067
+ open the file ~/Library/Preferences/com.adobe.CSXS.6.plist and add a row with key PlayerDebugMode, of type String, and value 1.<br/>
1068
+
1069
+ ### Option 2:
1070
+
1071
+ Install the zxp manually following the instructions here:
1072
+ https://helpx.adobe.com/x-productkb/global/installingextensionsandaddons.html
1073
+ Jump directly to "Install third-party extensions"
1074
+
1075
+
1076
+ ### For both
1077
+ - Go to Edit > Preferences > General > and check on "Allow Scripts to Write Files and Access Network"
1078
+
1079
+ ## How it works
1080
+ ### After Effects
1081
+ - Open your AE project and select the bodymovin extension on Window > Extensions > bodymovin
1082
+ - A Panel will open with a Compositions tab.
1083
+ - On the Compositions tab, click Refresh to get a list of all you project Comps.
1084
+ - Select the composition you want to export
1085
+ - Select Destination Folder
1086
+ - Click Render
1087
+ - look for the exported json file (if you had images or AI layers on your animation, there will be an images folder with the exported files)
1088
+
1089
+ #### Settings:
1090
+ **segments:** export animation in segments. If you have a main comp with more than one layer you can export the animation in parts so you won't load all at once. The exporter will segment your main comp considering where a layer starts in time.<br/>
1091
+ **snapshot:** take an svg snapshot of the animation to use as poster. After you render your animation, you can take a snapshot of any frame in the animation and save it to your disk. I recommend to pass the svg through an svg optimizer like https://jakearchibald.github.io/svgomg/ and play aroud with their settings.<br/>
1092
+
1093
+ ### HTML
1094
+ - get the bodymovin.js file from the build/player/ folder for the latest build
1095
+ - include the .js file on your html (remember to gzip it for production)
1096
+ ```
1097
+ <script src="js/bodymovin.js" type="text/javascript"></script>
1098
+ ```
1099
+ You can call bodymovin.loadAnimation() to start an animation.
1100
+ It takes an object as a unique param with:
1101
+ - animationData: an Object with the exported animation data.
1102
+ - path: the relative path to the animation object. (animationData and path are exclusive)
1103
+ - loop: true / false / number
1104
+ - autoplay: true / false it will start playing as soon as it is ready
1105
+ - name: animation name for future reference
1106
+ - animType: 'svg' / 'canvas' to set the renderer
1107
+ - prerender: true / false to prerender all animation before starting (true recommended)
1108
+ <br />
1109
+ Returns the animation object you can control with play, pause, setSpeed, etc.
1110
+ ```
1111
+ bodymovin.loadAnimation({
1112
+ wrapper: element, // the dom element
1113
+ animType: 'svg',
1114
+ loop: true,
1115
+ autoplay: true,
1116
+ animationData: JSON.parse(animationData) // the animation data
1117
+ });
1118
+ ```
1119
+ - if you want to use an existing canvas to draw, you can pass an extra object: 'renderer' with the following configuration:
1120
+ ```
1121
+ bodymovin.loadAnimation({
1122
+ wrapper: element, // the dom element
1123
+ animType: 'svg',
1124
+ loop: true,
1125
+ autoplay: true,
1126
+ animationData: animationData, // the animation data
1127
+ renderer: {
1128
+ context: canvasContext, // the canvas context
1129
+ scaleMode: 'noScale',
1130
+ clearCanvas: false
1131
+ }
1132
+ });
1133
+ ```
1134
+ If you do this, you will have to handle the canvas clearing after each frame
1135
+ <br/>
1136
+ Another way to load animations is adding specific attributes to a dom element.
1137
+ You have to include a div and set it's class to bodymovin.
1138
+ If you do it before page load, it will automatically search for all tags with the class "bodymovin".
1139
+ Or you can call bodymovin.searchAnimations() after page load and it will search all elements with the class "bodymovin".
1140
+ <br/>
1141
+ - add the data.json to a folder relative to the html
1142
+ - create a div that will contain the animation.
1143
+ <br/>
1144
+ **Required**
1145
+ <br/>
1146
+ . a class called "bodymovin"
1147
+ . a "data-animation-path" attribute with relative path to the data.json
1148
+ <br/>
1149
+ **Optional**
1150
+ <br/>
1151
+ . a "data-anim-loop" attribute
1152
+ . a "data-name" attribute to specify a name to target play controls specifically
1153
+ <br/>
1154
+ **Example**
1155
+ <br/>
1156
+ ```
1157
+ <div style="width:1067px;height:600px" class="bodymovin" data-animation-path="animation/" data-anim-loop="true" data-name="ninja"></div>
1158
+ ```
1159
+ <br/>
1160
+
1161
+ ## Usage
1162
+ bodymovin has 8 main methods:
1163
+ **bodymovin.play()** -- with 1 optional parameter **name** to target a specific animation <br/>
1164
+ **bodymovin.stop()** -- with 1 optional parameter **name** to target a specific animation <br/>
1165
+ **bodymovin.setSpeed()** -- first param speed (1 is normal speed) -- with 1 optional parameter **name** to target a specific animation <br/>
1166
+ **bodymovin.setDirection()** -- first param direction (1 is normal direction.) -- with 1 optional parameter **name** to target a specific animation <br/>
1167
+ **bodymovin.searchAnimations()** -- looks for elements with class "bodymovin" <br/>
1168
+ **bodymovin.loadAnimation()** -- Explained above. returns an animation instance to control individually. <br/>
1169
+ **bodymovin.destroy()** -- you can register an element directly with registerAnimation. It must have the "data-animation-path" attribute pointing at the data.json url<br />
1170
+ **bodymovin.setQuality()** -- default 'high', set 'high','medium','low', or a number > 1 to improve player performance. In some animations as low as 2 won't show any difference.<br />
1171
+
1172
+ ## Events
1173
+ - onComplete
1174
+ - onLoopComplete
1175
+ - onEnterFrame
1176
+ - onSegmentStart
1177
+
1178
+ you can also use addEventListener with the following events:
1179
+ - complete
1180
+ - loopComplete
1181
+ - enterFrame
1182
+ - segmentStart
1183
+
1184
+
1185
+ See the demo folders for examples or go to http://codepen.io/airnan/ to see some cool animations
1186
+
1187
+ ## Alerts!
1188
+
1189
+ ### Files
1190
+ If you have any images or AI layers that you haven't converted to shapes (I recommend that you convert them, so they get exported as vectors, right click each layer and do: "Create shapes from Vector Layers"), they will be saved to an images folder relative to the destination json folder.
1191
+ Beware not to overwrite an exiting folder on that same location.
1192
+
1193
+
1194
+ ### Performance
1195
+ This is real time rendering. Although it is pretty optimized, it always helps if you keep your AE project to what is necessary<br/>
1196
+ More optimizations are on their way, but try not to use huge shapes in AE only to mask a small part of it.<br/>
1197
+ Too many nodes will also affect performance.
1198
+
1199
+ ### Help
1200
+ If you have any animations that don't work or want me to export them, don't hesitate to write. <br/>
1201
+ I'm really interested in seeing what kind of problems the plugin has. <br/>
1202
+ my email is **hernantorrisi@gmail.com**
1203
+
1204
+ ### Version
1205
+ This is version 2.1. It is even more stable but let me know if anything comes up.
1206
+
1207
+ ## Examples
1208
+ http://codepen.io/collection/nVYWZR/ <br/>
1209
+
1210
+ ## Support
1211
+ - The script supports precomps, shapes, solids, images, null objects,
1212
+ - Text, image sequences, videos and audio are not supported (maybe some of them coming soon)
1213
+ - It supports masks and inverted masks. Maybe other modes will come but it has a huge performance hit.
1214
+ - It supports time remapping (yeah!)
1215
+ - The script supports shapes, rectangles and ellipses. It doesn't support stars yet.
1216
+ - No effects whatsoever. (stroke is on it's way)
1217
+ - No expressions (maybe some coming)
1218
+ - **No layer stretching**! No idea why, but stretching a layer messes with all the data.
1219
+
1220
+ ## Notes
1221
+ - If you want to modify the parser or the player, there are some gulp commands that can simplify the task
1222
+ - look at the great animations exported on the demo folder
1223
+ - gzipping the animation jsons and the player have a huge impact on the filesize. I recommend doing it if you use it for a project.
1224
+
1225
+ ## Coming up
1226
+ - Text
1227
+ - Exporting images in a sprite
1228
+ - Stroke Effect support
1229
+ - Experimenting with the webAnimationAPI export
1230
+ - Exporting 3D animations (not vectors because there is no 3d svg support on browsers)