lottie-ios 3.2.3 → 3.4.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 (584) hide show
  1. package/.github/actions/setup/action.yml +32 -0
  2. package/.github/issue_template.md +6 -23
  3. package/.github/workflows/main.yml +95 -0
  4. package/.spi.yml +6 -0
  5. package/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +7 -0
  6. package/.swiftpm/xcode/package.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  7. package/.swiftpm/xcode/xcuserdata/{brandonwithrow.xcuserdatad → cal.xcuserdatad}/xcschemes/xcschememanagement.plist +25 -15
  8. package/.swiftpm/xcode/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  9. package/Gemfile +4 -0
  10. package/Gemfile.lock +102 -0
  11. package/Lottie.xcodeproj/project.pbxproj +2005 -1974
  12. package/Lottie.xcodeproj/project.xcworkspace/contents.xcworkspacedata +1 -1
  13. package/Lottie.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +23 -0
  14. package/Lottie.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  15. package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_iOS.xcscheme → Lottie (iOS).xcscheme } +15 -18
  16. package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_macOS.xcscheme → Lottie (macOS).xcscheme } +7 -20
  17. package/Lottie.xcodeproj/xcshareddata/xcschemes/{Lottie_tvOS.xcscheme → Lottie (tvOS).xcscheme } +5 -18
  18. package/Lottie.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +37 -0
  19. package/Lottie.xcodeproj/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +24 -0
  20. package/Lottie.xcworkspace/contents.xcworkspacedata +10 -0
  21. package/Lottie.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  22. package/Lottie.xcworkspace/xcshareddata/swiftpm/Package.resolved +34 -0
  23. package/Lottie.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  24. package/{Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad → Lottie.xcworkspace/xcuserdata/cal.xcuserdatad}/xcdebugger/Breakpoints_v2.xcbkptlist +2 -2
  25. package/Lottie.xcworkspace/xcuserdata/cal.xcuserdatad/xcdebugger/Expressions.xcexplist +153 -0
  26. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  27. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +39 -0
  28. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcdebugger/Expressions.xcexplist +25 -0
  29. package/Mintfile +3 -0
  30. package/Package.swift +5 -15
  31. package/README.md +40 -59
  32. package/Rakefile +125 -0
  33. package/Sources/Private/CoreAnimation/Animations/CAAnimation+TimingConfiguration.swift +76 -0
  34. package/Sources/Private/CoreAnimation/Animations/CALayer+addAnimation.swift +322 -0
  35. package/Sources/Private/CoreAnimation/Animations/CombinedShapeAnimation.swift +53 -0
  36. package/Sources/Private/CoreAnimation/Animations/CustomPathAnimation.swift +41 -0
  37. package/Sources/Private/CoreAnimation/Animations/EllipseAnimation.swift +28 -0
  38. package/Sources/Private/CoreAnimation/Animations/GradientAnimations.swift +167 -0
  39. package/Sources/Private/CoreAnimation/Animations/LayerProperty.swift +229 -0
  40. package/Sources/Private/CoreAnimation/Animations/OpacityAnimation.swift +52 -0
  41. package/Sources/Private/CoreAnimation/Animations/RectangleAnimation.swift +31 -0
  42. package/Sources/Private/CoreAnimation/Animations/ShapeAnimation.swift +246 -0
  43. package/Sources/Private/CoreAnimation/Animations/StarAnimation.swift +95 -0
  44. package/Sources/Private/CoreAnimation/Animations/StrokeAnimation.swift +70 -0
  45. package/Sources/Private/CoreAnimation/Animations/TransformAnimations.swift +205 -0
  46. package/Sources/Private/CoreAnimation/Animations/VisibilityAnimation.swift +37 -0
  47. package/Sources/Private/CoreAnimation/CompatibilityTracker.swift +130 -0
  48. package/Sources/Private/CoreAnimation/CoreAnimationLayer.swift +492 -0
  49. package/Sources/Private/CoreAnimation/Extensions/CALayer+fillBounds.swift +35 -0
  50. package/Sources/Private/CoreAnimation/Extensions/KeyframeGroup+exactlyOneKeyframe.swift +37 -0
  51. package/Sources/Private/CoreAnimation/Extensions/Keyframes+combinedIfPossible.swift +61 -0
  52. package/Sources/Private/CoreAnimation/Layers/AnimationLayer.swift +77 -0
  53. package/Sources/Private/CoreAnimation/Layers/BaseAnimationLayer.swift +33 -0
  54. package/Sources/Private/CoreAnimation/Layers/BaseCompositionLayer.swift +87 -0
  55. package/Sources/Private/CoreAnimation/Layers/CALayer+setupLayerHierarchy.swift +131 -0
  56. package/Sources/Private/CoreAnimation/Layers/GradientRenderLayer.swift +87 -0
  57. package/Sources/Private/CoreAnimation/Layers/ImageLayer.swift +79 -0
  58. package/Sources/Private/CoreAnimation/Layers/LayerModel+makeAnimationLayer.swift +60 -0
  59. package/Sources/Private/CoreAnimation/Layers/MaskCompositionLayer.swift +138 -0
  60. package/Sources/Private/CoreAnimation/Layers/PreCompLayer.swift +140 -0
  61. package/Sources/Private/CoreAnimation/Layers/ShapeItemLayer.swift +259 -0
  62. package/Sources/Private/CoreAnimation/Layers/ShapeLayer.swift +305 -0
  63. package/Sources/Private/CoreAnimation/Layers/SolidLayer.swift +47 -0
  64. package/Sources/Private/CoreAnimation/Layers/TextLayer.swift +91 -0
  65. package/Sources/Private/CoreAnimation/Layers/TransformLayer.swift +11 -0
  66. package/Sources/Private/CoreAnimation/ValueProviderStore.swift +139 -0
  67. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/CompositionLayer.swift +93 -85
  68. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/ImageCompositionLayer.swift +24 -21
  69. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/MaskContainerLayer.swift +77 -54
  70. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/NullCompositionLayer.swift +5 -5
  71. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/PreCompositionLayer.swift +57 -41
  72. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/ShapeCompositionLayer.swift +22 -20
  73. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/SolidCompositionLayer.swift +26 -17
  74. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/CompLayers/TextCompositionLayer.swift +42 -36
  75. package/{lottie-swift/src/Private/LayerContainers/AnimationContainer.swift → Sources/Private/MainThread/LayerContainers/MainThreadAnimationLayer.swift} +201 -140
  76. package/Sources/Private/MainThread/LayerContainers/Utility/CachedImageProvider.swift +47 -0
  77. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/CompositionLayersInitializer.swift +33 -24
  78. package/{lottie-swift/src/Private/LayerContainers/Utility/TextLayer.swift → Sources/Private/MainThread/LayerContainers/Utility/CoreTextRenderLayer.swift} +119 -105
  79. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/InvertedMatteLayer.swift +25 -24
  80. package/Sources/Private/MainThread/LayerContainers/Utility/LayerFontProvider.swift +41 -0
  81. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/LayerImageProvider.swift +20 -16
  82. package/Sources/Private/MainThread/LayerContainers/Utility/LayerTextProvider.swift +40 -0
  83. package/{lottie-swift/src/Private → Sources/Private/MainThread}/LayerContainers/Utility/LayerTransformNode.swift +83 -67
  84. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Extensions/ItemsExtension.swift +6 -4
  85. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/NodeProperty.swift +29 -21
  86. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/AnyNodeProperty.swift +16 -10
  87. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/AnyValueContainer.swift +6 -6
  88. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/KeypathSearchable.swift +5 -5
  89. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/Protocols/NodePropertyMap.swift +10 -8
  90. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueContainer.swift +25 -21
  91. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueProviders/GroupInterpolator.swift +23 -17
  92. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueProviders/KeyframeInterpolator.swift +128 -108
  93. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/NodeProperties/ValueProviders/SingleValueProvider.swift +22 -17
  94. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/ModifierNodes/TrimPathNode.swift +113 -79
  95. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/GroupOutputNode.swift +22 -16
  96. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/PassThroughOutputNode.swift +19 -15
  97. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/PathOutputNode.swift +22 -20
  98. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/FillRenderer.swift +22 -23
  99. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift +242 -0
  100. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientStrokeRenderer.swift +29 -22
  101. package/{lottie-swift/src/Private/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientFillRenderer.swift → Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/LegacyGradientFillRenderer.swift} +92 -65
  102. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/OutputNodes/Renderables/StrokeRenderer.swift +22 -18
  103. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/EllipseNode.swift +139 -0
  104. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/PolygonNode.swift +170 -0
  105. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/RectNode.swift +94 -57
  106. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/ShapeNode.swift +42 -29
  107. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/PathNodes/StarNode.swift +105 -66
  108. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/RenderContainers/GroupNode.swift +155 -0
  109. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/FillNode.swift +51 -37
  110. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/GradientFillNode.swift +54 -42
  111. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/GradientStrokeNode.swift +65 -57
  112. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/RenderNodes/StrokeNode.swift +84 -58
  113. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Nodes/Text/TextAnimatorNode.swift +138 -119
  114. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/AnimatorNode.swift +80 -79
  115. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/PathNode.swift +5 -3
  116. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/Protocols/RenderNode.swift +22 -17
  117. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/RenderLayers/ShapeContainerLayer.swift +26 -23
  118. package/{lottie-swift/src/Private → Sources/Private/MainThread}/NodeRenderSystem/RenderLayers/ShapeRenderLayer.swift +35 -25
  119. package/Sources/Private/Model/Animation.swift +160 -0
  120. package/Sources/Private/Model/Assets/Asset.swift +43 -0
  121. package/{lottie-swift/src → Sources}/Private/Model/Assets/AssetLibrary.swift +40 -13
  122. package/Sources/Private/Model/Assets/ImageAsset.swift +112 -0
  123. package/{lottie-swift/src → Sources}/Private/Model/Assets/PrecompAsset.swift +20 -10
  124. package/Sources/Private/Model/DictionaryInitializable.swift +67 -0
  125. package/Sources/Private/Model/Extensions/Bundle.swift +34 -0
  126. package/{lottie-swift/src → Sources}/Private/Model/Extensions/KeyedDecodingContainerExtensions.swift +8 -4
  127. package/Sources/Private/Model/Keyframes/KeyframeData.swift +113 -0
  128. package/Sources/Private/Model/Keyframes/KeyframeGroup.swift +197 -0
  129. package/{lottie-swift/src → Sources}/Private/Model/Layers/ImageLayerModel.swift +21 -11
  130. package/Sources/Private/Model/Layers/LayerModel.swift +228 -0
  131. package/{lottie-swift/src → Sources}/Private/Model/Layers/PreCompLayerModel.swift +39 -22
  132. package/{lottie-swift/src → Sources}/Private/Model/Layers/ShapeLayerModel.swift +23 -12
  133. package/{lottie-swift/src → Sources}/Private/Model/Layers/SolidLayerModel.swift +31 -19
  134. package/{lottie-swift/src → Sources}/Private/Model/Layers/TextLayerModel.swift +33 -19
  135. package/Sources/Private/Model/Objects/DashPattern.swift +44 -0
  136. package/Sources/Private/Model/Objects/Marker.swift +33 -0
  137. package/Sources/Private/Model/Objects/Mask.swift +80 -0
  138. package/Sources/Private/Model/Objects/Transform.swift +179 -0
  139. package/Sources/Private/Model/ShapeItems/Ellipse.swift +75 -0
  140. package/Sources/Private/Model/ShapeItems/Fill.swift +74 -0
  141. package/Sources/Private/Model/ShapeItems/GradientFill.swift +124 -0
  142. package/Sources/Private/Model/ShapeItems/GradientStroke.swift +186 -0
  143. package/{lottie-swift/src → Sources}/Private/Model/ShapeItems/Group.swift +21 -10
  144. package/{lottie-swift/src → Sources}/Private/Model/ShapeItems/Merge.swift +29 -11
  145. package/Sources/Private/Model/ShapeItems/Rectangle.swift +73 -0
  146. package/Sources/Private/Model/ShapeItems/Repeater.swift +136 -0
  147. package/Sources/Private/Model/ShapeItems/Shape.swift +56 -0
  148. package/Sources/Private/Model/ShapeItems/ShapeItem.swift +163 -0
  149. package/Sources/Private/Model/ShapeItems/ShapeTransform.swift +136 -0
  150. package/Sources/Private/Model/ShapeItems/Star.swift +132 -0
  151. package/Sources/Private/Model/ShapeItems/Stroke.swift +102 -0
  152. package/Sources/Private/Model/ShapeItems/Trim.swift +78 -0
  153. package/Sources/Private/Model/Text/Font.swift +61 -0
  154. package/{lottie-swift/src → Sources}/Private/Model/Text/Glyph.swift +63 -39
  155. package/Sources/Private/Model/Text/TextAnimator.swift +165 -0
  156. package/Sources/Private/Model/Text/TextDocument.swift +123 -0
  157. package/Sources/Private/RootAnimationLayer.swift +51 -0
  158. package/{lottie-swift/src → Sources}/Private/Utility/Debugging/AnimatorNodeDebugging.swift +7 -7
  159. package/{lottie-swift/src → Sources}/Private/Utility/Debugging/LayerDebugging.swift +72 -47
  160. package/Sources/Private/Utility/Debugging/TestHelpers.swift +10 -0
  161. package/{lottie-swift/src → Sources}/Private/Utility/Extensions/AnimationKeypathExtension.swift +69 -59
  162. package/Sources/Private/Utility/Extensions/BlendMode+Filter.swift +31 -0
  163. package/Sources/Private/Utility/Extensions/CGColor+RGB.swift +22 -0
  164. package/{lottie-swift/src → Sources}/Private/Utility/Extensions/CGFloatExtensions.swift +70 -67
  165. package/Sources/Private/Utility/Extensions/DataExtension.swift +27 -0
  166. package/Sources/Private/Utility/Extensions/MathKit.swift +451 -0
  167. package/Sources/Private/Utility/Extensions/StringExtensions.swift +39 -0
  168. package/{lottie-swift/src → Sources}/Private/Utility/Helpers/AnimationContext.swift +42 -16
  169. package/Sources/Private/Utility/Interpolatable/InterpolatableExtensions.swift +135 -0
  170. package/{lottie-swift/src → Sources}/Private/Utility/Interpolatable/KeyframeExtensions.swift +13 -10
  171. package/Sources/Private/Utility/Interpolatable/KeyframeGroup+Extensions.swift +59 -0
  172. package/{lottie-swift/src → Sources}/Private/Utility/Primitives/BezierPath.swift +229 -142
  173. package/Sources/Private/Utility/Primitives/CGPointExtension.swift +35 -0
  174. package/{lottie-swift/src → Sources}/Private/Utility/Primitives/ColorExtension.swift +46 -14
  175. package/{lottie-swift/src → Sources}/Private/Utility/Primitives/CompoundBezierPath.swift +58 -49
  176. package/Sources/Private/Utility/Primitives/CurveVertex.swift +186 -0
  177. package/Sources/Private/Utility/Primitives/PathElement.swift +75 -0
  178. package/Sources/Private/Utility/Primitives/UnitBezier.swift +115 -0
  179. package/Sources/Private/Utility/Primitives/VectorsExtensions.swift +341 -0
  180. package/Sources/Public/Animation/AnimationPublic.swift +269 -0
  181. package/Sources/Public/Animation/AnimationView.swift +1315 -0
  182. package/Sources/Public/Animation/AnimationViewInitializers.swift +107 -0
  183. package/Sources/Public/AnimationCache/AnimationCacheProvider.swift +22 -0
  184. package/{lottie-swift/src → Sources}/Public/AnimationCache/LRUAnimationCache.swift +22 -18
  185. package/Sources/Public/DynamicProperties/AnimationKeypath.swift +49 -0
  186. package/Sources/Public/DynamicProperties/AnyValueProvider.swift +132 -0
  187. package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/ColorValueProvider.swift +54 -36
  188. package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/FloatValueProvider.swift +40 -36
  189. package/Sources/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +125 -0
  190. package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/PointValueProvider.swift +40 -35
  191. package/{lottie-swift/src → Sources}/Public/DynamicProperties/ValueProviders/SizeValueProvider.swift +40 -35
  192. package/{lottie-swift/src → Sources}/Public/FontProvider/AnimationFontProvider.swift +15 -8
  193. package/Sources/Public/ImageProvider/AnimationImageProvider.swift +21 -0
  194. package/Sources/Public/Keyframes/Interpolatable.swift +253 -0
  195. package/Sources/Public/Keyframes/Keyframe.swift +92 -0
  196. package/Sources/Public/Logging/LottieLogger.swift +124 -0
  197. package/Sources/Public/LottieConfiguration.swift +143 -0
  198. package/{lottie-swift/src → Sources}/Public/Primitives/AnimationTime.swift +1 -1
  199. package/{lottie-swift/src → Sources}/Public/Primitives/Color.swift +10 -6
  200. package/{lottie-swift/src → Sources}/Public/Primitives/Vectors.swift +13 -12
  201. package/Sources/Public/TextProvider/AnimationTextProvider.swift +53 -0
  202. package/{lottie-swift/src → Sources}/Public/iOS/AnimatedButton.swift +36 -26
  203. package/{lottie-swift/src → Sources}/Public/iOS/AnimatedControl.swift +102 -91
  204. package/{lottie-swift/src → Sources}/Public/iOS/AnimatedSwitch.swift +123 -92
  205. package/{lottie-swift/src → Sources}/Public/iOS/AnimationSubview.swift +3 -3
  206. package/Sources/Public/iOS/AnimationViewBase.swift +78 -0
  207. package/{lottie-swift/src → Sources}/Public/iOS/BundleImageProvider.swift +37 -34
  208. package/{lottie-swift/src → Sources}/Public/iOS/Compatibility/CompatibleAnimationKeypath.swift +4 -0
  209. package/{lottie-swift/src → Sources}/Public/iOS/Compatibility/CompatibleAnimationView.swift +38 -29
  210. package/{lottie-swift/src → Sources}/Public/iOS/FilepathImageProvider.swift +24 -20
  211. package/{lottie-swift/src → Sources}/Public/iOS/UIColorExtension.swift +4 -4
  212. package/{lottie-swift/src/Public/MacOS/AnimationSubview.swift → Sources/Public/macOS/AnimationSubview.macOS.swift} +4 -5
  213. package/{lottie-swift/src/Public/MacOS/LottieView.swift → Sources/Public/macOS/AnimationViewBase.macOS.swift} +58 -50
  214. package/{lottie-swift/src/Public/MacOS/BundleImageProvider.swift → Sources/Public/macOS/BundleImageProvider.macOS.swift} +32 -32
  215. package/Sources/Public/macOS/FilepathImageProvider.macOS.swift +69 -0
  216. package/Tests/AnimationKeypathTests.swift +94 -0
  217. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-7Vi1RszY1XYnR2CCkEwIpKG8NwwA9zsZEz_WD7Dv6kKh4RC7N7ob8NIRVHGUJKp7eXxlpeI_gzD87Pcs_2u0g== +0 -0
  218. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-SKV2drO-SFlrlh-wrzECDMkUSr-aF1lV9h-5onOy94zSTsD-oI45s0-KpOK45L-kq3hRY7v9vm-xmh00_eheg== +0 -0
  219. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-_CU_vuaiFfObSeDFfmp7GuB20ThMSAL-P_RUMowiQLbdu-y0bU9upIm3q8g6XmXUG5hP6J1az0Ma5Hi_rhhRg== +0 -0
  220. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~03aPYP6VHJjZj5DlphGarj0xdw43qu09Onx5SReZoPvg9zh5uL212E-KWfGct9jf6JG0JFV2tdbBi7X_8bH9aw== +0 -0
  221. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~1Z82GPBBPc1VLvn4O7V5glb6lgyXteNlDREUzV_TPymM4ra4UkBMklzV90lEqoYRCDuRVzaQHaDYbmYp3-8CFw== +0 -0
  222. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~1mFDCboXpUu9pSHAiVGr1O_QgqEEtvJp_LUhickxLZo0Z5pj3fvadn1l2MzEOd4bFsVBZifUvcyPa7dzlMWF-A== +0 -0
  223. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~2_L9PUjv2JDKu1n8bDLb4XLB-yex6ZVjDDMwfuKAr7teDw-SKgLgkW6H-m_gjWChIVdB4vW6yvHP7XJxvXtRNA== +0 -0
  224. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +1 -0
  225. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~4krT4ZMzDOu34msFUq0Xod142kw4pAeSWX4JSxlsjOI0Wanu3343qeespgFi61MTWq1DdH9XXspVKqGlGm_fyw== +0 -0
  226. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~5_aJsdP-e3dRTAUnH-y1U2plaCuUi1vyHriaZuNK0xFe8wGl9Qft6uLCX2Qt6CRBKJQluEe9o0uRWw1eb42FHQ== +0 -0
  227. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~8b0bSqV7eND54zvHvu1v2Htpm7yn-BOEFw5d3mITJrXWNykJ5BTR9WbrD80JEctNcT-rDqO2xfrQk1tFWeY6Sw== +0 -0
  228. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~9u8KAGpgtSm-mQ12Py8RZUbYbDlBhM3w1I2MQO53K2CSn6IePp7g65DBcdXTYMfG1bgoJ-6x30fjnGe-2UYsDQ== +0 -0
  229. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Bw7uMs4wqB9ahfEqGii2FkQ9pvZmG6HGe2hmbAT2wyM5hpn8Xh5dELysMcEz6hEsqmn6HdRdLOLZhC_fNaXzgA== +0 -0
  230. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~BwUq2xXQYuE8ya6HT6lfNsdtEjz5AKGf8GvLY6VBxQyIY1vgj_Gov-3NeM69OS66BQRDK0PG9H4Oyg0R48E4vg== +0 -0
  231. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~EkDVUR6dcnzxV_lYjkrJ5QGMVTCvb_upAoBF6DBu61sQkGvZN3fSRTsJ1XfJIZO-JUzdNoVA3D_CcvokL0gnQg== +0 -0
  232. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~FUkcLSJ8RAuPenM4HFG1R-sN5-cDBGcTxgR2jaVCna7xV0ZTyBHriB1Nn59mariNlJDiCoBtMUQEmauGxWtfBA== +0 -0
  233. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~FqsuZe4RVLOOVUYLTL-GTIohZ8TdSfxx7m2KJtLYFPGOdE4XorTX7Oc7kXbhghPRppXT3jW-slI37M34YNEvLQ== +0 -0
  234. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~G4F_NtyTj3i46fmKm0NorHAeq8tYWWYf6uv5yC1DwzdpWVoYbOPufmFNvdEbxZt4AMdV0gKx3HI46EAXNOQVFg== +0 -0
  235. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~GxetzGUNDgaBBXcTmLK6p9JBDX3I3QPshshbui1IaEWvJbQko-E36tCKwaJYHbleAWz9FqkAM_Tqx3YOmSVkVg== +0 -0
  236. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~H1Wjd5kKWDW4t3SDodxiHV72V8WT0xwPubw5cJTNLkPRLgaILFPh-dpy8EOUNgy1KzrDujFsm9EcTsbuqtMPLA== +0 -0
  237. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~JpI5MH4zCgebUHFpXVn4zjtsGtMNnO7BQZWfNARAB5UWa9gqz6YXHR3uLCJ_AvJ3lh53BUVkavsx9TY2FMmxbA== +0 -0
  238. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~JujNYkJtcux0Ni4QnR64zu4Wz_zYjyKvYaYZm5ypxTLPSzF3_jNE_NO4sdbDamF8wEqWoky1uf4ZE0JT3L607A== +0 -0
  239. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~KJSEA6DKnb2_FRPSqKZGh41eo-C8x448J9kEBrH012bUrZfOSDvrgmIrU0Vz7Ri3gaS9aKKmSaVMvXsHSlTJVA== +0 -0
  240. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~MStOwu3jBlJtcRnxrseVOuhI4kCj--ggFPG7sqrq5w1hjrI3bVyD-bm1Jwyx0noY3wT1rHDEvaGWnV2qsGjGwg== +0 -0
  241. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~McsJ8kFVf3IjhgXIRdw8Xx-EXgbV071bmlj2BBnk52xrWl3sEeiIyxwUsF7mIWvMRWfcFfu4VGHYyqfk2BeHXw== +0 -0
  242. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~NHt9fVe4kDdbxnglKcEwXaRK-WsYEOaD23Kbl8SJPRMYHr_Z6SJd_HmG3BROHHR_M6TgSmucONpDJdTj5tjuFw== +0 -0
  243. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Nfo2iwCPcfAcOBIVyoUAK0-PIfr5qYxIKZt-uaSaTBdrTNxAuJ1ItmeDPZ3VdJJmxD_c22No7x482bdd3_yYtw== +0 -0
  244. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~S2Qlu11xBhEd5aGSzWsnw1TR8u8PiOF93GO0j5bfNoAFCVzxKOwhRFoIXba2EpQnLQqFdIKyhWN3l70A4GPHmg== +0 -0
  245. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~W7a7M37RO9jgck2zeR0471Pm7e8K0Kqj5tXEouDjvqKZXSrWxMaWD28oqkKKYAiU4608R4S9mM11KyphljdMSw== +0 -0
  246. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~XUo1oyPCrlL7CA74wG-OzQ06VOWJYWvHGFHU7keZN1SKaIXjHX5qi_kBzjG_rBCi89-S8GVmCy7S3PHSjG8SbQ== +0 -0
  247. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Xh0VmDvFNMELHu08-vrs54pegVyUwwDRxx_nXkwyD0NjnYozyqcGAKAr_QWHmw6F8XyuWg51M9KGpJJIFzzGuw== +0 -0
  248. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Xve-wMBp_lxVUgD9qH5GwieGP9cAWtm0xULZvdGjBRUMvaevmpCB5gnbMBuIXAO6a1c9v6WUq0jNVX7ut5HvOw== +0 -0
  249. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~ZU1XkZFgnEE22CXEF-pOlcj5f10x-KM1Vw9d4IOLu-NiTZcz7koYPixhdrB1PJr8J-h9NpJmfqEastfxamA1jQ== +0 -0
  250. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~_YkNYEHTsbbtFILJpzH3HenH0t4ShI25dIMdve541CF5bl-jPF3X3F7tq-t5dvP0TEkATsOJdLQdBp1xv4Q-ag== +0 -0
  251. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~boy6mpn2jkwm60jjgQ0TG25UqRdN46LzmgTVCrpy6nBOgkLCGkGHcbceiwjU1itS_vj3-iQX0ZnrWOQrPyfHNA== +0 -0
  252. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~bwzpVZ9hAqGDHhXs2FRA82dfGfLmc7-m0uQhZDDfHHO7hQ17M_Np341BZX4WDLhYYS4cdUgaDodlNpdfpG3nXw== +0 -0
  253. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~cBxe-9PpAGFdAsYkmdN3lJVqEliLcRYlyoAov0aPZfJGwUr_cOm3XpjO7nmf_2eLf8UAx-rycjnJzw07xLrNCA== +1 -0
  254. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~dirWk6W4Pav1oyciuflfJlRu0iuxbYOmrpQapOJ0mV9C1SQ-jvDRv_7h753Cy18-SwULARUdWsyUy3yNNvxF7w== +0 -0
  255. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~ebwZVjSEHroc9jtIm4jd_h_YAqEBcOkAZ4HPNJT8pLCldjRcTq-obQLakxXOhfuoOBlYBoZLuO-Y0lskeZRYKw== +0 -0
  256. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~gfcRcmRIr0h09d0jiZsA7nUeQv2XtapxuYEXZy1Z9um0tTJQvz-O5ef5f7zhLenLvjnDtDtlY_aY4Hvpce6e1Q== +0 -0
  257. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~hgOgiVCyv2R0W-f0qKw5xYPeUwj8_ccCM9vKH_7vAQcCO9t8BwR1APGRBv20AONmp-PYMXmtgsBlQkNBRBpdQA== +0 -0
  258. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~hrhCl-YRAAr8ByNB_LCgEBsVNHMp92gTIUknetpUHMjcXl4Hpn_uY-h6C45oga0ZALnfGCo6iKTmiPLa4Qvnpg== +0 -0
  259. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~n2yoR7JsyL4DSUwmjnpE4Iq9Qi_eeZrmpPU8cdehDFKfESK7nwxXxfrSMQbk0BQ2lgGPadoRcd1-qr1xVz97jA== +0 -0
  260. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~nMCcZm8WvPogyO_nuJ926Q3Q2dqVMN2LdjEL1Kq2wJ_RG-rH-e_6v41l1xZbCsQTa3XykQdEiXNc0HtAvT6IRA== +0 -0
  261. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~oc3C7xkUt-OWDL6rrsxs-seS4Fu1bqBWAAXCHalgShaGg9MUrOiRbHT2DcAnhyQFKx6x5FRbvjmYoQWrQiXJZA== +0 -0
  262. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~p-ihj7SEgkDXpMu9hvKE_wiX9cvtwyXrdIn964BfedXHKGpC6o7mMPxEyC0kRPVi_EZs_MRV5bAPEpl5h5we0g== +0 -0
  263. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~qlhO_D9oE8uSKH-mZqyRF9pp4Zv1Tv0dIYcqrH4hb1VWlIxcdxmg2j0M8496cQeFXC5bn_JMXdBlD-d6cnFF8w== +0 -0
  264. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~tjpiyIxJR_boTdUNrtFDuKIZoY84fI4lA1oMJbq9e2ZmYKIK5FeRN2O8cV_yMOYJGr4lbv03kTmT70mCjUc2_Q== +0 -0
  265. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~wULeoj18eEKJWAKx1uFQVwS48cUGFcYPRJQj1Ro5XNJsWCwppGSCdIPhwifD6Z2f_j3zfI2SmC2Gg81sBXXW7g== +0 -0
  266. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~zrEihMys4NVV5rx6FmuzEGO2TjloI3OiC7yzIhvqYoRo43ibb2F-Km6Jf4NX-ac62pOLBYZRcjQTvYMpn75_oA== +0 -0
  267. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-7Vi1RszY1XYnR2CCkEwIpKG8NwwA9zsZEz_WD7Dv6kKh4RC7N7ob8NIRVHGUJKp7eXxlpeI_gzD87Pcs_2u0g== +0 -0
  268. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-SKV2drO-SFlrlh-wrzECDMkUSr-aF1lV9h-5onOy94zSTsD-oI45s0-KpOK45L-kq3hRY7v9vm-xmh00_eheg== +0 -0
  269. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-_CU_vuaiFfObSeDFfmp7GuB20ThMSAL-P_RUMowiQLbdu-y0bU9upIm3q8g6XmXUG5hP6J1az0Ma5Hi_rhhRg== +0 -0
  270. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~03aPYP6VHJjZj5DlphGarj0xdw43qu09Onx5SReZoPvg9zh5uL212E-KWfGct9jf6JG0JFV2tdbBi7X_8bH9aw== +0 -0
  271. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~1Z82GPBBPc1VLvn4O7V5glb6lgyXteNlDREUzV_TPymM4ra4UkBMklzV90lEqoYRCDuRVzaQHaDYbmYp3-8CFw== +0 -0
  272. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~1mFDCboXpUu9pSHAiVGr1O_QgqEEtvJp_LUhickxLZo0Z5pj3fvadn1l2MzEOd4bFsVBZifUvcyPa7dzlMWF-A== +0 -0
  273. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~2_L9PUjv2JDKu1n8bDLb4XLB-yex6ZVjDDMwfuKAr7teDw-SKgLgkW6H-m_gjWChIVdB4vW6yvHP7XJxvXtRNA== +0 -0
  274. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +0 -0
  275. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~4krT4ZMzDOu34msFUq0Xod142kw4pAeSWX4JSxlsjOI0Wanu3343qeespgFi61MTWq1DdH9XXspVKqGlGm_fyw== +0 -0
  276. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~5_aJsdP-e3dRTAUnH-y1U2plaCuUi1vyHriaZuNK0xFe8wGl9Qft6uLCX2Qt6CRBKJQluEe9o0uRWw1eb42FHQ== +0 -0
  277. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~8b0bSqV7eND54zvHvu1v2Htpm7yn-BOEFw5d3mITJrXWNykJ5BTR9WbrD80JEctNcT-rDqO2xfrQk1tFWeY6Sw== +0 -0
  278. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~9u8KAGpgtSm-mQ12Py8RZUbYbDlBhM3w1I2MQO53K2CSn6IePp7g65DBcdXTYMfG1bgoJ-6x30fjnGe-2UYsDQ== +0 -0
  279. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Bw7uMs4wqB9ahfEqGii2FkQ9pvZmG6HGe2hmbAT2wyM5hpn8Xh5dELysMcEz6hEsqmn6HdRdLOLZhC_fNaXzgA== +0 -0
  280. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~BwUq2xXQYuE8ya6HT6lfNsdtEjz5AKGf8GvLY6VBxQyIY1vgj_Gov-3NeM69OS66BQRDK0PG9H4Oyg0R48E4vg== +0 -0
  281. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~EkDVUR6dcnzxV_lYjkrJ5QGMVTCvb_upAoBF6DBu61sQkGvZN3fSRTsJ1XfJIZO-JUzdNoVA3D_CcvokL0gnQg== +0 -0
  282. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~FUkcLSJ8RAuPenM4HFG1R-sN5-cDBGcTxgR2jaVCna7xV0ZTyBHriB1Nn59mariNlJDiCoBtMUQEmauGxWtfBA== +0 -0
  283. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~FqsuZe4RVLOOVUYLTL-GTIohZ8TdSfxx7m2KJtLYFPGOdE4XorTX7Oc7kXbhghPRppXT3jW-slI37M34YNEvLQ== +0 -0
  284. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~G4F_NtyTj3i46fmKm0NorHAeq8tYWWYf6uv5yC1DwzdpWVoYbOPufmFNvdEbxZt4AMdV0gKx3HI46EAXNOQVFg== +0 -0
  285. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~GxetzGUNDgaBBXcTmLK6p9JBDX3I3QPshshbui1IaEWvJbQko-E36tCKwaJYHbleAWz9FqkAM_Tqx3YOmSVkVg== +0 -0
  286. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~H1Wjd5kKWDW4t3SDodxiHV72V8WT0xwPubw5cJTNLkPRLgaILFPh-dpy8EOUNgy1KzrDujFsm9EcTsbuqtMPLA== +0 -0
  287. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~JpI5MH4zCgebUHFpXVn4zjtsGtMNnO7BQZWfNARAB5UWa9gqz6YXHR3uLCJ_AvJ3lh53BUVkavsx9TY2FMmxbA== +0 -0
  288. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~JujNYkJtcux0Ni4QnR64zu4Wz_zYjyKvYaYZm5ypxTLPSzF3_jNE_NO4sdbDamF8wEqWoky1uf4ZE0JT3L607A== +0 -0
  289. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~KJSEA6DKnb2_FRPSqKZGh41eo-C8x448J9kEBrH012bUrZfOSDvrgmIrU0Vz7Ri3gaS9aKKmSaVMvXsHSlTJVA== +0 -0
  290. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~MStOwu3jBlJtcRnxrseVOuhI4kCj--ggFPG7sqrq5w1hjrI3bVyD-bm1Jwyx0noY3wT1rHDEvaGWnV2qsGjGwg== +0 -0
  291. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~McsJ8kFVf3IjhgXIRdw8Xx-EXgbV071bmlj2BBnk52xrWl3sEeiIyxwUsF7mIWvMRWfcFfu4VGHYyqfk2BeHXw== +0 -0
  292. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~NHt9fVe4kDdbxnglKcEwXaRK-WsYEOaD23Kbl8SJPRMYHr_Z6SJd_HmG3BROHHR_M6TgSmucONpDJdTj5tjuFw== +0 -0
  293. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Nfo2iwCPcfAcOBIVyoUAK0-PIfr5qYxIKZt-uaSaTBdrTNxAuJ1ItmeDPZ3VdJJmxD_c22No7x482bdd3_yYtw== +0 -0
  294. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~S2Qlu11xBhEd5aGSzWsnw1TR8u8PiOF93GO0j5bfNoAFCVzxKOwhRFoIXba2EpQnLQqFdIKyhWN3l70A4GPHmg== +0 -0
  295. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~W7a7M37RO9jgck2zeR0471Pm7e8K0Kqj5tXEouDjvqKZXSrWxMaWD28oqkKKYAiU4608R4S9mM11KyphljdMSw== +0 -0
  296. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~XUo1oyPCrlL7CA74wG-OzQ06VOWJYWvHGFHU7keZN1SKaIXjHX5qi_kBzjG_rBCi89-S8GVmCy7S3PHSjG8SbQ== +0 -0
  297. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Xh0VmDvFNMELHu08-vrs54pegVyUwwDRxx_nXkwyD0NjnYozyqcGAKAr_QWHmw6F8XyuWg51M9KGpJJIFzzGuw== +0 -0
  298. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Xve-wMBp_lxVUgD9qH5GwieGP9cAWtm0xULZvdGjBRUMvaevmpCB5gnbMBuIXAO6a1c9v6WUq0jNVX7ut5HvOw== +0 -0
  299. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~ZU1XkZFgnEE22CXEF-pOlcj5f10x-KM1Vw9d4IOLu-NiTZcz7koYPixhdrB1PJr8J-h9NpJmfqEastfxamA1jQ== +0 -0
  300. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~_YkNYEHTsbbtFILJpzH3HenH0t4ShI25dIMdve541CF5bl-jPF3X3F7tq-t5dvP0TEkATsOJdLQdBp1xv4Q-ag== +0 -0
  301. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~boy6mpn2jkwm60jjgQ0TG25UqRdN46LzmgTVCrpy6nBOgkLCGkGHcbceiwjU1itS_vj3-iQX0ZnrWOQrPyfHNA== +0 -0
  302. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~bwzpVZ9hAqGDHhXs2FRA82dfGfLmc7-m0uQhZDDfHHO7hQ17M_Np341BZX4WDLhYYS4cdUgaDodlNpdfpG3nXw== +0 -0
  303. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~cBxe-9PpAGFdAsYkmdN3lJVqEliLcRYlyoAov0aPZfJGwUr_cOm3XpjO7nmf_2eLf8UAx-rycjnJzw07xLrNCA== +0 -0
  304. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~dirWk6W4Pav1oyciuflfJlRu0iuxbYOmrpQapOJ0mV9C1SQ-jvDRv_7h753Cy18-SwULARUdWsyUy3yNNvxF7w== +0 -0
  305. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~ebwZVjSEHroc9jtIm4jd_h_YAqEBcOkAZ4HPNJT8pLCldjRcTq-obQLakxXOhfuoOBlYBoZLuO-Y0lskeZRYKw== +0 -0
  306. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~gfcRcmRIr0h09d0jiZsA7nUeQv2XtapxuYEXZy1Z9um0tTJQvz-O5ef5f7zhLenLvjnDtDtlY_aY4Hvpce6e1Q== +0 -0
  307. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~hgOgiVCyv2R0W-f0qKw5xYPeUwj8_ccCM9vKH_7vAQcCO9t8BwR1APGRBv20AONmp-PYMXmtgsBlQkNBRBpdQA== +0 -0
  308. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~hrhCl-YRAAr8ByNB_LCgEBsVNHMp92gTIUknetpUHMjcXl4Hpn_uY-h6C45oga0ZALnfGCo6iKTmiPLa4Qvnpg== +0 -0
  309. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~n2yoR7JsyL4DSUwmjnpE4Iq9Qi_eeZrmpPU8cdehDFKfESK7nwxXxfrSMQbk0BQ2lgGPadoRcd1-qr1xVz97jA== +0 -0
  310. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~nMCcZm8WvPogyO_nuJ926Q3Q2dqVMN2LdjEL1Kq2wJ_RG-rH-e_6v41l1xZbCsQTa3XykQdEiXNc0HtAvT6IRA== +0 -0
  311. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~oc3C7xkUt-OWDL6rrsxs-seS4Fu1bqBWAAXCHalgShaGg9MUrOiRbHT2DcAnhyQFKx6x5FRbvjmYoQWrQiXJZA== +0 -0
  312. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~p-ihj7SEgkDXpMu9hvKE_wiX9cvtwyXrdIn964BfedXHKGpC6o7mMPxEyC0kRPVi_EZs_MRV5bAPEpl5h5we0g== +0 -0
  313. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~qlhO_D9oE8uSKH-mZqyRF9pp4Zv1Tv0dIYcqrH4hb1VWlIxcdxmg2j0M8496cQeFXC5bn_JMXdBlD-d6cnFF8w== +0 -0
  314. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~tjpiyIxJR_boTdUNrtFDuKIZoY84fI4lA1oMJbq9e2ZmYKIK5FeRN2O8cV_yMOYJGr4lbv03kTmT70mCjUc2_Q== +0 -0
  315. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~wULeoj18eEKJWAKx1uFQVwS48cUGFcYPRJQj1Ro5XNJsWCwppGSCdIPhwifD6Z2f_j3zfI2SmC2Gg81sBXXW7g== +0 -0
  316. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~zrEihMys4NVV5rx6FmuzEGO2TjloI3OiC7yzIhvqYoRo43ibb2F-Km6Jf4NX-ac62pOLBYZRcjQTvYMpn75_oA== +0 -0
  317. package/Tests/Artifacts/LottieTests.xcresult/Info.plist +29 -0
  318. package/Tests/AutomaticEngineTests.swift +57 -0
  319. package/Tests/BundleTests.swift +25 -0
  320. package/Tests/DataURLTests.swift +64 -0
  321. package/Tests/ParsingTests.swift +42 -0
  322. package/Tests/PerformanceTests.swift +215 -0
  323. package/Tests/Samples/9squares_AlBoardman.json +1 -0
  324. package/Tests/Samples/Boat_Loader.json +1 -0
  325. package/Tests/Samples/HamburgerArrow.json +1 -0
  326. package/Tests/Samples/IconTransitions.json +1 -0
  327. package/Tests/Samples/Images/dog.png +0 -0
  328. package/Tests/Samples/Issues/issue_1403.json +1 -0
  329. package/Tests/Samples/Issues/issue_1407.json +1 -0
  330. package/Tests/Samples/Issues/issue_1488.json +1 -0
  331. package/Tests/Samples/Issues/issue_1505.json +1 -0
  332. package/Tests/Samples/Issues/issue_1628.json +1 -0
  333. package/Tests/Samples/Issues/pr_1536.json +1 -0
  334. package/Tests/Samples/Issues/pr_1563.json +8439 -0
  335. package/Tests/Samples/Issues/pr_1592.json +5527 -0
  336. package/Tests/Samples/Issues/pr_1599.json +738 -0
  337. package/Tests/Samples/Issues/pr_1604_1.json +1 -0
  338. package/Tests/Samples/Issues/pr_1604_2.json +1 -0
  339. package/Tests/Samples/LottieFiles/LICENSE.md +14 -0
  340. package/Tests/Samples/LottieFiles/bounce_strokes.json +1 -0
  341. package/Tests/Samples/LottieFiles/cactus.json +1 -0
  342. package/Tests/Samples/LottieFiles/dog_car_ride.json +1 -0
  343. package/Tests/Samples/LottieFiles/draft_icon.json +1 -0
  344. package/Tests/Samples/LottieFiles/gradient_1.json +1 -0
  345. package/Tests/Samples/LottieFiles/gradient_2.json +1 -0
  346. package/Tests/Samples/LottieFiles/gradient_pill.json +1 -0
  347. package/Tests/Samples/LottieFiles/gradient_shapes.json +1 -0
  348. package/Tests/Samples/LottieFiles/gradient_square.json +1 -0
  349. package/Tests/Samples/LottieFiles/growth.json +1 -0
  350. package/Tests/Samples/LottieFiles/infinity_loader.json +1 -0
  351. package/Tests/Samples/LottieFiles/loading_dots_1.json +1 -0
  352. package/Tests/Samples/LottieFiles/loading_dots_2.json +1 -0
  353. package/Tests/Samples/LottieFiles/loading_dots_3.json +1 -0
  354. package/Tests/Samples/LottieFiles/loading_gradient_strokes.json +1 -0
  355. package/Tests/Samples/LottieFiles/settings_slider.json +1 -0
  356. package/Tests/Samples/LottieFiles/shop.json +1 -0
  357. package/Tests/Samples/LottieFiles/step_loader.json +1 -0
  358. package/Tests/Samples/LottieLogo1.json +1 -0
  359. package/Tests/Samples/LottieLogo1_masked.json +1 -0
  360. package/Tests/Samples/LottieLogo2.json +1 -0
  361. package/Tests/Samples/MotionCorpse_Jrcanest.json +1 -0
  362. package/Tests/Samples/Nonanimating/BasicLayers.json +1 -0
  363. package/Tests/Samples/Nonanimating/DisableNodesTest.json +1 -0
  364. package/Tests/Samples/Nonanimating/FirstText.json +1 -0
  365. package/Tests/Samples/Nonanimating/GeometryTransformTest.json +1 -0
  366. package/Tests/Samples/Nonanimating/Text_AnimatedProperties.json +1 -0
  367. package/Tests/Samples/Nonanimating/Text_Glyph.json +1 -0
  368. package/Tests/Samples/Nonanimating/Text_NoAnimation.json +1 -0
  369. package/Tests/Samples/Nonanimating/Text_NoGlyph.json +1 -0
  370. package/Tests/Samples/Nonanimating/Zoom.json +1 -0
  371. package/Tests/Samples/Nonanimating/_dog.json +1 -0
  372. package/Tests/Samples/Nonanimating/base64Test.json +1 -0
  373. package/Tests/Samples/Nonanimating/blend_mode_test.json +1 -0
  374. package/Tests/Samples/Nonanimating/keypathTest.json +1 -0
  375. package/Tests/Samples/Nonanimating/verifyLineHeight.json +1 -0
  376. package/Tests/Samples/PinJump.json +1 -0
  377. package/Tests/Samples/Private/BrokenLottieFiles/growth_man.json +874 -0
  378. package/Tests/Samples/Private/BrokenLottieFiles/rocket.json +1 -0
  379. package/Tests/Samples/Private/China_EmptyState_Itinerary.json +1 -0
  380. package/Tests/Samples/Private/LoaderHourglass.json +12070 -0
  381. package/Tests/Samples/Private/README.md +7 -0
  382. package/Tests/Samples/Private/Urgency/alarm_animated.json +1 -0
  383. package/Tests/Samples/Private/Urgency/diamond_animated.json +1 -0
  384. package/Tests/Samples/Private/Urgency/eye_animated.json +1 -0
  385. package/Tests/Samples/Private/Urgency/light_bulb_animated.json +1 -0
  386. package/Tests/Samples/Private/Urgency/light_bulb_static.json +1 -0
  387. package/Tests/Samples/Private/Urgency/piggy_bank_static.json +1 -0
  388. package/Tests/Samples/Private/Urgency/price_tag_legacy.json +1 -0
  389. package/Tests/Samples/Private/Urgency/rausch_alarm.json +1 -0
  390. package/Tests/Samples/Private/Urgency/rausch_alert.json +1 -0
  391. package/Tests/Samples/Private/Urgency/rausch_clock.json +1 -0
  392. package/Tests/Samples/Private/Urgency/rausch_diamond.json +1 -0
  393. package/Tests/Samples/Private/Urgency/rausch_money.json +1 -0
  394. package/Tests/Samples/Private/Urgency/rausch_piggy_bank.json +1 -0
  395. package/Tests/Samples/Private/Urgency/rausch_tag.json +1 -0
  396. package/Tests/Samples/Private/Urgency/red_envelope_animated.json +1 -0
  397. package/Tests/Samples/Private/Urgency/tag_animated.json +1 -0
  398. package/Tests/Samples/Private/Urgency/trophy_animated.json +1 -0
  399. package/Tests/Samples/Private/Urgency/wings_key_animated.json +1 -0
  400. package/Tests/Samples/Private/_flexible.json +1 -0
  401. package/Tests/Samples/Private/aircover.json +1 -0
  402. package/Tests/Samples/Private/belo_spin_rausch.json +1 -0
  403. package/Tests/Samples/Private/celebration.json +2821 -0
  404. package/Tests/Samples/Private/checkbox.json +1 -0
  405. package/Tests/Samples/Private/checkbox_small.json +1 -0
  406. package/Tests/Samples/Private/getting_your_trip_ready.json +3540 -0
  407. package/Tests/Samples/Private/gradient_afternoon.json +1 -0
  408. package/Tests/Samples/Private/gradient_brand.json +1 -0
  409. package/Tests/Samples/Private/gradient_evening.json +1 -0
  410. package/Tests/Samples/Private/gradient_morning.json +1 -0
  411. package/Tests/Samples/Private/issue_1467.json +1 -0
  412. package/Tests/Samples/Private/loading_dots.json +1 -0
  413. package/Tests/Samples/Private/loading_dots_small.json +1 -0
  414. package/Tests/Samples/Private/payment_loader.json +1 -0
  415. package/Tests/Samples/Private/radio_button.json +1 -0
  416. package/Tests/Samples/Private/selfie_intro.json +1 -0
  417. package/Tests/Samples/Private/stepper_add.json +1 -0
  418. package/Tests/Samples/Private/stepper_subtract.json +1 -0
  419. package/Tests/Samples/Private/switch.json +1 -0
  420. package/Tests/Samples/Private/thumb.json +1 -0
  421. package/Tests/Samples/Private/toggle_no.json +1 -0
  422. package/Tests/Samples/Private/toggle_yes.json +1 -0
  423. package/Tests/Samples/Private/user_error_black_and_white.json +1 -0
  424. package/Tests/Samples/Private/user_error_cut_off.json +1 -0
  425. package/Tests/Samples/Switch.json +1 -0
  426. package/Tests/Samples/Switch_States.json +1 -0
  427. package/Tests/Samples/TwitterHeart.json +1 -0
  428. package/Tests/Samples/TwitterHeartButton.json +1 -0
  429. package/Tests/Samples/TypeFace/A.json +1 -0
  430. package/Tests/Samples/TypeFace/Apostrophe.json +1 -0
  431. package/Tests/Samples/TypeFace/B.json +1 -0
  432. package/Tests/Samples/TypeFace/BlinkingCursor.json +1 -0
  433. package/Tests/Samples/TypeFace/C.json +1 -0
  434. package/Tests/Samples/TypeFace/Colon.json +1 -0
  435. package/Tests/Samples/TypeFace/Comma.json +1 -0
  436. package/Tests/Samples/TypeFace/D.json +1 -0
  437. package/Tests/Samples/TypeFace/E.json +1 -0
  438. package/Tests/Samples/TypeFace/F.json +1 -0
  439. package/Tests/Samples/TypeFace/G.json +1 -0
  440. package/Tests/Samples/TypeFace/H.json +1 -0
  441. package/Tests/Samples/TypeFace/I.json +1 -0
  442. package/Tests/Samples/TypeFace/J.json +1 -0
  443. package/Tests/Samples/TypeFace/K.json +1 -0
  444. package/Tests/Samples/TypeFace/L.json +1 -0
  445. package/Tests/Samples/TypeFace/M.json +1 -0
  446. package/Tests/Samples/TypeFace/N.json +1 -0
  447. package/Tests/Samples/TypeFace/O.json +1 -0
  448. package/Tests/Samples/TypeFace/P.json +1 -0
  449. package/Tests/Samples/TypeFace/Q.json +1 -0
  450. package/Tests/Samples/TypeFace/R.json +1 -0
  451. package/Tests/Samples/TypeFace/S.json +1 -0
  452. package/Tests/Samples/TypeFace/T.json +1 -0
  453. package/Tests/Samples/TypeFace/U.json +1 -0
  454. package/Tests/Samples/TypeFace/V.json +1 -0
  455. package/Tests/Samples/TypeFace/W.json +1 -0
  456. package/Tests/Samples/TypeFace/X.json +1 -0
  457. package/Tests/Samples/TypeFace/Y.json +1 -0
  458. package/Tests/Samples/TypeFace/Z.json +1 -0
  459. package/Tests/Samples/Watermelon.json +1 -0
  460. package/Tests/Samples/setValueTest.json +1 -0
  461. package/Tests/Samples/timeremap.json +1 -0
  462. package/Tests/Samples/vcTransition1.json +1 -0
  463. package/Tests/Samples/vcTransition2.json +1 -0
  464. package/Tests/SnapshotConfiguration.swift +153 -0
  465. package/Tests/SnapshotTests.swift +265 -0
  466. package/Tests/Utils/Bundle+Module.swift +30 -0
  467. package/Tests/Utils/HardcodedFontProvider.swift +19 -0
  468. package/Tests/Utils/HardcodedImageProvider.swift +23 -0
  469. package/Tests/Utils/Snapshotting+presentationLayer.swift +47 -0
  470. package/Tests/ValueProvidersTests.swift +27 -0
  471. package/lottie-ios.podspec +12 -12
  472. package/package.json +1 -1
  473. package/script/lint/airbnb.swiftformat +68 -0
  474. package/script/lint/swiftlint.yml +38 -0
  475. package/script/test-carthage/Cartfile +1 -0
  476. package/script/test-carthage/Cartfile.resolved +1 -0
  477. package/script/test-carthage/Carthage/Build/.lottie-ios.version +19 -0
  478. package/script/test-carthage/Carthage/Build/Lottie.xcframework/Info.plist +46 -0
  479. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/BCSymbolMaps/BF971162-BE99-3507-B5B3-11947DC6B176.bcsymbolmap +14778 -0
  480. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Headers/Lottie-Swift.h +673 -0
  481. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Info.plist +0 -0
  482. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Lottie +0 -0
  483. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  484. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64-apple-ios.swiftmodule +0 -0
  485. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftdoc +0 -0
  486. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftmodule +0 -0
  487. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/module.modulemap +4 -0
  488. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/dSYMs/Lottie.framework.dSYM/Contents/Info.plist +20 -0
  489. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/dSYMs/Lottie.framework.dSYM/Contents/Resources/DWARF/Lottie +0 -0
  490. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Headers/Lottie-Swift.h +1352 -0
  491. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Info.plist +0 -0
  492. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Lottie +0 -0
  493. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  494. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  495. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  496. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/Project/x86_64.swiftsourceinfo +0 -0
  497. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  498. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/arm64-apple-ios-simulator.swiftmodule +0 -0
  499. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftdoc +0 -0
  500. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftmodule +0 -0
  501. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  502. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/x86_64-apple-ios-simulator.swiftmodule +0 -0
  503. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/x86_64.swiftdoc +0 -0
  504. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/x86_64.swiftmodule +0 -0
  505. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/module.modulemap +4 -0
  506. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/_CodeSignature/CodeResources +256 -0
  507. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/dSYMs/Lottie.framework.dSYM/Contents/Info.plist +20 -0
  508. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/dSYMs/Lottie.framework.dSYM/Contents/Resources/DWARF/Lottie +0 -0
  509. package/script/test-carthage/Carthage/Checkouts/lottie-ios/Lottie.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  510. package/script/test-carthage/Carthage/Checkouts/lottie-ios/Lottie.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +37 -0
  511. package/script/test-carthage/Carthage/Checkouts/lottie-ios/Lottie.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  512. package/script/test-carthage/CarthageTest/AppDelegate.swift +27 -0
  513. package/script/test-carthage/CarthageTest/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  514. package/script/test-carthage/CarthageTest/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  515. package/script/test-carthage/CarthageTest/Assets.xcassets/Contents.json +6 -0
  516. package/script/test-carthage/CarthageTest/Base.lproj/LaunchScreen.storyboard +25 -0
  517. package/script/test-carthage/CarthageTest/Base.lproj/Main.storyboard +24 -0
  518. package/script/test-carthage/CarthageTest/Info.plist +66 -0
  519. package/script/test-carthage/CarthageTest/SceneDelegate.swift +10 -0
  520. package/script/test-carthage/CarthageTest/ViewController.swift +15 -0
  521. package/script/test-carthage/CarthageTest.xcodeproj/project.pbxproj +378 -0
  522. package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  523. package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  524. package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  525. package/script/test-carthage/CarthageTest.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  526. package/script/test-carthage/Mintfile +1 -0
  527. package/script/test-spm/LottieSPM.xcworkspace/contents.xcworkspacedata +7 -0
  528. package/script/test-spm/LottieSPM.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  529. package/script/test-spm/Mintfile +1 -0
  530. package/.swiftpm/xcode/package.xcworkspace/xcuserdata/brandonwithrow.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  531. package/Lottie/Info.plist +0 -22
  532. package/Lottie.xcodeproj/project.xcworkspace/xcuserdata/brandonwithrow.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  533. package/Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad/xcschemes/LottieLibraryMacOS.xcscheme +0 -80
  534. package/Lottie.xcodeproj/xcuserdata/brandonwithrow.xcuserdatad/xcschemes/xcschememanagement.plist +0 -57
  535. package/lottie-swift/Assets/.gitkeep +0 -0
  536. package/lottie-swift/src/Private/LayerContainers/Utility/LayerFontProvider.swift +0 -37
  537. package/lottie-swift/src/Private/LayerContainers/Utility/LayerTextProvider.swift +0 -36
  538. package/lottie-swift/src/Private/Model/Animation.swift +0 -107
  539. package/lottie-swift/src/Private/Model/Assets/Asset.swift +0 -27
  540. package/lottie-swift/src/Private/Model/Assets/ImageAsset.swift +0 -48
  541. package/lottie-swift/src/Private/Model/Keyframes/Keyframe.swift +0 -128
  542. package/lottie-swift/src/Private/Model/Keyframes/KeyframeGroup.swift +0 -108
  543. package/lottie-swift/src/Private/Model/Layers/LayerModel.swift +0 -150
  544. package/lottie-swift/src/Private/Model/Objects/DashPattern.swift +0 -24
  545. package/lottie-swift/src/Private/Model/Objects/Marker.swift +0 -23
  546. package/lottie-swift/src/Private/Model/Objects/Mask.swift +0 -48
  547. package/lottie-swift/src/Private/Model/Objects/Transform.swift +0 -105
  548. package/lottie-swift/src/Private/Model/ShapeItems/Ellipse.swift +0 -50
  549. package/lottie-swift/src/Private/Model/ShapeItems/FillI.swift +0 -49
  550. package/lottie-swift/src/Private/Model/ShapeItems/GradientFill.swift +0 -86
  551. package/lottie-swift/src/Private/Model/ShapeItems/GradientStroke.swift +0 -125
  552. package/lottie-swift/src/Private/Model/ShapeItems/Rectangle.swift +0 -50
  553. package/lottie-swift/src/Private/Model/ShapeItems/Repeater.swift +0 -80
  554. package/lottie-swift/src/Private/Model/ShapeItems/Shape.swift +0 -37
  555. package/lottie-swift/src/Private/Model/ShapeItems/ShapeItem.swift +0 -95
  556. package/lottie-swift/src/Private/Model/ShapeItems/ShapeTransform.swift +0 -68
  557. package/lottie-swift/src/Private/Model/ShapeItems/Star.swift +0 -86
  558. package/lottie-swift/src/Private/Model/ShapeItems/Stroke.swift +0 -67
  559. package/lottie-swift/src/Private/Model/ShapeItems/Trim.swift +0 -53
  560. package/lottie-swift/src/Private/Model/Text/Font.swift +0 -35
  561. package/lottie-swift/src/Private/Model/Text/TextAnimator.swift +0 -99
  562. package/lottie-swift/src/Private/Model/Text/TextDocument.swift +0 -70
  563. package/lottie-swift/src/Private/NodeRenderSystem/Nodes/PathNodes/EllipseNode.swift +0 -109
  564. package/lottie-swift/src/Private/NodeRenderSystem/Nodes/PathNodes/PolygonNode.swift +0 -132
  565. package/lottie-swift/src/Private/NodeRenderSystem/Nodes/RenderContainers/GroupNode.swift +0 -141
  566. package/lottie-swift/src/Private/Utility/Extensions/MathKit.swift +0 -539
  567. package/lottie-swift/src/Private/Utility/Extensions/StringExtensions.swift +0 -32
  568. package/lottie-swift/src/Private/Utility/Interpolatable/Interpolatable.swift +0 -18
  569. package/lottie-swift/src/Private/Utility/Interpolatable/InterpolatableExtensions.swift +0 -170
  570. package/lottie-swift/src/Private/Utility/Primitives/CurveVertex.swift +0 -177
  571. package/lottie-swift/src/Private/Utility/Primitives/PathElement.swift +0 -68
  572. package/lottie-swift/src/Private/Utility/Primitives/VectorsExtensions.swift +0 -218
  573. package/lottie-swift/src/Public/Animation/AnimationPublic.swift +0 -196
  574. package/lottie-swift/src/Public/Animation/AnimationView.swift +0 -1006
  575. package/lottie-swift/src/Public/Animation/AnimationViewInitializers.swift +0 -83
  576. package/lottie-swift/src/Public/AnimationCache/AnimationCacheProvider.swift +0 -24
  577. package/lottie-swift/src/Public/DynamicProperties/AnimationKeypath.swift +0 -46
  578. package/lottie-swift/src/Public/DynamicProperties/AnyValueProvider.swift +0 -29
  579. package/lottie-swift/src/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +0 -114
  580. package/lottie-swift/src/Public/ImageProvider/AnimationImageProvider.swift +0 -23
  581. package/lottie-swift/src/Public/MacOS/FilepathImageProvider.swift +0 -67
  582. package/lottie-swift/src/Public/TextProvider/AnimationTextProvider.swift +0 -39
  583. package/lottie-swift/src/Public/iOS/LottieView.swift +0 -62
  584. package/lottie-swift-testing.podspec +0 -32
