@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,359 @@
1
+ import {
2
+ extendPrototype,
3
+ } from '../functionExtensions';
4
+ import PropertyFactory from '../PropertyFactory';
5
+ import shapePool from '../pooling/shape_pool';
6
+ import bez from '../bez';
7
+ import {
8
+ ShapeModifier,
9
+ } from './ShapeModifiers';
10
+ import segmentsLengthPool from '../pooling/segments_length_pool';
11
+
12
+ function TrimModifier() {
13
+ }
14
+ extendPrototype([ShapeModifier], TrimModifier);
15
+ TrimModifier.prototype.initModifierProperties = function (elem, data) {
16
+ this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);
17
+ this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);
18
+ this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);
19
+ this.sValue = 0;
20
+ this.eValue = 0;
21
+ this.getValue = this.processKeys;
22
+ this.m = data.m;
23
+ this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;
24
+ };
25
+
26
+ TrimModifier.prototype.addShapeToModifier = function (shapeData) {
27
+ shapeData.pathsData = [];
28
+ };
29
+
30
+ TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {
31
+ var segments = [];
32
+ if (e <= 1) {
33
+ segments.push({
34
+ s: s,
35
+ e: e,
36
+ });
37
+ } else if (s >= 1) {
38
+ segments.push({
39
+ s: s - 1,
40
+ e: e - 1,
41
+ });
42
+ } else {
43
+ segments.push({
44
+ s: s,
45
+ e: 1,
46
+ });
47
+ segments.push({
48
+ s: 0,
49
+ e: e - 1,
50
+ });
51
+ }
52
+ var shapeSegments = [];
53
+ var i;
54
+ var len = segments.length;
55
+ var segmentOb;
56
+ for (i = 0; i < len; i += 1) {
57
+ segmentOb = segments[i];
58
+ if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {
59
+ var shapeS;
60
+ var shapeE;
61
+ if (segmentOb.s * totalModifierLength <= addedLength) {
62
+ shapeS = 0;
63
+ } else {
64
+ shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;
65
+ }
66
+ if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {
67
+ shapeE = 1;
68
+ } else {
69
+ shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);
70
+ }
71
+ shapeSegments.push([shapeS, shapeE]);
72
+ }
73
+ }
74
+ if (!shapeSegments.length) {
75
+ shapeSegments.push([0, 0]);
76
+ }
77
+ return shapeSegments;
78
+ };
79
+
80
+ TrimModifier.prototype.releasePathsData = function (pathsData) {
81
+ var i;
82
+ var len = pathsData.length;
83
+ for (i = 0; i < len; i += 1) {
84
+ segmentsLengthPool.release(pathsData[i]);
85
+ }
86
+ pathsData.length = 0;
87
+ return pathsData;
88
+ };
89
+
90
+ TrimModifier.prototype.processShapes = function (_isFirstFrame) {
91
+ var s;
92
+ var e;
93
+ if (this._mdf || _isFirstFrame) {
94
+ var o = (this.o.v % 360) / 360;
95
+ if (o < 0) {
96
+ o += 1;
97
+ }
98
+ if (this.s.v > 1) {
99
+ s = 1 + o;
100
+ } else if (this.s.v < 0) {
101
+ s = 0 + o;
102
+ } else {
103
+ s = this.s.v + o;
104
+ }
105
+ if (this.e.v > 1) {
106
+ e = 1 + o;
107
+ } else if (this.e.v < 0) {
108
+ e = 0 + o;
109
+ } else {
110
+ e = this.e.v + o;
111
+ }
112
+
113
+ if (s > e) {
114
+ var _s = s;
115
+ s = e;
116
+ e = _s;
117
+ }
118
+ s = Math.round(s * 10000) * 0.0001;
119
+ e = Math.round(e * 10000) * 0.0001;
120
+ this.sValue = s;
121
+ this.eValue = e;
122
+ } else {
123
+ s = this.sValue;
124
+ e = this.eValue;
125
+ }
126
+ var shapePaths;
127
+ var i;
128
+ var len = this.shapes.length;
129
+ var j;
130
+ var jLen;
131
+ var pathsData;
132
+ var pathData;
133
+ var totalShapeLength;
134
+ var totalModifierLength = 0;
135
+
136
+ if (e === s) {
137
+ for (i = 0; i < len; i += 1) {
138
+ this.shapes[i].localShapeCollection.releaseShapes();
139
+ this.shapes[i].shape._mdf = true;
140
+ this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;
141
+ if (this._mdf) {
142
+ this.shapes[i].pathsData.length = 0;
143
+ }
144
+ }
145
+ } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {
146
+ var segments = [];
147
+ var shapeData;
148
+ var localShapeCollection;
149
+ for (i = 0; i < len; i += 1) {
150
+ shapeData = this.shapes[i];
151
+ // if shape hasn't changed and trim properties haven't changed, cached previous path can be used
152
+ if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {
153
+ shapeData.shape.paths = shapeData.localShapeCollection;
154
+ } else {
155
+ shapePaths = shapeData.shape.paths;
156
+ jLen = shapePaths._length;
157
+ totalShapeLength = 0;
158
+ if (!shapeData.shape._mdf && shapeData.pathsData.length) {
159
+ totalShapeLength = shapeData.totalShapeLength;
160
+ } else {
161
+ pathsData = this.releasePathsData(shapeData.pathsData);
162
+ for (j = 0; j < jLen; j += 1) {
163
+ pathData = bez.getSegmentsLength(shapePaths.shapes[j]);
164
+ pathsData.push(pathData);
165
+ totalShapeLength += pathData.totalLength;
166
+ }
167
+ shapeData.totalShapeLength = totalShapeLength;
168
+ shapeData.pathsData = pathsData;
169
+ }
170
+
171
+ totalModifierLength += totalShapeLength;
172
+ shapeData.shape._mdf = true;
173
+ }
174
+ }
175
+ var shapeS = s;
176
+ var shapeE = e;
177
+ var addedLength = 0;
178
+ var edges;
179
+ for (i = len - 1; i >= 0; i -= 1) {
180
+ shapeData = this.shapes[i];
181
+ if (shapeData.shape._mdf) {
182
+ localShapeCollection = shapeData.localShapeCollection;
183
+ localShapeCollection.releaseShapes();
184
+ // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group
185
+ if (this.m === 2 && len > 1) {
186
+ edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);
187
+ addedLength += shapeData.totalShapeLength;
188
+ } else {
189
+ edges = [[shapeS, shapeE]];
190
+ }
191
+ jLen = edges.length;
192
+ for (j = 0; j < jLen; j += 1) {
193
+ shapeS = edges[j][0];
194
+ shapeE = edges[j][1];
195
+ segments.length = 0;
196
+ if (shapeE <= 1) {
197
+ segments.push({
198
+ s: shapeData.totalShapeLength * shapeS,
199
+ e: shapeData.totalShapeLength * shapeE,
200
+ });
201
+ } else if (shapeS >= 1) {
202
+ segments.push({
203
+ s: shapeData.totalShapeLength * (shapeS - 1),
204
+ e: shapeData.totalShapeLength * (shapeE - 1),
205
+ });
206
+ } else {
207
+ segments.push({
208
+ s: shapeData.totalShapeLength * shapeS,
209
+ e: shapeData.totalShapeLength,
210
+ });
211
+ segments.push({
212
+ s: 0,
213
+ e: shapeData.totalShapeLength * (shapeE - 1),
214
+ });
215
+ }
216
+ var newShapesData = this.addShapes(shapeData, segments[0]);
217
+ if (segments[0].s !== segments[0].e) {
218
+ if (segments.length > 1) {
219
+ var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];
220
+ if (lastShapeInCollection.c) {
221
+ var lastShape = newShapesData.pop();
222
+ this.addPaths(newShapesData, localShapeCollection);
223
+ newShapesData = this.addShapes(shapeData, segments[1], lastShape);
224
+ } else {
225
+ this.addPaths(newShapesData, localShapeCollection);
226
+ newShapesData = this.addShapes(shapeData, segments[1]);
227
+ }
228
+ }
229
+ this.addPaths(newShapesData, localShapeCollection);
230
+ }
231
+ }
232
+ shapeData.shape.paths = localShapeCollection;
233
+ }
234
+ }
235
+ } else if (this._mdf) {
236
+ for (i = 0; i < len; i += 1) {
237
+ // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.
238
+ // Don't remove this even if it's losing cached info.
239
+ this.shapes[i].pathsData.length = 0;
240
+ this.shapes[i].shape._mdf = true;
241
+ }
242
+ }
243
+ };
244
+
245
+ TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {
246
+ var i;
247
+ var len = newPaths.length;
248
+ for (i = 0; i < len; i += 1) {
249
+ localShapeCollection.addShape(newPaths[i]);
250
+ }
251
+ };
252
+
253
+ TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {
254
+ shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);
255
+ shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);
256
+ if (newShape) {
257
+ shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);
258
+ }
259
+ shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);
260
+ };
261
+
262
+ TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {
263
+ shapePath.setXYAt(points[1], points[5], 'o', pos);
264
+ shapePath.setXYAt(points[2], points[6], 'i', pos + 1);
265
+ if (newShape) {
266
+ shapePath.setXYAt(points[0], points[4], 'v', pos);
267
+ }
268
+ shapePath.setXYAt(points[3], points[7], 'v', pos + 1);
269
+ };
270
+
271
+ TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {
272
+ var pathsData = shapeData.pathsData;
273
+ var shapePaths = shapeData.shape.paths.shapes;
274
+ var i;
275
+ var len = shapeData.shape.paths._length;
276
+ var j;
277
+ var jLen;
278
+ var addedLength = 0;
279
+ var currentLengthData;
280
+ var segmentCount;
281
+ var lengths;
282
+ var segment;
283
+ var shapes = [];
284
+ var initPos;
285
+ var newShape = true;
286
+ if (!shapePath) {
287
+ shapePath = shapePool.newElement();
288
+ segmentCount = 0;
289
+ initPos = 0;
290
+ } else {
291
+ segmentCount = shapePath._length;
292
+ initPos = shapePath._length;
293
+ }
294
+ shapes.push(shapePath);
295
+ for (i = 0; i < len; i += 1) {
296
+ lengths = pathsData[i].lengths;
297
+ shapePath.c = shapePaths[i].c;
298
+ jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;
299
+ for (j = 1; j < jLen; j += 1) {
300
+ currentLengthData = lengths[j - 1];
301
+ if (addedLength + currentLengthData.addedLength < shapeSegment.s) {
302
+ addedLength += currentLengthData.addedLength;
303
+ shapePath.c = false;
304
+ } else if (addedLength > shapeSegment.e) {
305
+ shapePath.c = false;
306
+ break;
307
+ } else {
308
+ if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {
309
+ this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);
310
+ newShape = false;
311
+ } else {
312
+ segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);
313
+ this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);
314
+ // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);
315
+ newShape = false;
316
+ shapePath.c = false;
317
+ }
318
+ addedLength += currentLengthData.addedLength;
319
+ segmentCount += 1;
320
+ }
321
+ }
322
+ if (shapePaths[i].c && lengths.length) {
323
+ currentLengthData = lengths[j - 1];
324
+ if (addedLength <= shapeSegment.e) {
325
+ var segmentLength = lengths[j - 1].addedLength;
326
+ if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {
327
+ this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);
328
+ newShape = false;
329
+ } else {
330
+ segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);
331
+ this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);
332
+ // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);
333
+ newShape = false;
334
+ shapePath.c = false;
335
+ }
336
+ } else {
337
+ shapePath.c = false;
338
+ }
339
+ addedLength += currentLengthData.addedLength;
340
+ segmentCount += 1;
341
+ }
342
+ if (shapePath._length) {
343
+ shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);
344
+ shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);
345
+ }
346
+ if (addedLength > shapeSegment.e) {
347
+ break;
348
+ }
349
+ if (i < len - 1) {
350
+ shapePath = shapePool.newElement();
351
+ newShape = true;
352
+ shapes.push(shapePath);
353
+ segmentCount = 0;
354
+ }
355
+ }
356
+ return shapes;
357
+ };
358
+
359
+ export default TrimModifier;
@@ -0,0 +1,174 @@
1
+ import {
2
+ extendPrototype,
3
+ } from '../functionExtensions';
4
+ import PropertyFactory from '../PropertyFactory';
5
+ import shapePool from '../pooling/shape_pool';
6
+ import {
7
+ ShapeModifier,
8
+ } from './ShapeModifiers';
9
+ import { PolynomialBezier } from '../PolynomialBezier';
10
+
11
+ function ZigZagModifier() {}
12
+ extendPrototype([ShapeModifier], ZigZagModifier);
13
+ ZigZagModifier.prototype.initModifierProperties = function (elem, data) {
14
+ this.getValue = this.processKeys;
15
+ this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);
16
+ this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);
17
+ this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);
18
+ this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;
19
+ };
20
+
21
+ function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {
22
+ var angO = angle - Math.PI / 2;
23
+ var angI = angle + Math.PI / 2;
24
+ var px = point[0] + Math.cos(angle) * direction * amplitude;
25
+ var py = point[1] - Math.sin(angle) * direction * amplitude;
26
+
27
+ outputBezier.setTripleAt(
28
+ px,
29
+ py,
30
+ px + Math.cos(angO) * outAmplitude,
31
+ py - Math.sin(angO) * outAmplitude,
32
+ px + Math.cos(angI) * inAmplitude,
33
+ py - Math.sin(angI) * inAmplitude,
34
+ outputBezier.length()
35
+ );
36
+ }
37
+
38
+ function getPerpendicularVector(pt1, pt2) {
39
+ var vector = [
40
+ pt2[0] - pt1[0],
41
+ pt2[1] - pt1[1],
42
+ ];
43
+ var rot = -Math.PI * 0.5;
44
+ var rotatedVector = [
45
+ Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1],
46
+ Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1],
47
+ ];
48
+ return rotatedVector;
49
+ }
50
+
51
+ function getProjectingAngle(path, cur) {
52
+ var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;
53
+ var nextIndex = (cur + 1) % path.length();
54
+ var prevPoint = path.v[prevIndex];
55
+ var nextPoint = path.v[nextIndex];
56
+ var pVector = getPerpendicularVector(prevPoint, nextPoint);
57
+ return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);
58
+ }
59
+
60
+ function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {
61
+ var angle = getProjectingAngle(path, cur);
62
+ var point = path.v[cur % path._length];
63
+ var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];
64
+ var nextPoint = path.v[(cur + 1) % path._length];
65
+ var prevDist = pointType === 2
66
+ ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2))
67
+ : 0;
68
+ var nextDist = pointType === 2
69
+ ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2))
70
+ : 0;
71
+
72
+ setPoint(
73
+ outputBezier,
74
+ path.v[cur % path._length],
75
+ angle,
76
+ direction,
77
+ amplitude,
78
+ nextDist / ((frequency + 1) * 2),
79
+ prevDist / ((frequency + 1) * 2),
80
+ pointType
81
+ );
82
+ }
83
+
84
+ function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {
85
+ for (var i = 0; i < frequency; i += 1) {
86
+ var t = (i + 1) / (frequency + 1);
87
+
88
+ var dist = pointType === 2
89
+ ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2))
90
+ : 0;
91
+
92
+ var angle = segment.normalAngle(t);
93
+ var point = segment.point(t);
94
+ setPoint(
95
+ outputBezier,
96
+ point,
97
+ angle,
98
+ direction,
99
+ amplitude,
100
+ dist / ((frequency + 1) * 2),
101
+ dist / ((frequency + 1) * 2),
102
+ pointType
103
+ );
104
+
105
+ direction = -direction;
106
+ }
107
+
108
+ return direction;
109
+ }
110
+
111
+ ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {
112
+ var count = path._length;
113
+ var clonedPath = shapePool.newElement();
114
+ clonedPath.c = path.c;
115
+
116
+ if (!path.c) {
117
+ count -= 1;
118
+ }
119
+
120
+ if (count === 0) return clonedPath;
121
+
122
+ var direction = -1;
123
+ var segment = PolynomialBezier.shapeSegment(path, 0);
124
+ zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);
125
+
126
+ for (var i = 0; i < count; i += 1) {
127
+ direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);
128
+
129
+ if (i === count - 1 && !path.c) {
130
+ segment = null;
131
+ } else {
132
+ segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);
133
+ }
134
+
135
+ zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);
136
+ }
137
+
138
+ return clonedPath;
139
+ };
140
+
141
+ ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {
142
+ var shapePaths;
143
+ var i;
144
+ var len = this.shapes.length;
145
+ var j;
146
+ var jLen;
147
+ var amplitude = this.amplitude.v;
148
+ var frequency = Math.max(0, Math.round(this.frequency.v));
149
+ var pointType = this.pointsType.v;
150
+
151
+ if (amplitude !== 0) {
152
+ var shapeData;
153
+ var localShapeCollection;
154
+ for (i = 0; i < len; i += 1) {
155
+ shapeData = this.shapes[i];
156
+ localShapeCollection = shapeData.localShapeCollection;
157
+ if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {
158
+ localShapeCollection.releaseShapes();
159
+ shapeData.shape._mdf = true;
160
+ shapePaths = shapeData.shape.paths.shapes;
161
+ jLen = shapeData.shape.paths._length;
162
+ for (j = 0; j < jLen; j += 1) {
163
+ localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));
164
+ }
165
+ }
166
+ shapeData.shape.paths = shapeData.localShapeCollection;
167
+ }
168
+ }
169
+ if (!this.dynamicProperties.length) {
170
+ this._mdf = false;
171
+ }
172
+ };
173
+
174
+ export default ZigZagModifier;
@@ -0,0 +1,20 @@
1
+ const buildShapeString = function (pathNodes, length, closed, mat) {
2
+ if (length === 0) {
3
+ return '';
4
+ }
5
+ var _o = pathNodes.o;
6
+ var _i = pathNodes.i;
7
+ var _v = pathNodes.v;
8
+ var i;
9
+ var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);
10
+ for (i = 1; i < length; i += 1) {
11
+ shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);
12
+ }
13
+ if (closed && length) {
14
+ shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);
15
+ shapeString += 'z';
16
+ }
17
+ return shapeString;
18
+ };
19
+
20
+ export default buildShapeString;
@@ -0,0 +1,60 @@
1
+ function LetterProps(o, sw, sc, fc, m, p) {
2
+ this.o = o;
3
+ this.sw = sw;
4
+ this.sc = sc;
5
+ this.fc = fc;
6
+ this.m = m;
7
+ this.p = p;
8
+ this._mdf = {
9
+ o: true,
10
+ sw: !!sw,
11
+ sc: !!sc,
12
+ fc: !!fc,
13
+ m: true,
14
+ p: true,
15
+ };
16
+ }
17
+
18
+ LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {
19
+ this._mdf.o = false;
20
+ this._mdf.sw = false;
21
+ this._mdf.sc = false;
22
+ this._mdf.fc = false;
23
+ this._mdf.m = false;
24
+ this._mdf.p = false;
25
+ var updated = false;
26
+
27
+ if (this.o !== o) {
28
+ this.o = o;
29
+ this._mdf.o = true;
30
+ updated = true;
31
+ }
32
+ if (this.sw !== sw) {
33
+ this.sw = sw;
34
+ this._mdf.sw = true;
35
+ updated = true;
36
+ }
37
+ if (this.sc !== sc) {
38
+ this.sc = sc;
39
+ this._mdf.sc = true;
40
+ updated = true;
41
+ }
42
+ if (this.fc !== fc) {
43
+ this.fc = fc;
44
+ this._mdf.fc = true;
45
+ updated = true;
46
+ }
47
+ if (this.m !== m) {
48
+ this.m = m;
49
+ this._mdf.m = true;
50
+ updated = true;
51
+ }
52
+ if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {
53
+ this.p = p;
54
+ this._mdf.p = true;
55
+ updated = true;
56
+ }
57
+ return updated;
58
+ };
59
+
60
+ export default LetterProps;
@@ -0,0 +1,34 @@
1
+ import {
2
+ degToRads,
3
+ } from '../common';
4
+ import PropertyFactory from '../PropertyFactory';
5
+ import TextSelectorProp from './TextSelectorProperty';
6
+
7
+ function TextAnimatorDataProperty(elem, animatorProps, container) {
8
+ var defaultData = { propType: false };
9
+ var getProp = PropertyFactory.getProp;
10
+ var textAnimatorAnimatables = animatorProps.a;
11
+ this.a = {
12
+ r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,
13
+ rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,
14
+ ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,
15
+ sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,
16
+ sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,
17
+ s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,
18
+ a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,
19
+ o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,
20
+ p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,
21
+ sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,
22
+ sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,
23
+ fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,
24
+ fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,
25
+ fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,
26
+ fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,
27
+ t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,
28
+ };
29
+
30
+ this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);
31
+ this.s.t = animatorProps.s.t;
32
+ }
33
+
34
+ export default TextAnimatorDataProperty;