@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,543 @@
1
+ import ExpressionPropertyInterface from './ExpressionValueFactory';
2
+ import propertyGroupFactory from './PropertyGroupFactory';
3
+ import PropertyInterface from './PropertyInterface';
4
+ import ShapePathInterface from './shapes/ShapePathInterface';
5
+
6
+ const ShapeExpressionInterface = (function () {
7
+ function iterateElements(shapes, view, propertyGroup) {
8
+ var arr = [];
9
+ var i;
10
+ var len = shapes ? shapes.length : 0;
11
+ for (i = 0; i < len; i += 1) {
12
+ if (shapes[i].ty === 'gr') {
13
+ arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));
14
+ } else if (shapes[i].ty === 'fl') {
15
+ arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));
16
+ } else if (shapes[i].ty === 'st') {
17
+ arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));
18
+ } else if (shapes[i].ty === 'tm') {
19
+ arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));
20
+ } else if (shapes[i].ty === 'tr') {
21
+ // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));
22
+ } else if (shapes[i].ty === 'el') {
23
+ arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));
24
+ } else if (shapes[i].ty === 'sr') {
25
+ arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));
26
+ } else if (shapes[i].ty === 'sh') {
27
+ arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));
28
+ } else if (shapes[i].ty === 'rc') {
29
+ arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));
30
+ } else if (shapes[i].ty === 'rd') {
31
+ arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));
32
+ } else if (shapes[i].ty === 'rp') {
33
+ arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));
34
+ } else if (shapes[i].ty === 'gf') {
35
+ arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));
36
+ } else {
37
+ arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));
38
+ }
39
+ }
40
+ return arr;
41
+ }
42
+
43
+ function contentsInterfaceFactory(shape, view, propertyGroup) {
44
+ var interfaces;
45
+ var interfaceFunction = function _interfaceFunction(value) {
46
+ var i = 0;
47
+ var len = interfaces.length;
48
+ while (i < len) {
49
+ if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {
50
+ return interfaces[i];
51
+ }
52
+ i += 1;
53
+ }
54
+ if (typeof value === 'number') {
55
+ return interfaces[value - 1];
56
+ }
57
+ return null;
58
+ };
59
+
60
+ interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
61
+ interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);
62
+ interfaceFunction.numProperties = interfaces.length;
63
+ var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);
64
+ interfaceFunction.transform = transformInterface;
65
+ interfaceFunction.propertyIndex = shape.cix;
66
+ interfaceFunction._name = shape.nm;
67
+
68
+ return interfaceFunction;
69
+ }
70
+
71
+ function groupInterfaceFactory(shape, view, propertyGroup) {
72
+ var interfaceFunction = function _interfaceFunction(value) {
73
+ switch (value) {
74
+ case 'ADBE Vectors Group':
75
+ case 'Contents':
76
+ case 2:
77
+ return interfaceFunction.content;
78
+ // Not necessary for now. Keeping them here in case a new case appears
79
+ // case 'ADBE Vector Transform Group':
80
+ // case 3:
81
+ default:
82
+ return interfaceFunction.transform;
83
+ }
84
+ };
85
+ interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
86
+ var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);
87
+ var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);
88
+ interfaceFunction.content = content;
89
+ interfaceFunction.transform = transformInterface;
90
+ Object.defineProperty(interfaceFunction, '_name', {
91
+ get: function () {
92
+ return shape.nm;
93
+ },
94
+ });
95
+ // interfaceFunction.content = interfaceFunction;
96
+ interfaceFunction.numProperties = shape.np;
97
+ interfaceFunction.propertyIndex = shape.ix;
98
+ interfaceFunction.nm = shape.nm;
99
+ interfaceFunction.mn = shape.mn;
100
+ return interfaceFunction;
101
+ }
102
+
103
+ function fillInterfaceFactory(shape, view, propertyGroup) {
104
+ function interfaceFunction(val) {
105
+ if (val === 'Color' || val === 'color') {
106
+ return interfaceFunction.color;
107
+ } if (val === 'Opacity' || val === 'opacity') {
108
+ return interfaceFunction.opacity;
109
+ }
110
+ return null;
111
+ }
112
+ Object.defineProperties(interfaceFunction, {
113
+ color: {
114
+ get: ExpressionPropertyInterface(view.c),
115
+ },
116
+ opacity: {
117
+ get: ExpressionPropertyInterface(view.o),
118
+ },
119
+ _name: { value: shape.nm },
120
+ mn: { value: shape.mn },
121
+ });
122
+
123
+ view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));
124
+ view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));
125
+ return interfaceFunction;
126
+ }
127
+
128
+ function gradientFillInterfaceFactory(shape, view, propertyGroup) {
129
+ function interfaceFunction(val) {
130
+ if (val === 'Start Point' || val === 'start point') {
131
+ return interfaceFunction.startPoint;
132
+ }
133
+ if (val === 'End Point' || val === 'end point') {
134
+ return interfaceFunction.endPoint;
135
+ }
136
+ if (val === 'Opacity' || val === 'opacity') {
137
+ return interfaceFunction.opacity;
138
+ }
139
+ return null;
140
+ }
141
+ Object.defineProperties(interfaceFunction, {
142
+ startPoint: {
143
+ get: ExpressionPropertyInterface(view.s),
144
+ },
145
+ endPoint: {
146
+ get: ExpressionPropertyInterface(view.e),
147
+ },
148
+ opacity: {
149
+ get: ExpressionPropertyInterface(view.o),
150
+ },
151
+ type: {
152
+ get: function () {
153
+ return 'a';
154
+ },
155
+ },
156
+ _name: { value: shape.nm },
157
+ mn: { value: shape.mn },
158
+ });
159
+
160
+ view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));
161
+ view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));
162
+ view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));
163
+ return interfaceFunction;
164
+ }
165
+ function defaultInterfaceFactory() {
166
+ function interfaceFunction() {
167
+ return null;
168
+ }
169
+ return interfaceFunction;
170
+ }
171
+
172
+ function strokeInterfaceFactory(shape, view, propertyGroup) {
173
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
174
+ var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);
175
+ function addPropertyToDashOb(i) {
176
+ Object.defineProperty(dashOb, shape.d[i].nm, {
177
+ get: ExpressionPropertyInterface(view.d.dataProps[i].p),
178
+ });
179
+ }
180
+ var i;
181
+ var len = shape.d ? shape.d.length : 0;
182
+ var dashOb = {};
183
+ for (i = 0; i < len; i += 1) {
184
+ addPropertyToDashOb(i);
185
+ view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);
186
+ }
187
+
188
+ function interfaceFunction(val) {
189
+ if (val === 'Color' || val === 'color') {
190
+ return interfaceFunction.color;
191
+ } if (val === 'Opacity' || val === 'opacity') {
192
+ return interfaceFunction.opacity;
193
+ } if (val === 'Stroke Width' || val === 'stroke width') {
194
+ return interfaceFunction.strokeWidth;
195
+ }
196
+ return null;
197
+ }
198
+ Object.defineProperties(interfaceFunction, {
199
+ color: {
200
+ get: ExpressionPropertyInterface(view.c),
201
+ },
202
+ opacity: {
203
+ get: ExpressionPropertyInterface(view.o),
204
+ },
205
+ strokeWidth: {
206
+ get: ExpressionPropertyInterface(view.w),
207
+ },
208
+ dash: {
209
+ get: function () {
210
+ return dashOb;
211
+ },
212
+ },
213
+ _name: { value: shape.nm },
214
+ mn: { value: shape.mn },
215
+ });
216
+
217
+ view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));
218
+ view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));
219
+ view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));
220
+ return interfaceFunction;
221
+ }
222
+
223
+ function trimInterfaceFactory(shape, view, propertyGroup) {
224
+ function interfaceFunction(val) {
225
+ if (val === shape.e.ix || val === 'End' || val === 'end') {
226
+ return interfaceFunction.end;
227
+ }
228
+ if (val === shape.s.ix) {
229
+ return interfaceFunction.start;
230
+ }
231
+ if (val === shape.o.ix) {
232
+ return interfaceFunction.offset;
233
+ }
234
+ return null;
235
+ }
236
+
237
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
238
+ interfaceFunction.propertyIndex = shape.ix;
239
+
240
+ view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));
241
+ view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));
242
+ view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));
243
+ interfaceFunction.propertyIndex = shape.ix;
244
+ interfaceFunction.propertyGroup = propertyGroup;
245
+
246
+ Object.defineProperties(interfaceFunction, {
247
+ start: {
248
+ get: ExpressionPropertyInterface(view.s),
249
+ },
250
+ end: {
251
+ get: ExpressionPropertyInterface(view.e),
252
+ },
253
+ offset: {
254
+ get: ExpressionPropertyInterface(view.o),
255
+ },
256
+ _name: { value: shape.nm },
257
+ });
258
+ interfaceFunction.mn = shape.mn;
259
+ return interfaceFunction;
260
+ }
261
+
262
+ function transformInterfaceFactory(shape, view, propertyGroup) {
263
+ function interfaceFunction(value) {
264
+ if (shape.a.ix === value || value === 'Anchor Point') {
265
+ return interfaceFunction.anchorPoint;
266
+ }
267
+ if (shape.o.ix === value || value === 'Opacity') {
268
+ return interfaceFunction.opacity;
269
+ }
270
+ if (shape.p.ix === value || value === 'Position') {
271
+ return interfaceFunction.position;
272
+ }
273
+ if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {
274
+ return interfaceFunction.rotation;
275
+ }
276
+ if (shape.s.ix === value || value === 'Scale') {
277
+ return interfaceFunction.scale;
278
+ }
279
+ if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {
280
+ return interfaceFunction.skew;
281
+ }
282
+ if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {
283
+ return interfaceFunction.skewAxis;
284
+ }
285
+ return null;
286
+ }
287
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
288
+ view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));
289
+ view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));
290
+ view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));
291
+ view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));
292
+ view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));
293
+ if (view.transform.mProps.sk) {
294
+ view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));
295
+ view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));
296
+ }
297
+ view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));
298
+ Object.defineProperties(interfaceFunction, {
299
+ opacity: {
300
+ get: ExpressionPropertyInterface(view.transform.mProps.o),
301
+ },
302
+ position: {
303
+ get: ExpressionPropertyInterface(view.transform.mProps.p),
304
+ },
305
+ anchorPoint: {
306
+ get: ExpressionPropertyInterface(view.transform.mProps.a),
307
+ },
308
+ scale: {
309
+ get: ExpressionPropertyInterface(view.transform.mProps.s),
310
+ },
311
+ rotation: {
312
+ get: ExpressionPropertyInterface(view.transform.mProps.r),
313
+ },
314
+ skew: {
315
+ get: ExpressionPropertyInterface(view.transform.mProps.sk),
316
+ },
317
+ skewAxis: {
318
+ get: ExpressionPropertyInterface(view.transform.mProps.sa),
319
+ },
320
+ _name: { value: shape.nm },
321
+ });
322
+ interfaceFunction.ty = 'tr';
323
+ interfaceFunction.mn = shape.mn;
324
+ interfaceFunction.propertyGroup = propertyGroup;
325
+ return interfaceFunction;
326
+ }
327
+
328
+ function ellipseInterfaceFactory(shape, view, propertyGroup) {
329
+ function interfaceFunction(value) {
330
+ if (shape.p.ix === value) {
331
+ return interfaceFunction.position;
332
+ }
333
+ if (shape.s.ix === value) {
334
+ return interfaceFunction.size;
335
+ }
336
+ return null;
337
+ }
338
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
339
+ interfaceFunction.propertyIndex = shape.ix;
340
+ var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
341
+ prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));
342
+ prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));
343
+
344
+ Object.defineProperties(interfaceFunction, {
345
+ size: {
346
+ get: ExpressionPropertyInterface(prop.s),
347
+ },
348
+ position: {
349
+ get: ExpressionPropertyInterface(prop.p),
350
+ },
351
+ _name: { value: shape.nm },
352
+ });
353
+ interfaceFunction.mn = shape.mn;
354
+ return interfaceFunction;
355
+ }
356
+
357
+ function starInterfaceFactory(shape, view, propertyGroup) {
358
+ function interfaceFunction(value) {
359
+ if (shape.p.ix === value) {
360
+ return interfaceFunction.position;
361
+ }
362
+ if (shape.r.ix === value) {
363
+ return interfaceFunction.rotation;
364
+ }
365
+ if (shape.pt.ix === value) {
366
+ return interfaceFunction.points;
367
+ }
368
+ if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {
369
+ return interfaceFunction.outerRadius;
370
+ }
371
+ if (shape.os.ix === value) {
372
+ return interfaceFunction.outerRoundness;
373
+ }
374
+ if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {
375
+ return interfaceFunction.innerRadius;
376
+ }
377
+ if (shape.is && shape.is.ix === value) {
378
+ return interfaceFunction.innerRoundness;
379
+ }
380
+ return null;
381
+ }
382
+
383
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
384
+ var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
385
+ interfaceFunction.propertyIndex = shape.ix;
386
+ prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));
387
+ prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));
388
+ prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));
389
+ prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));
390
+ prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));
391
+ if (shape.ir) {
392
+ prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));
393
+ prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));
394
+ }
395
+
396
+ Object.defineProperties(interfaceFunction, {
397
+ position: {
398
+ get: ExpressionPropertyInterface(prop.p),
399
+ },
400
+ rotation: {
401
+ get: ExpressionPropertyInterface(prop.r),
402
+ },
403
+ points: {
404
+ get: ExpressionPropertyInterface(prop.pt),
405
+ },
406
+ outerRadius: {
407
+ get: ExpressionPropertyInterface(prop.or),
408
+ },
409
+ outerRoundness: {
410
+ get: ExpressionPropertyInterface(prop.os),
411
+ },
412
+ innerRadius: {
413
+ get: ExpressionPropertyInterface(prop.ir),
414
+ },
415
+ innerRoundness: {
416
+ get: ExpressionPropertyInterface(prop.is),
417
+ },
418
+ _name: { value: shape.nm },
419
+ });
420
+ interfaceFunction.mn = shape.mn;
421
+ return interfaceFunction;
422
+ }
423
+
424
+ function rectInterfaceFactory(shape, view, propertyGroup) {
425
+ function interfaceFunction(value) {
426
+ if (shape.p.ix === value) {
427
+ return interfaceFunction.position;
428
+ }
429
+ if (shape.r.ix === value) {
430
+ return interfaceFunction.roundness;
431
+ }
432
+ if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {
433
+ return interfaceFunction.size;
434
+ }
435
+ return null;
436
+ }
437
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
438
+
439
+ var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;
440
+ interfaceFunction.propertyIndex = shape.ix;
441
+ prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));
442
+ prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));
443
+ prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));
444
+
445
+ Object.defineProperties(interfaceFunction, {
446
+ position: {
447
+ get: ExpressionPropertyInterface(prop.p),
448
+ },
449
+ roundness: {
450
+ get: ExpressionPropertyInterface(prop.r),
451
+ },
452
+ size: {
453
+ get: ExpressionPropertyInterface(prop.s),
454
+ },
455
+ _name: { value: shape.nm },
456
+ });
457
+ interfaceFunction.mn = shape.mn;
458
+ return interfaceFunction;
459
+ }
460
+
461
+ function roundedInterfaceFactory(shape, view, propertyGroup) {
462
+ function interfaceFunction(value) {
463
+ if (shape.r.ix === value || value === 'Round Corners 1') {
464
+ return interfaceFunction.radius;
465
+ }
466
+ return null;
467
+ }
468
+
469
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
470
+ var prop = view;
471
+ interfaceFunction.propertyIndex = shape.ix;
472
+ prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));
473
+
474
+ Object.defineProperties(interfaceFunction, {
475
+ radius: {
476
+ get: ExpressionPropertyInterface(prop.rd),
477
+ },
478
+ _name: { value: shape.nm },
479
+ });
480
+ interfaceFunction.mn = shape.mn;
481
+ return interfaceFunction;
482
+ }
483
+
484
+ function repeaterInterfaceFactory(shape, view, propertyGroup) {
485
+ function interfaceFunction(value) {
486
+ if (shape.c.ix === value || value === 'Copies') {
487
+ return interfaceFunction.copies;
488
+ } if (shape.o.ix === value || value === 'Offset') {
489
+ return interfaceFunction.offset;
490
+ }
491
+ return null;
492
+ }
493
+
494
+ var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);
495
+ var prop = view;
496
+ interfaceFunction.propertyIndex = shape.ix;
497
+ prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));
498
+ prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));
499
+ Object.defineProperties(interfaceFunction, {
500
+ copies: {
501
+ get: ExpressionPropertyInterface(prop.c),
502
+ },
503
+ offset: {
504
+ get: ExpressionPropertyInterface(prop.o),
505
+ },
506
+ _name: { value: shape.nm },
507
+ });
508
+ interfaceFunction.mn = shape.mn;
509
+ return interfaceFunction;
510
+ }
511
+
512
+ return function (shapes, view, propertyGroup) {
513
+ var interfaces;
514
+ function _interfaceFunction(value) {
515
+ if (typeof value === 'number') {
516
+ value = value === undefined ? 1 : value;
517
+ if (value === 0) {
518
+ return propertyGroup;
519
+ }
520
+ return interfaces[value - 1];
521
+ }
522
+ var i = 0;
523
+ var len = interfaces.length;
524
+ while (i < len) {
525
+ if (interfaces[i]._name === value) {
526
+ return interfaces[i];
527
+ }
528
+ i += 1;
529
+ }
530
+ return null;
531
+ }
532
+ function parentGroupWrapper() {
533
+ return propertyGroup;
534
+ }
535
+ _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);
536
+ interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);
537
+ _interfaceFunction.numProperties = interfaces.length;
538
+ _interfaceFunction._name = 'Contents';
539
+ return _interfaceFunction;
540
+ };
541
+ }());
542
+
543
+ export default ShapeExpressionInterface;
@@ -0,0 +1,35 @@
1
+ const TextExpressionInterface = (function () {
2
+ return function (elem) {
3
+ var _sourceText;
4
+ function _thisLayerFunction(name) {
5
+ switch (name) {
6
+ case 'ADBE Text Document':
7
+ return _thisLayerFunction.sourceText;
8
+ default:
9
+ return null;
10
+ }
11
+ }
12
+ Object.defineProperty(_thisLayerFunction, 'sourceText', {
13
+ get: function () {
14
+ elem.textProperty.getValue();
15
+ var stringValue = elem.textProperty.currentData.t;
16
+ if (!_sourceText || stringValue !== _sourceText.value) {
17
+ _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers
18
+ // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive
19
+ _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers
20
+ Object.defineProperty(_sourceText, 'style', {
21
+ get: function () {
22
+ return {
23
+ fillColor: elem.textProperty.currentData.fc,
24
+ };
25
+ },
26
+ });
27
+ }
28
+ return _sourceText;
29
+ },
30
+ });
31
+ return _thisLayerFunction;
32
+ };
33
+ }());
34
+
35
+ export default TextExpressionInterface;
@@ -0,0 +1,44 @@
1
+ import ExpressionManager from './ExpressionManager';
2
+ import expressionHelpers from './expressionHelpers';
3
+ import TextSelectorProp from '../text/TextSelectorProperty';
4
+
5
+ const TextExpressionSelectorPropFactory = (function () { // eslint-disable-line no-unused-vars
6
+ function getValueProxy(index, total) {
7
+ this.textIndex = index + 1;
8
+ this.textTotal = total;
9
+ this.v = this.getValue() * this.mult;
10
+ return this.v;
11
+ }
12
+
13
+ return function (elem, data) {
14
+ this.pv = 1;
15
+ this.comp = elem.comp;
16
+ this.elem = elem;
17
+ this.mult = 0.01;
18
+ this.propType = 'textSelector';
19
+ this.textTotal = data.totalChars;
20
+ this.selectorValue = 100;
21
+ this.lastValue = [1, 1, 1];
22
+ this.k = true;
23
+ this.x = true;
24
+ this.getValue = ExpressionManager.initiateExpression.bind(this)(elem, data, this);
25
+ this.getMult = getValueProxy;
26
+ this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;
27
+ if (this.kf) {
28
+ this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);
29
+ } else {
30
+ this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);
31
+ }
32
+ this.setGroupProperty = expressionHelpers.setGroupProperty;
33
+ };
34
+ }());
35
+
36
+ var propertyGetTextProp = TextSelectorProp.getTextSelectorProp;
37
+ TextSelectorProp.getTextSelectorProp = function (elem, data, arr) {
38
+ if (data.t === 1) {
39
+ return new TextExpressionSelectorPropFactory(elem, data, arr); // eslint-disable-line no-undef
40
+ }
41
+ return propertyGetTextProp(elem, data, arr);
42
+ };
43
+
44
+ export default TextExpressionSelectorPropFactory;