lottie-ios 3.4.0 → 3.4.1

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 (353) hide show
  1. package/.github/workflows/main.yml +10 -7
  2. package/.swift-version +1 -0
  3. package/Lottie.xcodeproj/project.pbxproj +5 -5
  4. package/Lottie.xcworkspace/xcshareddata/swiftpm/Package.resolved +81 -0
  5. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  6. package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +30 -0
  7. package/Package.resolved +88 -0
  8. package/Package.swift +5 -0
  9. package/README.md +5 -6
  10. package/Rakefile +13 -17
  11. package/Sources/Private/CoreAnimation/Animations/CAAnimation+TimingConfiguration.swift +7 -2
  12. package/Sources/Private/CoreAnimation/Animations/CALayer+addAnimation.swift +191 -65
  13. package/Sources/Private/CoreAnimation/Animations/GradientAnimations.swift +79 -36
  14. package/Sources/Private/CoreAnimation/Animations/LayerProperty.swift +19 -19
  15. package/Sources/Private/CoreAnimation/Extensions/Keyframes+combinedIfPossible.swift +18 -6
  16. package/Sources/Private/CoreAnimation/Layers/AnimationLayer.swift +6 -0
  17. package/Sources/Private/CoreAnimation/Layers/GradientRenderLayer.swift +9 -2
  18. package/Sources/Private/CoreAnimation/Layers/ShapeItemLayer.swift +77 -34
  19. package/Sources/Private/CoreAnimation/Layers/ShapeLayer.swift +15 -1
  20. package/Sources/Private/MainThread/LayerContainers/CompLayers/MaskContainerLayer.swift +0 -2
  21. package/Sources/Private/MainThread/LayerContainers/CompLayers/PreCompositionLayer.swift +2 -2
  22. package/Sources/Private/MainThread/LayerContainers/MainThreadAnimationLayer.swift +1 -2
  23. package/Sources/Private/MainThread/LayerContainers/Utility/CoreTextRenderLayer.swift +1 -1
  24. package/Sources/Private/MainThread/LayerContainers/Utility/LayerTransformNode.swift +0 -1
  25. package/Sources/Private/MainThread/NodeRenderSystem/Extensions/ItemsExtension.swift +0 -2
  26. package/Sources/Private/MainThread/NodeRenderSystem/NodeProperties/ValueProviders/KeyframeInterpolator.swift +1 -4
  27. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/ModifierNodes/TrimPathNode.swift +4 -7
  28. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientStrokeRenderer.swift +1 -2
  29. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/LegacyGradientFillRenderer.swift +1 -1
  30. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/StrokeRenderer.swift +1 -1
  31. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/RectNode.swift +1 -1
  32. package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/StarNode.swift +3 -3
  33. package/Sources/Private/MainThread/NodeRenderSystem/RenderLayers/ShapeContainerLayer.swift +1 -1
  34. package/Sources/Private/MainThread/NodeRenderSystem/RenderLayers/ShapeRenderLayer.swift +0 -1
  35. package/Sources/Private/Model/ShapeItems/Group.swift +6 -1
  36. package/Sources/Private/Model/Text/TextAnimator.swift +0 -1
  37. package/Sources/Private/Utility/Debugging/LayerDebugging.swift +1 -2
  38. package/Sources/Private/Utility/Extensions/MathKit.swift +1 -2
  39. package/Sources/Private/Utility/Extensions/StringExtensions.swift +0 -1
  40. package/Sources/Private/Utility/Interpolatable/InterpolatableExtensions.swift +0 -1
  41. package/Sources/Private/Utility/Primitives/BezierPath.swift +1 -2
  42. package/Sources/Private/Utility/Primitives/CurveVertex.swift +2 -4
  43. package/Sources/Public/Animation/AnimationPublic.swift +0 -3
  44. package/Sources/Public/Animation/AnimationView.swift +26 -6
  45. package/Sources/Public/Animation/AnimationViewInitializers.swift +13 -11
  46. package/Sources/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +0 -2
  47. package/Sources/Public/FontProvider/AnimationFontProvider.swift +1 -1
  48. package/Sources/Public/Logging/LottieLogger.swift +15 -2
  49. package/Sources/Public/TextProvider/AnimationTextProvider.swift +1 -1
  50. package/Sources/Public/iOS/AnimatedButton.swift +10 -4
  51. package/Sources/Public/iOS/AnimatedControl.swift +3 -5
  52. package/Sources/Public/iOS/AnimatedSwitch.swift +9 -6
  53. package/Sources/Public/iOS/BundleImageProvider.swift +0 -1
  54. package/Sources/Public/iOS/FilepathImageProvider.swift +0 -1
  55. package/Sources/Public/macOS/BundleImageProvider.macOS.swift +0 -1
  56. package/Sources/Public/macOS/FilepathImageProvider.macOS.swift +0 -2
  57. package/Tests/ParsingTests.swift +2 -1
  58. package/Tests/PerformanceTests.swift +9 -9
  59. package/lottie-ios.podspec +1 -2
  60. package/package.json +1 -1
  61. package/script/test-carthage/CarthageTest/AppDelegate.swift +6 -7
  62. package/script/test-carthage/CarthageTest/ViewController.swift +1 -1
  63. package/script/test-carthage/CarthageTest-macOS/AppDelegate.swift +7 -0
  64. package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  65. package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json +58 -0
  66. package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/Contents.json +6 -0
  67. package/script/test-carthage/CarthageTest-macOS/Base.lproj/Main.storyboard +717 -0
  68. package/script/test-carthage/CarthageTest-macOS/CarthageTest_macOS.entitlements +10 -0
  69. package/script/test-carthage/CarthageTest-macOS/ViewController.swift +15 -0
  70. package/script/test-carthage/CarthageTest.xcodeproj/project.pbxproj +159 -5
  71. package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  72. package/script/test-carthage/CarthageTest.xcodeproj/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  73. package/Lottie.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +0 -23
  74. package/Mintfile +0 -3
  75. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-7Vi1RszY1XYnR2CCkEwIpKG8NwwA9zsZEz_WD7Dv6kKh4RC7N7ob8NIRVHGUJKp7eXxlpeI_gzD87Pcs_2u0g== +0 -0
  76. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-SKV2drO-SFlrlh-wrzECDMkUSr-aF1lV9h-5onOy94zSTsD-oI45s0-KpOK45L-kq3hRY7v9vm-xmh00_eheg== +0 -0
  77. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-_CU_vuaiFfObSeDFfmp7GuB20ThMSAL-P_RUMowiQLbdu-y0bU9upIm3q8g6XmXUG5hP6J1az0Ma5Hi_rhhRg== +0 -0
  78. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~03aPYP6VHJjZj5DlphGarj0xdw43qu09Onx5SReZoPvg9zh5uL212E-KWfGct9jf6JG0JFV2tdbBi7X_8bH9aw== +0 -0
  79. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~1Z82GPBBPc1VLvn4O7V5glb6lgyXteNlDREUzV_TPymM4ra4UkBMklzV90lEqoYRCDuRVzaQHaDYbmYp3-8CFw== +0 -0
  80. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~1mFDCboXpUu9pSHAiVGr1O_QgqEEtvJp_LUhickxLZo0Z5pj3fvadn1l2MzEOd4bFsVBZifUvcyPa7dzlMWF-A== +0 -0
  81. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~2_L9PUjv2JDKu1n8bDLb4XLB-yex6ZVjDDMwfuKAr7teDw-SKgLgkW6H-m_gjWChIVdB4vW6yvHP7XJxvXtRNA== +0 -0
  82. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +0 -1
  83. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~4krT4ZMzDOu34msFUq0Xod142kw4pAeSWX4JSxlsjOI0Wanu3343qeespgFi61MTWq1DdH9XXspVKqGlGm_fyw== +0 -0
  84. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~5_aJsdP-e3dRTAUnH-y1U2plaCuUi1vyHriaZuNK0xFe8wGl9Qft6uLCX2Qt6CRBKJQluEe9o0uRWw1eb42FHQ== +0 -0
  85. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~8b0bSqV7eND54zvHvu1v2Htpm7yn-BOEFw5d3mITJrXWNykJ5BTR9WbrD80JEctNcT-rDqO2xfrQk1tFWeY6Sw== +0 -0
  86. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~9u8KAGpgtSm-mQ12Py8RZUbYbDlBhM3w1I2MQO53K2CSn6IePp7g65DBcdXTYMfG1bgoJ-6x30fjnGe-2UYsDQ== +0 -0
  87. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Bw7uMs4wqB9ahfEqGii2FkQ9pvZmG6HGe2hmbAT2wyM5hpn8Xh5dELysMcEz6hEsqmn6HdRdLOLZhC_fNaXzgA== +0 -0
  88. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~BwUq2xXQYuE8ya6HT6lfNsdtEjz5AKGf8GvLY6VBxQyIY1vgj_Gov-3NeM69OS66BQRDK0PG9H4Oyg0R48E4vg== +0 -0
  89. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~EkDVUR6dcnzxV_lYjkrJ5QGMVTCvb_upAoBF6DBu61sQkGvZN3fSRTsJ1XfJIZO-JUzdNoVA3D_CcvokL0gnQg== +0 -0
  90. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~FUkcLSJ8RAuPenM4HFG1R-sN5-cDBGcTxgR2jaVCna7xV0ZTyBHriB1Nn59mariNlJDiCoBtMUQEmauGxWtfBA== +0 -0
  91. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~FqsuZe4RVLOOVUYLTL-GTIohZ8TdSfxx7m2KJtLYFPGOdE4XorTX7Oc7kXbhghPRppXT3jW-slI37M34YNEvLQ== +0 -0
  92. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~G4F_NtyTj3i46fmKm0NorHAeq8tYWWYf6uv5yC1DwzdpWVoYbOPufmFNvdEbxZt4AMdV0gKx3HI46EAXNOQVFg== +0 -0
  93. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~GxetzGUNDgaBBXcTmLK6p9JBDX3I3QPshshbui1IaEWvJbQko-E36tCKwaJYHbleAWz9FqkAM_Tqx3YOmSVkVg== +0 -0
  94. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~H1Wjd5kKWDW4t3SDodxiHV72V8WT0xwPubw5cJTNLkPRLgaILFPh-dpy8EOUNgy1KzrDujFsm9EcTsbuqtMPLA== +0 -0
  95. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~JpI5MH4zCgebUHFpXVn4zjtsGtMNnO7BQZWfNARAB5UWa9gqz6YXHR3uLCJ_AvJ3lh53BUVkavsx9TY2FMmxbA== +0 -0
  96. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~JujNYkJtcux0Ni4QnR64zu4Wz_zYjyKvYaYZm5ypxTLPSzF3_jNE_NO4sdbDamF8wEqWoky1uf4ZE0JT3L607A== +0 -0
  97. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~KJSEA6DKnb2_FRPSqKZGh41eo-C8x448J9kEBrH012bUrZfOSDvrgmIrU0Vz7Ri3gaS9aKKmSaVMvXsHSlTJVA== +0 -0
  98. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~MStOwu3jBlJtcRnxrseVOuhI4kCj--ggFPG7sqrq5w1hjrI3bVyD-bm1Jwyx0noY3wT1rHDEvaGWnV2qsGjGwg== +0 -0
  99. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~McsJ8kFVf3IjhgXIRdw8Xx-EXgbV071bmlj2BBnk52xrWl3sEeiIyxwUsF7mIWvMRWfcFfu4VGHYyqfk2BeHXw== +0 -0
  100. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~NHt9fVe4kDdbxnglKcEwXaRK-WsYEOaD23Kbl8SJPRMYHr_Z6SJd_HmG3BROHHR_M6TgSmucONpDJdTj5tjuFw== +0 -0
  101. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Nfo2iwCPcfAcOBIVyoUAK0-PIfr5qYxIKZt-uaSaTBdrTNxAuJ1ItmeDPZ3VdJJmxD_c22No7x482bdd3_yYtw== +0 -0
  102. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~S2Qlu11xBhEd5aGSzWsnw1TR8u8PiOF93GO0j5bfNoAFCVzxKOwhRFoIXba2EpQnLQqFdIKyhWN3l70A4GPHmg== +0 -0
  103. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~W7a7M37RO9jgck2zeR0471Pm7e8K0Kqj5tXEouDjvqKZXSrWxMaWD28oqkKKYAiU4608R4S9mM11KyphljdMSw== +0 -0
  104. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~XUo1oyPCrlL7CA74wG-OzQ06VOWJYWvHGFHU7keZN1SKaIXjHX5qi_kBzjG_rBCi89-S8GVmCy7S3PHSjG8SbQ== +0 -0
  105. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Xh0VmDvFNMELHu08-vrs54pegVyUwwDRxx_nXkwyD0NjnYozyqcGAKAr_QWHmw6F8XyuWg51M9KGpJJIFzzGuw== +0 -0
  106. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Xve-wMBp_lxVUgD9qH5GwieGP9cAWtm0xULZvdGjBRUMvaevmpCB5gnbMBuIXAO6a1c9v6WUq0jNVX7ut5HvOw== +0 -0
  107. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~ZU1XkZFgnEE22CXEF-pOlcj5f10x-KM1Vw9d4IOLu-NiTZcz7koYPixhdrB1PJr8J-h9NpJmfqEastfxamA1jQ== +0 -0
  108. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~_YkNYEHTsbbtFILJpzH3HenH0t4ShI25dIMdve541CF5bl-jPF3X3F7tq-t5dvP0TEkATsOJdLQdBp1xv4Q-ag== +0 -0
  109. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~boy6mpn2jkwm60jjgQ0TG25UqRdN46LzmgTVCrpy6nBOgkLCGkGHcbceiwjU1itS_vj3-iQX0ZnrWOQrPyfHNA== +0 -0
  110. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~bwzpVZ9hAqGDHhXs2FRA82dfGfLmc7-m0uQhZDDfHHO7hQ17M_Np341BZX4WDLhYYS4cdUgaDodlNpdfpG3nXw== +0 -0
  111. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~cBxe-9PpAGFdAsYkmdN3lJVqEliLcRYlyoAov0aPZfJGwUr_cOm3XpjO7nmf_2eLf8UAx-rycjnJzw07xLrNCA== +0 -1
  112. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~dirWk6W4Pav1oyciuflfJlRu0iuxbYOmrpQapOJ0mV9C1SQ-jvDRv_7h753Cy18-SwULARUdWsyUy3yNNvxF7w== +0 -0
  113. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~ebwZVjSEHroc9jtIm4jd_h_YAqEBcOkAZ4HPNJT8pLCldjRcTq-obQLakxXOhfuoOBlYBoZLuO-Y0lskeZRYKw== +0 -0
  114. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~gfcRcmRIr0h09d0jiZsA7nUeQv2XtapxuYEXZy1Z9um0tTJQvz-O5ef5f7zhLenLvjnDtDtlY_aY4Hvpce6e1Q== +0 -0
  115. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~hgOgiVCyv2R0W-f0qKw5xYPeUwj8_ccCM9vKH_7vAQcCO9t8BwR1APGRBv20AONmp-PYMXmtgsBlQkNBRBpdQA== +0 -0
  116. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~hrhCl-YRAAr8ByNB_LCgEBsVNHMp92gTIUknetpUHMjcXl4Hpn_uY-h6C45oga0ZALnfGCo6iKTmiPLa4Qvnpg== +0 -0
  117. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~n2yoR7JsyL4DSUwmjnpE4Iq9Qi_eeZrmpPU8cdehDFKfESK7nwxXxfrSMQbk0BQ2lgGPadoRcd1-qr1xVz97jA== +0 -0
  118. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~nMCcZm8WvPogyO_nuJ926Q3Q2dqVMN2LdjEL1Kq2wJ_RG-rH-e_6v41l1xZbCsQTa3XykQdEiXNc0HtAvT6IRA== +0 -0
  119. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~oc3C7xkUt-OWDL6rrsxs-seS4Fu1bqBWAAXCHalgShaGg9MUrOiRbHT2DcAnhyQFKx6x5FRbvjmYoQWrQiXJZA== +0 -0
  120. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~p-ihj7SEgkDXpMu9hvKE_wiX9cvtwyXrdIn964BfedXHKGpC6o7mMPxEyC0kRPVi_EZs_MRV5bAPEpl5h5we0g== +0 -0
  121. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~qlhO_D9oE8uSKH-mZqyRF9pp4Zv1Tv0dIYcqrH4hb1VWlIxcdxmg2j0M8496cQeFXC5bn_JMXdBlD-d6cnFF8w== +0 -0
  122. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~tjpiyIxJR_boTdUNrtFDuKIZoY84fI4lA1oMJbq9e2ZmYKIK5FeRN2O8cV_yMOYJGr4lbv03kTmT70mCjUc2_Q== +0 -0
  123. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~wULeoj18eEKJWAKx1uFQVwS48cUGFcYPRJQj1Ro5XNJsWCwppGSCdIPhwifD6Z2f_j3zfI2SmC2Gg81sBXXW7g== +0 -0
  124. package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~zrEihMys4NVV5rx6FmuzEGO2TjloI3OiC7yzIhvqYoRo43ibb2F-Km6Jf4NX-ac62pOLBYZRcjQTvYMpn75_oA== +0 -0
  125. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-7Vi1RszY1XYnR2CCkEwIpKG8NwwA9zsZEz_WD7Dv6kKh4RC7N7ob8NIRVHGUJKp7eXxlpeI_gzD87Pcs_2u0g== +0 -0
  126. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-SKV2drO-SFlrlh-wrzECDMkUSr-aF1lV9h-5onOy94zSTsD-oI45s0-KpOK45L-kq3hRY7v9vm-xmh00_eheg== +0 -0
  127. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-_CU_vuaiFfObSeDFfmp7GuB20ThMSAL-P_RUMowiQLbdu-y0bU9upIm3q8g6XmXUG5hP6J1az0Ma5Hi_rhhRg== +0 -0
  128. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~03aPYP6VHJjZj5DlphGarj0xdw43qu09Onx5SReZoPvg9zh5uL212E-KWfGct9jf6JG0JFV2tdbBi7X_8bH9aw== +0 -0
  129. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~1Z82GPBBPc1VLvn4O7V5glb6lgyXteNlDREUzV_TPymM4ra4UkBMklzV90lEqoYRCDuRVzaQHaDYbmYp3-8CFw== +0 -0
  130. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~1mFDCboXpUu9pSHAiVGr1O_QgqEEtvJp_LUhickxLZo0Z5pj3fvadn1l2MzEOd4bFsVBZifUvcyPa7dzlMWF-A== +0 -0
  131. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~2_L9PUjv2JDKu1n8bDLb4XLB-yex6ZVjDDMwfuKAr7teDw-SKgLgkW6H-m_gjWChIVdB4vW6yvHP7XJxvXtRNA== +0 -0
  132. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +0 -0
  133. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~4krT4ZMzDOu34msFUq0Xod142kw4pAeSWX4JSxlsjOI0Wanu3343qeespgFi61MTWq1DdH9XXspVKqGlGm_fyw== +0 -0
  134. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~5_aJsdP-e3dRTAUnH-y1U2plaCuUi1vyHriaZuNK0xFe8wGl9Qft6uLCX2Qt6CRBKJQluEe9o0uRWw1eb42FHQ== +0 -0
  135. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~8b0bSqV7eND54zvHvu1v2Htpm7yn-BOEFw5d3mITJrXWNykJ5BTR9WbrD80JEctNcT-rDqO2xfrQk1tFWeY6Sw== +0 -0
  136. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~9u8KAGpgtSm-mQ12Py8RZUbYbDlBhM3w1I2MQO53K2CSn6IePp7g65DBcdXTYMfG1bgoJ-6x30fjnGe-2UYsDQ== +0 -0
  137. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Bw7uMs4wqB9ahfEqGii2FkQ9pvZmG6HGe2hmbAT2wyM5hpn8Xh5dELysMcEz6hEsqmn6HdRdLOLZhC_fNaXzgA== +0 -0
  138. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~BwUq2xXQYuE8ya6HT6lfNsdtEjz5AKGf8GvLY6VBxQyIY1vgj_Gov-3NeM69OS66BQRDK0PG9H4Oyg0R48E4vg== +0 -0
  139. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~EkDVUR6dcnzxV_lYjkrJ5QGMVTCvb_upAoBF6DBu61sQkGvZN3fSRTsJ1XfJIZO-JUzdNoVA3D_CcvokL0gnQg== +0 -0
  140. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~FUkcLSJ8RAuPenM4HFG1R-sN5-cDBGcTxgR2jaVCna7xV0ZTyBHriB1Nn59mariNlJDiCoBtMUQEmauGxWtfBA== +0 -0
  141. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~FqsuZe4RVLOOVUYLTL-GTIohZ8TdSfxx7m2KJtLYFPGOdE4XorTX7Oc7kXbhghPRppXT3jW-slI37M34YNEvLQ== +0 -0
  142. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~G4F_NtyTj3i46fmKm0NorHAeq8tYWWYf6uv5yC1DwzdpWVoYbOPufmFNvdEbxZt4AMdV0gKx3HI46EAXNOQVFg== +0 -0
  143. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~GxetzGUNDgaBBXcTmLK6p9JBDX3I3QPshshbui1IaEWvJbQko-E36tCKwaJYHbleAWz9FqkAM_Tqx3YOmSVkVg== +0 -0
  144. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~H1Wjd5kKWDW4t3SDodxiHV72V8WT0xwPubw5cJTNLkPRLgaILFPh-dpy8EOUNgy1KzrDujFsm9EcTsbuqtMPLA== +0 -0
  145. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~JpI5MH4zCgebUHFpXVn4zjtsGtMNnO7BQZWfNARAB5UWa9gqz6YXHR3uLCJ_AvJ3lh53BUVkavsx9TY2FMmxbA== +0 -0
  146. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~JujNYkJtcux0Ni4QnR64zu4Wz_zYjyKvYaYZm5ypxTLPSzF3_jNE_NO4sdbDamF8wEqWoky1uf4ZE0JT3L607A== +0 -0
  147. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~KJSEA6DKnb2_FRPSqKZGh41eo-C8x448J9kEBrH012bUrZfOSDvrgmIrU0Vz7Ri3gaS9aKKmSaVMvXsHSlTJVA== +0 -0
  148. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~MStOwu3jBlJtcRnxrseVOuhI4kCj--ggFPG7sqrq5w1hjrI3bVyD-bm1Jwyx0noY3wT1rHDEvaGWnV2qsGjGwg== +0 -0
  149. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~McsJ8kFVf3IjhgXIRdw8Xx-EXgbV071bmlj2BBnk52xrWl3sEeiIyxwUsF7mIWvMRWfcFfu4VGHYyqfk2BeHXw== +0 -0
  150. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~NHt9fVe4kDdbxnglKcEwXaRK-WsYEOaD23Kbl8SJPRMYHr_Z6SJd_HmG3BROHHR_M6TgSmucONpDJdTj5tjuFw== +0 -0
  151. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Nfo2iwCPcfAcOBIVyoUAK0-PIfr5qYxIKZt-uaSaTBdrTNxAuJ1ItmeDPZ3VdJJmxD_c22No7x482bdd3_yYtw== +0 -0
  152. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~S2Qlu11xBhEd5aGSzWsnw1TR8u8PiOF93GO0j5bfNoAFCVzxKOwhRFoIXba2EpQnLQqFdIKyhWN3l70A4GPHmg== +0 -0
  153. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~W7a7M37RO9jgck2zeR0471Pm7e8K0Kqj5tXEouDjvqKZXSrWxMaWD28oqkKKYAiU4608R4S9mM11KyphljdMSw== +0 -0
  154. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~XUo1oyPCrlL7CA74wG-OzQ06VOWJYWvHGFHU7keZN1SKaIXjHX5qi_kBzjG_rBCi89-S8GVmCy7S3PHSjG8SbQ== +0 -0
  155. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Xh0VmDvFNMELHu08-vrs54pegVyUwwDRxx_nXkwyD0NjnYozyqcGAKAr_QWHmw6F8XyuWg51M9KGpJJIFzzGuw== +0 -0
  156. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Xve-wMBp_lxVUgD9qH5GwieGP9cAWtm0xULZvdGjBRUMvaevmpCB5gnbMBuIXAO6a1c9v6WUq0jNVX7ut5HvOw== +0 -0
  157. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~ZU1XkZFgnEE22CXEF-pOlcj5f10x-KM1Vw9d4IOLu-NiTZcz7koYPixhdrB1PJr8J-h9NpJmfqEastfxamA1jQ== +0 -0
  158. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~_YkNYEHTsbbtFILJpzH3HenH0t4ShI25dIMdve541CF5bl-jPF3X3F7tq-t5dvP0TEkATsOJdLQdBp1xv4Q-ag== +0 -0
  159. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~boy6mpn2jkwm60jjgQ0TG25UqRdN46LzmgTVCrpy6nBOgkLCGkGHcbceiwjU1itS_vj3-iQX0ZnrWOQrPyfHNA== +0 -0
  160. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~bwzpVZ9hAqGDHhXs2FRA82dfGfLmc7-m0uQhZDDfHHO7hQ17M_Np341BZX4WDLhYYS4cdUgaDodlNpdfpG3nXw== +0 -0
  161. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~cBxe-9PpAGFdAsYkmdN3lJVqEliLcRYlyoAov0aPZfJGwUr_cOm3XpjO7nmf_2eLf8UAx-rycjnJzw07xLrNCA== +0 -0
  162. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~dirWk6W4Pav1oyciuflfJlRu0iuxbYOmrpQapOJ0mV9C1SQ-jvDRv_7h753Cy18-SwULARUdWsyUy3yNNvxF7w== +0 -0
  163. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~ebwZVjSEHroc9jtIm4jd_h_YAqEBcOkAZ4HPNJT8pLCldjRcTq-obQLakxXOhfuoOBlYBoZLuO-Y0lskeZRYKw== +0 -0
  164. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~gfcRcmRIr0h09d0jiZsA7nUeQv2XtapxuYEXZy1Z9um0tTJQvz-O5ef5f7zhLenLvjnDtDtlY_aY4Hvpce6e1Q== +0 -0
  165. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~hgOgiVCyv2R0W-f0qKw5xYPeUwj8_ccCM9vKH_7vAQcCO9t8BwR1APGRBv20AONmp-PYMXmtgsBlQkNBRBpdQA== +0 -0
  166. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~hrhCl-YRAAr8ByNB_LCgEBsVNHMp92gTIUknetpUHMjcXl4Hpn_uY-h6C45oga0ZALnfGCo6iKTmiPLa4Qvnpg== +0 -0
  167. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~n2yoR7JsyL4DSUwmjnpE4Iq9Qi_eeZrmpPU8cdehDFKfESK7nwxXxfrSMQbk0BQ2lgGPadoRcd1-qr1xVz97jA== +0 -0
  168. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~nMCcZm8WvPogyO_nuJ926Q3Q2dqVMN2LdjEL1Kq2wJ_RG-rH-e_6v41l1xZbCsQTa3XykQdEiXNc0HtAvT6IRA== +0 -0
  169. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~oc3C7xkUt-OWDL6rrsxs-seS4Fu1bqBWAAXCHalgShaGg9MUrOiRbHT2DcAnhyQFKx6x5FRbvjmYoQWrQiXJZA== +0 -0
  170. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~p-ihj7SEgkDXpMu9hvKE_wiX9cvtwyXrdIn964BfedXHKGpC6o7mMPxEyC0kRPVi_EZs_MRV5bAPEpl5h5we0g== +0 -0
  171. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~qlhO_D9oE8uSKH-mZqyRF9pp4Zv1Tv0dIYcqrH4hb1VWlIxcdxmg2j0M8496cQeFXC5bn_JMXdBlD-d6cnFF8w== +0 -0
  172. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~tjpiyIxJR_boTdUNrtFDuKIZoY84fI4lA1oMJbq9e2ZmYKIK5FeRN2O8cV_yMOYJGr4lbv03kTmT70mCjUc2_Q== +0 -0
  173. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~wULeoj18eEKJWAKx1uFQVwS48cUGFcYPRJQj1Ro5XNJsWCwppGSCdIPhwifD6Z2f_j3zfI2SmC2Gg81sBXXW7g== +0 -0
  174. package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~zrEihMys4NVV5rx6FmuzEGO2TjloI3OiC7yzIhvqYoRo43ibb2F-Km6Jf4NX-ac62pOLBYZRcjQTvYMpn75_oA== +0 -0
  175. package/Tests/Artifacts/LottieTests.xcresult/Info.plist +0 -29
  176. package/Tests/Samples/9squares_AlBoardman.json +0 -1
  177. package/Tests/Samples/Boat_Loader.json +0 -1
  178. package/Tests/Samples/HamburgerArrow.json +0 -1
  179. package/Tests/Samples/IconTransitions.json +0 -1
  180. package/Tests/Samples/Images/dog.png +0 -0
  181. package/Tests/Samples/Issues/issue_1403.json +0 -1
  182. package/Tests/Samples/Issues/issue_1407.json +0 -1
  183. package/Tests/Samples/Issues/issue_1488.json +0 -1
  184. package/Tests/Samples/Issues/issue_1505.json +0 -1
  185. package/Tests/Samples/Issues/issue_1628.json +0 -1
  186. package/Tests/Samples/Issues/pr_1536.json +0 -1
  187. package/Tests/Samples/Issues/pr_1563.json +0 -8439
  188. package/Tests/Samples/Issues/pr_1592.json +0 -5527
  189. package/Tests/Samples/Issues/pr_1599.json +0 -738
  190. package/Tests/Samples/Issues/pr_1604_1.json +0 -1
  191. package/Tests/Samples/Issues/pr_1604_2.json +0 -1
  192. package/Tests/Samples/LottieFiles/LICENSE.md +0 -14
  193. package/Tests/Samples/LottieFiles/bounce_strokes.json +0 -1
  194. package/Tests/Samples/LottieFiles/cactus.json +0 -1
  195. package/Tests/Samples/LottieFiles/dog_car_ride.json +0 -1
  196. package/Tests/Samples/LottieFiles/draft_icon.json +0 -1
  197. package/Tests/Samples/LottieFiles/gradient_1.json +0 -1
  198. package/Tests/Samples/LottieFiles/gradient_2.json +0 -1
  199. package/Tests/Samples/LottieFiles/gradient_pill.json +0 -1
  200. package/Tests/Samples/LottieFiles/gradient_shapes.json +0 -1
  201. package/Tests/Samples/LottieFiles/gradient_square.json +0 -1
  202. package/Tests/Samples/LottieFiles/growth.json +0 -1
  203. package/Tests/Samples/LottieFiles/infinity_loader.json +0 -1
  204. package/Tests/Samples/LottieFiles/loading_dots_1.json +0 -1
  205. package/Tests/Samples/LottieFiles/loading_dots_2.json +0 -1
  206. package/Tests/Samples/LottieFiles/loading_dots_3.json +0 -1
  207. package/Tests/Samples/LottieFiles/loading_gradient_strokes.json +0 -1
  208. package/Tests/Samples/LottieFiles/settings_slider.json +0 -1
  209. package/Tests/Samples/LottieFiles/shop.json +0 -1
  210. package/Tests/Samples/LottieFiles/step_loader.json +0 -1
  211. package/Tests/Samples/LottieLogo1.json +0 -1
  212. package/Tests/Samples/LottieLogo1_masked.json +0 -1
  213. package/Tests/Samples/LottieLogo2.json +0 -1
  214. package/Tests/Samples/MotionCorpse_Jrcanest.json +0 -1
  215. package/Tests/Samples/Nonanimating/BasicLayers.json +0 -1
  216. package/Tests/Samples/Nonanimating/DisableNodesTest.json +0 -1
  217. package/Tests/Samples/Nonanimating/FirstText.json +0 -1
  218. package/Tests/Samples/Nonanimating/GeometryTransformTest.json +0 -1
  219. package/Tests/Samples/Nonanimating/Text_AnimatedProperties.json +0 -1
  220. package/Tests/Samples/Nonanimating/Text_Glyph.json +0 -1
  221. package/Tests/Samples/Nonanimating/Text_NoAnimation.json +0 -1
  222. package/Tests/Samples/Nonanimating/Text_NoGlyph.json +0 -1
  223. package/Tests/Samples/Nonanimating/Zoom.json +0 -1
  224. package/Tests/Samples/Nonanimating/_dog.json +0 -1
  225. package/Tests/Samples/Nonanimating/base64Test.json +0 -1
  226. package/Tests/Samples/Nonanimating/blend_mode_test.json +0 -1
  227. package/Tests/Samples/Nonanimating/keypathTest.json +0 -1
  228. package/Tests/Samples/Nonanimating/verifyLineHeight.json +0 -1
  229. package/Tests/Samples/PinJump.json +0 -1
  230. package/Tests/Samples/Private/BrokenLottieFiles/growth_man.json +0 -874
  231. package/Tests/Samples/Private/BrokenLottieFiles/rocket.json +0 -1
  232. package/Tests/Samples/Private/China_EmptyState_Itinerary.json +0 -1
  233. package/Tests/Samples/Private/LoaderHourglass.json +0 -12070
  234. package/Tests/Samples/Private/README.md +0 -7
  235. package/Tests/Samples/Private/Urgency/alarm_animated.json +0 -1
  236. package/Tests/Samples/Private/Urgency/diamond_animated.json +0 -1
  237. package/Tests/Samples/Private/Urgency/eye_animated.json +0 -1
  238. package/Tests/Samples/Private/Urgency/light_bulb_animated.json +0 -1
  239. package/Tests/Samples/Private/Urgency/light_bulb_static.json +0 -1
  240. package/Tests/Samples/Private/Urgency/piggy_bank_static.json +0 -1
  241. package/Tests/Samples/Private/Urgency/price_tag_legacy.json +0 -1
  242. package/Tests/Samples/Private/Urgency/rausch_alarm.json +0 -1
  243. package/Tests/Samples/Private/Urgency/rausch_alert.json +0 -1
  244. package/Tests/Samples/Private/Urgency/rausch_clock.json +0 -1
  245. package/Tests/Samples/Private/Urgency/rausch_diamond.json +0 -1
  246. package/Tests/Samples/Private/Urgency/rausch_money.json +0 -1
  247. package/Tests/Samples/Private/Urgency/rausch_piggy_bank.json +0 -1
  248. package/Tests/Samples/Private/Urgency/rausch_tag.json +0 -1
  249. package/Tests/Samples/Private/Urgency/red_envelope_animated.json +0 -1
  250. package/Tests/Samples/Private/Urgency/tag_animated.json +0 -1
  251. package/Tests/Samples/Private/Urgency/trophy_animated.json +0 -1
  252. package/Tests/Samples/Private/Urgency/wings_key_animated.json +0 -1
  253. package/Tests/Samples/Private/_flexible.json +0 -1
  254. package/Tests/Samples/Private/aircover.json +0 -1
  255. package/Tests/Samples/Private/belo_spin_rausch.json +0 -1
  256. package/Tests/Samples/Private/celebration.json +0 -2821
  257. package/Tests/Samples/Private/checkbox.json +0 -1
  258. package/Tests/Samples/Private/checkbox_small.json +0 -1
  259. package/Tests/Samples/Private/getting_your_trip_ready.json +0 -3540
  260. package/Tests/Samples/Private/gradient_afternoon.json +0 -1
  261. package/Tests/Samples/Private/gradient_brand.json +0 -1
  262. package/Tests/Samples/Private/gradient_evening.json +0 -1
  263. package/Tests/Samples/Private/gradient_morning.json +0 -1
  264. package/Tests/Samples/Private/issue_1467.json +0 -1
  265. package/Tests/Samples/Private/loading_dots.json +0 -1
  266. package/Tests/Samples/Private/loading_dots_small.json +0 -1
  267. package/Tests/Samples/Private/payment_loader.json +0 -1
  268. package/Tests/Samples/Private/radio_button.json +0 -1
  269. package/Tests/Samples/Private/selfie_intro.json +0 -1
  270. package/Tests/Samples/Private/stepper_add.json +0 -1
  271. package/Tests/Samples/Private/stepper_subtract.json +0 -1
  272. package/Tests/Samples/Private/switch.json +0 -1
  273. package/Tests/Samples/Private/thumb.json +0 -1
  274. package/Tests/Samples/Private/toggle_no.json +0 -1
  275. package/Tests/Samples/Private/toggle_yes.json +0 -1
  276. package/Tests/Samples/Private/user_error_black_and_white.json +0 -1
  277. package/Tests/Samples/Private/user_error_cut_off.json +0 -1
  278. package/Tests/Samples/Switch.json +0 -1
  279. package/Tests/Samples/Switch_States.json +0 -1
  280. package/Tests/Samples/TwitterHeart.json +0 -1
  281. package/Tests/Samples/TwitterHeartButton.json +0 -1
  282. package/Tests/Samples/TypeFace/A.json +0 -1
  283. package/Tests/Samples/TypeFace/Apostrophe.json +0 -1
  284. package/Tests/Samples/TypeFace/B.json +0 -1
  285. package/Tests/Samples/TypeFace/BlinkingCursor.json +0 -1
  286. package/Tests/Samples/TypeFace/C.json +0 -1
  287. package/Tests/Samples/TypeFace/Colon.json +0 -1
  288. package/Tests/Samples/TypeFace/Comma.json +0 -1
  289. package/Tests/Samples/TypeFace/D.json +0 -1
  290. package/Tests/Samples/TypeFace/E.json +0 -1
  291. package/Tests/Samples/TypeFace/F.json +0 -1
  292. package/Tests/Samples/TypeFace/G.json +0 -1
  293. package/Tests/Samples/TypeFace/H.json +0 -1
  294. package/Tests/Samples/TypeFace/I.json +0 -1
  295. package/Tests/Samples/TypeFace/J.json +0 -1
  296. package/Tests/Samples/TypeFace/K.json +0 -1
  297. package/Tests/Samples/TypeFace/L.json +0 -1
  298. package/Tests/Samples/TypeFace/M.json +0 -1
  299. package/Tests/Samples/TypeFace/N.json +0 -1
  300. package/Tests/Samples/TypeFace/O.json +0 -1
  301. package/Tests/Samples/TypeFace/P.json +0 -1
  302. package/Tests/Samples/TypeFace/Q.json +0 -1
  303. package/Tests/Samples/TypeFace/R.json +0 -1
  304. package/Tests/Samples/TypeFace/S.json +0 -1
  305. package/Tests/Samples/TypeFace/T.json +0 -1
  306. package/Tests/Samples/TypeFace/U.json +0 -1
  307. package/Tests/Samples/TypeFace/V.json +0 -1
  308. package/Tests/Samples/TypeFace/W.json +0 -1
  309. package/Tests/Samples/TypeFace/X.json +0 -1
  310. package/Tests/Samples/TypeFace/Y.json +0 -1
  311. package/Tests/Samples/TypeFace/Z.json +0 -1
  312. package/Tests/Samples/Watermelon.json +0 -1
  313. package/Tests/Samples/setValueTest.json +0 -1
  314. package/Tests/Samples/timeremap.json +0 -1
  315. package/Tests/Samples/vcTransition1.json +0 -1
  316. package/Tests/Samples/vcTransition2.json +0 -1
  317. package/script/lint/airbnb.swiftformat +0 -68
  318. package/script/lint/swiftlint.yml +0 -38
  319. package/script/test-carthage/Carthage/Build/.lottie-ios.version +0 -19
  320. package/script/test-carthage/Carthage/Build/Lottie.xcframework/Info.plist +0 -46
  321. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/BCSymbolMaps/BF971162-BE99-3507-B5B3-11947DC6B176.bcsymbolmap +0 -14778
  322. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Headers/Lottie-Swift.h +0 -673
  323. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Info.plist +0 -0
  324. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Lottie +0 -0
  325. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  326. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64-apple-ios.swiftmodule +0 -0
  327. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftdoc +0 -0
  328. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftmodule +0 -0
  329. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/module.modulemap +0 -4
  330. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/dSYMs/Lottie.framework.dSYM/Contents/Info.plist +0 -20
  331. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/dSYMs/Lottie.framework.dSYM/Contents/Resources/DWARF/Lottie +0 -0
  332. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Headers/Lottie-Swift.h +0 -1352
  333. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Info.plist +0 -0
  334. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Lottie +0 -0
  335. 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
  336. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  337. 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
  338. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/Project/x86_64.swiftsourceinfo +0 -0
  339. 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
  340. 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
  341. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftdoc +0 -0
  342. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftmodule +0 -0
  343. 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
  344. 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
  345. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/x86_64.swiftdoc +0 -0
  346. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/x86_64.swiftmodule +0 -0
  347. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/module.modulemap +0 -4
  348. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/_CodeSignature/CodeResources +0 -256
  349. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/dSYMs/Lottie.framework.dSYM/Contents/Info.plist +0 -20
  350. package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/dSYMs/Lottie.framework.dSYM/Contents/Resources/DWARF/Lottie +0 -0
  351. package/script/test-carthage/Carthage/Checkouts/lottie-ios/Lottie.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  352. package/script/test-carthage/Carthage/Checkouts/lottie-ios/Lottie.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +0 -37
  353. package/script/test-carthage/Carthage/Checkouts/lottie-ios/Lottie.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