@@ -1,107 +0,0 @@
1
- //
2
- // Animation.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/7/19.
6
- //
7
-
8
- import Foundation
9
-
10
- public enum CoordinateSpace: Int, Codable {
11
- case type2d
12
- case type3d
13
- }
14
-
15
- /**
16
- The `Animation` model is the top level model object in Lottie.
17
-
18
- An `Animation` holds all of the animation data backing a Lottie Animation.
19
- Codable, see JSON schema [here](https://github.com/airbnb/lottie-web/tree/master/docs/json).
20
- */
21
- public final class Animation: Codable {
22
-
23
- /// The version of the JSON Schema.
24
- let version: String
25
-
26
- /// The coordinate space of the composition.
27
- let type: CoordinateSpace
28
-
29
- /// The start time of the composition in frameTime.
30
- public let startFrame: AnimationFrameTime
31
-
32
- /// The end time of the composition in frameTime.
33
- public let endFrame: AnimationFrameTime
34
-
35
- /// The frame rate of the composition.
36
- public let framerate: Double
37
-
38
- /// The height of the composition in points.
39
- let width: Int
40
-
41
- /// The width of the composition in points.
42
- let height: Int
43
-
44
- /// The list of animation layers
45
- let layers: [LayerModel]
46
-
47
- /// The list of glyphs used for text rendering
48
- let glyphs: [Glyph]?
49
-
50
- /// The list of fonts used for text rendering
51
- let fonts: FontList?
52
-
53
- /// Asset Library
54
- let assetLibrary: AssetLibrary?
55
-
56
- /// Markers
57
- let markers: [Marker]?
58
- let markerMap: [String : Marker]?
59
-
60
- /// Return all marker names, in order, or an empty list if none are specified
61
- public var markerNames: [String] {
62
- guard let markers = markers else { return [] }
63
- return markers.map { $0.name }
64
- }
65
-
66
- enum CodingKeys : String, CodingKey {
67
- case version = "v"
68
- case type = "ddd"
69
- case startFrame = "ip"
70
- case endFrame = "op"
71
- case framerate = "fr"
72
- case width = "w"
73
- case height = "h"
74
- case layers = "layers"
75
- case glyphs = "chars"
76
- case fonts = "fonts"
77
- case assetLibrary = "assets"
78
- case markers = "markers"
79
- }
80
-
81
- required public init(from decoder: Decoder) throws {
82
- let container = try decoder.container(keyedBy: Animation.CodingKeys.self)
83
- self.version = try container.decode(String.self, forKey: .version)
84
- self.type = try container.decodeIfPresent(CoordinateSpace.self, forKey: .type) ?? .type2d
85
- self.startFrame = try container.decode(AnimationFrameTime.self, forKey: .startFrame)
86
- self.endFrame = try container.decode(AnimationFrameTime.self, forKey: .endFrame)
87
- self.framerate = try container.decode(Double.self, forKey: .framerate)
88
- self.width = try container.decode(Int.self, forKey: .width)
89
- self.height = try container.decode(Int.self, forKey: .height)
90
- self.layers = try container.decode([LayerModel].self, ofFamily: LayerType.self, forKey: .layers)
91
- self.glyphs = try container.decodeIfPresent([Glyph].self, forKey: .glyphs)
92
- self.fonts = try container.decodeIfPresent(FontList.self, forKey: .fonts)
93
- self.assetLibrary = try container.decodeIfPresent(AssetLibrary.self, forKey: .assetLibrary)
94
- self.markers = try container.decodeIfPresent([Marker].self, forKey: .markers)
95
-
96
- if let markers = markers {
97
- var markerMap: [String : Marker] = [:]
98
- for marker in markers {
99
- markerMap[marker.name] = marker
100
- }
101
- self.markerMap = markerMap
102
- } else {
103
- self.markerMap = nil
104
- }
105
- }
106
-
107
- }
@@ -1,27 +0,0 @@
1
- //
2
- // Asset.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/9/19.
6
- //
7
-
8
- import Foundation
9
-
10
- public class Asset: Codable {
11
-
12
- /// The ID of the asset
13
- public let id: String
14
-
15
- private enum CodingKeys : String, CodingKey {
16
- case id = "id"
17
- }
18
-
19
- required public init(from decoder: Decoder) throws {
20
- let container = try decoder.container(keyedBy: Asset.CodingKeys.self)
21
- if let id = try? container.decode(String.self, forKey: .id) {
22
- self.id = id
23
- } else {
24
- self.id = String(try container.decode(Int.self, forKey: .id))
25
- }
26
- }
27
- }
@@ -1,48 +0,0 @@
1
- //
2
- // ImageAsset.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/9/19.
6
- //
7
-
8
- import Foundation
9
-
10
- public final class ImageAsset: Asset {
11
-
12
- /// Image name
13
- public let name: String
14
-
15
- /// Image Directory
16
- public let directory: String
17
-
18
- /// Image Size
19
- public let width: Double
20
-
21
- public let height: Double
22
-
23
- enum CodingKeys : String, CodingKey {
24
- case name = "p"
25
- case directory = "u"
26
- case width = "w"
27
- case height = "h"
28
- }
29
-
30
- required init(from decoder: Decoder) throws {
31
- let container = try decoder.container(keyedBy: ImageAsset.CodingKeys.self)
32
- self.name = try container.decode(String.self, forKey: .name)
33
- self.directory = try container.decode(String.self, forKey: .directory)
34
- self.width = try container.decode(Double.self, forKey: .width)
35
- self.height = try container.decode(Double.self, forKey: .height)
36
- try super.init(from: decoder)
37
- }
38
-
39
- override public func encode(to encoder: Encoder) throws {
40
- try super.encode(to: encoder)
41
- var container = encoder.container(keyedBy: CodingKeys.self)
42
- try container.encode(name, forKey: .name)
43
- try container.encode(directory, forKey: .directory)
44
- try container.encode(width, forKey: .width)
45
- try container.encode(height, forKey: .height)
46
- }
47
-
48
- }
@@ -1,128 +0,0 @@
1
- //
2
- // Keyframe.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/7/19.
6
- //
7
-
8
- import Foundation
9
- import CoreGraphics
10
-
11
- /**
12
- Keyframe represents a point in time and is the container for datatypes.
13
- Note: This is a parent class and should not be used directly.
14
- */
15
- final class Keyframe<T: Interpolatable> {
16
-
17
- /// The value of the keyframe
18
- let value: T
19
- /// The time in frames of the keyframe.
20
- let time: CGFloat
21
- /// A hold keyframe freezes interpolation until the next keyframe that is not a hold.
22
- let isHold: Bool
23
- /// The in tangent for the time interpolation curve.
24
- let inTangent: Vector2D?
25
- /// The out tangent for the time interpolation curve.
26
- let outTangent: Vector2D?
27
-
28
- /// The spacial in tangent of the vector.
29
- let spatialInTangent: Vector3D?
30
- /// The spacial out tangent of the vector.
31
- let spatialOutTangent: Vector3D?
32
-
33
- /// Initialize a value-only keyframe with no time data.
34
- init(_ value: T,
35
- spatialInTangent: Vector3D? = nil,
36
- spatialOutTangent: Vector3D? = nil) {
37
- self.value = value
38
- self.time = 0
39
- self.isHold = true
40
- self.inTangent = nil
41
- self.outTangent = nil
42
- self.spatialInTangent = spatialInTangent
43
- self.spatialOutTangent = spatialOutTangent
44
- }
45
-
46
- /// Initialize a keyframe
47
- init(value: T,
48
- time: Double,
49
- isHold: Bool,
50
- inTangent: Vector2D?,
51
- outTangent: Vector2D?,
52
- spatialInTangent: Vector3D? = nil,
53
- spatialOutTangent: Vector3D? = nil) {
54
- self.value = value
55
- self.time = CGFloat(time)
56
- self.isHold = isHold
57
- self.outTangent = outTangent
58
- self.inTangent = inTangent
59
- self.spatialInTangent = spatialInTangent
60
- self.spatialOutTangent = spatialOutTangent
61
- }
62
-
63
- }
64
-
65
- /**
66
- A generic class used to parse and remap keyframe json.
67
-
68
- Keyframe json has a couple of different variations and formats depending on the
69
- type of keyframea and also the version of the JSON. By parsing the raw data
70
- we can reconfigure it into a constant format.
71
- */
72
- final class KeyframeData<T: Codable>: Codable {
73
-
74
- /// The start value of the keyframe
75
- let startValue: T?
76
- /// The End value of the keyframe. Note: Newer versions animation json do not have this field.
77
- let endValue: T?
78
- /// The time in frames of the keyframe.
79
- let time: Double?
80
- /// A hold keyframe freezes interpolation until the next keyframe that is not a hold.
81
- let hold: Int?
82
-
83
- /// The in tangent for the time interpolation curve.
84
- let inTangent: Vector2D?
85
- /// The out tangent for the time interpolation curve.
86
- let outTangent: Vector2D?
87
-
88
- /// The spacial in tangent of the vector.
89
- let spatialInTangent: Vector3D?
90
- /// The spacial out tangent of the vector.
91
- let spatialOutTangent:Vector3D?
92
-
93
- init(startValue: T?,
94
- endValue: T?,
95
- time: Double?,
96
- hold: Int?,
97
- inTangent: Vector2D?,
98
- outTangent: Vector2D?,
99
- spatialInTangent: Vector3D?,
100
- spatialOutTangent: Vector3D?) {
101
- self.startValue = startValue
102
- self.endValue = endValue
103
- self.time = time
104
- self.hold = hold
105
- self.inTangent = inTangent
106
- self.outTangent = outTangent
107
- self.spatialInTangent = spatialInTangent
108
- self.spatialOutTangent = spatialOutTangent
109
- }
110
-
111
- enum CodingKeys : String, CodingKey {
112
- case startValue = "s"
113
- case endValue = "e"
114
- case time = "t"
115
- case hold = "h"
116
- case inTangent = "i"
117
- case outTangent = "o"
118
- case spatialInTangent = "ti"
119
- case spatialOutTangent = "to"
120
- }
121
-
122
- var isHold: Bool {
123
- if let hold = hold {
124
- return hold > 0
125
- }
126
- return false
127
- }
128
- }
@@ -1,108 +0,0 @@
1
- //
2
- // KeyframeGroup.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/14/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /**
11
- Used for coding/decoding a group of Keyframes by type.
12
-
13
- Keyframe data is wrapped in a dictionary { "k" : KeyframeData }.
14
- The keyframe data can either be an array of keyframes or, if no animation is present, the raw value.
15
- This helper object is needed to properly decode the json.
16
- */
17
-
18
- final class KeyframeGroup<T>: Codable where T: Codable, T: Interpolatable {
19
-
20
- let keyframes: ContiguousArray<Keyframe<T>>
21
-
22
- private enum KeyframeWrapperKey: String, CodingKey {
23
- case keyframeData = "k"
24
- }
25
-
26
- init(keyframes: ContiguousArray<Keyframe<T>>) {
27
- self.keyframes = keyframes
28
- }
29
-
30
- init(_ value: T) {
31
- self.keyframes = [Keyframe(value)]
32
- }
33
-
34
- required init(from decoder: Decoder) throws {
35
- let container = try decoder.container(keyedBy: KeyframeWrapperKey.self)
36
-
37
- if let keyframeData: T = try? container.decode(T.self, forKey: .keyframeData) {
38
- /// Try to decode raw value; No keyframe data.
39
- self.keyframes = [Keyframe<T>(keyframeData)]
40
- } else {
41
- /**
42
- Decode and array of keyframes.
43
-
44
- Body Movin and Lottie deal with keyframes in different ways.
45
-
46
- A keyframe object in Body movin defines a span of time with a START
47
- and an END, from the current keyframe time to the next keyframe time.
48
-
49
- A keyframe object in Lottie defines a singular point in time/space.
50
- This point has an in-tangent and an out-tangent.
51
-
52
- To properly decode this we must iterate through keyframes while holding
53
- reference to the previous keyframe.
54
- */
55
-
56
- var keyframesContainer = try container.nestedUnkeyedContainer(forKey: .keyframeData)
57
- var keyframes = ContiguousArray<Keyframe<T>>()
58
- var previousKeyframeData: KeyframeData<T>?
59
- while(!keyframesContainer.isAtEnd) {
60
- // Ensure that Time and Value are present.
61
-
62
- let keyframeData = try keyframesContainer.decode(KeyframeData<T>.self)
63
-
64
- guard let value: T = keyframeData.startValue ?? previousKeyframeData?.endValue,
65
- let time = keyframeData.time else {
66
- /// Missing keyframe data. JSON must be corrupt.
67
- throw DecodingError.dataCorruptedError(forKey: KeyframeWrapperKey.keyframeData, in: container, debugDescription: "Missing keyframe data.")
68
- }
69
-
70
- keyframes.append(Keyframe<T>(value: value,
71
- time: time,
72
- isHold: keyframeData.isHold,
73
- inTangent: previousKeyframeData?.inTangent,
74
- outTangent: keyframeData.outTangent,
75
- spatialInTangent: previousKeyframeData?.spatialInTangent,
76
- spatialOutTangent: keyframeData.spatialOutTangent))
77
- previousKeyframeData = keyframeData
78
- }
79
- self.keyframes = keyframes
80
- }
81
- }
82
-
83
- func encode(to encoder: Encoder) throws {
84
- var container = encoder.container(keyedBy: KeyframeWrapperKey.self)
85
-
86
- if keyframes.count == 1 {
87
- let keyframe = keyframes[0]
88
- try container.encode(keyframe.value, forKey: .keyframeData)
89
- } else {
90
- var keyframeContainer = container.nestedUnkeyedContainer(forKey: .keyframeData)
91
-
92
- for i in 1..<keyframes.endIndex {
93
- let keyframe = keyframes[i-1]
94
- let nextKeyframe = keyframes[i]
95
- let keyframeData = KeyframeData<T>(startValue: keyframe.value,
96
- endValue: nextKeyframe.value,
97
- time: Double(keyframe.time),
98
- hold: keyframe.isHold ? 1 : nil,
99
- inTangent: nextKeyframe.inTangent,
100
- outTangent: keyframe.outTangent,
101
- spatialInTangent: nil,
102
- spatialOutTangent: nil)
103
- try keyframeContainer.encode(keyframeData)
104
- }
105
- }
106
- }
107
-
108
- }
@@ -1,150 +0,0 @@
1
- //
2
- // Layer.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/7/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// Used for mapping a heterogeneous list to classes for parsing.
11
- extension LayerType: ClassFamily {
12
- static var discriminator: Discriminator = .type
13
-
14
- func getType() -> AnyObject.Type {
15
- switch self {
16
- case .precomp:
17
- return PreCompLayerModel.self
18
- case .solid:
19
- return SolidLayerModel.self
20
- case .image:
21
- return ImageLayerModel.self
22
- case .null:
23
- return LayerModel.self
24
- case .shape:
25
- return ShapeLayerModel.self
26
- case .text:
27
- return TextLayerModel.self
28
- }
29
- }
30
- }
31
-
32
- public enum LayerType: Int, Codable {
33
- case precomp
34
- case solid
35
- case image
36
- case null
37
- case shape
38
- case text
39
-
40
- public init(from decoder: Decoder) throws {
41
- self = try LayerType(rawValue: decoder.singleValueContainer().decode(RawValue.self)) ?? .null
42
- }
43
- }
44
-
45
- public enum MatteType: Int, Codable {
46
- case none
47
- case add
48
- case invert
49
- case unknown
50
- }
51
-
52
- public enum BlendMode: Int, Codable {
53
- case normal
54
- case multiply
55
- case screen
56
- case overlay
57
- case darken
58
- case lighten
59
- case colorDodge
60
- case colorBurn
61
- case hardLight
62
- case softLight
63
- case difference
64
- case exclusion
65
- case hue
66
- case saturation
67
- case color
68
- case luminosity
69
- }
70
-
71
- /**
72
- A base top container for shapes, images, and other view objects.
73
- */
74
- class LayerModel: Codable {
75
-
76
- /// The readable name of the layer
77
- let name: String
78
-
79
- /// The index of the layer
80
- let index: Int
81
-
82
- /// The type of the layer.
83
- let type: LayerType
84
-
85
- /// The coordinate space
86
- let coordinateSpace: CoordinateSpace
87
-
88
- /// The in time of the layer in frames.
89
- let inFrame: Double
90
- /// The out time of the layer in frames.
91
- let outFrame: Double
92
-
93
- /// The start time of the layer in frames.
94
- let startTime: Double
95
-
96
- /// The transform of the layer
97
- let transform: Transform
98
-
99
- /// The index of the parent layer, if applicable.
100
- let parent: Int?
101
-
102
- /// The blending mode for the layer
103
- let blendMode: BlendMode
104
-
105
- /// An array of masks for the layer.
106
- let masks: [Mask]?
107
-
108
- /// A number that stretches time by a multiplier
109
- let timeStretch: Double
110
-
111
- /// The type of matte if any.
112
- let matte: MatteType?
113
-
114
- let hidden: Bool
115
-
116
- private enum CodingKeys : String, CodingKey {
117
- case name = "nm"
118
- case index = "ind"
119
- case type = "ty"
120
- case coordinateSpace = "ddd"
121
- case inFrame = "ip"
122
- case outFrame = "op"
123
- case startTime = "st"
124
- case transform = "ks"
125
- case parent = "parent"
126
- case blendMode = "bm"
127
- case masks = "masksProperties"
128
- case timeStretch = "sr"
129
- case matte = "tt"
130
- case hidden = "hd"
131
- }
132
-
133
- required init(from decoder: Decoder) throws {
134
- let container = try decoder.container(keyedBy: LayerModel.CodingKeys.self)
135
- self.name = try container.decodeIfPresent(String.self, forKey: .name) ?? "Layer"
136
- self.index = try container.decode(Int.self, forKey: .index)
137
- self.type = try container.decode(LayerType.self, forKey: .type)
138
- self.coordinateSpace = try container.decodeIfPresent(CoordinateSpace.self, forKey: .coordinateSpace) ?? .type2d
139
- self.inFrame = try container.decode(Double.self, forKey: .inFrame)
140
- self.outFrame = try container.decode(Double.self, forKey: .outFrame)
141
- self.startTime = try container.decode(Double.self, forKey: .startTime)
142
- self.transform = try container.decode(Transform.self, forKey: .transform)
143
- self.parent = try container.decodeIfPresent(Int.self, forKey: .parent)
144
- self.blendMode = try container.decodeIfPresent(BlendMode.self, forKey: .blendMode) ?? .normal
145
- self.masks = try container.decodeIfPresent([Mask].self, forKey: .masks)
146
- self.timeStretch = try container.decodeIfPresent(Double.self, forKey: .timeStretch) ?? 1
147
- self.matte = try container.decodeIfPresent(MatteType.self, forKey: .matte)
148
- self.hidden = try container.decodeIfPresent(Bool.self, forKey: .hidden) ?? false
149
- }
150
- }
@@ -1,24 +0,0 @@
1
- //
2
- // DashPattern.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/22/19.
6
- //
7
-
8
- import Foundation
9
-
10
- enum DashElementType: String, Codable {
11
- case offset = "o"
12
- case dash = "d"
13
- case gap = "g"
14
- }
15
-
16
- final class DashElement: Codable {
17
- let type: DashElementType
18
- let value: KeyframeGroup<Vector1D>
19
-
20
- enum CodingKeys : String, CodingKey {
21
- case type = "n"
22
- case value = "v"
23
- }
24
- }
@@ -1,23 +0,0 @@
1
- //
2
- // Marker.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/9/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// A time marker
11
- final class Marker: Codable {
12
-
13
- /// The Marker Name
14
- let name: String
15
-
16
- /// The Frame time of the marker
17
- let frameTime: AnimationFrameTime
18
-
19
- enum CodingKeys : String, CodingKey {
20
- case name = "cm"
21
- case frameTime = "tm"
22
- }
23
- }
@@ -1,48 +0,0 @@
1
- //
2
- // Mask.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- enum MaskMode: String, Codable {
11
- case add = "a"
12
- case subtract = "s"
13
- case intersect = "i"
14
- case lighten = "l"
15
- case darken = "d"
16
- case difference = "f"
17
- case none = "n"
18
- }
19
-
20
- final class Mask: Codable {
21
-
22
- let mode: MaskMode
23
-
24
- let opacity: KeyframeGroup<Vector1D>
25
-
26
- let shape: KeyframeGroup<BezierPath>
27
-
28
- let inverted: Bool
29
-
30
- let expansion: KeyframeGroup<Vector1D>
31
-
32
- enum CodingKeys : String, CodingKey {
33
- case mode = "mode"
34
- case opacity = "o"
35
- case inverted = "inv"
36
- case shape = "pt"
37
- case expansion = "x"
38
- }
39
-
40
- required init(from decoder: Decoder) throws {
41
- let container = try decoder.container(keyedBy: Mask.CodingKeys.self)
42
- self.mode = try container.decodeIfPresent(MaskMode.self, forKey: .mode) ?? .add
43
- self.opacity = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .opacity) ?? KeyframeGroup(Vector1D(100))
44
- self.shape = try container.decode(KeyframeGroup<BezierPath>.self, forKey: .shape)
45
- self.inverted = try container.decodeIfPresent(Bool.self, forKey: .inverted) ?? false
46
- self.expansion = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .expansion) ?? KeyframeGroup(Vector1D(0))
47
- }
48
- }