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.
- package/.github/workflows/main.yml +10 -7
- package/.swift-version +1 -0
- package/Lottie.xcodeproj/project.pbxproj +5 -5
- package/Lottie.xcworkspace/xcshareddata/swiftpm/Package.resolved +81 -0
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/Lottie.xcworkspace/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +30 -0
- package/Package.resolved +88 -0
- package/Package.swift +5 -0
- package/README.md +5 -6
- package/Rakefile +13 -17
- package/Sources/Private/CoreAnimation/Animations/CAAnimation+TimingConfiguration.swift +7 -2
- package/Sources/Private/CoreAnimation/Animations/CALayer+addAnimation.swift +191 -65
- package/Sources/Private/CoreAnimation/Animations/GradientAnimations.swift +79 -36
- package/Sources/Private/CoreAnimation/Animations/LayerProperty.swift +19 -19
- package/Sources/Private/CoreAnimation/Extensions/Keyframes+combinedIfPossible.swift +18 -6
- package/Sources/Private/CoreAnimation/Layers/AnimationLayer.swift +6 -0
- package/Sources/Private/CoreAnimation/Layers/GradientRenderLayer.swift +9 -2
- package/Sources/Private/CoreAnimation/Layers/ShapeItemLayer.swift +77 -34
- package/Sources/Private/CoreAnimation/Layers/ShapeLayer.swift +15 -1
- package/Sources/Private/MainThread/LayerContainers/CompLayers/MaskContainerLayer.swift +0 -2
- package/Sources/Private/MainThread/LayerContainers/CompLayers/PreCompositionLayer.swift +2 -2
- package/Sources/Private/MainThread/LayerContainers/MainThreadAnimationLayer.swift +1 -2
- package/Sources/Private/MainThread/LayerContainers/Utility/CoreTextRenderLayer.swift +1 -1
- package/Sources/Private/MainThread/LayerContainers/Utility/LayerTransformNode.swift +0 -1
- package/Sources/Private/MainThread/NodeRenderSystem/Extensions/ItemsExtension.swift +0 -2
- package/Sources/Private/MainThread/NodeRenderSystem/NodeProperties/ValueProviders/KeyframeInterpolator.swift +1 -4
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/ModifierNodes/TrimPathNode.swift +4 -7
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/GradientStrokeRenderer.swift +1 -2
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/LegacyGradientFillRenderer.swift +1 -1
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/OutputNodes/Renderables/StrokeRenderer.swift +1 -1
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/RectNode.swift +1 -1
- package/Sources/Private/MainThread/NodeRenderSystem/Nodes/PathNodes/StarNode.swift +3 -3
- package/Sources/Private/MainThread/NodeRenderSystem/RenderLayers/ShapeContainerLayer.swift +1 -1
- package/Sources/Private/MainThread/NodeRenderSystem/RenderLayers/ShapeRenderLayer.swift +0 -1
- package/Sources/Private/Model/ShapeItems/Group.swift +6 -1
- package/Sources/Private/Model/Text/TextAnimator.swift +0 -1
- package/Sources/Private/Utility/Debugging/LayerDebugging.swift +1 -2
- package/Sources/Private/Utility/Extensions/MathKit.swift +1 -2
- package/Sources/Private/Utility/Extensions/StringExtensions.swift +0 -1
- package/Sources/Private/Utility/Interpolatable/InterpolatableExtensions.swift +0 -1
- package/Sources/Private/Utility/Primitives/BezierPath.swift +1 -2
- package/Sources/Private/Utility/Primitives/CurveVertex.swift +2 -4
- package/Sources/Public/Animation/AnimationPublic.swift +0 -3
- package/Sources/Public/Animation/AnimationView.swift +26 -6
- package/Sources/Public/Animation/AnimationViewInitializers.swift +13 -11
- package/Sources/Public/DynamicProperties/ValueProviders/GradientValueProvider.swift +0 -2
- package/Sources/Public/FontProvider/AnimationFontProvider.swift +1 -1
- package/Sources/Public/Logging/LottieLogger.swift +15 -2
- package/Sources/Public/TextProvider/AnimationTextProvider.swift +1 -1
- package/Sources/Public/iOS/AnimatedButton.swift +10 -4
- package/Sources/Public/iOS/AnimatedControl.swift +3 -5
- package/Sources/Public/iOS/AnimatedSwitch.swift +9 -6
- package/Sources/Public/iOS/BundleImageProvider.swift +0 -1
- package/Sources/Public/iOS/FilepathImageProvider.swift +0 -1
- package/Sources/Public/macOS/BundleImageProvider.macOS.swift +0 -1
- package/Sources/Public/macOS/FilepathImageProvider.macOS.swift +0 -2
- package/Tests/ParsingTests.swift +2 -1
- package/Tests/PerformanceTests.swift +9 -9
- package/lottie-ios.podspec +1 -2
- package/package.json +1 -1
- package/script/test-carthage/CarthageTest/AppDelegate.swift +6 -7
- package/script/test-carthage/CarthageTest/ViewController.swift +1 -1
- package/script/test-carthage/CarthageTest-macOS/AppDelegate.swift +7 -0
- package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
- package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json +58 -0
- package/script/test-carthage/CarthageTest-macOS/Assets.xcassets/Contents.json +6 -0
- package/script/test-carthage/CarthageTest-macOS/Base.lproj/Main.storyboard +717 -0
- package/script/test-carthage/CarthageTest-macOS/CarthageTest_macOS.entitlements +10 -0
- package/script/test-carthage/CarthageTest-macOS/ViewController.swift +15 -0
- package/script/test-carthage/CarthageTest.xcodeproj/project.pbxproj +159 -5
- package/script/test-carthage/CarthageTest.xcodeproj/project.xcworkspace/xcuserdata/calstephens.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/script/test-carthage/CarthageTest.xcodeproj/xcuserdata/calstephens.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/Lottie.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +0 -23
- package/Mintfile +0 -3
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-7Vi1RszY1XYnR2CCkEwIpKG8NwwA9zsZEz_WD7Dv6kKh4RC7N7ob8NIRVHGUJKp7eXxlpeI_gzD87Pcs_2u0g== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-SKV2drO-SFlrlh-wrzECDMkUSr-aF1lV9h-5onOy94zSTsD-oI45s0-KpOK45L-kq3hRY7v9vm-xmh00_eheg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~-_CU_vuaiFfObSeDFfmp7GuB20ThMSAL-P_RUMowiQLbdu-y0bU9upIm3q8g6XmXUG5hP6J1az0Ma5Hi_rhhRg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~03aPYP6VHJjZj5DlphGarj0xdw43qu09Onx5SReZoPvg9zh5uL212E-KWfGct9jf6JG0JFV2tdbBi7X_8bH9aw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~1Z82GPBBPc1VLvn4O7V5glb6lgyXteNlDREUzV_TPymM4ra4UkBMklzV90lEqoYRCDuRVzaQHaDYbmYp3-8CFw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~1mFDCboXpUu9pSHAiVGr1O_QgqEEtvJp_LUhickxLZo0Z5pj3fvadn1l2MzEOd4bFsVBZifUvcyPa7dzlMWF-A== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~2_L9PUjv2JDKu1n8bDLb4XLB-yex6ZVjDDMwfuKAr7teDw-SKgLgkW6H-m_gjWChIVdB4vW6yvHP7XJxvXtRNA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +0 -1
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~4krT4ZMzDOu34msFUq0Xod142kw4pAeSWX4JSxlsjOI0Wanu3343qeespgFi61MTWq1DdH9XXspVKqGlGm_fyw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~5_aJsdP-e3dRTAUnH-y1U2plaCuUi1vyHriaZuNK0xFe8wGl9Qft6uLCX2Qt6CRBKJQluEe9o0uRWw1eb42FHQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~8b0bSqV7eND54zvHvu1v2Htpm7yn-BOEFw5d3mITJrXWNykJ5BTR9WbrD80JEctNcT-rDqO2xfrQk1tFWeY6Sw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~9u8KAGpgtSm-mQ12Py8RZUbYbDlBhM3w1I2MQO53K2CSn6IePp7g65DBcdXTYMfG1bgoJ-6x30fjnGe-2UYsDQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Bw7uMs4wqB9ahfEqGii2FkQ9pvZmG6HGe2hmbAT2wyM5hpn8Xh5dELysMcEz6hEsqmn6HdRdLOLZhC_fNaXzgA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~BwUq2xXQYuE8ya6HT6lfNsdtEjz5AKGf8GvLY6VBxQyIY1vgj_Gov-3NeM69OS66BQRDK0PG9H4Oyg0R48E4vg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~EkDVUR6dcnzxV_lYjkrJ5QGMVTCvb_upAoBF6DBu61sQkGvZN3fSRTsJ1XfJIZO-JUzdNoVA3D_CcvokL0gnQg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~FUkcLSJ8RAuPenM4HFG1R-sN5-cDBGcTxgR2jaVCna7xV0ZTyBHriB1Nn59mariNlJDiCoBtMUQEmauGxWtfBA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~FqsuZe4RVLOOVUYLTL-GTIohZ8TdSfxx7m2KJtLYFPGOdE4XorTX7Oc7kXbhghPRppXT3jW-slI37M34YNEvLQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~G4F_NtyTj3i46fmKm0NorHAeq8tYWWYf6uv5yC1DwzdpWVoYbOPufmFNvdEbxZt4AMdV0gKx3HI46EAXNOQVFg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~GxetzGUNDgaBBXcTmLK6p9JBDX3I3QPshshbui1IaEWvJbQko-E36tCKwaJYHbleAWz9FqkAM_Tqx3YOmSVkVg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~H1Wjd5kKWDW4t3SDodxiHV72V8WT0xwPubw5cJTNLkPRLgaILFPh-dpy8EOUNgy1KzrDujFsm9EcTsbuqtMPLA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~JpI5MH4zCgebUHFpXVn4zjtsGtMNnO7BQZWfNARAB5UWa9gqz6YXHR3uLCJ_AvJ3lh53BUVkavsx9TY2FMmxbA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~JujNYkJtcux0Ni4QnR64zu4Wz_zYjyKvYaYZm5ypxTLPSzF3_jNE_NO4sdbDamF8wEqWoky1uf4ZE0JT3L607A== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~KJSEA6DKnb2_FRPSqKZGh41eo-C8x448J9kEBrH012bUrZfOSDvrgmIrU0Vz7Ri3gaS9aKKmSaVMvXsHSlTJVA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~MStOwu3jBlJtcRnxrseVOuhI4kCj--ggFPG7sqrq5w1hjrI3bVyD-bm1Jwyx0noY3wT1rHDEvaGWnV2qsGjGwg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~McsJ8kFVf3IjhgXIRdw8Xx-EXgbV071bmlj2BBnk52xrWl3sEeiIyxwUsF7mIWvMRWfcFfu4VGHYyqfk2BeHXw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~NHt9fVe4kDdbxnglKcEwXaRK-WsYEOaD23Kbl8SJPRMYHr_Z6SJd_HmG3BROHHR_M6TgSmucONpDJdTj5tjuFw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Nfo2iwCPcfAcOBIVyoUAK0-PIfr5qYxIKZt-uaSaTBdrTNxAuJ1ItmeDPZ3VdJJmxD_c22No7x482bdd3_yYtw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~S2Qlu11xBhEd5aGSzWsnw1TR8u8PiOF93GO0j5bfNoAFCVzxKOwhRFoIXba2EpQnLQqFdIKyhWN3l70A4GPHmg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~W7a7M37RO9jgck2zeR0471Pm7e8K0Kqj5tXEouDjvqKZXSrWxMaWD28oqkKKYAiU4608R4S9mM11KyphljdMSw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~XUo1oyPCrlL7CA74wG-OzQ06VOWJYWvHGFHU7keZN1SKaIXjHX5qi_kBzjG_rBCi89-S8GVmCy7S3PHSjG8SbQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Xh0VmDvFNMELHu08-vrs54pegVyUwwDRxx_nXkwyD0NjnYozyqcGAKAr_QWHmw6F8XyuWg51M9KGpJJIFzzGuw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~Xve-wMBp_lxVUgD9qH5GwieGP9cAWtm0xULZvdGjBRUMvaevmpCB5gnbMBuIXAO6a1c9v6WUq0jNVX7ut5HvOw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~ZU1XkZFgnEE22CXEF-pOlcj5f10x-KM1Vw9d4IOLu-NiTZcz7koYPixhdrB1PJr8J-h9NpJmfqEastfxamA1jQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~_YkNYEHTsbbtFILJpzH3HenH0t4ShI25dIMdve541CF5bl-jPF3X3F7tq-t5dvP0TEkATsOJdLQdBp1xv4Q-ag== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~boy6mpn2jkwm60jjgQ0TG25UqRdN46LzmgTVCrpy6nBOgkLCGkGHcbceiwjU1itS_vj3-iQX0ZnrWOQrPyfHNA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~bwzpVZ9hAqGDHhXs2FRA82dfGfLmc7-m0uQhZDDfHHO7hQ17M_Np341BZX4WDLhYYS4cdUgaDodlNpdfpG3nXw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~cBxe-9PpAGFdAsYkmdN3lJVqEliLcRYlyoAov0aPZfJGwUr_cOm3XpjO7nmf_2eLf8UAx-rycjnJzw07xLrNCA== +0 -1
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~dirWk6W4Pav1oyciuflfJlRu0iuxbYOmrpQapOJ0mV9C1SQ-jvDRv_7h753Cy18-SwULARUdWsyUy3yNNvxF7w== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~ebwZVjSEHroc9jtIm4jd_h_YAqEBcOkAZ4HPNJT8pLCldjRcTq-obQLakxXOhfuoOBlYBoZLuO-Y0lskeZRYKw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~gfcRcmRIr0h09d0jiZsA7nUeQv2XtapxuYEXZy1Z9um0tTJQvz-O5ef5f7zhLenLvjnDtDtlY_aY4Hvpce6e1Q== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~hgOgiVCyv2R0W-f0qKw5xYPeUwj8_ccCM9vKH_7vAQcCO9t8BwR1APGRBv20AONmp-PYMXmtgsBlQkNBRBpdQA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~hrhCl-YRAAr8ByNB_LCgEBsVNHMp92gTIUknetpUHMjcXl4Hpn_uY-h6C45oga0ZALnfGCo6iKTmiPLa4Qvnpg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~n2yoR7JsyL4DSUwmjnpE4Iq9Qi_eeZrmpPU8cdehDFKfESK7nwxXxfrSMQbk0BQ2lgGPadoRcd1-qr1xVz97jA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~nMCcZm8WvPogyO_nuJ926Q3Q2dqVMN2LdjEL1Kq2wJ_RG-rH-e_6v41l1xZbCsQTa3XykQdEiXNc0HtAvT6IRA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~oc3C7xkUt-OWDL6rrsxs-seS4Fu1bqBWAAXCHalgShaGg9MUrOiRbHT2DcAnhyQFKx6x5FRbvjmYoQWrQiXJZA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~p-ihj7SEgkDXpMu9hvKE_wiX9cvtwyXrdIn964BfedXHKGpC6o7mMPxEyC0kRPVi_EZs_MRV5bAPEpl5h5we0g== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~qlhO_D9oE8uSKH-mZqyRF9pp4Zv1Tv0dIYcqrH4hb1VWlIxcdxmg2j0M8496cQeFXC5bn_JMXdBlD-d6cnFF8w== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~tjpiyIxJR_boTdUNrtFDuKIZoY84fI4lA1oMJbq9e2ZmYKIK5FeRN2O8cV_yMOYJGr4lbv03kTmT70mCjUc2_Q== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~wULeoj18eEKJWAKx1uFQVwS48cUGFcYPRJQj1Ro5XNJsWCwppGSCdIPhwifD6Z2f_j3zfI2SmC2Gg81sBXXW7g== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/data.0~zrEihMys4NVV5rx6FmuzEGO2TjloI3OiC7yzIhvqYoRo43ibb2F-Km6Jf4NX-ac62pOLBYZRcjQTvYMpn75_oA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-7Vi1RszY1XYnR2CCkEwIpKG8NwwA9zsZEz_WD7Dv6kKh4RC7N7ob8NIRVHGUJKp7eXxlpeI_gzD87Pcs_2u0g== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-SKV2drO-SFlrlh-wrzECDMkUSr-aF1lV9h-5onOy94zSTsD-oI45s0-KpOK45L-kq3hRY7v9vm-xmh00_eheg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~-_CU_vuaiFfObSeDFfmp7GuB20ThMSAL-P_RUMowiQLbdu-y0bU9upIm3q8g6XmXUG5hP6J1az0Ma5Hi_rhhRg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~03aPYP6VHJjZj5DlphGarj0xdw43qu09Onx5SReZoPvg9zh5uL212E-KWfGct9jf6JG0JFV2tdbBi7X_8bH9aw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~1Z82GPBBPc1VLvn4O7V5glb6lgyXteNlDREUzV_TPymM4ra4UkBMklzV90lEqoYRCDuRVzaQHaDYbmYp3-8CFw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~1mFDCboXpUu9pSHAiVGr1O_QgqEEtvJp_LUhickxLZo0Z5pj3fvadn1l2MzEOd4bFsVBZifUvcyPa7dzlMWF-A== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~2_L9PUjv2JDKu1n8bDLb4XLB-yex6ZVjDDMwfuKAr7teDw-SKgLgkW6H-m_gjWChIVdB4vW6yvHP7XJxvXtRNA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~4VqMqsI5lOfxRppnud6-VDWcNsU8J7VgFCJfW2dXPwOcAkvU-I8Um5yp9n0Zv6nr3VmcxYggaVMDFfR0U_vjKw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~4krT4ZMzDOu34msFUq0Xod142kw4pAeSWX4JSxlsjOI0Wanu3343qeespgFi61MTWq1DdH9XXspVKqGlGm_fyw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~5_aJsdP-e3dRTAUnH-y1U2plaCuUi1vyHriaZuNK0xFe8wGl9Qft6uLCX2Qt6CRBKJQluEe9o0uRWw1eb42FHQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~8b0bSqV7eND54zvHvu1v2Htpm7yn-BOEFw5d3mITJrXWNykJ5BTR9WbrD80JEctNcT-rDqO2xfrQk1tFWeY6Sw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~9u8KAGpgtSm-mQ12Py8RZUbYbDlBhM3w1I2MQO53K2CSn6IePp7g65DBcdXTYMfG1bgoJ-6x30fjnGe-2UYsDQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Bw7uMs4wqB9ahfEqGii2FkQ9pvZmG6HGe2hmbAT2wyM5hpn8Xh5dELysMcEz6hEsqmn6HdRdLOLZhC_fNaXzgA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~BwUq2xXQYuE8ya6HT6lfNsdtEjz5AKGf8GvLY6VBxQyIY1vgj_Gov-3NeM69OS66BQRDK0PG9H4Oyg0R48E4vg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~EkDVUR6dcnzxV_lYjkrJ5QGMVTCvb_upAoBF6DBu61sQkGvZN3fSRTsJ1XfJIZO-JUzdNoVA3D_CcvokL0gnQg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~FUkcLSJ8RAuPenM4HFG1R-sN5-cDBGcTxgR2jaVCna7xV0ZTyBHriB1Nn59mariNlJDiCoBtMUQEmauGxWtfBA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~FqsuZe4RVLOOVUYLTL-GTIohZ8TdSfxx7m2KJtLYFPGOdE4XorTX7Oc7kXbhghPRppXT3jW-slI37M34YNEvLQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~G4F_NtyTj3i46fmKm0NorHAeq8tYWWYf6uv5yC1DwzdpWVoYbOPufmFNvdEbxZt4AMdV0gKx3HI46EAXNOQVFg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~GxetzGUNDgaBBXcTmLK6p9JBDX3I3QPshshbui1IaEWvJbQko-E36tCKwaJYHbleAWz9FqkAM_Tqx3YOmSVkVg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~H1Wjd5kKWDW4t3SDodxiHV72V8WT0xwPubw5cJTNLkPRLgaILFPh-dpy8EOUNgy1KzrDujFsm9EcTsbuqtMPLA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~JpI5MH4zCgebUHFpXVn4zjtsGtMNnO7BQZWfNARAB5UWa9gqz6YXHR3uLCJ_AvJ3lh53BUVkavsx9TY2FMmxbA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~JujNYkJtcux0Ni4QnR64zu4Wz_zYjyKvYaYZm5ypxTLPSzF3_jNE_NO4sdbDamF8wEqWoky1uf4ZE0JT3L607A== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~KJSEA6DKnb2_FRPSqKZGh41eo-C8x448J9kEBrH012bUrZfOSDvrgmIrU0Vz7Ri3gaS9aKKmSaVMvXsHSlTJVA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~MStOwu3jBlJtcRnxrseVOuhI4kCj--ggFPG7sqrq5w1hjrI3bVyD-bm1Jwyx0noY3wT1rHDEvaGWnV2qsGjGwg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~McsJ8kFVf3IjhgXIRdw8Xx-EXgbV071bmlj2BBnk52xrWl3sEeiIyxwUsF7mIWvMRWfcFfu4VGHYyqfk2BeHXw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~NHt9fVe4kDdbxnglKcEwXaRK-WsYEOaD23Kbl8SJPRMYHr_Z6SJd_HmG3BROHHR_M6TgSmucONpDJdTj5tjuFw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Nfo2iwCPcfAcOBIVyoUAK0-PIfr5qYxIKZt-uaSaTBdrTNxAuJ1ItmeDPZ3VdJJmxD_c22No7x482bdd3_yYtw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~S2Qlu11xBhEd5aGSzWsnw1TR8u8PiOF93GO0j5bfNoAFCVzxKOwhRFoIXba2EpQnLQqFdIKyhWN3l70A4GPHmg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~W7a7M37RO9jgck2zeR0471Pm7e8K0Kqj5tXEouDjvqKZXSrWxMaWD28oqkKKYAiU4608R4S9mM11KyphljdMSw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~XUo1oyPCrlL7CA74wG-OzQ06VOWJYWvHGFHU7keZN1SKaIXjHX5qi_kBzjG_rBCi89-S8GVmCy7S3PHSjG8SbQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Xh0VmDvFNMELHu08-vrs54pegVyUwwDRxx_nXkwyD0NjnYozyqcGAKAr_QWHmw6F8XyuWg51M9KGpJJIFzzGuw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~Xve-wMBp_lxVUgD9qH5GwieGP9cAWtm0xULZvdGjBRUMvaevmpCB5gnbMBuIXAO6a1c9v6WUq0jNVX7ut5HvOw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~ZU1XkZFgnEE22CXEF-pOlcj5f10x-KM1Vw9d4IOLu-NiTZcz7koYPixhdrB1PJr8J-h9NpJmfqEastfxamA1jQ== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~_YkNYEHTsbbtFILJpzH3HenH0t4ShI25dIMdve541CF5bl-jPF3X3F7tq-t5dvP0TEkATsOJdLQdBp1xv4Q-ag== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~boy6mpn2jkwm60jjgQ0TG25UqRdN46LzmgTVCrpy6nBOgkLCGkGHcbceiwjU1itS_vj3-iQX0ZnrWOQrPyfHNA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~bwzpVZ9hAqGDHhXs2FRA82dfGfLmc7-m0uQhZDDfHHO7hQ17M_Np341BZX4WDLhYYS4cdUgaDodlNpdfpG3nXw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~cBxe-9PpAGFdAsYkmdN3lJVqEliLcRYlyoAov0aPZfJGwUr_cOm3XpjO7nmf_2eLf8UAx-rycjnJzw07xLrNCA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~dirWk6W4Pav1oyciuflfJlRu0iuxbYOmrpQapOJ0mV9C1SQ-jvDRv_7h753Cy18-SwULARUdWsyUy3yNNvxF7w== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~ebwZVjSEHroc9jtIm4jd_h_YAqEBcOkAZ4HPNJT8pLCldjRcTq-obQLakxXOhfuoOBlYBoZLuO-Y0lskeZRYKw== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~gfcRcmRIr0h09d0jiZsA7nUeQv2XtapxuYEXZy1Z9um0tTJQvz-O5ef5f7zhLenLvjnDtDtlY_aY4Hvpce6e1Q== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~hgOgiVCyv2R0W-f0qKw5xYPeUwj8_ccCM9vKH_7vAQcCO9t8BwR1APGRBv20AONmp-PYMXmtgsBlQkNBRBpdQA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~hrhCl-YRAAr8ByNB_LCgEBsVNHMp92gTIUknetpUHMjcXl4Hpn_uY-h6C45oga0ZALnfGCo6iKTmiPLa4Qvnpg== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~n2yoR7JsyL4DSUwmjnpE4Iq9Qi_eeZrmpPU8cdehDFKfESK7nwxXxfrSMQbk0BQ2lgGPadoRcd1-qr1xVz97jA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~nMCcZm8WvPogyO_nuJ926Q3Q2dqVMN2LdjEL1Kq2wJ_RG-rH-e_6v41l1xZbCsQTa3XykQdEiXNc0HtAvT6IRA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~oc3C7xkUt-OWDL6rrsxs-seS4Fu1bqBWAAXCHalgShaGg9MUrOiRbHT2DcAnhyQFKx6x5FRbvjmYoQWrQiXJZA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~p-ihj7SEgkDXpMu9hvKE_wiX9cvtwyXrdIn964BfedXHKGpC6o7mMPxEyC0kRPVi_EZs_MRV5bAPEpl5h5we0g== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~qlhO_D9oE8uSKH-mZqyRF9pp4Zv1Tv0dIYcqrH4hb1VWlIxcdxmg2j0M8496cQeFXC5bn_JMXdBlD-d6cnFF8w== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~tjpiyIxJR_boTdUNrtFDuKIZoY84fI4lA1oMJbq9e2ZmYKIK5FeRN2O8cV_yMOYJGr4lbv03kTmT70mCjUc2_Q== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~wULeoj18eEKJWAKx1uFQVwS48cUGFcYPRJQj1Ro5XNJsWCwppGSCdIPhwifD6Z2f_j3zfI2SmC2Gg81sBXXW7g== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Data/refs.0~zrEihMys4NVV5rx6FmuzEGO2TjloI3OiC7yzIhvqYoRo43ibb2F-Km6Jf4NX-ac62pOLBYZRcjQTvYMpn75_oA== +0 -0
- package/Tests/Artifacts/LottieTests.xcresult/Info.plist +0 -29
- package/Tests/Samples/9squares_AlBoardman.json +0 -1
- package/Tests/Samples/Boat_Loader.json +0 -1
- package/Tests/Samples/HamburgerArrow.json +0 -1
- package/Tests/Samples/IconTransitions.json +0 -1
- package/Tests/Samples/Images/dog.png +0 -0
- package/Tests/Samples/Issues/issue_1403.json +0 -1
- package/Tests/Samples/Issues/issue_1407.json +0 -1
- package/Tests/Samples/Issues/issue_1488.json +0 -1
- package/Tests/Samples/Issues/issue_1505.json +0 -1
- package/Tests/Samples/Issues/issue_1628.json +0 -1
- package/Tests/Samples/Issues/pr_1536.json +0 -1
- package/Tests/Samples/Issues/pr_1563.json +0 -8439
- package/Tests/Samples/Issues/pr_1592.json +0 -5527
- package/Tests/Samples/Issues/pr_1599.json +0 -738
- package/Tests/Samples/Issues/pr_1604_1.json +0 -1
- package/Tests/Samples/Issues/pr_1604_2.json +0 -1
- package/Tests/Samples/LottieFiles/LICENSE.md +0 -14
- package/Tests/Samples/LottieFiles/bounce_strokes.json +0 -1
- package/Tests/Samples/LottieFiles/cactus.json +0 -1
- package/Tests/Samples/LottieFiles/dog_car_ride.json +0 -1
- package/Tests/Samples/LottieFiles/draft_icon.json +0 -1
- package/Tests/Samples/LottieFiles/gradient_1.json +0 -1
- package/Tests/Samples/LottieFiles/gradient_2.json +0 -1
- package/Tests/Samples/LottieFiles/gradient_pill.json +0 -1
- package/Tests/Samples/LottieFiles/gradient_shapes.json +0 -1
- package/Tests/Samples/LottieFiles/gradient_square.json +0 -1
- package/Tests/Samples/LottieFiles/growth.json +0 -1
- package/Tests/Samples/LottieFiles/infinity_loader.json +0 -1
- package/Tests/Samples/LottieFiles/loading_dots_1.json +0 -1
- package/Tests/Samples/LottieFiles/loading_dots_2.json +0 -1
- package/Tests/Samples/LottieFiles/loading_dots_3.json +0 -1
- package/Tests/Samples/LottieFiles/loading_gradient_strokes.json +0 -1
- package/Tests/Samples/LottieFiles/settings_slider.json +0 -1
- package/Tests/Samples/LottieFiles/shop.json +0 -1
- package/Tests/Samples/LottieFiles/step_loader.json +0 -1
- package/Tests/Samples/LottieLogo1.json +0 -1
- package/Tests/Samples/LottieLogo1_masked.json +0 -1
- package/Tests/Samples/LottieLogo2.json +0 -1
- package/Tests/Samples/MotionCorpse_Jrcanest.json +0 -1
- package/Tests/Samples/Nonanimating/BasicLayers.json +0 -1
- package/Tests/Samples/Nonanimating/DisableNodesTest.json +0 -1
- package/Tests/Samples/Nonanimating/FirstText.json +0 -1
- package/Tests/Samples/Nonanimating/GeometryTransformTest.json +0 -1
- package/Tests/Samples/Nonanimating/Text_AnimatedProperties.json +0 -1
- package/Tests/Samples/Nonanimating/Text_Glyph.json +0 -1
- package/Tests/Samples/Nonanimating/Text_NoAnimation.json +0 -1
- package/Tests/Samples/Nonanimating/Text_NoGlyph.json +0 -1
- package/Tests/Samples/Nonanimating/Zoom.json +0 -1
- package/Tests/Samples/Nonanimating/_dog.json +0 -1
- package/Tests/Samples/Nonanimating/base64Test.json +0 -1
- package/Tests/Samples/Nonanimating/blend_mode_test.json +0 -1
- package/Tests/Samples/Nonanimating/keypathTest.json +0 -1
- package/Tests/Samples/Nonanimating/verifyLineHeight.json +0 -1
- package/Tests/Samples/PinJump.json +0 -1
- package/Tests/Samples/Private/BrokenLottieFiles/growth_man.json +0 -874
- package/Tests/Samples/Private/BrokenLottieFiles/rocket.json +0 -1
- package/Tests/Samples/Private/China_EmptyState_Itinerary.json +0 -1
- package/Tests/Samples/Private/LoaderHourglass.json +0 -12070
- package/Tests/Samples/Private/README.md +0 -7
- package/Tests/Samples/Private/Urgency/alarm_animated.json +0 -1
- package/Tests/Samples/Private/Urgency/diamond_animated.json +0 -1
- package/Tests/Samples/Private/Urgency/eye_animated.json +0 -1
- package/Tests/Samples/Private/Urgency/light_bulb_animated.json +0 -1
- package/Tests/Samples/Private/Urgency/light_bulb_static.json +0 -1
- package/Tests/Samples/Private/Urgency/piggy_bank_static.json +0 -1
- package/Tests/Samples/Private/Urgency/price_tag_legacy.json +0 -1
- package/Tests/Samples/Private/Urgency/rausch_alarm.json +0 -1
- package/Tests/Samples/Private/Urgency/rausch_alert.json +0 -1
- package/Tests/Samples/Private/Urgency/rausch_clock.json +0 -1
- package/Tests/Samples/Private/Urgency/rausch_diamond.json +0 -1
- package/Tests/Samples/Private/Urgency/rausch_money.json +0 -1
- package/Tests/Samples/Private/Urgency/rausch_piggy_bank.json +0 -1
- package/Tests/Samples/Private/Urgency/rausch_tag.json +0 -1
- package/Tests/Samples/Private/Urgency/red_envelope_animated.json +0 -1
- package/Tests/Samples/Private/Urgency/tag_animated.json +0 -1
- package/Tests/Samples/Private/Urgency/trophy_animated.json +0 -1
- package/Tests/Samples/Private/Urgency/wings_key_animated.json +0 -1
- package/Tests/Samples/Private/_flexible.json +0 -1
- package/Tests/Samples/Private/aircover.json +0 -1
- package/Tests/Samples/Private/belo_spin_rausch.json +0 -1
- package/Tests/Samples/Private/celebration.json +0 -2821
- package/Tests/Samples/Private/checkbox.json +0 -1
- package/Tests/Samples/Private/checkbox_small.json +0 -1
- package/Tests/Samples/Private/getting_your_trip_ready.json +0 -3540
- package/Tests/Samples/Private/gradient_afternoon.json +0 -1
- package/Tests/Samples/Private/gradient_brand.json +0 -1
- package/Tests/Samples/Private/gradient_evening.json +0 -1
- package/Tests/Samples/Private/gradient_morning.json +0 -1
- package/Tests/Samples/Private/issue_1467.json +0 -1
- package/Tests/Samples/Private/loading_dots.json +0 -1
- package/Tests/Samples/Private/loading_dots_small.json +0 -1
- package/Tests/Samples/Private/payment_loader.json +0 -1
- package/Tests/Samples/Private/radio_button.json +0 -1
- package/Tests/Samples/Private/selfie_intro.json +0 -1
- package/Tests/Samples/Private/stepper_add.json +0 -1
- package/Tests/Samples/Private/stepper_subtract.json +0 -1
- package/Tests/Samples/Private/switch.json +0 -1
- package/Tests/Samples/Private/thumb.json +0 -1
- package/Tests/Samples/Private/toggle_no.json +0 -1
- package/Tests/Samples/Private/toggle_yes.json +0 -1
- package/Tests/Samples/Private/user_error_black_and_white.json +0 -1
- package/Tests/Samples/Private/user_error_cut_off.json +0 -1
- package/Tests/Samples/Switch.json +0 -1
- package/Tests/Samples/Switch_States.json +0 -1
- package/Tests/Samples/TwitterHeart.json +0 -1
- package/Tests/Samples/TwitterHeartButton.json +0 -1
- package/Tests/Samples/TypeFace/A.json +0 -1
- package/Tests/Samples/TypeFace/Apostrophe.json +0 -1
- package/Tests/Samples/TypeFace/B.json +0 -1
- package/Tests/Samples/TypeFace/BlinkingCursor.json +0 -1
- package/Tests/Samples/TypeFace/C.json +0 -1
- package/Tests/Samples/TypeFace/Colon.json +0 -1
- package/Tests/Samples/TypeFace/Comma.json +0 -1
- package/Tests/Samples/TypeFace/D.json +0 -1
- package/Tests/Samples/TypeFace/E.json +0 -1
- package/Tests/Samples/TypeFace/F.json +0 -1
- package/Tests/Samples/TypeFace/G.json +0 -1
- package/Tests/Samples/TypeFace/H.json +0 -1
- package/Tests/Samples/TypeFace/I.json +0 -1
- package/Tests/Samples/TypeFace/J.json +0 -1
- package/Tests/Samples/TypeFace/K.json +0 -1
- package/Tests/Samples/TypeFace/L.json +0 -1
- package/Tests/Samples/TypeFace/M.json +0 -1
- package/Tests/Samples/TypeFace/N.json +0 -1
- package/Tests/Samples/TypeFace/O.json +0 -1
- package/Tests/Samples/TypeFace/P.json +0 -1
- package/Tests/Samples/TypeFace/Q.json +0 -1
- package/Tests/Samples/TypeFace/R.json +0 -1
- package/Tests/Samples/TypeFace/S.json +0 -1
- package/Tests/Samples/TypeFace/T.json +0 -1
- package/Tests/Samples/TypeFace/U.json +0 -1
- package/Tests/Samples/TypeFace/V.json +0 -1
- package/Tests/Samples/TypeFace/W.json +0 -1
- package/Tests/Samples/TypeFace/X.json +0 -1
- package/Tests/Samples/TypeFace/Y.json +0 -1
- package/Tests/Samples/TypeFace/Z.json +0 -1
- package/Tests/Samples/Watermelon.json +0 -1
- package/Tests/Samples/setValueTest.json +0 -1
- package/Tests/Samples/timeremap.json +0 -1
- package/Tests/Samples/vcTransition1.json +0 -1
- package/Tests/Samples/vcTransition2.json +0 -1
- package/script/lint/airbnb.swiftformat +0 -68
- package/script/lint/swiftlint.yml +0 -38
- package/script/test-carthage/Carthage/Build/.lottie-ios.version +0 -19
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/Info.plist +0 -46
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/BCSymbolMaps/BF971162-BE99-3507-B5B3-11947DC6B176.bcsymbolmap +0 -14778
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Headers/Lottie-Swift.h +0 -673
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Info.plist +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Lottie +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64-apple-ios.swiftmodule +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftdoc +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftmodule +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/Lottie.framework/Modules/module.modulemap +0 -4
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/dSYMs/Lottie.framework.dSYM/Contents/Info.plist +0 -20
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64/dSYMs/Lottie.framework.dSYM/Contents/Resources/DWARF/Lottie +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Headers/Lottie-Swift.h +0 -1352
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Info.plist +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Lottie +0 -0
- 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
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
- 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
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/Project/x86_64.swiftsourceinfo +0 -0
- 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
- 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
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftdoc +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/arm64.swiftmodule +0 -0
- 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
- 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
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/x86_64.swiftdoc +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/Lottie.swiftmodule/x86_64.swiftmodule +0 -0
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/Modules/module.modulemap +0 -4
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/Lottie.framework/_CodeSignature/CodeResources +0 -256
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/dSYMs/Lottie.framework.dSYM/Contents/Info.plist +0 -20
- package/script/test-carthage/Carthage/Build/Lottie.xcframework/ios-arm64_x86_64-simulator/dSYMs/Lottie.framework.dSYM/Contents/Resources/DWARF/Lottie +0 -0
- package/script/test-carthage/Carthage/Checkouts/lottie-ios/Lottie.xcodeproj/project.xcworkspace/xcuserdata/cal.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/script/test-carthage/Carthage/Checkouts/lottie-ios/Lottie.xcodeproj/xcuserdata/cal.xcuserdatad/xcschemes/xcschememanagement.plist +0 -37
- 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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
@@ -10,8 +10,19 @@ public final class LottieLogger {
|
|
|
10
10
|
// MARK: Lifecycle
|
|
11
11
|
|
|
12
12
|
public init(
|
|
13
|
-
assert: @escaping Assert =
|
|
14
|
-
|
|
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
|
}
|
|
@@ -18,20 +18,26 @@ open class AnimatedButton: AnimatedControl {
|
|
|
18
18
|
configuration: LottieConfiguration = .shared)
|
|
19
19
|
{
|
|
20
20
|
super.init(animation: animation, configuration: configuration)
|
|
21
|
-
|
|
21
|
+
isAccessibilityElement = true
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
public override init() {
|
|
25
25
|
super.init()
|
|
26
|
-
|
|
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:
|
|
79
|
+
// MARK: Private
|
|
74
80
|
|
|
75
|
-
|
|
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:
|
|
159
|
+
// MARK: Private
|
|
162
160
|
|
|
163
|
-
|
|
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
|
-
|
|
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)
|
|
@@ -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
|
|
package/Tests/ParsingTests.swift
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
137
|
+
LottieLogger.shared.info("\(engineB) engine took \(engineBPerformance) seconds")
|
|
138
138
|
|
|
139
139
|
let ratio = engineBPerformance / engineAPerformance
|
|
140
|
-
|
|
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
|
-
|
|
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
|
-
|
|
171
|
+
LottieLogger.shared.info("Core Animation engine took \(coreAnimationEnginePerformance) seconds")
|
|
172
172
|
|
|
173
173
|
let ratio = coreAnimationEnginePerformance / mainThreadEnginePerformance
|
|
174
|
-
|
|
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
|
-
|
|
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
|
-
|
|
193
|
+
LottieLogger.shared.info("DictionaryBased deserialization took \(dictPerformance) seconds")
|
|
194
194
|
let ratio = codablePerformance / dictPerformance
|
|
195
|
-
|
|
195
|
+
LottieLogger.shared.info("Codable deserialization took \(ratio)x as long as DictionaryBased")
|
|
196
196
|
return ratio
|
|
197
197
|
}
|
|
198
198
|
|
package/lottie-ios.podspec
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
Pod::Spec.new do |s|
|
|
10
10
|
s.name = 'lottie-ios'
|
|
11
|
-
s.version = '3.4.
|
|
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.
|
|
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
|
-
_
|
|
11
|
-
didFinishLaunchingWithOptions
|
|
10
|
+
_: UIApplication,
|
|
11
|
+
didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?)
|
|
12
12
|
-> Bool
|
|
13
13
|
{
|
|
14
|
-
|
|
14
|
+
true
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
func application(
|
|
18
|
-
_
|
|
18
|
+
_: UIApplication,
|
|
19
19
|
configurationForConnecting connectingSceneSession: UISceneSession,
|
|
20
|
-
options: UIScene.ConnectionOptions)
|
|
20
|
+
options _: UIScene.ConnectionOptions)
|
|
21
21
|
-> UISceneConfiguration
|
|
22
22
|
{
|
|
23
|
-
|
|
23
|
+
UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
}
|
|
27
|
-
|