@@ -388,7 +388,6 @@ extension BezierPath: Codable {
388
388
  try inPointsContainer.encode(element.vertex.inTangentRelative)
389
389
  try outPointsContainer.encode(element.vertex.outTangentRelative)
390
390
  }
391
-
392
391
  }
393
392
  }
394
393
 
@@ -469,7 +468,7 @@ extension BezierPath {
469
468
  var previousElement: PathElement?
470
469
  for element in elements {
471
470
  if let previous = previousElement {
472
- if previous.vertex.outTangentRelative.isZero && element.vertex.inTangentRelative.isZero {
471
+ if previous.vertex.outTangentRelative.isZero, element.vertex.inTangentRelative.isZero {
473
472
  cgPath.addLine(to: element.vertex.point)
474
473
  } else {
475
474
  cgPath.addCurve(to: element.vertex.point, control1: previous.vertex.outTangent, control2: element.vertex.inTangent)
@@ -78,7 +78,6 @@ struct CurveVertex {
78
78
  func splitCurve(toVertex: CurveVertex, position: CGFloat) ->
79
79
  (start: CurveVertex, trimPoint: CurveVertex, end: CurveVertex)
80
80
  {
81
-
82
81
  /// If position is less than or equal to 0, trim at start.
83
82
  if position <= 0 {
84
83
  return (
@@ -101,7 +100,7 @@ struct CurveVertex {
101
100
  outTangentRelative: toVertex.outTangentRelative))
102
101
  }
103
102
 
104
- if outTangentRelative.isZero && toVertex.inTangentRelative.isZero {
103
+ if outTangentRelative.isZero, toVertex.inTangentRelative.isZero {
105
104
  /// If both tangents are zero, then span to be trimmed is a straight line.
106
105
  let trimPoint = point.interpolate(to: toVertex.point, amount: position)
107
106
  return (
@@ -166,8 +165,7 @@ struct CurveVertex {
166
165
  /// For curves the curve is iterated over by sample count and the points are measured.
167
166
  /// This is ~99% accurate at a sample count of 30
168
167
  func distanceTo(_ toVertex: CurveVertex, sampleCount: Int = 25) -> CGFloat {
169
-
170
- if outTangentRelative.isZero && toVertex.inTangentRelative.isZero {
168
+ if outTangentRelative.isZero, toVertex.inTangentRelative.isZero {
171
169
  /// Return a linear distance.
172
170
  return point.distanceTo(toVertex.point)
173
171
  }
@@ -82,7 +82,6 @@ extension Animation {
82
82
  animationCache: AnimationCacheProvider? = nil)
83
83
  -> Animation?
84
84
  {
85
-
86
85
  /// Check cache for animation
87
86
  if
88
87
  let animationCache = animationCache,
@@ -176,7 +175,6 @@ extension Animation {
176
175
  closure: @escaping Animation.DownloadClosure,
177
176
  animationCache: AnimationCacheProvider?)
178
177
  {
179
-
180
178
  if let animationCache = animationCache, let animation = animationCache.animation(forKey: url.absoluteString) {
181
179
  closure(animation)
182
180
  } else {
@@ -198,7 +196,6 @@ extension Animation {
198
196
  closure(nil)
199
197
  }
200
198
  }
201
-
202
199
  }
203
200
  task.resume()
204
201
  }
@@ -358,7 +358,6 @@ final public class AnimationView: AnimationViewBase {
358
358
  /// Animatable.
359
359
  public var viewportFrame: CGRect? = nil {
360
360
  didSet {
361
-
362
361
  // This is really ugly, but is needed to trigger a layout pass within an animation block.
363
362
  // Typically this happens automatically, when layout objects are UIView based.
364
363
  // The animation layer is a CALayer which will not implicitly grab the animation
@@ -490,7 +489,6 @@ final public class AnimationView: AnimationViewBase {
490
489
  loopMode: LottieLoopMode? = nil,
491
490
  completion: LottieCompletionBlock? = nil)
492
491
  {
493
-
494
492
  guard let animation = animation, let markers = animation.markerMap, let to = markers[toMarker] else {
495
493
  return
496
494
  }
@@ -927,7 +925,11 @@ final public class AnimationView: AnimationViewBase {
927
925
 
928
926
  // MARK: Fileprivate
929
927
 
928
+ /// Context describing the animation that is currently playing in this `AnimationView`
929
+ /// - When non-nil, an animation is currently playing in this view. Otherwise,
930
+ /// the view is paused on a specific frame.
930
931
  fileprivate var animationContext: AnimationContext?
932
+
931
933
  fileprivate var _activeAnimationName: String = AnimationView.animationName
932
934
  fileprivate var animationID = 0
933
935
 
@@ -943,7 +945,6 @@ final public class AnimationView: AnimationViewBase {
943
945
  }
944
946
 
945
947
  fileprivate func makeAnimationLayer(usingEngine renderingEngine: RenderingEngineOption) {
946
-
947
948
  /// Remove current animation if any
948
949
  removeCurrentAnimation()
949
950
 
@@ -1131,12 +1132,18 @@ final public class AnimationView: AnimationViewBase {
1131
1132
  /// - This is not necessary with the Core Animation engine, and skipping
1132
1133
  /// this step lets us avoid building the animations twice (once paused
1133
1134
  /// and once again playing)
1135
+ /// - This method should only be called immediately before setting up another
1136
+ /// animation -- otherwise this AnimationView could be put in an inconsistent state.
1134
1137
  fileprivate func removeCurrentAnimationIfNecessary() {
1135
1138
  switch currentRenderingEngine {
1136
1139
  case .mainThread:
1137
1140
  removeCurrentAnimation()
1138
1141
  case .coreAnimation, nil:
1139
- break
1142
+ // We still need to remove the `animationContext`, since it should only be present
1143
+ // when an animation is actually playing. Without this calling `removeCurrentAnimationIfNecessary()`
1144
+ // and then setting the animation to a specific paused frame would put this
1145
+ // `AnimationView` in an inconsistent state.
1146
+ animationContext = nil
1140
1147
  }
1141
1148
  }
1142
1149
 
@@ -1203,10 +1210,19 @@ final public class AnimationView: AnimationViewBase {
1203
1210
 
1204
1211
  if let coreAnimationLayer = animationlayer as? CoreAnimationLayer {
1205
1212
  var animationContext = animationContext
1213
+
1214
+ // Core Animation doesn't natively support negative speed values,
1215
+ // so instead we can swap `playFrom` / `playTo`
1216
+ if animationSpeed < 0 {
1217
+ let temp = animationContext.playFrom
1218
+ animationContext.playFrom = animationContext.playTo
1219
+ animationContext.playTo = temp
1220
+ }
1221
+
1206
1222
  var timingConfiguration = CoreAnimationLayer.CAMediaTimingConfiguration(
1207
1223
  autoreverses: loopMode.caAnimationConfiguration.autoreverses,
1208
1224
  repeatCount: loopMode.caAnimationConfiguration.repeatCount,
1209
- speed: Float(animationSpeed))
1225
+ speed: abs(Float(animationSpeed)))
1210
1226
 
1211
1227
  // The animation should start playing from the `currentFrame`,
1212
1228
  // if `currentFrame` is included in the time range being played.
@@ -1227,7 +1243,11 @@ final public class AnimationView: AnimationViewBase {
1227
1243
  // the duration of the _first_ loop. Instead of setting `playFrom`, we just add a `timeOffset`
1228
1244
  // so the first loop begins at `currentTime` but all subsequent loops are the standard duration.
1229
1245
  default:
1230
- timingConfiguration.timeOffset = currentTime - animation.time(forFrame: animationContext.playFrom)
1246
+ if animationSpeed < 0 {
1247
+ timingConfiguration.timeOffset = animation.time(forFrame: animationContext.playFrom) - currentTime
1248
+ } else {
1249
+ timingConfiguration.timeOffset = currentTime - animation.time(forFrame: animationContext.playFrom)
1250
+ }
1231
1251
  }
1232
1252
  }
1233
1253
 
@@ -23,11 +23,12 @@ extension AnimationView {
23
23
  name: String,
24
24
  bundle: Bundle = Bundle.main,
25
25
  imageProvider: AnimationImageProvider? = nil,
26
- animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache)
26
+ animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache,
27
+ configuration: LottieConfiguration = .shared)
27
28
  {
28
29
  let animation = Animation.named(name, bundle: bundle, subdirectory: nil, animationCache: animationCache)
29
30
  let provider = imageProvider ?? BundleImageProvider(bundle: bundle, searchPath: nil)
30
- self.init(animation: animation, imageProvider: provider)
31
+ self.init(animation: animation, imageProvider: provider, configuration: configuration)
31
32
  }
32
33
 
33
34
  /// Loads a Lottie animation from a JSON file in a specific path on disk.
@@ -38,12 +39,13 @@ extension AnimationView {
38
39
  public convenience init(
39
40
  filePath: String,
40
41
  imageProvider: AnimationImageProvider? = nil,
41
- animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache)
42
+ animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache,
43
+ configuration: LottieConfiguration = .shared)
42
44
  {
43
45
  let animation = Animation.filepath(filePath, animationCache: animationCache)
44
46
  let provider = imageProvider ??
45
47
  FilepathImageProvider(filepath: URL(fileURLWithPath: filePath).deletingLastPathComponent().path)
46
- self.init(animation: animation, imageProvider: provider)
48
+ self.init(animation: animation, imageProvider: provider, configuration: configuration)
47
49
  }
48
50
 
49
51
  /// Loads a Lottie animation asynchronously from the URL
@@ -56,15 +58,14 @@ extension AnimationView {
56
58
  url: URL,
57
59
  imageProvider: AnimationImageProvider? = nil,
58
60
  closure: @escaping AnimationView.DownloadClosure,
59
- animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache)
61
+ animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache,
62
+ configuration: LottieConfiguration = .shared)
60
63
  {
61
-
62
64
  if let animationCache = animationCache, let animation = animationCache.animation(forKey: url.absoluteString) {
63
- self.init(animation: animation, imageProvider: imageProvider)
65
+ self.init(animation: animation, imageProvider: imageProvider, configuration: configuration)
64
66
  closure(nil)
65
67
  } else {
66
-
67
- self.init(animation: nil, imageProvider: imageProvider)
68
+ self.init(animation: nil, imageProvider: imageProvider, configuration: configuration)
68
69
 
69
70
  Animation.loadedFrom(url: url, closure: { animation in
70
71
  if let animation = animation {
@@ -87,11 +88,12 @@ extension AnimationView {
87
88
  asset name: String,
88
89
  bundle: Bundle = Bundle.main,
89
90
  imageProvider: AnimationImageProvider? = nil,
90
- animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache)
91
+ animationCache: AnimationCacheProvider? = LRUAnimationCache.sharedCache,
92
+ configuration: LottieConfiguration = .shared)
91
93
  {
92
94
  let animation = Animation.asset(name, bundle: bundle, animationCache: animationCache)
93
95
  let provider = imageProvider ?? BundleImageProvider(bundle: bundle, searchPath: nil)
94
- self.init(animation: animation, imageProvider: provider)
96
+ self.init(animation: animation, imageProvider: provider, configuration: configuration)
95
97
  }
96
98
 
97
99
  // MARK: Public
@@ -94,13 +94,11 @@ public final class GradientValueProvider: ValueProvider {
94
94
  private var value: [Double] = []
95
95
 
96
96
  private func value(from colors: [Color], locations: [Double]) -> [Double] {
97
-
98
97
  var colorValues = [Double]()
99
98
  var alphaValues = [Double]()
100
99
  var shouldAddAlphaValues = false
101
100
 
102
101
  for i in 0..<colors.count {
103
-
104
102
  if colors[i].a < 1 { shouldAddAlphaValues = true }
105
103
 
106
104
  let location = locations.count > i
@@ -25,7 +25,7 @@ public final class DefaultFontProvider: AnimationFontProvider {
25
25
 
26
26
  // MARK: Lifecycle
27
27
 
28
- public init() {}
28
+ public init() { }
29
29
 
30
30
  // MARK: Public
31
31
 
@@ -10,8 +10,19 @@ public final class LottieLogger {
10
10
  // MARK: Lifecycle
11
11
 
12
12
  public init(
13
- assert: @escaping Assert = Swift.assert,
14
- assertionFailure: @escaping AssertionFailure = Swift.assertionFailure,
13
+ assert: @escaping Assert = { condition, message, file, line in
14
+ // If we default to `Swift.assert` directly with `assert: Assert = Swift.assert`,
15
+ // the call will unexpectedly not respect the -O flag and will crash in release
16
+ // https://github.com/apple/swift/issues/60249
17
+ Swift.assert(condition(), message(), file: file, line: line)
18
+ },
19
+ assertionFailure: @escaping AssertionFailure = { message, file, line in
20
+ // If we default to `Swift.assertionFailure` directly with
21
+ // `assertionFailure: AssertionFailure = Swift.assertionFailure`,
22
+ // the call will unexpectedly not respect the -O flag and will crash in release
23
+ // https://github.com/apple/swift/issues/60249
24
+ Swift.assertionFailure(message(), file: file, line: line)
25
+ },
15
26
  warn: @escaping Warn = { message, _, _ in
16
27
  #if DEBUG
17
28
  // swiftlint:disable:next no_direct_standard_out_logs
@@ -114,10 +125,12 @@ extension LottieLogger {
114
125
  LottieLogger(
115
126
  assert: { condition, message, _, _ in
116
127
  if !condition() {
128
+ // swiftlint:disable:next no_direct_standard_out_logs
117
129
  print(message())
118
130
  }
119
131
  },
120
132
  assertionFailure: { message, _, _ in
133
+ // swiftlint:disable:next no_direct_standard_out_logs
121
134
  print(message())
122
135
  })
123
136
  }
@@ -43,7 +43,7 @@ public final class DefaultTextProvider: AnimationTextProvider {
43
43
 
44
44
  // MARK: Lifecycle
45
45
 
46
- public init() {}
46
+ public init() { }
47
47
 
48
48
  // MARK: Public
49
49
 
@@ -18,20 +18,26 @@ open class AnimatedButton: AnimatedControl {
18
18
  configuration: LottieConfiguration = .shared)
19
19
  {
20
20
  super.init(animation: animation, configuration: configuration)
21
- accessibilityTraits = UIAccessibilityTraits.button
21
+ isAccessibilityElement = true
22
22
  }
23
23
 
24
24
  public override init() {
25
25
  super.init()
26
- accessibilityTraits = UIAccessibilityTraits.button
26
+ isAccessibilityElement = true
27
27
  }
28
28
 
29
29
  required public init?(coder aDecoder: NSCoder) {
30
30
  super.init(coder: aDecoder)
31
+ isAccessibilityElement = true
31
32
  }
32
33
 
33
34
  // MARK: Public
34
35
 
36
+ public override var accessibilityTraits: UIAccessibilityTraits {
37
+ set { super.accessibilityTraits = newValue }
38
+ get { super.accessibilityTraits.union(.button) }
39
+ }
40
+
35
41
  /// Sets the play range for the given UIControlEvent.
36
42
  public func setPlayRange(fromProgress: AnimationProgressTime, toProgress: AnimationProgressTime, event: UIControl.Event) {
37
43
  rangesForEvents[event.rawValue] = (from: fromProgress, to: toProgress)
@@ -70,9 +76,9 @@ open class AnimatedButton: AnimatedControl {
70
76
  }
71
77
  }
72
78
 
73
- // MARK: Fileprivate
79
+ // MARK: Private
74
80
 
75
- fileprivate var rangesForEvents: [UInt : (from: CGFloat, to: CGFloat)] =
81
+ private var rangesForEvents: [UInt : (from: CGFloat, to: CGFloat)] =
76
82
  [UIControl.Event.touchUpInside.rawValue : (from: 0, to: 1)]
77
83
  }
78
84
  #endif
@@ -100,9 +100,7 @@ open class AnimatedControl: UIControl {
100
100
  super.cancelTracking(with: event)
101
101
  }
102
102
 
103
- open func animationDidSet() {
104
-
105
- }
103
+ open func animationDidSet() { }
106
104
 
107
105
  // MARK: Public
108
106
 
@@ -158,9 +156,9 @@ open class AnimatedControl: UIControl {
158
156
  }
159
157
  }
160
158
 
161
- // MARK: Fileprivate
159
+ // MARK: Private
162
160
 
163
- fileprivate func commonInit() {
161
+ private func commonInit() {
164
162
  animationView.clipsToBounds = false
165
163
  clipsToBounds = true
166
164
  animationView.translatesAutoresizingMaskIntoConstraints = false
@@ -32,8 +32,8 @@ open class AnimatedSwitch: AnimatedControl {
32
32
  hapticGenerator = NullHapticGenerator()
33
33
  #endif
34
34
  super.init(animation: animation, configuration: configuration)
35
+ isAccessibilityElement = true
35
36
  updateOnState(isOn: _isOn, animated: false, shouldFireHaptics: false)
36
- accessibilityTraits = UIAccessibilityTraits.button
37
37
  }
38
38
 
39
39
  public override init() {
@@ -48,8 +48,8 @@ open class AnimatedSwitch: AnimatedControl {
48
48
  hapticGenerator = NullHapticGenerator()
49
49
  #endif
50
50
  super.init()
51
+ isAccessibilityElement = true
51
52
  updateOnState(isOn: _isOn, animated: false, shouldFireHaptics: false)
52
- accessibilityTraits = UIAccessibilityTraits.button
53
53
  }
54
54
 
55
55
  required public init?(coder aDecoder: NSCoder) {
@@ -64,7 +64,7 @@ open class AnimatedSwitch: AnimatedControl {
64
64
  hapticGenerator = NullHapticGenerator()
65
65
  #endif
66
66
  super.init(coder: aDecoder)
67
- accessibilityTraits = UIAccessibilityTraits.button
67
+ isAccessibilityElement = true
68
68
  }
69
69
 
70
70
  // MARK: Public
@@ -79,6 +79,11 @@ open class AnimatedSwitch: AnimatedControl {
79
79
  /// The cancel behavior for the switch. See CancelBehavior for options
80
80
  public var cancelBehavior: CancelBehavior = .reverse
81
81
 
82
+ public override var accessibilityTraits: UIAccessibilityTraits {
83
+ set { super.accessibilityTraits = newValue }
84
+ get { super.accessibilityTraits.union(.button) }
85
+ }
86
+
82
87
  /// The current state of the switch.
83
88
  public var isOn: Bool {
84
89
  set {
@@ -203,9 +208,7 @@ protocol ImpactGenerator {
203
208
  // MARK: - NullHapticGenerator
204
209
 
205
210
  class NullHapticGenerator: ImpactGenerator {
206
- func generateImpact() {
207
-
208
- }
211
+ func generateImpact() { }
209
212
  }
210
213
 
211
214
  #if os(iOS)
@@ -32,7 +32,6 @@ public class BundleImageProvider: AnimationImageProvider {
32
32
  // MARK: Public
33
33
 
34
34
  public func imageForAsset(asset: ImageAsset) -> CGImage? {
35
-
36
35
  if
37
36
  let data = Data(imageAsset: asset),
38
37
  let image = UIImage(data: data)
@@ -29,7 +29,6 @@ public class FilepathImageProvider: AnimationImageProvider {
29
29
  // MARK: Public
30
30
 
31
31
  public func imageForAsset(asset: ImageAsset) -> CGImage? {
32
-
33
32
  if
34
33
  asset.name.hasPrefix("data:"),
35
34
  let url = URL(string: asset.name),
@@ -29,7 +29,6 @@ public class BundleImageProvider: AnimationImageProvider {
29
29
  // MARK: Public
30
30
 
31
31
  public func imageForAsset(asset: ImageAsset) -> CGImage? {
32
-
33
32
  if
34
33
  let data = Data(imageAsset: asset),
35
34
  let image = NSImage(data: data)
@@ -28,7 +28,6 @@ public class FilepathImageProvider: AnimationImageProvider {
28
28
  // MARK: Public
29
29
 
30
30
  public func imageForAsset(asset: ImageAsset) -> CGImage? {
31
-
32
31
  if
33
32
  asset.name.hasPrefix("data:"),
34
33
  let url = URL(string: asset.name),
@@ -40,7 +39,6 @@ public class FilepathImageProvider: AnimationImageProvider {
40
39
 
41
40
  let directPath = filepath.appendingPathComponent(asset.name).path
42
41
  if FileManager.default.fileExists(atPath: directPath) {
43
-
44
42
  return NSImage(contentsOfFile: directPath)?.lottie_CGImage
45
43
  }
46
44
 
@@ -33,7 +33,8 @@ func XCTAssertNoDiff<T>(
33
33
  _ expected: @autoclosure () throws -> T,
34
34
  _ received: @autoclosure () throws -> T,
35
35
  file: StaticString = #filePath,
36
- line: UInt = #line) rethrows {
36
+ line: UInt = #line) rethrows
37
+ {
37
38
  let expected = try expected()
38
39
  let received = try received()
39
40
  let diff = diff(expected, received)
@@ -118,7 +118,7 @@ final class PerformanceTests: XCTestCase {
118
118
  }
119
119
  }
120
120
 
121
- print("\(engineA) engine took \(engineAPerformance) seconds")
121
+ LottieLogger.shared.info("\(engineA) engine took \(engineAPerformance) seconds")
122
122
 
123
123
  let engineBPerformance = measurePerformance {
124
124
  for _ in 0..<iterations {
@@ -134,10 +134,10 @@ final class PerformanceTests: XCTestCase {
134
134
  }
135
135
  }
136
136
 
137
- print("\(engineB) engine took \(engineBPerformance) seconds")
137
+ LottieLogger.shared.info("\(engineB) engine took \(engineBPerformance) seconds")
138
138
 
139
139
  let ratio = engineBPerformance / engineAPerformance
140
- print("\(engineB) engine took \(ratio)x as long as \(engineA) engine")
140
+ LottieLogger.shared.info("\(engineB) engine took \(ratio)x as long as \(engineA) engine")
141
141
  return ratio
142
142
  }
143
143
 
@@ -156,7 +156,7 @@ final class PerformanceTests: XCTestCase {
156
156
  }
157
157
  }
158
158
 
159
- print("Main thread engine took \(mainThreadEnginePerformance) seconds")
159
+ LottieLogger.shared.info("Main thread engine took \(mainThreadEnginePerformance) seconds")
160
160
 
161
161
  let coreAnimationView = setupAnimationView(with: animation, configuration: .init(renderingEngine: .coreAnimation))
162
162
  let coreAnimationEnginePerformance = measurePerformance {
@@ -168,10 +168,10 @@ final class PerformanceTests: XCTestCase {
168
168
  }
169
169
  }
170
170
 
171
- print("Core Animation engine took \(coreAnimationEnginePerformance) seconds")
171
+ LottieLogger.shared.info("Core Animation engine took \(coreAnimationEnginePerformance) seconds")
172
172
 
173
173
  let ratio = coreAnimationEnginePerformance / mainThreadEnginePerformance
174
- print("Core Animation engine took \(ratio)x as long as the Main Thread engine")
174
+ LottieLogger.shared.info("Core Animation engine took \(ratio)x as long as the Main Thread engine")
175
175
  return ratio
176
176
  }
177
177
 
@@ -182,7 +182,7 @@ final class PerformanceTests: XCTestCase {
182
182
  }
183
183
  }
184
184
 
185
- print("Codable deserialization took \(codablePerformance) seconds")
185
+ LottieLogger.shared.info("Codable deserialization took \(codablePerformance) seconds")
186
186
 
187
187
  let dictPerformance = try measurePerformance {
188
188
  for _ in 0..<iterations {
@@ -190,9 +190,9 @@ final class PerformanceTests: XCTestCase {
190
190
  }
191
191
  }
192
192
 
193
- print("DictionaryBased deserialization took \(dictPerformance) seconds")
193
+ LottieLogger.shared.info("DictionaryBased deserialization took \(dictPerformance) seconds")
194
194
  let ratio = codablePerformance / dictPerformance
195
- print("Codable deserialization took \(ratio)x as long as DictionaryBased")
195
+ LottieLogger.shared.info("Codable deserialization took \(ratio)x as long as DictionaryBased")
196
196
  return ratio
197
197
  }
198
198
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  Pod::Spec.new do |s|
10
10
  s.name = 'lottie-ios'
11
- s.version = '3.4.0'
11
+ s.version = '3.4.1'
12
12
  s.summary = 'A library to render native animations from bodymovin json'
13
13
 
14
14
  s.description = <<-DESC
@@ -22,7 +22,6 @@ Lottie enables designers to create and ship beautiful animations without an engi
22
22
  s.author = { 'Brandon Withrow' => 'buba447@gmail.com' }
23
23
  s.source = { :git => 'https://github.com/airbnb/lottie-ios.git', :tag => s.version.to_s }
24
24
 
25
- s.swift_version = '5.4'
26
25
  s.ios.deployment_target = '11.0'
27
26
  s.osx.deployment_target = '10.10'
28
27
  s.tvos.deployment_target = '11.0'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lottie-ios",
3
- "version": "3.4.0",
3
+ "version": "3.4.1",
4
4
  "description": "Lottie is a mobile library for Android and iOS that parses Adobe After Effects animations exported as json with bodymovin and renders the vector animations natively on mobile and through React Native!",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -7,21 +7,20 @@ import UIKit
7
7
  class AppDelegate: UIResponder, UIApplicationDelegate {
8
8
 
9
9
  func application(
10
- _ application: UIApplication,
11
- didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?)
10
+ _: UIApplication,
11
+ didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?)
12
12
  -> Bool
13
13
  {
14
- return true
14
+ true
15
15
  }
16
16
 
17
17
  func application(
18
- _ application: UIApplication,
18
+ _: UIApplication,
19
19
  configurationForConnecting connectingSceneSession: UISceneSession,
20
- options: UIScene.ConnectionOptions)
20
+ options _: UIScene.ConnectionOptions)
21
21
  -> UISceneConfiguration
22
22
  {
23
- return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
23
+ UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
24
24
  }
25
25
 
26
26
  }
27
-
@@ -1,8 +1,8 @@
1
1
  // Created by Cal Stephens on 12/20/21.
2
2
  // Copyright © 2021 Airbnb Inc. All rights reserved.
3
3
 
4
- import UIKit
5
4
  import Lottie
5
+ import UIKit
6
6
 
7
7
  class ViewController: UIViewController {
8
8
 
@@ -0,0 +1,7 @@
1
+ // Created by Cal Stephens on 7/8/22.
2
+ // Copyright © 2022 Airbnb Inc. All rights reserved.
3
+
4
+ import Cocoa
5
+
6
+ @main
7
+ class AppDelegate: NSObject, NSApplicationDelegate { }
@@ -0,0 +1,11 @@
1
+ {
2
+ "colors" : [
3
+ {
4
+ "idiom" : "universal"
5
+ }
6
+ ],
7
+ "info" : {
8
+ "author" : "xcode",
9
+ "version" : 1
10
+ }
11
+ }