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,105 +0,0 @@
1
- //
2
- // Transform.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/7/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// The animatable transform for a layer. Controls position, rotation, scale, and opacity.
11
- final class Transform: Codable {
12
-
13
- /// The anchor point of the transform.
14
- let anchorPoint: KeyframeGroup<Vector3D>
15
-
16
- /// The position of the transform. This is nil if the position data was split.
17
- let position: KeyframeGroup<Vector3D>?
18
-
19
- /// The positionX of the transform. This is nil if the position property is set.
20
- let positionX: KeyframeGroup<Vector1D>?
21
-
22
- /// The positionY of the transform. This is nil if the position property is set.
23
- let positionY: KeyframeGroup<Vector1D>?
24
-
25
- /// The scale of the transform
26
- let scale: KeyframeGroup<Vector3D>
27
-
28
- /// The rotation of the transform. Note: This is single dimensional rotation.
29
- let rotation: KeyframeGroup<Vector1D>
30
-
31
- /// The opacity of the transform.
32
- let opacity: KeyframeGroup<Vector1D>
33
-
34
- /// Should always be nil.
35
- let rotationZ: KeyframeGroup<Vector1D>?
36
-
37
- enum CodingKeys : String, CodingKey {
38
- case anchorPoint = "a"
39
- case position = "p"
40
- case positionX = "px"
41
- case positionY = "py"
42
- case scale = "s"
43
- case rotation = "r"
44
- case rotationZ = "rz"
45
- case opacity = "o"
46
- }
47
-
48
- enum PositionCodingKeys : String, CodingKey {
49
- case split = "s"
50
- case positionX = "x"
51
- case positionY = "y"
52
- }
53
-
54
-
55
- required init(from decoder: Decoder) throws {
56
- /**
57
- This manual override of decode is required because we want to throw an error
58
- in the case that there is not position data.
59
- */
60
- let container = try decoder.container(keyedBy: Transform.CodingKeys.self)
61
-
62
- // AnchorPoint
63
- self.anchorPoint = try container.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .anchorPoint) ?? KeyframeGroup(Vector3D(x: Double(0), y: 0, z: 0))
64
-
65
- // Position
66
- if container.contains(.positionX), container.contains(.positionY) {
67
- // Position dimensions are split into two keyframe groups
68
- self.positionX = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .positionX)
69
- self.positionY = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .positionY)
70
- self.position = nil
71
- } else if let positionKeyframes = try? container.decode(KeyframeGroup<Vector3D>.self, forKey: .position) {
72
- // Position dimensions are a single keyframe group.
73
- self.position = positionKeyframes
74
- self.positionX = nil
75
- self.positionY = nil
76
- } else if let positionContainer = try? container.nestedContainer(keyedBy: PositionCodingKeys.self, forKey: .position),
77
- let positionX = try? positionContainer.decode(KeyframeGroup<Vector1D>.self, forKey: .positionX),
78
- let positionY = try? positionContainer.decode(KeyframeGroup<Vector1D>.self, forKey: .positionY) {
79
- /// Position keyframes are split and nested.
80
- self.positionX = positionX
81
- self.positionY = positionY
82
- self.position = nil
83
- } else {
84
- /// Default value.
85
- self.position = KeyframeGroup(Vector3D(x: Double(0), y: 0, z: 0))
86
- self.positionX = nil
87
- self.positionY = nil
88
- }
89
-
90
-
91
- // Scale
92
- self.scale = try container.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .scale) ?? KeyframeGroup(Vector3D(x: Double(100), y: 100, z: 100))
93
-
94
- // Rotation
95
- if let rotationZ = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .rotationZ) {
96
- self.rotation = rotationZ
97
- } else {
98
- self.rotation = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .rotation) ?? KeyframeGroup(Vector1D(0))
99
- }
100
- self.rotationZ = nil
101
-
102
- // Opacity
103
- self.opacity = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .opacity) ?? KeyframeGroup(Vector1D(100))
104
- }
105
- }
@@ -1,50 +0,0 @@
1
- //
2
- // EllipseItem.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- enum PathDirection: Int, Codable {
11
- case clockwise = 1
12
- case userSetClockwise = 2
13
- case counterClockwise = 3
14
- }
15
-
16
- /// An item that define an ellipse shape
17
- final class Ellipse: ShapeItem {
18
-
19
- /// The direction of the ellipse.
20
- let direction: PathDirection
21
-
22
- /// The position of the ellipse
23
- let position: KeyframeGroup<Vector3D>
24
-
25
- /// The size of the ellipse
26
- let size: KeyframeGroup<Vector3D>
27
-
28
- private enum CodingKeys : String, CodingKey {
29
- case direction = "d"
30
- case position = "p"
31
- case size = "s"
32
- }
33
-
34
- required init(from decoder: Decoder) throws {
35
- let container = try decoder.container(keyedBy: Ellipse.CodingKeys.self)
36
- self.direction = try container.decodeIfPresent(PathDirection.self, forKey: .direction) ?? .clockwise
37
- self.position = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .position)
38
- self.size = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .size)
39
- try super.init(from: decoder)
40
- }
41
-
42
- override func encode(to encoder: Encoder) throws {
43
- try super.encode(to: encoder)
44
- var container = encoder.container(keyedBy: CodingKeys.self)
45
- try container.encode(direction, forKey: .direction)
46
- try container.encode(position, forKey: .position)
47
- try container.encode(size, forKey: .size)
48
- }
49
-
50
- }
@@ -1,49 +0,0 @@
1
- //
2
- // FillShape.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- enum FillRule: Int, Codable {
11
- case none
12
- case nonZeroWinding
13
- case evenOdd
14
- }
15
-
16
- /// An item that defines a fill render
17
- final class Fill: ShapeItem {
18
-
19
- /// The opacity of the fill
20
- let opacity: KeyframeGroup<Vector1D>
21
-
22
- /// The color keyframes for the fill
23
- let color: KeyframeGroup<Color>
24
-
25
- let fillRule: FillRule
26
-
27
- private enum CodingKeys : String, CodingKey {
28
- case opacity = "o"
29
- case color = "c"
30
- case fillRule = "r"
31
- }
32
-
33
- required init(from decoder: Decoder) throws {
34
- let container = try decoder.container(keyedBy: Fill.CodingKeys.self)
35
- self.opacity = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .opacity)
36
- self.color = try container.decode(KeyframeGroup<Color>.self, forKey: .color)
37
- self.fillRule = try container.decodeIfPresent(FillRule.self, forKey: .fillRule) ?? .nonZeroWinding
38
- try super.init(from: decoder)
39
- }
40
-
41
- override func encode(to encoder: Encoder) throws {
42
- try super.encode(to: encoder)
43
- var container = encoder.container(keyedBy: CodingKeys.self)
44
- try container.encode(opacity, forKey: .opacity)
45
- try container.encode(color, forKey: .color)
46
- try container.encode(fillRule, forKey: .fillRule)
47
- }
48
-
49
- }
@@ -1,86 +0,0 @@
1
- //
2
- // GradientFill.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- enum GradientType: Int, Codable {
11
- case none
12
- case linear
13
- case radial
14
- }
15
-
16
- /// An item that define a gradient fill
17
- final class GradientFill: ShapeItem {
18
-
19
- /// The opacity of the fill
20
- let opacity: KeyframeGroup<Vector1D>
21
-
22
- /// The start of the gradient
23
- let startPoint: KeyframeGroup<Vector3D>
24
-
25
- /// The end of the gradient
26
- let endPoint: KeyframeGroup<Vector3D>
27
-
28
- /// The type of gradient
29
- let gradientType: GradientType
30
-
31
- /// Gradient Highlight Length. Only if type is Radial
32
- let highlightLength: KeyframeGroup<Vector1D>?
33
-
34
- /// Highlight Angle. Only if type is Radial
35
- let highlightAngle: KeyframeGroup<Vector1D>?
36
-
37
- /// The number of color points in the gradient
38
- let numberOfColors: Int
39
-
40
- /// The Colors of the gradient.
41
- let colors: KeyframeGroup<[Double]>
42
-
43
- private enum CodingKeys : String, CodingKey {
44
- case opacity = "o"
45
- case startPoint = "s"
46
- case endPoint = "e"
47
- case gradientType = "t"
48
- case highlightLength = "h"
49
- case highlightAngle = "a"
50
- case colors = "g"
51
- }
52
-
53
- private enum GradientDataKeys : String, CodingKey {
54
- case numberOfColors = "p"
55
- case colors = "k"
56
- }
57
-
58
- required init(from decoder: Decoder) throws {
59
- let container = try decoder.container(keyedBy: GradientFill.CodingKeys.self)
60
- self.opacity = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .opacity)
61
- self.startPoint = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .startPoint)
62
- self.endPoint = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .endPoint)
63
- self.gradientType = try container.decode(GradientType.self, forKey: .gradientType)
64
- self.highlightLength = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .highlightLength)
65
- self.highlightAngle = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .highlightAngle)
66
- let colorsContainer = try container.nestedContainer(keyedBy: GradientDataKeys.self, forKey: .colors)
67
- self.colors = try colorsContainer.decode(KeyframeGroup<[Double]>.self, forKey: .colors)
68
- self.numberOfColors = try colorsContainer.decode(Int.self, forKey: .numberOfColors)
69
- try super.init(from: decoder)
70
- }
71
-
72
- override func encode(to encoder: Encoder) throws {
73
- try super.encode(to: encoder)
74
- var container = encoder.container(keyedBy: CodingKeys.self)
75
- try container.encode(opacity, forKey: .opacity)
76
- try container.encode(startPoint, forKey: .startPoint)
77
- try container.encode(endPoint, forKey: .endPoint)
78
- try container.encode(gradientType, forKey: .gradientType)
79
- try container.encodeIfPresent(highlightLength, forKey: .highlightLength)
80
- try container.encodeIfPresent(highlightAngle, forKey: .highlightAngle)
81
- var colorsContainer = container.nestedContainer(keyedBy: GradientDataKeys.self, forKey: .colors)
82
- try colorsContainer.encode(numberOfColors, forKey: .numberOfColors)
83
- try colorsContainer.encode(colors, forKey: .colors)
84
- }
85
-
86
- }
@@ -1,125 +0,0 @@
1
- //
2
- // GradientStroke.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- enum LineCap: Int, Codable {
11
- case none
12
- case butt
13
- case round
14
- case square
15
- }
16
-
17
- enum LineJoin: Int, Codable {
18
- case none
19
- case miter
20
- case round
21
- case bevel
22
- }
23
-
24
- /// An item that define an ellipse shape
25
- final class GradientStroke: ShapeItem {
26
-
27
- /// The opacity of the fill
28
- let opacity: KeyframeGroup<Vector1D>
29
-
30
- /// The start of the gradient
31
- let startPoint: KeyframeGroup<Vector3D>
32
-
33
- /// The end of the gradient
34
- let endPoint: KeyframeGroup<Vector3D>
35
-
36
- /// The type of gradient
37
- let gradientType: GradientType
38
-
39
- /// Gradient Highlight Length. Only if type is Radial
40
- let highlightLength: KeyframeGroup<Vector1D>?
41
-
42
- /// Highlight Angle. Only if type is Radial
43
- let highlightAngle: KeyframeGroup<Vector1D>?
44
-
45
- /// The number of color points in the gradient
46
- let numberOfColors: Int
47
-
48
- /// The Colors of the gradient.
49
- let colors: KeyframeGroup<[Double]>
50
-
51
- /// The width of the stroke
52
- let width: KeyframeGroup<Vector1D>
53
-
54
- /// Line Cap
55
- let lineCap: LineCap
56
-
57
- /// Line Join
58
- let lineJoin: LineJoin
59
-
60
- /// Miter Limit
61
- let miterLimit: Double
62
-
63
- /// The dash pattern of the stroke
64
- let dashPattern: [DashElement]?
65
-
66
- private enum CodingKeys : String, CodingKey {
67
- case opacity = "o"
68
- case startPoint = "s"
69
- case endPoint = "e"
70
- case gradientType = "t"
71
- case highlightLength = "h"
72
- case highlightAngle = "a"
73
- case colors = "g"
74
- case width = "w"
75
- case lineCap = "lc"
76
- case lineJoin = "lj"
77
- case miterLimit = "ml"
78
- case dashPattern = "d"
79
- }
80
-
81
- private enum GradientDataKeys : String, CodingKey {
82
- case numberOfColors = "p"
83
- case colors = "k"
84
- }
85
-
86
- required init(from decoder: Decoder) throws {
87
- let container = try decoder.container(keyedBy: GradientStroke.CodingKeys.self)
88
- self.opacity = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .opacity)
89
- self.startPoint = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .startPoint)
90
- self.endPoint = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .endPoint)
91
- self.gradientType = try container.decode(GradientType.self, forKey: .gradientType)
92
- self.highlightLength = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .highlightLength)
93
- self.highlightAngle = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .highlightAngle)
94
- self.width = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .width)
95
- self.lineCap = try container.decodeIfPresent(LineCap.self, forKey: .lineCap) ?? .round
96
- self.lineJoin = try container.decodeIfPresent(LineJoin.self, forKey: .lineJoin) ?? .round
97
- self.miterLimit = try container.decodeIfPresent(Double.self, forKey: .miterLimit) ?? 4
98
- // TODO Decode Color Objects instead of array.
99
- let colorsContainer = try container.nestedContainer(keyedBy: GradientDataKeys.self, forKey: .colors)
100
- self.colors = try colorsContainer.decode(KeyframeGroup<[Double]>.self, forKey: .colors)
101
- self.numberOfColors = try colorsContainer.decode(Int.self, forKey: .numberOfColors)
102
- self.dashPattern = try container.decodeIfPresent([DashElement].self, forKey: .dashPattern)
103
- try super.init(from: decoder)
104
- }
105
-
106
- override func encode(to encoder: Encoder) throws {
107
- try super.encode(to: encoder)
108
- var container = encoder.container(keyedBy: CodingKeys.self)
109
- try container.encode(opacity, forKey: .opacity)
110
- try container.encode(startPoint, forKey: .startPoint)
111
- try container.encode(endPoint, forKey: .endPoint)
112
- try container.encode(gradientType, forKey: .gradientType)
113
- try container.encodeIfPresent(highlightLength, forKey: .highlightLength)
114
- try container.encodeIfPresent(highlightAngle, forKey: .highlightAngle)
115
- try container.encode(width, forKey: .width)
116
- try container.encode(lineCap, forKey: .lineCap)
117
- try container.encode(lineJoin, forKey: .lineJoin)
118
- try container.encode(miterLimit, forKey: .miterLimit)
119
- var colorsContainer = container.nestedContainer(keyedBy: GradientDataKeys.self, forKey: .colors)
120
- try colorsContainer.encode(numberOfColors, forKey: .numberOfColors)
121
- try colorsContainer.encode(colors, forKey: .colors)
122
- try container.encodeIfPresent(dashPattern, forKey: .dashPattern)
123
- }
124
-
125
- }
@@ -1,50 +0,0 @@
1
- //
2
- // Rectangle.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// An item that define an ellipse shape
11
- final class Rectangle: ShapeItem {
12
-
13
- /// The direction of the rect.
14
- let direction: PathDirection
15
-
16
- /// The position
17
- let position: KeyframeGroup<Vector3D>
18
-
19
- /// The size
20
- let size: KeyframeGroup<Vector3D>
21
-
22
- /// The Corner radius of the rectangle
23
- let cornerRadius: KeyframeGroup<Vector1D>
24
-
25
- private enum CodingKeys : String, CodingKey {
26
- case direction = "d"
27
- case position = "p"
28
- case size = "s"
29
- case cornerRadius = "r"
30
- }
31
-
32
- required init(from decoder: Decoder) throws {
33
- let container = try decoder.container(keyedBy: Rectangle.CodingKeys.self)
34
- self.direction = try container.decodeIfPresent(PathDirection.self, forKey: .direction) ?? .clockwise
35
- self.position = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .position)
36
- self.size = try container.decode(KeyframeGroup<Vector3D>.self, forKey: .size)
37
- self.cornerRadius = try container.decode(KeyframeGroup<Vector1D>.self, forKey: .cornerRadius)
38
- try super.init(from: decoder)
39
- }
40
-
41
- override func encode(to encoder: Encoder) throws {
42
- try super.encode(to: encoder)
43
- var container = encoder.container(keyedBy: CodingKeys.self)
44
- try container.encode(direction, forKey: .direction)
45
- try container.encode(position, forKey: .position)
46
- try container.encode(size, forKey: .size)
47
- try container.encode(cornerRadius, forKey: .cornerRadius)
48
- }
49
-
50
- }
@@ -1,80 +0,0 @@
1
- //
2
- // Repeater.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// An item that define an ellipse shape
11
- final class Repeater: ShapeItem {
12
-
13
- /// The number of copies to repeat
14
- let copies: KeyframeGroup<Vector1D>
15
-
16
- /// The offset of each copy
17
- let offset: KeyframeGroup<Vector1D>
18
-
19
- /// Start Opacity
20
- let startOpacity: KeyframeGroup<Vector1D>
21
-
22
- /// End opacity
23
- let endOpacity: KeyframeGroup<Vector1D>
24
-
25
- /// The rotation
26
- let rotation: KeyframeGroup<Vector1D>
27
-
28
- /// Anchor Point
29
- let anchorPoint: KeyframeGroup<Vector3D>
30
-
31
- /// Position
32
- let position: KeyframeGroup<Vector3D>
33
-
34
- /// Scale
35
- let scale: KeyframeGroup<Vector3D>
36
-
37
- private enum CodingKeys : String, CodingKey {
38
- case copies = "c"
39
- case offset = "o"
40
- case transform = "tr"
41
- }
42
-
43
- private enum TransformKeys : String, CodingKey {
44
- case rotation = "r"
45
- case startOpacity = "so"
46
- case endOpacity = "eo"
47
- case anchorPoint = "a"
48
- case position = "p"
49
- case scale = "s"
50
- }
51
-
52
- required init(from decoder: Decoder) throws {
53
- let container = try decoder.container(keyedBy: Repeater.CodingKeys.self)
54
- self.copies = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .copies) ?? KeyframeGroup(Vector1D(0))
55
- self.offset = try container.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .offset) ?? KeyframeGroup(Vector1D(0))
56
- let transformContainer = try container.nestedContainer(keyedBy: TransformKeys.self, forKey: .transform)
57
- self.startOpacity = try transformContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .startOpacity) ?? KeyframeGroup(Vector1D(100))
58
- self.endOpacity = try transformContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .endOpacity) ?? KeyframeGroup(Vector1D(100))
59
- self.rotation = try transformContainer.decodeIfPresent(KeyframeGroup<Vector1D>.self, forKey: .rotation) ?? KeyframeGroup(Vector1D(0))
60
- self.position = try transformContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .position) ?? KeyframeGroup(Vector3D(x: Double(0), y: 0, z: 0))
61
- self.anchorPoint = try transformContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .anchorPoint) ?? KeyframeGroup(Vector3D(x: Double(0), y: 0, z: 0))
62
- self.scale = try transformContainer.decodeIfPresent(KeyframeGroup<Vector3D>.self, forKey: .scale) ?? KeyframeGroup(Vector3D(x: Double(100), y: 100, z: 100))
63
- try super.init(from: decoder)
64
- }
65
-
66
- override func encode(to encoder: Encoder) throws {
67
- try super.encode(to: encoder)
68
- var container = encoder.container(keyedBy: CodingKeys.self)
69
- try container.encode(copies, forKey: .copies)
70
- try container.encode(offset, forKey: .offset)
71
- var transformContainer = container.nestedContainer(keyedBy: TransformKeys.self, forKey: .transform)
72
- try transformContainer.encode(startOpacity, forKey: .startOpacity)
73
- try transformContainer.encode(endOpacity, forKey: .endOpacity)
74
- try transformContainer.encode(rotation, forKey: .rotation)
75
- try transformContainer.encode(position, forKey: .position)
76
- try transformContainer.encode(anchorPoint, forKey: .anchorPoint)
77
- try transformContainer.encode(scale, forKey: .scale)
78
- }
79
-
80
- }
@@ -1,37 +0,0 @@
1
- //
2
- // VectorShape.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// An item that define an ellipse shape
11
- final class Shape: ShapeItem {
12
-
13
- /// The Path
14
- let path: KeyframeGroup<BezierPath>
15
-
16
- let direction: PathDirection?
17
-
18
- private enum CodingKeys : String, CodingKey {
19
- case path = "ks"
20
- case direction = "d"
21
- }
22
-
23
- required init(from decoder: Decoder) throws {
24
- let container = try decoder.container(keyedBy: Shape.CodingKeys.self)
25
- self.path = try container.decode(KeyframeGroup<BezierPath>.self, forKey: .path)
26
- self.direction = try container.decodeIfPresent(PathDirection.self, forKey: .direction)
27
- try super.init(from: decoder)
28
- }
29
-
30
- override func encode(to encoder: Encoder) throws {
31
- try super.encode(to: encoder)
32
- var container = encoder.container(keyedBy: CodingKeys.self)
33
- try container.encode(path, forKey: .path)
34
- try container.encodeIfPresent(direction, forKey: .direction)
35
- }
36
-
37
- }
@@ -1,95 +0,0 @@
1
- //
2
- // ShapeItem.swift
3
- // lottie-swift
4
- //
5
- // Created by Brandon Withrow on 1/8/19.
6
- //
7
-
8
- import Foundation
9
-
10
- /// Used for mapping a heterogeneous list to classes for parsing.
11
- extension ShapeType: ClassFamily {
12
-
13
- static var discriminator: Discriminator = .type
14
-
15
- func getType() -> AnyObject.Type {
16
- switch self {
17
- case .ellipse:
18
- return Ellipse.self
19
- case .fill:
20
- return Fill.self
21
- case .gradientFill:
22
- return GradientFill.self
23
- case .group:
24
- return Group.self
25
- case .gradientStroke:
26
- return GradientStroke.self
27
- case .merge:
28
- return Merge.self
29
- case .rectangle:
30
- return Rectangle.self
31
- case .repeater:
32
- return Repeater.self
33
- case .shape:
34
- return Shape.self
35
- case .star:
36
- return Star.self
37
- case .stroke:
38
- return Stroke.self
39
- case .trim:
40
- return Trim.self
41
- case .transform:
42
- return ShapeTransform.self
43
- default:
44
- return ShapeItem.self
45
- }
46
- }
47
- }
48
-
49
- enum ShapeType: String, Codable {
50
- case ellipse = "el"
51
- case fill = "fl"
52
- case gradientFill = "gf"
53
- case group = "gr"
54
- case gradientStroke = "gs"
55
- case merge = "mm"
56
- case rectangle = "rc"
57
- case repeater = "rp"
58
- case round = "rd"
59
- case shape = "sh"
60
- case star = "sr"
61
- case stroke = "st"
62
- case trim = "tm"
63
- case transform = "tr"
64
- case unknown
65
-
66
- public init(from decoder: Decoder) throws {
67
- self = try ShapeType(rawValue: decoder.singleValueContainer().decode(RawValue.self)) ?? .unknown
68
- }
69
- }
70
-
71
- /// An item belonging to a Shape Layer
72
- class ShapeItem: Codable {
73
-
74
- /// The name of the shape
75
- let name: String
76
-
77
- /// The type of shape
78
- let type: ShapeType
79
-
80
- let hidden: Bool
81
-
82
- private enum CodingKeys : String, CodingKey {
83
- case name = "nm"
84
- case type = "ty"
85
- case hidden = "hd"
86
- }
87
-
88
- required init(from decoder: Decoder) throws {
89
- let container = try decoder.container(keyedBy: ShapeItem.CodingKeys.self)
90
- self.name = try container.decodeIfPresent(String.self, forKey: .name) ?? "Layer"
91
- self.type = try container.decode(ShapeType.self, forKey: .type)
92
- self.hidden = try container.decodeIfPresent(Bool.self, forKey: .hidden) ?? false
93
- }
94
-
95
- }