diff --git a/.swift-version b/.swift-version index a75b92f..9ad974f 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -5.1 +5.5 diff --git a/Cartfile b/Cartfile index e31f930..4d6b5df 100644 --- a/Cartfile +++ b/Cartfile @@ -1 +1 @@ -github "fxm90/LightweightObservable" ~> 1.0 +github "fxm90/LightweightObservable" ~> 2.0 diff --git a/Example/.swiftlint.yml b/Example/.swiftlint.yml index aba31df..5fa16ca 100644 --- a/Example/.swiftlint.yml +++ b/Example/.swiftlint.yml @@ -10,7 +10,7 @@ file_header: required_pattern: | \/\/ \/\/ SWIFTLINT_CURRENT_FILENAME - \/\/ (GradientProgressBar|GradientProgressBar_Example|GradientProgressBar_Tests|GradientProgressBar_SnapshotTests) + \/\/ (GradientProgressBar|Example|ExampleTests|ExampleSnapshotTests) \/\/ \/\/ Created by .*? on \d{2}\.\d{2}\.\d{2}\. \/\/ Copyright © \d{4} .*?\. All rights reserved\. diff --git a/Example/Example.xcodeproj/project.pbxproj b/Example/Example.xcodeproj/project.pbxproj new file mode 100644 index 0000000..7326c58 --- /dev/null +++ b/Example/Example.xcodeproj/project.pbxproj @@ -0,0 +1,934 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 7EEF33172A24B21109F134F2 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ACB96733E146333E508B6A2F /* Pods_Example.framework */; }; + 839C161324A38E192DC91566 /* Pods_ExampleTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 36A15481FCE345CA4746C396 /* Pods_ExampleTests.framework */; }; + C8C645F5E78C8F0B4ACF63B7 /* Pods_ExampleSnapshotTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B83154B34980384C1059122A /* Pods_ExampleSnapshotTests.framework */; }; + DC20E6E427AD09B300AE9158 /* WebViewExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DC20E6E327AD09B300AE9158 /* WebViewExample.storyboard */; }; + DC20E6E627AD18DE00AE9158 /* AdvancedExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DC20E6E527AD18DE00AE9158 /* AdvancedExample.storyboard */; }; + DC20E6E827AD192A00AE9158 /* BasicExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DC20E6E727AD192A00AE9158 /* BasicExample.storyboard */; }; + DC54A53527AD298100B14516 /* GradientProgressBarTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC54A52F27AD298100B14516 /* GradientProgressBarTestCase.swift */; }; + DC54A53627AD298100B14516 /* UIColorMakeDynamicColorTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC54A53127AD298100B14516 /* UIColorMakeDynamicColorTestCase.swift */; }; + DC54A53727AD298100B14516 /* MaskLayerViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC54A53327AD298100B14516 /* MaskLayerViewModelTestCase.swift */; }; + DC54A53827AD298100B14516 /* GradientLayerViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC54A53427AD298100B14516 /* GradientLayerViewModelTestCase.swift */; }; + DC54A55427AD2B0900B14516 /* GradientProgressBarSnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC54A54627AD2B0900B14516 /* GradientProgressBarSnapshotTestCase.swift */; }; + DC54A55E27AD2B0900B14516 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = DC54A55327AD2B0900B14516 /* README.md */; }; + DC7AF94E27B1918900E1CE98 /* GradientProgressBarViewStyleSnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC7AF94D27B1918900E1CE98 /* GradientProgressBarViewStyleSnapshotTestCase.swift */; }; + DCA889BB27AC199E00CF909E /* BasicExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA889B927AC199E00CF909E /* BasicExampleViewController.swift */; }; + DCA889C127AC1B7F00CF909E /* AdvancedExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA889BF27AC1B7F00CF909E /* AdvancedExampleViewController.swift */; }; + DCA889C527AC1BC100CF909E /* WebViewExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA889C327AC1BC100CF909E /* WebViewExampleViewController.swift */; }; + DCAD8B5627AC3187002B3086 /* SwiftUIExampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCAD8B5527AC3187002B3086 /* SwiftUIExampleView.swift */; }; + DCAD8B5927AC3DCC002B3086 /* StoryboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCAD8B5827AC3DCC002B3086 /* StoryboardView.swift */; }; + DCC7AADC27ABE70F00B76102 /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCC7AADB27ABE70F00B76102 /* ExampleApp.swift */; }; + DCC7AADE27ABE70F00B76102 /* EntryPointView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCC7AADD27ABE70F00B76102 /* EntryPointView.swift */; }; + DCC7AAE027ABE71000B76102 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCC7AADF27ABE71000B76102 /* Assets.xcassets */; }; + DCC7AAE327ABE71000B76102 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCC7AAE227ABE71000B76102 /* Preview Assets.xcassets */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + DC54A54127AD2AD700B14516 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DCC7AAD027ABE70F00B76102 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DCC7AAD727ABE70F00B76102; + remoteInfo = Example; + }; + DCC7AAE927ABE71100B76102 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DCC7AAD027ABE70F00B76102 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DCC7AAD727ABE70F00B76102; + remoteInfo = Example; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 1318ACAFEABEBF83E0D26715 /* Pods-ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests.debug.xcconfig"; sourceTree = ""; }; + 1831E7A373F6BCA1512AEC2C /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = ""; }; + 2037CDACDEC69585E60EA450 /* Pods-ExampleSnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleSnapshotTests.release.xcconfig"; path = "Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.release.xcconfig"; sourceTree = ""; }; + 2C4F19E3F77A4916EC02A22A /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = ""; }; + 36A15481FCE345CA4746C396 /* Pods_ExampleTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ExampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 55F7E9841D37A27B102B2C68 /* Pods-ExampleSnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleSnapshotTests.debug.xcconfig"; path = "Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.debug.xcconfig"; sourceTree = ""; }; + ACB96733E146333E508B6A2F /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B83154B34980384C1059122A /* Pods_ExampleSnapshotTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ExampleSnapshotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C1B6E121C67FC6811F5EF560 /* Pods-ExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleTests.release.xcconfig"; path = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests.release.xcconfig"; sourceTree = ""; }; + DC20E6E327AD09B300AE9158 /* WebViewExample.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = WebViewExample.storyboard; sourceTree = ""; }; + DC20E6E527AD18DE00AE9158 /* AdvancedExample.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = AdvancedExample.storyboard; sourceTree = ""; }; + DC20E6E727AD192A00AE9158 /* BasicExample.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = BasicExample.storyboard; sourceTree = ""; }; + DC54A52F27AD298100B14516 /* GradientProgressBarTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientProgressBarTestCase.swift; sourceTree = ""; }; + DC54A53127AD298100B14516 /* UIColorMakeDynamicColorTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIColorMakeDynamicColorTestCase.swift; sourceTree = ""; }; + DC54A53327AD298100B14516 /* MaskLayerViewModelTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MaskLayerViewModelTestCase.swift; sourceTree = ""; }; + DC54A53427AD298100B14516 /* GradientLayerViewModelTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientLayerViewModelTestCase.swift; sourceTree = ""; }; + DC54A53D27AD2AD700B14516 /* ExampleSnapshotTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleSnapshotTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DC54A54627AD2B0900B14516 /* GradientProgressBarSnapshotTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientProgressBarSnapshotTestCase.swift; sourceTree = ""; }; + DC54A55327AD2B0900B14516 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + DC7AF94D27B1918900E1CE98 /* GradientProgressBarViewStyleSnapshotTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientProgressBarViewStyleSnapshotTestCase.swift; sourceTree = ""; }; + DCA889B927AC199E00CF909E /* BasicExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicExampleViewController.swift; sourceTree = ""; }; + DCA889BF27AC1B7F00CF909E /* AdvancedExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedExampleViewController.swift; sourceTree = ""; }; + DCA889C327AC1BC100CF909E /* WebViewExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewExampleViewController.swift; sourceTree = ""; }; + DCAD8B5527AC3187002B3086 /* SwiftUIExampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIExampleView.swift; sourceTree = ""; }; + DCAD8B5827AC3DCC002B3086 /* StoryboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoryboardView.swift; sourceTree = ""; }; + DCC7AAD827ABE70F00B76102 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DCC7AADB27ABE70F00B76102 /* ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleApp.swift; sourceTree = ""; }; + DCC7AADD27ABE70F00B76102 /* EntryPointView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryPointView.swift; sourceTree = ""; }; + DCC7AADF27ABE71000B76102 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DCC7AAE227ABE71000B76102 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + DCC7AAE827ABE71100B76102 /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DC54A53A27AD2AD700B14516 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C8C645F5E78C8F0B4ACF63B7 /* Pods_ExampleSnapshotTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCC7AAD527ABE70F00B76102 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7EEF33172A24B21109F134F2 /* Pods_Example.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCC7AAE527ABE71100B76102 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 839C161324A38E192DC91566 /* Pods_ExampleTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 17D2B84FB8173F77B1852EB1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ACB96733E146333E508B6A2F /* Pods_Example.framework */, + 36A15481FCE345CA4746C396 /* Pods_ExampleTests.framework */, + B83154B34980384C1059122A /* Pods_ExampleSnapshotTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DC54A53027AD298100B14516 /* Extensions */ = { + isa = PBXGroup; + children = ( + DC54A53127AD298100B14516 /* UIColorMakeDynamicColorTestCase.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + DC54A53227AD298100B14516 /* ViewModel */ = { + isa = PBXGroup; + children = ( + DC54A53327AD298100B14516 /* MaskLayerViewModelTestCase.swift */, + DC54A53427AD298100B14516 /* GradientLayerViewModelTestCase.swift */, + ); + path = ViewModel; + sourceTree = ""; + }; + DC54A53E27AD2AD700B14516 /* ExampleSnapshotTests */ = { + isa = PBXGroup; + children = ( + DC54A54627AD2B0900B14516 /* GradientProgressBarSnapshotTestCase.swift */, + DC7AF94D27B1918900E1CE98 /* GradientProgressBarViewStyleSnapshotTestCase.swift */, + DC54A55327AD2B0900B14516 /* README.md */, + ); + path = ExampleSnapshotTests; + sourceTree = ""; + }; + DCAA8BDC27AC101000386609 /* BasicExample */ = { + isa = PBXGroup; + children = ( + DCA889B927AC199E00CF909E /* BasicExampleViewController.swift */, + DC20E6E727AD192A00AE9158 /* BasicExample.storyboard */, + ); + path = BasicExample; + sourceTree = ""; + }; + DCAA8BDD27AC101800386609 /* AdvancedExample */ = { + isa = PBXGroup; + children = ( + DCA889BF27AC1B7F00CF909E /* AdvancedExampleViewController.swift */, + DC20E6E527AD18DE00AE9158 /* AdvancedExample.storyboard */, + ); + path = AdvancedExample; + sourceTree = ""; + }; + DCAA8BDE27AC102000386609 /* WebViewExample */ = { + isa = PBXGroup; + children = ( + DCA889C327AC1BC100CF909E /* WebViewExampleViewController.swift */, + DC20E6E327AD09B300AE9158 /* WebViewExample.storyboard */, + ); + path = WebViewExample; + sourceTree = ""; + }; + DCAA8BDF27AC102B00386609 /* SwiftUIExample */ = { + isa = PBXGroup; + children = ( + DCAD8B5527AC3187002B3086 /* SwiftUIExampleView.swift */, + ); + path = SwiftUIExample; + sourceTree = ""; + }; + DCAA8BE227AC10C900386609 /* Preview Content */ = { + isa = PBXGroup; + children = ( + DCC7AAE227ABE71000B76102 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + DCAA8BE327AC10E600386609 /* Scenes */ = { + isa = PBXGroup; + children = ( + DCAA8BDD27AC101800386609 /* AdvancedExample */, + DCAA8BDC27AC101000386609 /* BasicExample */, + DCAA8BDF27AC102B00386609 /* SwiftUIExample */, + DCAA8BDE27AC102000386609 /* WebViewExample */, + DCC7AADD27ABE70F00B76102 /* EntryPointView.swift */, + ); + path = Scenes; + sourceTree = ""; + }; + DCAD8B5727AC3DB6002B3086 /* Helper */ = { + isa = PBXGroup; + children = ( + DCAD8B5827AC3DCC002B3086 /* StoryboardView.swift */, + ); + path = Helper; + sourceTree = ""; + }; + DCC7AACF27ABE70F00B76102 = { + isa = PBXGroup; + children = ( + DCC7AADA27ABE70F00B76102 /* Example */, + DCC7AAEB27ABE71100B76102 /* ExampleTests */, + DC54A53E27AD2AD700B14516 /* ExampleSnapshotTests */, + DCC7AAD927ABE70F00B76102 /* Products */, + EF64A6D19502906A7546DFEF /* Pods */, + 17D2B84FB8173F77B1852EB1 /* Frameworks */, + ); + sourceTree = ""; + }; + DCC7AAD927ABE70F00B76102 /* Products */ = { + isa = PBXGroup; + children = ( + DCC7AAD827ABE70F00B76102 /* Example.app */, + DCC7AAE827ABE71100B76102 /* ExampleTests.xctest */, + DC54A53D27AD2AD700B14516 /* ExampleSnapshotTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + DCC7AADA27ABE70F00B76102 /* Example */ = { + isa = PBXGroup; + children = ( + DCAD8B5727AC3DB6002B3086 /* Helper */, + DCAA8BE227AC10C900386609 /* Preview Content */, + DCAA8BE327AC10E600386609 /* Scenes */, + DCC7AADB27ABE70F00B76102 /* ExampleApp.swift */, + DCC7AADF27ABE71000B76102 /* Assets.xcassets */, + ); + path = Example; + sourceTree = ""; + }; + DCC7AAEB27ABE71100B76102 /* ExampleTests */ = { + isa = PBXGroup; + children = ( + DC54A53027AD298100B14516 /* Extensions */, + DC54A53227AD298100B14516 /* ViewModel */, + DC54A52F27AD298100B14516 /* GradientProgressBarTestCase.swift */, + ); + path = ExampleTests; + sourceTree = ""; + }; + EF64A6D19502906A7546DFEF /* Pods */ = { + isa = PBXGroup; + children = ( + 1831E7A373F6BCA1512AEC2C /* Pods-Example.debug.xcconfig */, + 2C4F19E3F77A4916EC02A22A /* Pods-Example.release.xcconfig */, + 1318ACAFEABEBF83E0D26715 /* Pods-ExampleTests.debug.xcconfig */, + C1B6E121C67FC6811F5EF560 /* Pods-ExampleTests.release.xcconfig */, + 55F7E9841D37A27B102B2C68 /* Pods-ExampleSnapshotTests.debug.xcconfig */, + 2037CDACDEC69585E60EA450 /* Pods-ExampleSnapshotTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DC54A53C27AD2AD700B14516 /* ExampleSnapshotTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DC54A54327AD2AD700B14516 /* Build configuration list for PBXNativeTarget "ExampleSnapshotTests" */; + buildPhases = ( + A917172FC6918351F8D9BCA9 /* [CP] Check Pods Manifest.lock */, + DC54A53927AD2AD700B14516 /* Sources */, + DC54A53A27AD2AD700B14516 /* Frameworks */, + DC54A53B27AD2AD700B14516 /* Resources */, + C73348C666E6BEBE983775D9 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + DC54A54227AD2AD700B14516 /* PBXTargetDependency */, + ); + name = ExampleSnapshotTests; + productName = ExampleSnapshotTests; + productReference = DC54A53D27AD2AD700B14516 /* ExampleSnapshotTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + DCC7AAD727ABE70F00B76102 /* Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = DCC7AAFC27ABE71100B76102 /* Build configuration list for PBXNativeTarget "Example" */; + buildPhases = ( + 66682AC48EF2F6EFCAE02228 /* [CP] Check Pods Manifest.lock */, + DCC7AAD427ABE70F00B76102 /* Sources */, + DCC7AAD527ABE70F00B76102 /* Frameworks */, + DCC7AAD627ABE70F00B76102 /* Resources */, + 3A10251140C959206F87EBD9 /* [CP] Embed Pods Frameworks */, + DCAA8BE027AC109800386609 /* SwiftFormat */, + DCAA8BE127AC10A400386609 /* SwiftLint */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Example; + productName = Example; + productReference = DCC7AAD827ABE70F00B76102 /* Example.app */; + productType = "com.apple.product-type.application"; + }; + DCC7AAE727ABE71100B76102 /* ExampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DCC7AAFF27ABE71100B76102 /* Build configuration list for PBXNativeTarget "ExampleTests" */; + buildPhases = ( + 56C42F72357CE4E21218DA75 /* [CP] Check Pods Manifest.lock */, + DCC7AAE427ABE71100B76102 /* Sources */, + DCC7AAE527ABE71100B76102 /* Frameworks */, + DCC7AAE627ABE71100B76102 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DCC7AAEA27ABE71100B76102 /* PBXTargetDependency */, + ); + name = ExampleTests; + productName = ExampleTests; + productReference = DCC7AAE827ABE71100B76102 /* ExampleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DCC7AAD027ABE70F00B76102 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1320; + LastUpgradeCheck = 1320; + TargetAttributes = { + DC54A53C27AD2AD700B14516 = { + CreatedOnToolsVersion = 13.2; + LastSwiftMigration = 1320; + TestTargetID = DCC7AAD727ABE70F00B76102; + }; + DCC7AAD727ABE70F00B76102 = { + CreatedOnToolsVersion = 13.2; + }; + DCC7AAE727ABE71100B76102 = { + CreatedOnToolsVersion = 13.2; + LastSwiftMigration = 1320; + TestTargetID = DCC7AAD727ABE70F00B76102; + }; + }; + }; + buildConfigurationList = DCC7AAD327ABE70F00B76102 /* Build configuration list for PBXProject "Example" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DCC7AACF27ABE70F00B76102; + productRefGroup = DCC7AAD927ABE70F00B76102 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DCC7AAD727ABE70F00B76102 /* Example */, + DCC7AAE727ABE71100B76102 /* ExampleTests */, + DC54A53C27AD2AD700B14516 /* ExampleSnapshotTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DC54A53B27AD2AD700B14516 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DC54A55E27AD2B0900B14516 /* README.md in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCC7AAD627ABE70F00B76102 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DCC7AAE327ABE71000B76102 /* Preview Assets.xcassets in Resources */, + DCC7AAE027ABE71000B76102 /* Assets.xcassets in Resources */, + DC20E6E627AD18DE00AE9158 /* AdvancedExample.storyboard in Resources */, + DC20E6E427AD09B300AE9158 /* WebViewExample.storyboard in Resources */, + DC20E6E827AD192A00AE9158 /* BasicExample.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCC7AAE627ABE71100B76102 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3A10251140C959206F87EBD9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 56C42F72357CE4E21218DA75 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ExampleTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 66682AC48EF2F6EFCAE02228 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Example-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + A917172FC6918351F8D9BCA9 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ExampleSnapshotTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + C73348C666E6BEBE983775D9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + DCAA8BE027AC109800386609 /* SwiftFormat */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = SwiftFormat; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "SWIFTFORMAT=\"${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat\"\nif [ ! -f \"$SWIFTFORMAT\" ]; then\n echo \"warning: SwiftFormat not installed!\"\n exit 1\nfi\n\n$SWIFTFORMAT ../ --config \"${PODS_ROOT}/SwiftConfigurationFiles/.swiftformat\"\n"; + }; + DCAA8BE127AC10A400386609 /* SwiftLint */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = SwiftLint; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "SWIFTLINT=\"${PODS_ROOT}/SwiftLint/swiftlint\"\nif [ ! -f \"$SWIFTLINT\" ]; then\n echo \"warning: SwiftLint not installed!\"\n exit 1\nfi\n\n$SWIFTLINT\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DC54A53927AD2AD700B14516 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DC54A55427AD2B0900B14516 /* GradientProgressBarSnapshotTestCase.swift in Sources */, + DC7AF94E27B1918900E1CE98 /* GradientProgressBarViewStyleSnapshotTestCase.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCC7AAD427ABE70F00B76102 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DCC7AADE27ABE70F00B76102 /* EntryPointView.swift in Sources */, + DCAD8B5927AC3DCC002B3086 /* StoryboardView.swift in Sources */, + DCAD8B5627AC3187002B3086 /* SwiftUIExampleView.swift in Sources */, + DCC7AADC27ABE70F00B76102 /* ExampleApp.swift in Sources */, + DCA889C527AC1BC100CF909E /* WebViewExampleViewController.swift in Sources */, + DCA889BB27AC199E00CF909E /* BasicExampleViewController.swift in Sources */, + DCA889C127AC1B7F00CF909E /* AdvancedExampleViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCC7AAE427ABE71100B76102 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DC54A53527AD298100B14516 /* GradientProgressBarTestCase.swift in Sources */, + DC54A53627AD298100B14516 /* UIColorMakeDynamicColorTestCase.swift in Sources */, + DC54A53827AD298100B14516 /* GradientLayerViewModelTestCase.swift in Sources */, + DC54A53727AD298100B14516 /* MaskLayerViewModelTestCase.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + DC54A54227AD2AD700B14516 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DCC7AAD727ABE70F00B76102 /* Example */; + targetProxy = DC54A54127AD2AD700B14516 /* PBXContainerItemProxy */; + }; + DCC7AAEA27ABE71100B76102 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DCC7AAD727ABE70F00B76102 /* Example */; + targetProxy = DCC7AAE927ABE71100B76102 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + DC54A54427AD2AD700B14516 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 55F7E9841D37A27B102B2C68 /* Pods-ExampleSnapshotTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = F63GJC2AN7; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientProgressBarExample.ExampleSnapshotTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example"; + }; + name = Debug; + }; + DC54A54527AD2AD700B14516 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2037CDACDEC69585E60EA450 /* Pods-ExampleSnapshotTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = F63GJC2AN7; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientProgressBarExample.ExampleSnapshotTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example"; + }; + name = Release; + }; + DCC7AAFA27ABE71100B76102 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + DCC7AAFB27ABE71100B76102 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DCC7AAFD27ABE71100B76102 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1831E7A373F6BCA1512AEC2C /* Pods-Example.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\""; + DEVELOPMENT_TEAM = F63GJC2AN7; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientProgressBar.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + DCC7AAFE27ABE71100B76102 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2C4F19E3F77A4916EC02A22A /* Pods-Example.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Example/Preview Content\""; + DEVELOPMENT_TEAM = F63GJC2AN7; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientProgressBar.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; + DCC7AB0027ABE71100B76102 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1318ACAFEABEBF83E0D26715 /* Pods-ExampleTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = F63GJC2AN7; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientProgressBarExample.ExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_INSTALL_OBJC_HEADER = NO; + SWIFT_OBJC_BRIDGING_HEADER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example"; + }; + name = Debug; + }; + DCC7AB0127ABE71100B76102 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C1B6E121C67FC6811F5EF560 /* Pods-ExampleTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = F63GJC2AN7; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientProgressBarExample.ExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_INSTALL_OBJC_HEADER = NO; + SWIFT_OBJC_BRIDGING_HEADER = ""; + SWIFT_PRECOMPILE_BRIDGING_HEADER = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DC54A54327AD2AD700B14516 /* Build configuration list for PBXNativeTarget "ExampleSnapshotTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DC54A54427AD2AD700B14516 /* Debug */, + DC54A54527AD2AD700B14516 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DCC7AAD327ABE70F00B76102 /* Build configuration list for PBXProject "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCC7AAFA27ABE71100B76102 /* Debug */, + DCC7AAFB27ABE71100B76102 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DCC7AAFC27ABE71100B76102 /* Build configuration list for PBXNativeTarget "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCC7AAFD27ABE71100B76102 /* Debug */, + DCC7AAFE27ABE71100B76102 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DCC7AAFF27ABE71100B76102 /* Build configuration list for PBXNativeTarget "ExampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCC7AB0027ABE71100B76102 /* Debug */, + DCC7AB0127ABE71100B76102 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DCC7AAD027ABE70F00B76102 /* Project object */; +} diff --git a/Example/GradientProgressBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 66% rename from Example/GradientProgressBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 5385187..919434a 100644 --- a/Example/GradientProgressBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/Example/GradientProgressBar.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Example/GradientProgressBar.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Example/GradientProgressBar.xcworkspace/contents.xcworkspacedata b/Example/Example.xcworkspace/contents.xcworkspacedata similarity index 76% rename from Example/GradientProgressBar.xcworkspace/contents.xcworkspacedata rename to Example/Example.xcworkspace/contents.xcworkspacedata index ab9b61c..a37cf19 100644 --- a/Example/GradientProgressBar.xcworkspace/contents.xcworkspacedata +++ b/Example/Example.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:Example.xcodeproj"> diff --git a/Example/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json b/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Example/Example/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/Example/Example/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/Example/Assets.xcassets/Contents.json b/Example/Example/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Example/Example/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/Example/ExampleApp.swift b/Example/Example/ExampleApp.swift new file mode 100644 index 0000000..f9936c9 --- /dev/null +++ b/Example/Example/ExampleApp.swift @@ -0,0 +1,31 @@ +// +// ExampleApp.swift +// Example +// +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI + +@main +struct ExampleApp: App { + var body: some Scene { + WindowGroup { + EntryPointView() + .onAppear { + // Use iOS 13 navigation bar appearance. + // + // While the entry point scene looks better with an opaque navigation background, the child scenes look + // better with the default navigation background. As we can't update the appearance per scene we fallback + // to an appearance with the default background here. + // + // Based on: https://sarunw.com/posts/uinavigationbar-changes-in-ios13/ + let appearance = UINavigationBarAppearance() + appearance.configureWithDefaultBackground() + + UINavigationBar.appearance().scrollEdgeAppearance = appearance + } + } + } +} diff --git a/Example/Example/Helper/StoryboardView.swift b/Example/Example/Helper/StoryboardView.swift new file mode 100644 index 0000000..d88818b --- /dev/null +++ b/Example/Example/Helper/StoryboardView.swift @@ -0,0 +1,28 @@ +// +// StoryboardView.swift +// Example +// +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI + +struct StoryboardView: UIViewControllerRepresentable { + // MARK: - Public properties + + let name: String + + // MARK: - Public properties + + func makeUIViewController(context _: Context) -> UIViewController { + let storyboard = UIStoryboard(name: name, bundle: nil) + guard let viewController = storyboard.instantiateInitialViewController() else { + fatalError("⚠️ – Could not instantiate initial view controller for storyboard with name `\(name)`.") + } + + return viewController + } + + func updateUIViewController(_: UIViewController, context _: Context) {} +} diff --git a/Example/Example/Preview Content/Preview Assets.xcassets/Contents.json b/Example/Example/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Example/Example/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/Example/Scenes/AdvancedExample/AdvancedExample.storyboard b/Example/Example/Scenes/AdvancedExample/AdvancedExample.storyboard new file mode 100644 index 0000000..9aa356c --- /dev/null +++ b/Example/Example/Scenes/AdvancedExample/AdvancedExample.storyboard @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Example/Scenes/AdvancedExample/AdvancedExampleViewController.swift b/Example/Example/Scenes/AdvancedExample/AdvancedExampleViewController.swift new file mode 100644 index 0000000..8cf1e7d --- /dev/null +++ b/Example/Example/Scenes/AdvancedExample/AdvancedExampleViewController.swift @@ -0,0 +1,74 @@ +// +// AdvancedExampleViewController.swift +// Example +// +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import UIKit +import SwiftUI +import GradientProgressBar + +final class AdvancedExampleViewController: UIViewController { + // MARK: - Config + + private enum Config { + /// Value that the progress bar is increased by on each tap on button. + static let increaseValue: Float = 0.1 + + /// The custom animation duration we use. + static let animationDuration: TimeInterval = 0.5 + + /// The custom gradient colors we use (). + static let gradientColors = [ + #colorLiteral(red: 0.9490196078, green: 0.3215686275, blue: 0.431372549, alpha: 1), #colorLiteral(red: 0.9450980392, green: 0.4784313725, blue: 0.5921568627, alpha: 1), #colorLiteral(red: 0.9529411765, green: 0.737254902, blue: 0.7843137255, alpha: 1), #colorLiteral(red: 0.4274509804, green: 0.8666666667, blue: 0.9490196078, alpha: 1), #colorLiteral(red: 0.7568627451, green: 0.9411764706, blue: 0.9568627451, alpha: 1), + ] + + /// The custom timing function we use (ease-in-back). + static let timingFunction = CAMediaTimingFunction(controlPoints: 0.600, -0.280, 0.735, 0.045) + } + + // MARK: - Outlets + + @IBOutlet private var gradientProgressBar: GradientProgressBar! + + // MARK: - Public methods + + override func viewDidLoad() { + super.viewDidLoad() + + gradientProgressBar.animationDuration = Config.animationDuration + gradientProgressBar.gradientColors = Config.gradientColors + gradientProgressBar.timingFunction = Config.timingFunction + } + + // MARK: - Private methods + + @IBAction private func animateButtonTouchUpInside(_: Any) { + let currentProgress = gradientProgressBar.progress + let updatedProgress = currentProgress + Config.increaseValue + + gradientProgressBar.setProgress(updatedProgress, animated: true) + } + + @IBAction private func setProgressButtonTouchUpInside(_: Any) { + let currentProgress = gradientProgressBar.progress + let updatedProgress = currentProgress + Config.increaseValue + + gradientProgressBar.progress = updatedProgress + } + + @IBAction private func resetButtonTouchUpInside(_: Any) { + gradientProgressBar.progress = 0.0 + } +} + +// MARK: - Helpers + +struct AdvancedExampleView: View { + var body: some View { + StoryboardView(name: "AdvancedExample") + .navigationTitle("🚀 Advanced Example") + } +} diff --git a/Example/Example/Scenes/BasicExample/BasicExample.storyboard b/Example/Example/Scenes/BasicExample/BasicExample.storyboard new file mode 100644 index 0000000..33dc738 --- /dev/null +++ b/Example/Example/Scenes/BasicExample/BasicExample.storyboard @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Example/Scenes/BasicExample/BasicExampleViewController.swift b/Example/Example/Scenes/BasicExample/BasicExampleViewController.swift new file mode 100644 index 0000000..0035470 --- /dev/null +++ b/Example/Example/Scenes/BasicExample/BasicExampleViewController.swift @@ -0,0 +1,53 @@ +// +// BasicExampleViewController.swift +// Example +// +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import UIKit +import SwiftUI +import GradientProgressBar + +final class BasicExampleViewController: UIViewController { + // MARK: - Config + + private enum Config { + /// Value that the progress bar is increased by on each tap on button. + static let increaseValue: Float = 0.1 + } + + // MARK: - Outlets + + @IBOutlet private var gradientProgressBar: GradientProgressBar! + + // MARK: - Private methods + + @IBAction private func animateButtonTouchUpInside(_: Any) { + let currentProgress = gradientProgressBar.progress + let updatedProgress = currentProgress + Config.increaseValue + + gradientProgressBar.setProgress(updatedProgress, animated: true) + } + + @IBAction private func setProgressButtonTouchUpInside(_: Any) { + let currentProgress = gradientProgressBar.progress + let updatedProgress = currentProgress + Config.increaseValue + + gradientProgressBar.progress = updatedProgress + } + + @IBAction private func resetButtonTouchUpInside(_: Any) { + gradientProgressBar.progress = 0.0 + } +} + +// MARK: - Helpers + +struct BasicExampleView: View { + var body: some View { + StoryboardView(name: "BasicExample") + .navigationTitle("🏡 Basic Example") + } +} diff --git a/Example/Example/Scenes/EntryPointView.swift b/Example/Example/Scenes/EntryPointView.swift new file mode 100644 index 0000000..6163e91 --- /dev/null +++ b/Example/Example/Scenes/EntryPointView.swift @@ -0,0 +1,87 @@ +// +// EntryPointView.swift +// Example +// +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI + +struct EntryPointView: View { + // MARK: - Private properties + + @State + private var isWebViewExampleVisible = false + + // MARK: - Render + + var body: some View { + NavigationView { + List { + Section(header: Text("Example Application")) { + NavigationLink(destination: BasicExampleView()) { + TitleSubtitleView(title: "🏡 Basic Example", + subtitle: "Basic usage and setup.") + } + + NavigationLink(destination: AdvancedExampleView()) { + TitleSubtitleView(title: "🚀 Advanced Example", + subtitle: "How to apply e.g. custom colors.") + } + + NavigationLink(destination: SwiftUIExampleView()) { + TitleSubtitleView(title: "🎨 SwiftUI Example", + subtitle: "How to use in a SwiftUI context.") + } + + Button { + isWebViewExampleVisible = true + } label: { + TitleSubtitleView(title: "📲 Web View Example", + subtitle: "Attach to a navigation bar.") + // Make entire row tappable and not just the text. + .frame(maxWidth: .infinity, alignment: .leading) + .contentShape(Rectangle()) + } + .buttonStyle(PlainButtonStyle()) + } + } + // We present the `WebViewExampleView` as a sheet using it's own navigation controller. + // The `NavigationView` passed from SwiftUI isn't accessible from a `UIViewController` in a way, that we can add subviews to it. + .sheet(isPresented: $isWebViewExampleVisible) { + WebViewExampleView() + } + // Unfortunately setting the title here results in constraint warnings. + // I couldn't find a possible fix yet, even `.navigationViewStyle(.stack)` doesn't seem to work. + // https://stackoverflow.com/q/65316497 + .navigationTitle("GradientProgressBar") + .navigationBarTitleDisplayMode(.large) + } + } +} + +// MARK: - Subviews + +private struct TitleSubtitleView: View { + let title: String + let subtitle: String + + var body: some View { + VStack(alignment: .leading, spacing: 8) { + Text(title) + .font(.headline) + Text(subtitle) + .font(.subheadline) + } + .padding(.vertical, 8) + } +} + +// MARK: - Preview + +struct EntryPointView_Previews: PreviewProvider { + static var previews: some View { + EntryPointView() + } +} diff --git a/Example/Example/Scenes/SwiftUIExample/SwiftUIExampleView.swift b/Example/Example/Scenes/SwiftUIExample/SwiftUIExampleView.swift new file mode 100644 index 0000000..c88f7d2 --- /dev/null +++ b/Example/Example/Scenes/SwiftUIExample/SwiftUIExampleView.swift @@ -0,0 +1,112 @@ +// +// SwiftUIExampleView.swift +// Example +// +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI +import GradientProgressBar + +struct SwiftUIExampleView: View { + // MARK: - Config + + private enum Config { + /// Value that the progress bar is increased by on each tap on button. + static let increaseValue: Double = 0.1 + + // The animation we use to update the progress bar. + static let animation: Animation = .easeInOut(duration: 0.25) + + /// The custom gradient colors we use (). + static let gradientColors = [ + #colorLiteral(red: 0.9490196078, green: 0.3215686275, blue: 0.431372549, alpha: 1), #colorLiteral(red: 0.9450980392, green: 0.4784313725, blue: 0.5921568627, alpha: 1), #colorLiteral(red: 0.9529411765, green: 0.737254902, blue: 0.7843137255, alpha: 1), #colorLiteral(red: 0.4274509804, green: 0.8666666667, blue: 0.9490196078, alpha: 1), #colorLiteral(red: 0.7568627451, green: 0.9411764706, blue: 0.9568627451, alpha: 1), + ].map(Color.init) + + /// The custom background color we use. + static let backgroundColor: Color = .gray.opacity(0.05) + } + + // MARK: - Private properties + + @State + private var progress = 0.5 + + // MARK: - Render + + var body: some View { + ZStack { + VStack(spacing: 16) { + ProgressView(value: progress, total: 1) + .progressViewStyle(.gradientProgressBar) + .frame(height: 4) + + Divider() + + ProgressView(value: progress, total: 1) + .progressViewStyle( + .gradientProgressBar(backgroundColor: Config.backgroundColor, + gradientColors: Config.gradientColors, + cornerRadius: 4) + ) + .frame(height: 8) + } + .padding() + + HStack { + Button { + withAnimation(Config.animation) { + progress += Config.increaseValue + } + } label: { + ImageTitleView(systemImageName: "timer", + title: "Animate") + } + .frame(maxWidth: .infinity) + + Button { + progress += Config.increaseValue + } label: { + ImageTitleView(systemImageName: "gearshape.2.fill", + title: "Set Progress") + } + .frame(maxWidth: .infinity) + + Button { + progress = 0 + } label: { + ImageTitleView(systemImageName: "arrow.counterclockwise", + title: "Reset") + } + .frame(maxWidth: .infinity) + } + .frame(maxHeight: .infinity, alignment: .bottom) + } + .frame(maxHeight: .infinity) + .navigationTitle("🎨 SwiftUI Example") + } +} + +// MARK: - Subviews + +private struct ImageTitleView: View { + let systemImageName: String + let title: String + + var body: some View { + HStack { + Image(systemName: systemImageName) + Text(title) + .lineLimit(1) + } + } +} + +// MARK: - Preview + +struct SwiftUIExampleView_Previews: PreviewProvider { + static var previews: some View { + SwiftUIExampleView() + } +} diff --git a/Example/Example/Scenes/WebViewExample/WebViewExample.storyboard b/Example/Example/Scenes/WebViewExample/WebViewExample.storyboard new file mode 100644 index 0000000..f3e79b9 --- /dev/null +++ b/Example/Example/Scenes/WebViewExample/WebViewExample.storyboard @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/GradientProgressBar/WebViewExampleViewController.swift b/Example/Example/Scenes/WebViewExample/WebViewExampleViewController.swift similarity index 80% rename from Example/GradientProgressBar/WebViewExampleViewController.swift rename to Example/Example/Scenes/WebViewExample/WebViewExampleViewController.swift index b1d39b4..aaf5a57 100644 --- a/Example/GradientProgressBar/WebViewExampleViewController.swift +++ b/Example/Example/Scenes/WebViewExample/WebViewExampleViewController.swift @@ -1,19 +1,20 @@ // // WebViewExampleViewController.swift -// GradientProgressBar_Example +// Example // -// Created by Felix Mau on 23.09.18. -// Copyright © 2018 Felix Mau. All rights reserved. +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. // import UIKit +import SwiftUI import WebKit import GradientProgressBar // Based on // https://gist.github.com/fxm90/50d6c73d07c4d9755981b9bb4c5ab931 -class WebViewExampleViewController: UIViewController { +final class WebViewExampleViewController: UIViewController { // MARK: - Outlets /// The web view from the interface builder. @@ -36,7 +37,7 @@ class WebViewExampleViewController: UIViewController { setupEstimatedProgressObserver() if let initialUrl = URL(string: "https://felix.hamburg") { - setupWebview(url: initialUrl) + setupWebView(url: initialUrl) } } @@ -65,7 +66,7 @@ class WebViewExampleViewController: UIViewController { } } - private func setupWebview(url: URL) { + private func setupWebView(url: URL) { let request = URLRequest(url: url) webView.navigationDelegate = self @@ -77,10 +78,11 @@ class WebViewExampleViewController: UIViewController { } } -// MARK: - WKNavigationDelegate +// MARK: - `WKNavigationDelegate` conformance -/// By implementing the `WKNavigationDelegate` we can update the visibility of the `progressView` according to the `WKNavigation` loading progress. -/// The view-visibility updates are based on my gist [fxm90/UIView+AnimateIsHidden.swift](https://gist.github.com/fxm90/723b5def31b46035cd92a641e3b184f6) +/// By implementing the `WKNavigationDelegate` we can update the visibility of the `progressView` according to the `WKNavigation` navigation progress. +/// +/// The view-visibility updates are based on the gist [fxm90/UIView+AnimateIsHidden.swift](https://gist.github.com/fxm90/723b5def31b46035cd92a641e3b184f6) extension WebViewExampleViewController: WKNavigationDelegate { func webView(_: WKWebView, didStartProvisionalNavigation _: WKNavigation!) { if progressView.isHidden { @@ -89,16 +91,12 @@ extension WebViewExampleViewController: WKNavigationDelegate { } UIView.animate(withDuration: 0.33, - animations: { - self.progressView.alpha = 1.0 - }) + animations: { self.progressView.alpha = 1.0 }) } func webView(_: WKWebView, didFinish _: WKNavigation!) { UIView.animate(withDuration: 0.33, - animations: { - self.progressView.alpha = 0.0 - }, + animations: { self.progressView.alpha = 0.0 }, completion: { isFinished in // Update `isHidden` flag accordingly: // - set to `true` in case animation was completly finished. @@ -107,3 +105,11 @@ extension WebViewExampleViewController: WKNavigationDelegate { }) } } + +// MARK: - Helpers + +struct WebViewExampleView: View { + var body: some View { + StoryboardView(name: "WebViewExample") + } +} diff --git a/Example/ExampleSnapshotTests/GradientProgressBarSnapshotTestCase.swift b/Example/ExampleSnapshotTests/GradientProgressBarSnapshotTestCase.swift new file mode 100644 index 0000000..e145866 --- /dev/null +++ b/Example/ExampleSnapshotTests/GradientProgressBarSnapshotTestCase.swift @@ -0,0 +1,138 @@ +// +// GradientProgressBarSnapshotTestCase.swift +// ExampleSnapshotTests +// +// Created by Felix Mau on 07.11.19. +// Copyright © 2019 Felix Mau. All rights reserved. +// + +import XCTest +import SnapshotTesting + +@testable import GradientProgressBar + +final class GradientProgressBarSnapshotTestCase: XCTestCase { + // MARK: - Config + + private enum Config { + /// The frame we use for rendering the `GradientProgressBar`. This will also be the image size for our snapshot. + static let frame = CGRect(x: 0.0, y: 0.0, width: 375.0, height: 4.0) + + /// The custom colors we use on this test-case. + /// Source: https://color.adobe.com/Pink-Flamingo-color-theme-10343714/ + static let gradientColors = [ + #colorLiteral(red: 0.9490196078, green: 0.3215686275, blue: 0.431372549, alpha: 1), #colorLiteral(red: 0.9450980392, green: 0.4784313725, blue: 0.5921568627, alpha: 1), #colorLiteral(red: 0.9529411765, green: 0.737254902, blue: 0.7843137255, alpha: 1), #colorLiteral(red: 0.4274509804, green: 0.8666666667, blue: 0.9490196078, alpha: 1), #colorLiteral(red: 0.7568627451, green: 0.9411764706, blue: 0.9568627451, alpha: 1), + ] + + static let lightTraitCollection = UITraitCollection(userInterfaceStyle: .light) + static let darkTraitCollection = UITraitCollection(userInterfaceStyle: .dark) + } + + // MARK: - Test `.light` user interface style + + func test_gradientProgressBar_withProgressZero_andLightTraitCollection() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + + // When + gradientProgressBar.progress = 0.0 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBar_withProgress50Percent_andLightTraitCollection() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + + // When + gradientProgressBar.progress = 0.5 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBar_withProgress100Percent_andLightTraitCollection() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + + // When + gradientProgressBar.progress = 1.0 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.lightTraitCollection)) + } + + // MARK: - Test `.dark` user interface style + + func test_gradientProgressBar_withProgressZero_andDarkTraitCollection() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + + // When + gradientProgressBar.progress = 0.0 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.darkTraitCollection)) + } + + func test_gradientProgressBar_withProgress50Percent_andDarkTraitCollection() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + + // When + gradientProgressBar.progress = 0.5 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.darkTraitCollection)) + } + + func test_gradientProgressBar_withProgress100Percent_andDarkTraitCollection() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + + // When + gradientProgressBar.progress = 1.0 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.darkTraitCollection)) + } + + // MARK: - Test custom colors + + func test_gradientProgressBar_withProgressZero_andCustomColors() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + gradientProgressBar.gradientColors = Config.gradientColors + + // When + gradientProgressBar.progress = 0.0 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBar_withProgress50Percent_andCustomColors() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + gradientProgressBar.gradientColors = Config.gradientColors + + // When + gradientProgressBar.progress = 0.5 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBar_withProgress100Percent_andCustomColors() { + // Given + let gradientProgressBar = GradientProgressBar(frame: Config.frame) + gradientProgressBar.gradientColors = Config.gradientColors + + // When + gradientProgressBar.progress = 1.0 + + // Then + assertSnapshot(matching: gradientProgressBar, as: .image(traits: Config.lightTraitCollection)) + } +} diff --git a/Example/ExampleSnapshotTests/GradientProgressBarViewStyleSnapshotTestCase.swift b/Example/ExampleSnapshotTests/GradientProgressBarViewStyleSnapshotTestCase.swift new file mode 100644 index 0000000..e256596 --- /dev/null +++ b/Example/ExampleSnapshotTests/GradientProgressBarViewStyleSnapshotTestCase.swift @@ -0,0 +1,185 @@ +// +// GradientProgressBarViewStyleSnapshotTestCase.swift +// ExampleSnapshotTests +// +// Created by Felix Mau on 07.02.22. +// Copyright © 2019 Felix Mau. All rights reserved. +// + +import XCTest +import SwiftUI +import SnapshotTesting + +@testable import GradientProgressBar + +// swiftlint:disable:next type_name +final class GradientProgressBarViewStyleSnapshotTestCase: XCTestCase { + // MARK: - Config + + private enum Config { + /// The frame we use for rendering the `GradientProgressBar`. This will also be the image size for our snapshot. + static let frame = CGRect(x: 0.0, y: 0.0, width: 375.0, height: 4.0) + + /// The custom colors we use on this test-case. + /// Source: https://color.adobe.com/Pink-Flamingo-color-theme-10343714/ + static let gradientColors = [ + #colorLiteral(red: 0.9490196078, green: 0.3215686275, blue: 0.431372549, alpha: 1), #colorLiteral(red: 0.9450980392, green: 0.4784313725, blue: 0.5921568627, alpha: 1), #colorLiteral(red: 0.9529411765, green: 0.737254902, blue: 0.7843137255, alpha: 1), #colorLiteral(red: 0.4274509804, green: 0.8666666667, blue: 0.9490196078, alpha: 1), #colorLiteral(red: 0.7568627451, green: 0.9411764706, blue: 0.9568627451, alpha: 1), + ].map(Color.init) + + static let lightTraitCollection = UITraitCollection(userInterfaceStyle: .light) + static let darkTraitCollection = UITraitCollection(userInterfaceStyle: .dark) + } + + // MARK: - Test `.light` user interface style + + func test_gradientProgressBarViewStyle_withProgressZero_andLightTraitCollection() { + // When + let progressView = ProgressView("", value: 0, total: 100) + .progressViewStyle(.gradientProgressBar) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBarViewStyle_withProgress50Percent_andLightTraitCollection() { + // When + let progressView = ProgressView("", value: 50, total: 100) + .progressViewStyle(.gradientProgressBar) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBarViewStyle_withProgress100Percent_andLightTraitCollection() { + // When + let progressView = ProgressView("", value: 100, total: 100) + .progressViewStyle(.gradientProgressBar) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + // MARK: - Test `.dark` user interface style + + func test_gradientProgressBarViewStyle_withProgressZero_andDarkTraitCollection() { + // When + let progressView = ProgressView("", value: 0, total: 100) + .progressViewStyle(.gradientProgressBar) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.darkTraitCollection)) + } + + func test_gradientProgressBarViewStyle_withProgress50Percent_andDarkTraitCollection() { + // When + let progressView = ProgressView("", value: 50, total: 100) + .progressViewStyle(.gradientProgressBar) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.darkTraitCollection)) + } + + func test_gradientProgressBarViewStyle_withProgress100Percent_andDarkTraitCollection() { + // When + let progressView = ProgressView("", value: 100, total: 100) + .progressViewStyle(.gradientProgressBar) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.darkTraitCollection)) + } + + // MARK: - Test custom background color + + func test_gradientProgressBarViewStyle_withProgressZero_andCustomBackgroundColor() { + // Given + let backgroundColor: Color = .cyan + + // When + let progressView = ProgressView("", value: 0, total: 100) + .progressViewStyle(.gradientProgressBar(backgroundColor: backgroundColor)) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBarViewStyle_withProgress50Percent_andCustomBackgroundColor() { + // Given + let backgroundColor: Color = .cyan + + // When + let progressView = ProgressView("", value: 33, total: 100) + .progressViewStyle(.gradientProgressBar(backgroundColor: backgroundColor)) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBarViewStyle_withProgress100Percent_andCustomBackgroundColor() { + // Given + let backgroundColor: Color = .cyan + + // When + let progressView = ProgressView("", value: 100, total: 100) + .progressViewStyle(.gradientProgressBar(backgroundColor: backgroundColor)) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + // MARK: - Test custom colors + + func test_gradientProgressBarViewStyle_withProgressZero_andCustomColors() { + // When + let progressView = ProgressView("", value: 100, total: 100) + .progressViewStyle(.gradientProgressBar(gradientColors: Config.gradientColors)) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBarViewStyle_withProgress50Percent_andCustomColors() { + // When + let progressView = ProgressView("", value: 50, total: 100) + .progressViewStyle(.gradientProgressBar(gradientColors: Config.gradientColors)) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + func test_gradientProgressBarViewStyle_withProgress100Percent_andCustomColors() { + // When + let progressView = ProgressView("", value: 100, total: 100) + .progressViewStyle(.gradientProgressBar(gradientColors: Config.gradientColors)) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } + + // MARK: - Test custom corner radius + + func test_gradientProgressBarViewStyle_withProgress50_andCustomCornerRadius() { + // Given + let frame = CGRect(x: 0, y: 0, width: Config.frame.width, height: 20) + let cornerRadius = frame.height / 2 + + // When + let progressView = ProgressView("", value: 50, total: 100) + .progressViewStyle(.gradientProgressBar(cornerRadius: cornerRadius)) + .frame(width: frame.width, height: frame.height) + + // Then + assertSnapshot(matching: progressView, as: .image(traits: Config.lightTraitCollection)) + } +} diff --git a/Example/SnapshotTests/README.md b/Example/ExampleSnapshotTests/README.md similarity index 100% rename from Example/SnapshotTests/README.md rename to Example/ExampleSnapshotTests/README.md diff --git a/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo100Percent.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress100Percent_andCustomColors.1.png similarity index 100% rename from Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo100Percent.1.png rename to Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress100Percent_andCustomColors.1.png diff --git a/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo100Percent.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress100Percent_andDarkTraitCollection.1.png similarity index 100% rename from Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo100Percent.1.png rename to Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress100Percent_andDarkTraitCollection.1.png diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress100Percent_andLightTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress100Percent_andLightTraitCollection.1.png new file mode 100644 index 0000000..8c9e0f2 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress100Percent_andLightTraitCollection.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andCustomColors.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andCustomColors.1.png new file mode 100644 index 0000000..0e87284 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andCustomColors.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andDarkTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andDarkTraitCollection.1.png new file mode 100644 index 0000000..e77ede6 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andDarkTraitCollection.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andLightTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andLightTraitCollection.1.png new file mode 100644 index 0000000..3c7b34c Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgress50Percent_andLightTraitCollection.1.png differ diff --git a/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetToZero.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgressZero_andCustomColors.1.png similarity index 100% rename from Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetToZero.1.png rename to Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgressZero_andCustomColors.1.png diff --git a/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetToZero.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgressZero_andDarkTraitCollection.1.png similarity index 100% rename from Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetToZero.1.png rename to Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgressZero_andDarkTraitCollection.1.png diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgressZero_andLightTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgressZero_andLightTraitCollection.1.png new file mode 100644 index 0000000..37a03e9 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarSnapshotTestCase/test_gradientProgressBar_withProgressZero_andLightTraitCollection.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andCustomBackgroundColor.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andCustomBackgroundColor.1.png new file mode 100644 index 0000000..441556e Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andCustomBackgroundColor.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andCustomColors.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andCustomColors.1.png new file mode 100644 index 0000000..9b50440 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andCustomColors.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andDarkTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andDarkTraitCollection.1.png new file mode 100644 index 0000000..5945aa6 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andDarkTraitCollection.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andLightTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andLightTraitCollection.1.png new file mode 100644 index 0000000..cb9eeb9 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress100Percent_andLightTraitCollection.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andCustomBackgroundColor.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andCustomBackgroundColor.1.png new file mode 100644 index 0000000..2b13cf3 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andCustomBackgroundColor.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andCustomColors.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andCustomColors.1.png new file mode 100644 index 0000000..2bbf530 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andCustomColors.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andDarkTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andDarkTraitCollection.1.png new file mode 100644 index 0000000..34758ac Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andDarkTraitCollection.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andLightTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andLightTraitCollection.1.png new file mode 100644 index 0000000..7db9a13 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50Percent_andLightTraitCollection.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50_andCustomCornerRadius.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50_andCustomCornerRadius.1.png new file mode 100644 index 0000000..cec51ea Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgress50_andCustomCornerRadius.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andCustomBackgroundColor.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andCustomBackgroundColor.1.png new file mode 100644 index 0000000..7e4d50f Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andCustomBackgroundColor.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andCustomColors.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andCustomColors.1.png new file mode 100644 index 0000000..9b50440 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andCustomColors.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andDarkTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andDarkTraitCollection.1.png new file mode 100644 index 0000000..4ec6729 Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andDarkTraitCollection.1.png differ diff --git a/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andLightTraitCollection.1.png b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andLightTraitCollection.1.png new file mode 100644 index 0000000..042119e Binary files /dev/null and b/Example/ExampleSnapshotTests/__Snapshots__/GradientProgressBarViewStyleSnapshotTestCase/test_gradientProgressBarViewStyle_withProgressZero_andLightTraitCollection.1.png differ diff --git a/Example/Tests/Extensions/UIColorMakeDynamicColorTestCase.swift b/Example/ExampleTests/Extensions/UIColorMakeDynamicColorTestCase.swift similarity index 84% rename from Example/Tests/Extensions/UIColorMakeDynamicColorTestCase.swift rename to Example/ExampleTests/Extensions/UIColorMakeDynamicColorTestCase.swift index 8ddcacc..13691b5 100644 --- a/Example/Tests/Extensions/UIColorMakeDynamicColorTestCase.swift +++ b/Example/ExampleTests/Extensions/UIColorMakeDynamicColorTestCase.swift @@ -1,16 +1,17 @@ // // UIColorMakeDynamicColorTestCase.swift -// GradientProgressBar_Tests +// ExampleTests // // Created by Felix Mau on 22.09.19. // Copyright © 2019 Felix Mau. All rights reserved. // import XCTest + @testable import GradientProgressBar -class UIColorMakeDynamicColorTestCase: XCTestCase { - func testDynamicColorShouldReturnLightColorInUnspecifiedInterfaceStyle() { +final class UIColorMakeDynamicColorTestCase: XCTestCase { + func test_dynamicColor_shouldReturnLightColor_forUnspecifiedInterfaceStyle() { // Given let lightColor: UIColor = .white let darkColor: UIColor = .black @@ -26,7 +27,7 @@ class UIColorMakeDynamicColorTestCase: XCTestCase { XCTAssertEqual(resolvedColor, lightColor) } - func testDynamicColorShouldReturnLightColorInLightInterfaceStyle() { + func test_dynamicColor_shouldReturnLightColor_forLightInterfaceStyle() { // Given let lightColor: UIColor = .white let darkColor: UIColor = .black @@ -42,7 +43,7 @@ class UIColorMakeDynamicColorTestCase: XCTestCase { XCTAssertEqual(resolvedColor, lightColor) } - func testDynamicColorShouldReturnDarkColorInDarkInterfaceStyle() { + func test_dynamicColor_shouldReturnDarkColor_forDarkInterfaceStyle() { // Given let lightColor: UIColor = .white let darkColor: UIColor = .black diff --git a/Example/Tests/GradientProgressBarTestCase.swift b/Example/ExampleTests/GradientProgressBarTestCase.swift similarity index 82% rename from Example/Tests/GradientProgressBarTestCase.swift rename to Example/ExampleTests/GradientProgressBarTestCase.swift index c029b9f..b057a2d 100644 --- a/Example/Tests/GradientProgressBarTestCase.swift +++ b/Example/ExampleTests/GradientProgressBarTestCase.swift @@ -1,16 +1,18 @@ // // GradientProgressBarTestCase.swift -// GradientProgressBar_Tests +// ExampleTests // // Created by Felix Mau on 30.10.17. // Copyright © 2017 Felix Mau. All rights reserved. // import XCTest + @testable import GradientProgressBar -class GradientProgressBarTestCase: XCTestCase { - func testInitialization() { +final class GradientProgressBarTestCase: XCTestCase { + func test_viewSetup() { + // When let gradientProgressBar = GradientProgressBar(frame: .zero) guard @@ -21,6 +23,7 @@ class GradientProgressBarTestCase: XCTestCase { return } + // Then XCTAssertNotNil(gradientLayer.mask, "The gradient layer should contain a mask layer.") } } diff --git a/Example/Tests/ViewModel/GradientLayerViewModelTestCase.swift b/Example/ExampleTests/ViewModel/GradientLayerViewModelTestCase.swift similarity index 80% rename from Example/Tests/ViewModel/GradientLayerViewModelTestCase.swift rename to Example/ExampleTests/ViewModel/GradientLayerViewModelTestCase.swift index daf342f..8ece8f9 100644 --- a/Example/Tests/ViewModel/GradientLayerViewModelTestCase.swift +++ b/Example/ExampleTests/ViewModel/GradientLayerViewModelTestCase.swift @@ -1,6 +1,6 @@ // // GradientLayerViewModelTestCase.swift -// GradientProgressBar_Example +// ExampleTests // // Created by Felix Mau on 28.08.19. // Copyright © 2019 Felix Mau. All rights reserved. @@ -11,7 +11,7 @@ import XCTest @testable import GradientProgressBar @testable import LightweightObservable -class GradientLayerViewModelTestCase: XCTestCase { +final class GradientLayerViewModelTestCase: XCTestCase { // MARK: - Private properties private var viewModel: GradientLayerViewModel! @@ -32,7 +32,7 @@ class GradientLayerViewModelTestCase: XCTestCase { // MARK: - Test initializer - func testInitializerShouldSetGradientLayerColorsToStaticConfigurationPropertyMappedToCgColor() { + func test_initializer_shouldSetGradientLayerColors_toStaticConfigurationProperty_mappedToCgColor() { // Given let expectedGradientLayerColors = UIColor.GradientProgressBar.gradientColors.cgColor @@ -40,13 +40,13 @@ class GradientLayerViewModelTestCase: XCTestCase { XCTAssertEqual(viewModel.gradientLayerColors.value, expectedGradientLayerColors) } - func testInitializerShouldSetGradientColorsToStaticConfigurationProperty() { + func test_initializer_shouldSetGradientColors_toStaticConfigurationProperty() { XCTAssertEqual(viewModel.gradientColors, UIColor.GradientProgressBar.gradientColors) } // MARK: - Test setting property `gradientColors` - func testSettingsGradientColorsShouldUpdateGradientLayerColors() { + func test_setGradientColors_shouldUpdateGradientLayerColors() { // Given let gradientColors: [UIColor] = [.red, .yellow, .green] @@ -64,6 +64,6 @@ class GradientLayerViewModelTestCase: XCTestCase { private extension Array where Element: UIColor { /// The Quartz color that corresponds to the color objects. var cgColor: [CGColor] { - map { $0.cgColor } + map(\.cgColor) } } diff --git a/Example/Tests/ViewModel/MaskLayerViewModelTestCase.swift b/Example/ExampleTests/ViewModel/MaskLayerViewModelTestCase.swift similarity index 75% rename from Example/Tests/ViewModel/MaskLayerViewModelTestCase.swift rename to Example/ExampleTests/ViewModel/MaskLayerViewModelTestCase.swift index 1589f82..b433159 100644 --- a/Example/Tests/ViewModel/MaskLayerViewModelTestCase.swift +++ b/Example/ExampleTests/ViewModel/MaskLayerViewModelTestCase.swift @@ -1,6 +1,6 @@ // // MaskLayerViewModelTestCase.swift -// GradientProgressBar_Example +// ExampleTests // // Created by Felix Mau on 28.08.19. // Copyright © 2019 Felix Mau. All rights reserved. @@ -11,7 +11,7 @@ import XCTest @testable import GradientProgressBar @testable import LightweightObservable -class MaskLayerViewModelTestCase: XCTestCase { +final class MaskLayerViewModelTestCase: XCTestCase { // MARK: - Types typealias FrameAnimation = MaskLayerViewModel.FrameAnimation @@ -36,21 +36,21 @@ class MaskLayerViewModelTestCase: XCTestCase { // MARK: - Test initializer - func testInitializerShouldSetMaskLayerFrameAnimationToZero() { + func test_initializer_shouldSetMaskLayerFrameAnimation_toZero() { XCTAssertEqual(viewModel.maskLayerFrameAnimation.value, .zero) } - func testInitializerShouldSetAnimationDurationToStaticConfigurationProperty() { + func test_initializer_shouldSetAnimationDuration_toStaticConfigurationProperty() { XCTAssertEqual(viewModel.animationDuration, TimeInterval.GradientProgressBar.progressAnimationDuration) } - func testInitializerShouldSetTimingFunctionToStaticConfigurationProperty() { + func test_initializer_shouldSetTimingFunction_toStaticConfigurationProperty() { XCTAssertEqual(viewModel.timingFunction, CAMediaTimingFunction.GradientProgressBar.progressAnimationFunction) } // MARK: - Test setting property `bounds` - func testSettingBoundsShouldUpdateMaskLayerFrameAnimationWithCorrectFrameAndTimingFunctionButWithoutDuration() { + func test_setBounds_shouldUpdateMaskLayerFrameAnimation_withCorrectFrame_andTimingFunction_butWithoutDuration() { // Given let timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) viewModel.timingFunction = timingFunction @@ -64,17 +64,14 @@ class MaskLayerViewModelTestCase: XCTestCase { viewModel.bounds = bounds // Then - var expectedFrame = bounds - expectedFrame.size.width *= CGFloat(progress) - - let expectedMaskLayerFrameAnimation = FrameAnimation(frame: expectedFrame, + let expectedMaskLayerFrameAnimation = FrameAnimation(frame: bounds.adaptedWidth(percent: progress), duration: 0, timingFunction: timingFunction) XCTAssertEqual(viewModel.maskLayerFrameAnimation.value, expectedMaskLayerFrameAnimation) } - func testSettingBoundsWithSameValueShouldUpdateMaskLayerFrameAnimationJustOnce() { + func test_setBounds_withSameValue_shouldUpdateMaskLayerFrameAnimation_justOnce() { // Given let bounds = CGRect(x: 2, y: 4, width: 6, height: 8) @@ -100,7 +97,7 @@ class MaskLayerViewModelTestCase: XCTestCase { // MARK: - Test setting property `progress` - func testSettingProgressValueGraterThanOneShouldBePinnedToOne() { + func test_setPropertyProgress_withValueGreaterThanOne_shouldBeClampedToOne() { // When viewModel.progress = 1.1 @@ -108,7 +105,7 @@ class MaskLayerViewModelTestCase: XCTestCase { XCTAssertEqual(viewModel.progress, 1) } - func testSettingProgressValueSmallerThanZeroShouldBePinnedToZero() { + func test_setPropertyProgress_withValueSmallerThanZero_shouldBeClampedToZero() { // When viewModel.progress = -0.1 @@ -116,7 +113,7 @@ class MaskLayerViewModelTestCase: XCTestCase { XCTAssertEqual(viewModel.progress, 0) } - func testSettingProgressShouldUpdateMaskLayerFrameAnimationWithCorrectFrameAndTimingFunctionButWithoutDuration() { + func test_setPropertyProgress_shouldUpdateMaskLayerFrameAnimation_withCorrectFrame_andTimingFunction_butWithoutDuration() { // Given let timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) viewModel.timingFunction = timingFunction @@ -129,10 +126,7 @@ class MaskLayerViewModelTestCase: XCTestCase { viewModel.progress = progress // Then - var expectedFrame = bounds - expectedFrame.size.width *= CGFloat(progress) - - let expectedMaskLayerFrameAnimation = FrameAnimation(frame: expectedFrame, + let expectedMaskLayerFrameAnimation = FrameAnimation(frame: bounds.adaptedWidth(percent: progress), duration: 0, timingFunction: timingFunction) @@ -141,7 +135,7 @@ class MaskLayerViewModelTestCase: XCTestCase { // MARK: - Test method `setProgress()` - func testSetProgressShouldUpdateProgressProperty() { + func test_setProgress_shouldUpdateProgressProperty() { // When let progress: Float = 0.25 viewModel.setProgress(progress) @@ -150,7 +144,7 @@ class MaskLayerViewModelTestCase: XCTestCase { XCTAssertEqual(viewModel.progress, progress) } - func testSetProgressWithValueGraterThanOneShouldBePinnedToOne() { + func test_setProgress_withValueGraterThanOne_shouldBeClampedToOne() { // When viewModel.setProgress(1.1) @@ -158,7 +152,7 @@ class MaskLayerViewModelTestCase: XCTestCase { XCTAssertEqual(viewModel.progress, 1) } - func testSetProgressWithValueSmallerThanZeroShouldBePinnedToZero() { + func test_setProgress_withValueSmallerThanZero_shouldBeClampedToZero() { // When viewModel.setProgress(-0.1) @@ -166,7 +160,7 @@ class MaskLayerViewModelTestCase: XCTestCase { XCTAssertEqual(viewModel.progress, 0) } - func testSetProgressShouldUpdateMaskLayerFrameAnimationWithCorrectFrameAndTimingFunctionButWithoutDuration() { + func test_setProgress_shouldUpdateMaskLayerFrameAnimation_withCorrectFrame_andTimingFunction_butWithoutDuration() { // Given let timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) viewModel.timingFunction = timingFunction @@ -179,17 +173,14 @@ class MaskLayerViewModelTestCase: XCTestCase { viewModel.setProgress(progress) // Then - var expectedFrame = bounds - expectedFrame.size.width *= CGFloat(progress) - - let expectedMaskLayerFrameAnimation = FrameAnimation(frame: expectedFrame, + let expectedMaskLayerFrameAnimation = FrameAnimation(frame: bounds.adaptedWidth(percent: progress), duration: 0, timingFunction: timingFunction) XCTAssertEqual(viewModel.maskLayerFrameAnimation.value, expectedMaskLayerFrameAnimation) } - func testSetProgressShouldUpdateMaskLayerFrameAnimationWithCorrectFrameAndTimingFunctionAndDuration() { + func test_setProgressAnimated_shouldUpdateMaskLayerFrameAnimation_withCorrectFrame_andTimingFunction_andDuration() { // Given let timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) viewModel.timingFunction = timingFunction @@ -205,13 +196,21 @@ class MaskLayerViewModelTestCase: XCTestCase { viewModel.setProgress(progress, animated: true) // Then - var expectedFrame = bounds - expectedFrame.size.width *= CGFloat(progress) - - let expectedMaskLayerFrameAnimation = FrameAnimation(frame: expectedFrame, - duration: 123.456, + let expectedMaskLayerFrameAnimation = FrameAnimation(frame: bounds.adaptedWidth(percent: progress), + duration: animationDuration, timingFunction: timingFunction) XCTAssertEqual(viewModel.maskLayerFrameAnimation.value, expectedMaskLayerFrameAnimation) } } + +// MARK: - Helpers + +private extension CGRect { + func adaptedWidth(percent: Float) -> CGRect { + var mutableCopy = self + mutableCopy.size.width *= CGFloat(percent) + + return mutableCopy + } +} diff --git a/Example/Gemfile.lock b/Example/Gemfile.lock index 9b1c2de..5d8781a 100644 --- a/Example/Gemfile.lock +++ b/Example/Gemfile.lock @@ -17,23 +17,23 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.539.0) - aws-sdk-core (3.124.0) + aws-partitions (1.550.0) + aws-sdk-core (3.125.5) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.525.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-kms (1.52.0) - aws-sdk-core (~> 3, >= 3.122.0) + aws-sdk-kms (1.53.0) + aws-sdk-core (~> 3, >= 3.125.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.109.0) - aws-sdk-core (~> 3, >= 3.122.0) + aws-sdk-s3 (1.111.3) + aws-sdk-core (~> 3, >= 3.125.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) aws-sigv4 (1.4.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) - claide (1.0.3) + claide (1.1.0) cocoapods (1.11.2) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) @@ -86,17 +86,18 @@ GEM escape (0.0.4) ethon (0.15.0) ffi (>= 1.15.0) - excon (0.88.0) - faraday (1.8.0) + excon (0.90.0) + faraday (1.9.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) - faraday-httpclient (~> 1.0.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) faraday-net_http (~> 1.0) - faraday-net_http_persistent (~> 1.1) + faraday-net_http_persistent (~> 1.0) faraday-patron (~> 1.0) faraday-rack (~> 1.0) - multipart-post (>= 1.2, < 3) + faraday-retry (~> 1.0) ruby2_keywords (>= 0.0.4) faraday-cookie_jar (0.0.7) faraday (>= 0.8.0) @@ -105,14 +106,17 @@ GEM faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) faraday-httpclient (1.0.1) + faraday-multipart (1.0.3) + multipart-post (>= 1.2, < 3) faraday-net_http (1.0.1) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) + faraday-retry (1.0.3) faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.5) - fastlane (2.198.1) + fastimage (2.2.6) + fastlane (2.203.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -151,14 +155,14 @@ GEM xcodeproj (>= 1.13.0, < 2.0.0) xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) - fastlane-plugin-swiftformat (0.1.0) + fastlane-plugin-swiftformat (0.2.0) ffi (1.15.4) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.13.0) + google-apis-androidpublisher_v3 (0.15.0) google-apis-core (>= 0.4, < 2.a) - google-apis-core (0.4.1) + google-apis-core (0.4.2) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -167,11 +171,11 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.8.0) + google-apis-iamcredentials_v1 (0.10.0) google-apis-core (>= 0.4, < 2.a) - google-apis-playcustomapp_v1 (0.6.0) + google-apis-playcustomapp_v1 (0.7.0) google-apis-core (>= 0.4, < 2.a) - google-apis-storage_v1 (0.9.0) + google-apis-storage_v1 (0.11.0) google-apis-core (>= 0.4, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) @@ -179,8 +183,8 @@ GEM google-cloud-env (1.5.0) faraday (>= 0.17.3, < 2.0) google-cloud-errors (1.2.0) - google-cloud-storage (1.34.1) - addressable (~> 2.5) + google-cloud-storage (1.36.0) + addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) google-apis-storage_v1 (~> 0.1) @@ -200,7 +204,7 @@ GEM httpclient (2.8.3) i18n (1.8.11) concurrent-ruby (~> 1.0) - jmespath (1.4.0) + jmespath (1.5.0) json (2.6.1) jwt (2.3.0) memoist (0.16.2) @@ -271,7 +275,7 @@ GEM zeitwerk (2.5.1) PLATFORMS - ruby + x86_64-darwin-19 DEPENDENCIES cocoapods @@ -279,4 +283,4 @@ DEPENDENCIES fastlane-plugin-swiftformat BUNDLED WITH - 2.1.4 + 2.2.9 diff --git a/Example/GradientProgressBar.xcodeproj/project.pbxproj b/Example/GradientProgressBar.xcodeproj/project.pbxproj deleted file mode 100644 index 004e9ce..0000000 --- a/Example/GradientProgressBar.xcodeproj/project.pbxproj +++ /dev/null @@ -1,842 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 1986A067E4FB6B1E25150875 /* Pods_GradientProgressBar_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD5408C07FBE29B49AECF73C /* Pods_GradientProgressBar_Example.framework */; }; - 1FC930667FC3FC825C4373DE /* Pods_GradientProgressBar_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C0A7E4E3A01ED5AFE596220F /* Pods_GradientProgressBar_Tests.framework */; }; - 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD51AFB9204008FA782 /* AppDelegate.swift */; }; - 607FACD81AFB9204008FA782 /* BasicExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* BasicExampleViewController.swift */; }; - 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 607FACD91AFB9204008FA782 /* Main.storyboard */; }; - 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; - 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; - 641B86BC22AB937E00556C15 /* GradientProgressBarTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 641B86BA22AB937E00556C15 /* GradientProgressBarTestCase.swift */; }; - 64531A822337E89500792CC9 /* UIColorMakeDynamicColorTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64531A812337E89500792CC9 /* UIColorMakeDynamicColorTestCase.swift */; }; - 64B76B1B237576E500F9C2E0 /* CustomColorSnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64B76B19237576D500F9C2E0 /* CustomColorSnapshotTestCase.swift */; }; - 64BA30392374BC520035102B /* DefaultColorSnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64BA30382374BC520035102B /* DefaultColorSnapshotTestCase.swift */; }; - 64CA391D2255EBD3002B83C8 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64CA391C2255EBD3002B83C8 /* WebKit.framework */; }; - 64DEBFAD2316847A00A0A3A9 /* GradientLayerViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64DEBFAB2316844F00A0A3A9 /* GradientLayerViewModelTestCase.swift */; }; - 64DEBFAE2316847D00A0A3A9 /* MaskLayerViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64DEBFA92316843200A0A3A9 /* MaskLayerViewModelTestCase.swift */; }; - 97AF80D82157238D009B7566 /* WebViewExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97AF80D72157238D009B7566 /* WebViewExampleViewController.swift */; }; - 97DBEFBF2131364B006399E1 /* AdvancedExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97DBEFBE2131364B006399E1 /* AdvancedExampleViewController.swift */; }; - DE3F9553A6027259DFE700DB /* Pods_GradientProgressBar_SnapshotTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 477118EB1ABA06916CB7FBF7 /* Pods_GradientProgressBar_SnapshotTests.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 607FACC81AFB9204008FA782 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 607FACCF1AFB9204008FA782; - remoteInfo = GradientProgressBar; - }; - 64BA303B2374BC520035102B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 607FACC81AFB9204008FA782 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 607FACCF1AFB9204008FA782; - remoteInfo = GradientProgressBar_Example; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 26E463690733777194167E6A /* Pods-GradientProgressBar_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.release.xcconfig"; sourceTree = ""; }; - 3776D029A3182FB2DD3DF1F3 /* Pods-GradientProgressBar_Example-SnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_Example-SnapshotTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_Example-SnapshotTests/Pods-GradientProgressBar_Example-SnapshotTests.release.xcconfig"; sourceTree = ""; }; - 3EBDA82F697F84509D0B2050 /* Pods-GradientProgressBar_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.debug.xcconfig"; sourceTree = ""; }; - 477118EB1ABA06916CB7FBF7 /* Pods_GradientProgressBar_SnapshotTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientProgressBar_SnapshotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 567178D3DAD455764A4E33B6 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; - 607FACD01AFB9204008FA782 /* GradientProgressBar_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GradientProgressBar_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 607FACD71AFB9204008FA782 /* BasicExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicExampleViewController.swift; sourceTree = ""; }; - 607FACDA1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 607FACDC1AFB9204008FA782 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 607FACE51AFB9204008FA782 /* GradientProgressBar_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GradientProgressBar_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 641B86BA22AB937E00556C15 /* GradientProgressBarTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientProgressBarTestCase.swift; sourceTree = ""; }; - 64531A812337E89500792CC9 /* UIColorMakeDynamicColorTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorMakeDynamicColorTestCase.swift; sourceTree = ""; }; - 64B76B19237576D500F9C2E0 /* CustomColorSnapshotTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomColorSnapshotTestCase.swift; sourceTree = ""; }; - 64BA30362374BC520035102B /* GradientProgressBar_SnapshotTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GradientProgressBar_SnapshotTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 64BA30382374BC520035102B /* DefaultColorSnapshotTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultColorSnapshotTestCase.swift; sourceTree = ""; }; - 64BA303A2374BC520035102B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 64CA391C2255EBD3002B83C8 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - 64DEBFA92316843200A0A3A9 /* MaskLayerViewModelTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MaskLayerViewModelTestCase.swift; sourceTree = ""; }; - 64DEBFAB2316844F00A0A3A9 /* GradientLayerViewModelTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientLayerViewModelTestCase.swift; sourceTree = ""; }; - 6DD8204E6ECA4E6743504068 /* Pods-GradientProgressBar_SnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_SnapshotTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.debug.xcconfig"; sourceTree = ""; }; - 97AF80D72157238D009B7566 /* WebViewExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewExampleViewController.swift; sourceTree = ""; }; - 97DBEFBE2131364B006399E1 /* AdvancedExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedExampleViewController.swift; sourceTree = ""; }; - 99AF8B41726EDDA3CC894825 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 9A75FF2D96B47071144BF54E /* Pods-GradientProgressBar_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.debug.xcconfig"; sourceTree = ""; }; - AE30979BE3AE75A2B375F353 /* GradientProgressBar.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = GradientProgressBar.podspec; path = ../GradientProgressBar.podspec; sourceTree = ""; }; - C0A7E4E3A01ED5AFE596220F /* Pods_GradientProgressBar_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientProgressBar_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C20805F48344E2037592A404 /* Pods-GradientProgressBar_Example-SnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_Example-SnapshotTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_Example-SnapshotTests/Pods-GradientProgressBar_Example-SnapshotTests.debug.xcconfig"; sourceTree = ""; }; - C57FBA3A4E5FD26C8321A7AB /* Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests.debug.xcconfig"; sourceTree = ""; }; - CD5408C07FBE29B49AECF73C /* Pods_GradientProgressBar_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientProgressBar_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D88613A6DC087BA805555F66 /* Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests.release.xcconfig"; sourceTree = ""; }; - DC9C354CBDD23876804503B3 /* Pods-GradientProgressBar_SnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_SnapshotTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.release.xcconfig"; sourceTree = ""; }; - DC9FF9342709A7AC0065B5B9 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - FF591E10E6898BF5D8EE7B44 /* Pods-GradientProgressBar_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientProgressBar_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.release.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 607FACCD1AFB9204008FA782 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 64CA391D2255EBD3002B83C8 /* WebKit.framework in Frameworks */, - 1986A067E4FB6B1E25150875 /* Pods_GradientProgressBar_Example.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE21AFB9204008FA782 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1FC930667FC3FC825C4373DE /* Pods_GradientProgressBar_Tests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 64BA30332374BC520035102B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DE3F9553A6027259DFE700DB /* Pods_GradientProgressBar_SnapshotTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 607FACC71AFB9204008FA782 = { - isa = PBXGroup; - children = ( - 607FACF51AFB993E008FA782 /* Podspec Metadata */, - 607FACD21AFB9204008FA782 /* Example for GradientProgressBar */, - 607FACE81AFB9204008FA782 /* Tests */, - 64BA30372374BC520035102B /* SnapshotTests */, - 607FACD11AFB9204008FA782 /* Products */, - DE82AD93649D7EDD86BBCD71 /* Pods */, - D91CF1FC4E693F065D5250E1 /* Frameworks */, - ); - sourceTree = ""; - }; - 607FACD11AFB9204008FA782 /* Products */ = { - isa = PBXGroup; - children = ( - 607FACD01AFB9204008FA782 /* GradientProgressBar_Example.app */, - 607FACE51AFB9204008FA782 /* GradientProgressBar_Tests.xctest */, - 64BA30362374BC520035102B /* GradientProgressBar_SnapshotTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 607FACD21AFB9204008FA782 /* Example for GradientProgressBar */ = { - isa = PBXGroup; - children = ( - 607FACD51AFB9204008FA782 /* AppDelegate.swift */, - 607FACD71AFB9204008FA782 /* BasicExampleViewController.swift */, - 97DBEFBE2131364B006399E1 /* AdvancedExampleViewController.swift */, - 97AF80D72157238D009B7566 /* WebViewExampleViewController.swift */, - 607FACD91AFB9204008FA782 /* Main.storyboard */, - 607FACDC1AFB9204008FA782 /* Images.xcassets */, - 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, - 607FACD31AFB9204008FA782 /* Supporting Files */, - ); - name = "Example for GradientProgressBar"; - path = GradientProgressBar; - sourceTree = ""; - }; - 607FACD31AFB9204008FA782 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 607FACD41AFB9204008FA782 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 607FACE81AFB9204008FA782 /* Tests */ = { - isa = PBXGroup; - children = ( - 607FACE91AFB9204008FA782 /* Supporting Files */, - 64531A802337E87800792CC9 /* Extensions */, - 641B86B822AB937E00556C15 /* ViewModel */, - 641B86BA22AB937E00556C15 /* GradientProgressBarTestCase.swift */, - ); - path = Tests; - sourceTree = ""; - }; - 607FACE91AFB9204008FA782 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 607FACEA1AFB9204008FA782 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { - isa = PBXGroup; - children = ( - AE30979BE3AE75A2B375F353 /* GradientProgressBar.podspec */, - 99AF8B41726EDDA3CC894825 /* README.md */, - 567178D3DAD455764A4E33B6 /* LICENSE */, - ); - name = "Podspec Metadata"; - sourceTree = ""; - }; - 641B86B822AB937E00556C15 /* ViewModel */ = { - isa = PBXGroup; - children = ( - 64DEBFAB2316844F00A0A3A9 /* GradientLayerViewModelTestCase.swift */, - 64DEBFA92316843200A0A3A9 /* MaskLayerViewModelTestCase.swift */, - ); - path = ViewModel; - sourceTree = ""; - }; - 64531A802337E87800792CC9 /* Extensions */ = { - isa = PBXGroup; - children = ( - 64531A812337E89500792CC9 /* UIColorMakeDynamicColorTestCase.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 64BA30372374BC520035102B /* SnapshotTests */ = { - isa = PBXGroup; - children = ( - 64BA30382374BC520035102B /* DefaultColorSnapshotTestCase.swift */, - 64B76B19237576D500F9C2E0 /* CustomColorSnapshotTestCase.swift */, - 64BA303A2374BC520035102B /* Info.plist */, - DC9FF9342709A7AC0065B5B9 /* README.md */, - ); - path = SnapshotTests; - sourceTree = ""; - }; - D91CF1FC4E693F065D5250E1 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 64CA391C2255EBD3002B83C8 /* WebKit.framework */, - CD5408C07FBE29B49AECF73C /* Pods_GradientProgressBar_Example.framework */, - C0A7E4E3A01ED5AFE596220F /* Pods_GradientProgressBar_Tests.framework */, - 477118EB1ABA06916CB7FBF7 /* Pods_GradientProgressBar_SnapshotTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - DE82AD93649D7EDD86BBCD71 /* Pods */ = { - isa = PBXGroup; - children = ( - 9A75FF2D96B47071144BF54E /* Pods-GradientProgressBar_Example.debug.xcconfig */, - 26E463690733777194167E6A /* Pods-GradientProgressBar_Example.release.xcconfig */, - 3EBDA82F697F84509D0B2050 /* Pods-GradientProgressBar_Tests.debug.xcconfig */, - FF591E10E6898BF5D8EE7B44 /* Pods-GradientProgressBar_Tests.release.xcconfig */, - C20805F48344E2037592A404 /* Pods-GradientProgressBar_Example-SnapshotTests.debug.xcconfig */, - 3776D029A3182FB2DD3DF1F3 /* Pods-GradientProgressBar_Example-SnapshotTests.release.xcconfig */, - C57FBA3A4E5FD26C8321A7AB /* Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests.debug.xcconfig */, - D88613A6DC087BA805555F66 /* Pods-GradientProgressBar_Example-GradientProgressBar_SnapshotTests.release.xcconfig */, - 6DD8204E6ECA4E6743504068 /* Pods-GradientProgressBar_SnapshotTests.debug.xcconfig */, - DC9C354CBDD23876804503B3 /* Pods-GradientProgressBar_SnapshotTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 607FACCF1AFB9204008FA782 /* GradientProgressBar_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "GradientProgressBar_Example" */; - buildPhases = ( - 69E80851A26578AC55588981 /* [CP] Check Pods Manifest.lock */, - 607FACCC1AFB9204008FA782 /* Sources */, - 607FACCD1AFB9204008FA782 /* Frameworks */, - 607FACCE1AFB9204008FA782 /* Resources */, - 2B6490026C0D707569BCAF85 /* [CP] Embed Pods Frameworks */, - 970D1F17201BB73D00F90864 /* Swiftformat */, - 97081BBC2010A2630005913C /* Swiftlint */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GradientProgressBar_Example; - productName = GradientProgressBar; - productReference = 607FACD01AFB9204008FA782 /* GradientProgressBar_Example.app */; - productType = "com.apple.product-type.application"; - }; - 607FACE41AFB9204008FA782 /* GradientProgressBar_Tests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "GradientProgressBar_Tests" */; - buildPhases = ( - 764637E5A01F66B0BB001A19 /* [CP] Check Pods Manifest.lock */, - 607FACE11AFB9204008FA782 /* Sources */, - 607FACE21AFB9204008FA782 /* Frameworks */, - 607FACE31AFB9204008FA782 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 607FACE71AFB9204008FA782 /* PBXTargetDependency */, - ); - name = GradientProgressBar_Tests; - productName = Tests; - productReference = 607FACE51AFB9204008FA782 /* GradientProgressBar_Tests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 64BA30352374BC520035102B /* GradientProgressBar_SnapshotTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 64BA303F2374BC520035102B /* Build configuration list for PBXNativeTarget "GradientProgressBar_SnapshotTests" */; - buildPhases = ( - 44F61F63AA3BAB383DCA9CEA /* [CP] Check Pods Manifest.lock */, - 64BA30322374BC520035102B /* Sources */, - 64BA30332374BC520035102B /* Frameworks */, - 64BA30342374BC520035102B /* Resources */, - D3BDC900957F89C52D7BF399 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 64BA303C2374BC520035102B /* PBXTargetDependency */, - ); - name = GradientProgressBar_SnapshotTests; - productName = SnapshotTests; - productReference = 64BA30362374BC520035102B /* GradientProgressBar_SnapshotTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 607FACC81AFB9204008FA782 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1120; - LastUpgradeCheck = 1020; - ORGANIZATIONNAME = CocoaPods; - TargetAttributes = { - 607FACCF1AFB9204008FA782 = { - CreatedOnToolsVersion = 6.3.1; - DevelopmentTeam = 7AP949PR8S; - LastSwiftMigration = 1020; - }; - 607FACE41AFB9204008FA782 = { - CreatedOnToolsVersion = 6.3.1; - LastSwiftMigration = 1020; - TestTargetID = 607FACCF1AFB9204008FA782; - }; - 64BA30352374BC520035102B = { - CreatedOnToolsVersion = 11.2; - ProvisioningStyle = Automatic; - TestTargetID = 607FACCF1AFB9204008FA782; - }; - }; - }; - buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "GradientProgressBar" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 607FACC71AFB9204008FA782; - productRefGroup = 607FACD11AFB9204008FA782 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 607FACCF1AFB9204008FA782 /* GradientProgressBar_Example */, - 607FACE41AFB9204008FA782 /* GradientProgressBar_Tests */, - 64BA30352374BC520035102B /* GradientProgressBar_SnapshotTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 607FACCE1AFB9204008FA782 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, - 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, - 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE31AFB9204008FA782 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 64BA30342374BC520035102B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 2B6490026C0D707569BCAF85 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/GradientProgressBar/GradientProgressBar.framework", - "${BUILT_PRODUCTS_DIR}/LightweightObservable/LightweightObservable.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GradientProgressBar.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LightweightObservable.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 44F61F63AA3BAB383DCA9CEA /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-GradientProgressBar_SnapshotTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 69E80851A26578AC55588981 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-GradientProgressBar_Example-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 764637E5A01F66B0BB001A19 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-GradientProgressBar_Tests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 97081BBC2010A2630005913C /* Swiftlint */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = Swiftlint; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "SWIFTLINT=\"${PODS_ROOT}/SwiftLint/swiftlint\"\nif [ ! -f \"$SWIFTLINT\" ]; then\n echo \"warning: SwiftLint not installed!\"\n exit 1\nfi\n\n$SWIFTLINT\n"; - }; - 970D1F17201BB73D00F90864 /* Swiftformat */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = Swiftformat; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "SWIFTFORMAT=\"${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat\"\nif [ ! -f \"$SWIFTFORMAT\" ]; then\n echo \"warning: SwiftFormat not installed!\"\n exit 1\nfi\n\n$SWIFTFORMAT ../ --config \"${PODS_ROOT}/SwiftConfigurationFiles/.swiftformat\"\n"; - }; - D3BDC900957F89C52D7BF399 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/SnapshotTesting/SnapshotTesting.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapshotTesting.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 607FACCC1AFB9204008FA782 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 607FACD81AFB9204008FA782 /* BasicExampleViewController.swift in Sources */, - 97AF80D82157238D009B7566 /* WebViewExampleViewController.swift in Sources */, - 97DBEFBF2131364B006399E1 /* AdvancedExampleViewController.swift in Sources */, - 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE11AFB9204008FA782 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 64DEBFAE2316847D00A0A3A9 /* MaskLayerViewModelTestCase.swift in Sources */, - 641B86BC22AB937E00556C15 /* GradientProgressBarTestCase.swift in Sources */, - 64DEBFAD2316847A00A0A3A9 /* GradientLayerViewModelTestCase.swift in Sources */, - 64531A822337E89500792CC9 /* UIColorMakeDynamicColorTestCase.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 64BA30322374BC520035102B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 64B76B1B237576E500F9C2E0 /* CustomColorSnapshotTestCase.swift in Sources */, - 64BA30392374BC520035102B /* DefaultColorSnapshotTestCase.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 607FACCF1AFB9204008FA782 /* GradientProgressBar_Example */; - targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; - }; - 64BA303C2374BC520035102B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 607FACCF1AFB9204008FA782 /* GradientProgressBar_Example */; - targetProxy = 64BA303B2374BC520035102B /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 607FACD91AFB9204008FA782 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 607FACDA1AFB9204008FA782 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */ = { - isa = PBXVariantGroup; - children = ( - 607FACDF1AFB9204008FA782 /* Base */, - ); - name = LaunchScreen.xib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 607FACED1AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 607FACEE1AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 607FACF01AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9A75FF2D96B47071144BF54E /* Pods-GradientProgressBar_Example.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = 7AP949PR8S; - INFOPLIST_FILE = GradientProgressBar/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MODULE_NAME = ExampleApp; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 607FACF11AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 26E463690733777194167E6A /* Pods-GradientProgressBar_Example.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - DEVELOPMENT_TEAM = 7AP949PR8S; - INFOPLIST_FILE = GradientProgressBar/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MODULE_NAME = ExampleApp; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 607FACF31AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3EBDA82F697F84509D0B2050 /* Pods-GradientProgressBar_Tests.debug.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = Tests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GradientProgressBar_Example.app/GradientProgressBar_Example"; - }; - name = Debug; - }; - 607FACF41AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FF591E10E6898BF5D8EE7B44 /* Pods-GradientProgressBar_Tests.release.xcconfig */; - buildSettings = { - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - INFOPLIST_FILE = Tests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GradientProgressBar_Example.app/GradientProgressBar_Example"; - }; - name = Release; - }; - 64BA303D2374BC520035102B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6DD8204E6ECA4E6743504068 /* Pods-GradientProgressBar_SnapshotTests.debug.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = SnapshotTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.SnapshotTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GradientProgressBar_Example.app/GradientProgressBar_Example"; - }; - name = Debug; - }; - 64BA303E2374BC520035102B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DC9C354CBDD23876804503B3 /* Pods-GradientProgressBar_SnapshotTests.release.xcconfig */; - buildSettings = { - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_STYLE = Automatic; - GCC_C_LANGUAGE_STANDARD = gnu11; - INFOPLIST_FILE = SnapshotTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.SnapshotTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GradientProgressBar_Example.app/GradientProgressBar_Example"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "GradientProgressBar" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACED1AFB9204008FA782 /* Debug */, - 607FACEE1AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "GradientProgressBar_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACF01AFB9204008FA782 /* Debug */, - 607FACF11AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "GradientProgressBar_Tests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACF31AFB9204008FA782 /* Debug */, - 607FACF41AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 64BA303F2374BC520035102B /* Build configuration list for PBXNativeTarget "GradientProgressBar_SnapshotTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 64BA303D2374BC520035102B /* Debug */, - 64BA303E2374BC520035102B /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 607FACC81AFB9204008FA782 /* Project object */; -} diff --git a/Example/GradientProgressBar.xcodeproj/xcshareddata/xcschemes/GradientProgressBar-Example.xcscheme b/Example/GradientProgressBar.xcodeproj/xcshareddata/xcschemes/GradientProgressBar-Example.xcscheme deleted file mode 100644 index 2bad979..0000000 --- a/Example/GradientProgressBar.xcodeproj/xcshareddata/xcschemes/GradientProgressBar-Example.xcscheme +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/GradientProgressBar/AdvancedExampleViewController.swift b/Example/GradientProgressBar/AdvancedExampleViewController.swift deleted file mode 100644 index 88ba18a..0000000 --- a/Example/GradientProgressBar/AdvancedExampleViewController.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// AdvancedExampleViewController.swift -// GradientProgressBar_Example -// -// Created by Felix Mau on 25.08.18. -// Copyright © 2018 Felix Mau. All rights reserved. -// - -import UIKit -import GradientProgressBar - -class AdvancedExampleViewController: UIViewController { - // MARK: - Config - - /// Value that the progress bar is increased by on each tap on button. - static let increaseValue: Float = 0.1 - - // MARK: - Outlets - - @IBOutlet private var gradientProgressBar: GradientProgressBar! - - // MARK: - Public methods - - override func viewDidLoad() { - super.viewDidLoad() - - gradientProgressBar.animationDuration = 0.5 - - // Source: https://color.adobe.com/Pink-Flamingo-color-theme-10343714/ - gradientProgressBar.gradientColors = [ - #colorLiteral(red: 0.9490196078, green: 0.3215686275, blue: 0.431372549, alpha: 1), #colorLiteral(red: 0.9450980392, green: 0.4784313725, blue: 0.5921568627, alpha: 1), #colorLiteral(red: 0.9529411765, green: 0.737254902, blue: 0.7843137255, alpha: 1), #colorLiteral(red: 0.4274509804, green: 0.8666666667, blue: 0.9490196078, alpha: 1), #colorLiteral(red: 0.7568627451, green: 0.9411764706, blue: 0.9568627451, alpha: 1), - ] - - let easeInBack = CAMediaTimingFunction(controlPoints: 0.600, -0.280, 0.735, 0.045) - gradientProgressBar.timingFunction = easeInBack - } - - @IBAction private func onAnimateButtonTouchUpInside(_: Any) { - let currentProgress = gradientProgressBar.progress - let updatedProgress = currentProgress + BasicExampleViewController.increaseValue - - gradientProgressBar.setProgress(updatedProgress, animated: true) - } - - @IBAction private func onSetProgressButtonTouchUpInside(_: Any) { - let currentProgress = gradientProgressBar.progress - let updatedProgress = currentProgress + BasicExampleViewController.increaseValue - - gradientProgressBar.progress = updatedProgress - } - - @IBAction private func onResetButtonTouchUpInside(_: Any) { - gradientProgressBar.progress = 0.0 - } -} diff --git a/Example/GradientProgressBar/AppDelegate.swift b/Example/GradientProgressBar/AppDelegate.swift deleted file mode 100644 index ba868ba..0000000 --- a/Example/GradientProgressBar/AppDelegate.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// AppDelegate.swift -// GradientProgressBar_Example -// -// Created by Felix Mau on 30.09.17. -// Copyright © 2018 Felix Mau. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - var window: UIWindow? - - func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - true - } - - func applicationWillResignActive(_: UIApplication) { - // Sent when the application is about to move from active to inactive state. - // This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application - // and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your - // application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_: UIApplication) { - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. - // If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } -} diff --git a/Example/GradientProgressBar/Base.lproj/LaunchScreen.xib b/Example/GradientProgressBar/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 5f42efe..0000000 --- a/Example/GradientProgressBar/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/GradientProgressBar/Base.lproj/Main.storyboard b/Example/GradientProgressBar/Base.lproj/Main.storyboard deleted file mode 100644 index c2d6b50..0000000 --- a/Example/GradientProgressBar/Base.lproj/Main.storyboard +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/GradientProgressBar/BasicExampleViewController.swift b/Example/GradientProgressBar/BasicExampleViewController.swift deleted file mode 100644 index a1f0d91..0000000 --- a/Example/GradientProgressBar/BasicExampleViewController.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// BasicExampleViewController.swift -// GradientProgressBar_Example -// -// Created by Felix Mau on 30.09.17. -// Copyright © 2017 Felix Mau. All rights reserved. -// - -import UIKit -import GradientProgressBar - -class BasicExampleViewController: UIViewController { - // MARK: - Config - - /// Value that the progress bar is increased by on each tap on button. - static let increaseValue: Float = 0.1 - - // MARK: - Outlets - - @IBOutlet private var gradientProgressBar: GradientProgressBar! - - // MARK: - Public methods - - @IBAction private func onAnimateButtonTouchUpInside(_: Any) { - let currentProgress = gradientProgressBar.progress - let updatedProgress = currentProgress + BasicExampleViewController.increaseValue - - gradientProgressBar.setProgress(updatedProgress, animated: true) - } - - @IBAction private func onSetProgressButtonTouchUpInside(_: Any) { - let currentProgress = gradientProgressBar.progress - let updatedProgress = currentProgress + BasicExampleViewController.increaseValue - - gradientProgressBar.progress = updatedProgress - } - - @IBAction private func onResetButtonTouchUpInside(_: Any) { - gradientProgressBar.progress = 0.0 - } -} diff --git a/Example/GradientProgressBar/Images.xcassets/AppIcon.appiconset/Contents.json b/Example/GradientProgressBar/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 19882d5..0000000 --- a/Example/GradientProgressBar/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "images" : [ - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "20x20", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "29x29", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "40x40", - "scale" : "3x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "2x" - }, - { - "idiom" : "iphone", - "size" : "60x60", - "scale" : "3x" - }, - { - "idiom" : "ios-marketing", - "size" : "1024x1024", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/Contents.json b/Example/GradientProgressBar/Images.xcassets/Glyph Icons/Contents.json deleted file mode 100644 index da4a164..0000000 --- a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/refresh.imageset/Contents.json b/Example/GradientProgressBar/Images.xcassets/Glyph Icons/refresh.imageset/Contents.json deleted file mode 100644 index 3814d10..0000000 --- a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/refresh.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "refresh.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "template-rendering-intent" : "template" - } -} \ No newline at end of file diff --git a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/refresh.imageset/refresh.pdf b/Example/GradientProgressBar/Images.xcassets/Glyph Icons/refresh.imageset/refresh.pdf deleted file mode 100644 index 7601c9f..0000000 Binary files a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/refresh.imageset/refresh.pdf and /dev/null differ diff --git a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/services.imageset/Contents.json b/Example/GradientProgressBar/Images.xcassets/Glyph Icons/services.imageset/Contents.json deleted file mode 100644 index 34a675d..0000000 --- a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/services.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "services.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "template-rendering-intent" : "template" - } -} \ No newline at end of file diff --git a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/services.imageset/services.pdf b/Example/GradientProgressBar/Images.xcassets/Glyph Icons/services.imageset/services.pdf deleted file mode 100644 index 6c5650c..0000000 Binary files a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/services.imageset/services.pdf and /dev/null differ diff --git a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/timer.imageset/Contents.json b/Example/GradientProgressBar/Images.xcassets/Glyph Icons/timer.imageset/Contents.json deleted file mode 100644 index 7af4f0f..0000000 --- a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/timer.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "timer.pdf" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - }, - "properties" : { - "template-rendering-intent" : "template" - } -} \ No newline at end of file diff --git a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/timer.imageset/timer.pdf b/Example/GradientProgressBar/Images.xcassets/Glyph Icons/timer.imageset/timer.pdf deleted file mode 100644 index 3e56cc3..0000000 Binary files a/Example/GradientProgressBar/Images.xcassets/Glyph Icons/timer.imageset/timer.pdf and /dev/null differ diff --git a/Example/GradientProgressBar/Info.plist b/Example/GradientProgressBar/Info.plist deleted file mode 100644 index eb18faa..0000000 --- a/Example/GradientProgressBar/Info.plist +++ /dev/null @@ -1,39 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - - - diff --git a/Example/Podfile b/Example/Podfile index f0489a7..e364bbc 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -1,10 +1,10 @@ # Fixes warning `Your project does not explicitly specify the CocoaPods master specs repo`. source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '13.0' +platform :ios, '15.0' use_frameworks! -target 'GradientProgressBar_Example' do +target 'Example' do pod 'GradientProgressBar', :path => '../' # Development pods. @@ -12,22 +12,40 @@ target 'GradientProgressBar_Example' do pod 'SwiftLint', '~> 0.42' pod 'SwiftConfigurationFiles', :git => 'https://github.com/fxm90/SwiftConfigurationFiles.git' - target 'GradientProgressBar_Tests' do + target 'ExampleTests' do inherit! :search_paths # Pods for testing. end - target 'GradientProgressBar_SnapshotTests' do + target 'ExampleSnapshotTests' do inherit! :search_paths # Pods for snapshot testing. - pod 'SnapshotTesting', '~> 1.7', :inhibit_warnings => true + pod 'SnapshotTesting', '~> 1.9', :inhibit_warnings => true end post_install do |installer| - # Fix issues with interface builder and cocoapods. + + # + # Fix warning from `pod install` in Xcode. + # + # > The iOS Simulator deployment targets is set to 8.0, + # > but the range of supported deployment target version for this platform is X.X to Y.Y + # + # Source: https://stackoverflow.com/a/63489366 + # + installer.pods_project.targets.each do |target| + target.build_configurations.each do |config| + config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' + end + end + + # + # Fix issues with interface builder and CocoaPods. + # # Source: https://github.com/CocoaPods/CocoaPods/issues/7606#issuecomment-484294739 + # installer.pods_project.build_configurations.each do |config| next unless config.name == 'Debug' @@ -35,15 +53,5 @@ target 'GradientProgressBar_Example' do '$(FRAMEWORK_SEARCH_PATHS)' ] end - - # We support all iOS versions starting from 9.0. Therefore we manually decrease the deployment target for `GradientProgressBar` here, - # so other (development / testing related pods) can use a higher deployment target, which is defined using `platform :ios` above. - installer.pods_project.targets.each do |target| - next unless target.name == 'GradientProgressBar' - - target.build_configurations.each do |config| - config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' - end - end end end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 46ca340..bb864a1 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,15 +1,15 @@ PODS: - GradientProgressBar (2.0.3): - LightweightObservable (~> 2.1) - - LightweightObservable (2.1.2) + - LightweightObservable (2.2.0) - SnapshotTesting (1.9.0) - SwiftConfigurationFiles (0.0.1) - - SwiftFormat/CLI (0.49.1) - - SwiftLint (0.45.1) + - SwiftFormat/CLI (0.49.4) + - SwiftLint (0.46.3) DEPENDENCIES: - GradientProgressBar (from `../`) - - SnapshotTesting (~> 1.7) + - SnapshotTesting (~> 1.9) - SwiftConfigurationFiles (from `https://github.com/fxm90/SwiftConfigurationFiles.git`) - SwiftFormat/CLI (~> 0.41) - SwiftLint (~> 0.42) @@ -33,13 +33,13 @@ CHECKOUT OPTIONS: :git: https://github.com/fxm90/SwiftConfigurationFiles.git SPEC CHECKSUMS: - GradientProgressBar: f9d961c1b2a1bd9e74c52a36d19a97541ac2a154 - LightweightObservable: c5ac85423a5edbed9a920b4d5c7b8f94ab3688c4 + GradientProgressBar: c3b3d2f6a19349bb5547e301be7f63636923f762 + LightweightObservable: a4fce3323002aa57234f3cf5524eecb144cc781f SnapshotTesting: 6141c48b6aa76ead61431ca665c14ab9a066c53b SwiftConfigurationFiles: 1cf2228a911ebed9f42f8dec077bb634f04ca6c8 - SwiftFormat: 16b41f3229f5e7edb130ac4cd631cceed7af7d5e - SwiftLint: 06ac37e4d38c7068e0935bb30cda95f093bec761 + SwiftFormat: 8acc16efcecb563206cbe90b4cb047cfdf9aafdb + SwiftLint: ae76d82f056734f853c8cd0371503252c606c482 -PODFILE CHECKSUM: 237d5f16f0ced9dc619560f13fbfd816356e1fa5 +PODFILE CHECKSUM: 16e9dd1b60064d93469f561afee3ef05775a3e8d COCOAPODS: 1.11.2 diff --git a/GradientProgressBar/Classes/GradientProgressBar.swift b/Example/Pods/GradientProgressBar.swift similarity index 100% rename from GradientProgressBar/Classes/GradientProgressBar.swift rename to Example/Pods/GradientProgressBar.swift diff --git a/Example/Pods/GradientProgressBarViewStyle.swift b/Example/Pods/GradientProgressBarViewStyle.swift new file mode 100644 index 0000000..a9e3d63 --- /dev/null +++ b/Example/Pods/GradientProgressBarViewStyle.swift @@ -0,0 +1,67 @@ +// +// GradientProgressBarViewStyle.swift +// GradientProgressBar +// +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI + +/// +/// +/// - Note: Requires **iOS 15**, due to the view-modifier `mask(alignment:_:)`. +@available(iOS 15.0, *) +struct GradientProgressBarViewStyle: ProgressViewStyle { + // MARK: - Config + + enum Config { + static let defaultBackgroundColor = Color(UIColor.GradientProgressBar.backgroundColor) + static let defaultGradientColors = UIColor.GradientProgressBar.gradientColors.map(Color.init) + static let defaultCornerRadius: Double = 2 + } + + // MARK: - Public properties + + let backgroundColor: Color + let gradientColors: [Color] + let cornerRadius: Double + + // MARK: - Public methods + + func makeBody(configuration: Configuration) -> some View { + GeometryReader { proxy in + ZStack { + RoundedRectangle(cornerRadius: cornerRadius) + .fill(backgroundColor) + + LinearGradient(colors: gradientColors, startPoint: .leading, endPoint: .trailing) + .mask(alignment: .leading) { + RoundedRectangle(cornerRadius: cornerRadius) + .frame(width: (configuration.fractionCompleted ?? 0) * proxy.size.width) + } + } + } + } +} + +// MARK: - Helpers + +@available(iOS 15.0, *) +extension ProgressViewStyle where Self == GradientProgressBarViewStyle { + /// + /// + static var gradientProgressBar: Self { + gradientProgressBar() + } + + /// + /// + static func gradientProgressBar(backgroundColor: Color = GradientProgressBarViewStyle.Config.defaultBackgroundColor, + gradientColors: [Color] = GradientProgressBarViewStyle.Config.defaultGradientColors, + cornerRadius: Double = GradientProgressBarViewStyle.Config.defaultCornerRadius) -> Self { + GradientProgressBarViewStyle(backgroundColor: backgroundColor, + gradientColors: gradientColors, + cornerRadius: cornerRadius) + } +} diff --git a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Disposable.swift b/Example/Pods/LightweightObservable/LightweightObservable/Disposable.swift similarity index 67% rename from Example/Pods/LightweightObservable/LightweightObservable/Classes/Disposable.swift rename to Example/Pods/LightweightObservable/LightweightObservable/Disposable.swift index 9cac1be..9864946 100644 --- a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Disposable.swift +++ b/Example/Pods/LightweightObservable/LightweightObservable/Disposable.swift @@ -11,35 +11,36 @@ import Foundation /// Helper to allow storing multiple disposables and matching name from [RxSwift](https://github.com/ReactiveX/RxSwift). public typealias DisposeBag = [Disposable] -/// Executes a given closure on it's deallocation. +/// Calls a closure on when this instance is deallocated. public final class Disposable { // MARK: - Types - /// Type for closure to be executed on deallocation. + /// Type for the closure to be called on deallocation. public typealias Dispose = () -> Void // MARK: - Private properties - /// Closure to be executed on deallocation. + /// The closure to be called on deallocation. private let dispose: Dispose // MARK: - Initializer /// Creates a new instance. /// - /// - Parameter dispose: The closure that is executed on deallocation. + /// - Parameter dispose: The closure that is called on deallocation. public init(_ dispose: @escaping Dispose) { self.dispose = dispose } - /// Executes our closure. deinit { dispose() } // MARK: - Public methods - /// Adds the current instance to the given array of disposables. + /// Adds the current instance to the given array of `Disposable`. + /// + /// - Parameter bag: Reference to the array of `Disposable`. public func disposed(by bag: inout DisposeBag) { bag.append(self) } diff --git a/Example/Pods/LightweightObservable/LightweightObservable/Extensions/Observable+Combine.swift b/Example/Pods/LightweightObservable/LightweightObservable/Extensions/Observable+Combine.swift new file mode 100644 index 0000000..8fa9f72 --- /dev/null +++ b/Example/Pods/LightweightObservable/LightweightObservable/Extensions/Observable+Combine.swift @@ -0,0 +1,64 @@ +// +// Observable+Combine.swift +// LightweightObservable +// +// Created by Felix Mau on 04.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import Combine + +// Based on: +// https://thoughtbot.com/blog/lets-build-a-custom-publisher-in-combine + +@available(iOS 13.0, *) +extension Observable: Publisher { + public typealias Output = T + public typealias Failure = Never + + public func receive(subscriber: S) where S.Input == Output, S.Failure == Failure { + let subscription = Subscription(subscriber: subscriber) + subscriber.receive(subscription: subscription) + + // We explicitly subscribe to our `Observable` instance after passing the `Combine.Subscription` to the `Combine.Subscriber`. + // This makes sure when the underlying type of the `Observable` is a `Variable´, we correctly forward the initial value. + subscription.subscribe(to: self) + } +} + +@available(iOS 13.0, *) +private extension Observable { + /// A custom subscription to forward events from an `Observable` instance. + final class Subscription where S.Input == Output, S.Failure == Failure { + private var subscriber: S? + private var disposable: Disposable? + + init(subscriber: S) { + self.subscriber = subscriber + } + + /// Updates our `subscriber` (`Combine.Subscriber`) with the values from the observable. + /// + /// - Note: We explicitly avoid storing a reference to the observable from this instance (`Combine.Subscription`), + /// as this would create a retain cycle!! + func subscribe(to observable: Observable) { + disposable = observable.subscribe { [weak self] value, _ in + _ = self?.subscriber?.receive(value) + } + } + } +} + +@available(iOS 13.0, *) +extension Observable.Subscription: Subscription { + func request(_: Subscribers.Demand) { + // This subscription doesn't respond to demand, since it'll only emit events + // according to its underlying `Observable` instance. + } + + func cancel() { + // When the subscription was cancelled, we'll release the reference to our observable-subscription + // in order to prevent any additional events from being sent. + disposable = nil + } +} diff --git a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Extensions/Observable+Equatable.swift b/Example/Pods/LightweightObservable/LightweightObservable/Extensions/Observable+Equatable.swift similarity index 97% rename from Example/Pods/LightweightObservable/LightweightObservable/Classes/Extensions/Observable+Equatable.swift rename to Example/Pods/LightweightObservable/LightweightObservable/Extensions/Observable+Equatable.swift index 42c7ad4..8feb5e1 100644 --- a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Extensions/Observable+Equatable.swift +++ b/Example/Pods/LightweightObservable/LightweightObservable/Extensions/Observable+Equatable.swift @@ -30,7 +30,7 @@ public extension Observable where T: Equatable { /// - observer: The closure that is notified on changes if the filter succeeds. /// /// - Note: - /// The `oldValue` of the observer always contains the previous value that passed the filter! E.g. if you filter for even numbers: + /// The `oldValue` of the observer always contains the previous value that passed the filter! E.g. if you filter for **even numbers**: /// ``` /// | Emitted values: | 0 | 1 | 2 | 3 | 4 | 5 | /// | -------------------------- | -------- | -------- | -------- | -------- | -------- | -------- | diff --git a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Extensions/Observable+KeyPath.swift b/Example/Pods/LightweightObservable/LightweightObservable/Extensions/Observable+KeyPath.swift similarity index 100% rename from Example/Pods/LightweightObservable/LightweightObservable/Classes/Extensions/Observable+KeyPath.swift rename to Example/Pods/LightweightObservable/LightweightObservable/Extensions/Observable+KeyPath.swift diff --git a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable.swift b/Example/Pods/LightweightObservable/LightweightObservable/Observable.swift similarity index 92% rename from Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable.swift rename to Example/Pods/LightweightObservable/LightweightObservable/Observable.swift index ef1797d..da3c729 100644 --- a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable.swift +++ b/Example/Pods/LightweightObservable/LightweightObservable/Observable.swift @@ -38,8 +38,6 @@ public class Observable { /// The current (readonly) value of the observable (if available). /// /// - Note: We're using a computed property here, cause we need to override this property without nullability in the subclass `Variable`. - /// - /// - Attention: It's always better to subscribe to a given observable! This **shortcut** should only be used during **testing**. public var value: Value? { fatalError("⚠️ – Trying to access an abstract property! Subclasses need to overwrite and implement this computed property.") } @@ -61,6 +59,14 @@ public class Observable { // MARK: - Public methods + /// Updates the current value. + /// + /// - Parameter value: The new value to apply. + public func update(_: Value) { + // swiftlint:disable:previous unavailable_function + fatalError("⚠️ – Trying to call an abstract function! Subclasses need to overwrite and implement this method.") + } + /// Informs the given observer on changes to our underlying property `value`. /// /// - Parameter observer: The closure that is notified on changes. @@ -111,8 +117,7 @@ public final class PublishSubject: Observable { // MARK: - Public methods - /// Updates the publish subject using the given value. - public func update(_ value: Value) { + override public func update(_ value: Value) { let oldValue = _value _value = value @@ -156,6 +161,10 @@ public final class Variable: Observable { // MARK: - Public methods + override public func update(_ value: Value) { + self.value = value + } + override public func subscribe(_ observer: @escaping Observer) -> Disposable { let disposable = super.subscribe(observer) diff --git a/Example/Pods/LightweightObservable/README.md b/Example/Pods/LightweightObservable/README.md index f52f69b..4038b21 100644 --- a/Example/Pods/LightweightObservable/README.md +++ b/Example/Pods/LightweightObservable/README.md @@ -2,7 +2,7 @@

Swift Version - CI Status + CI Status Code Coverage Version License @@ -28,6 +28,39 @@ To run the example project, clone the repo, and open the workspace from the Exam - Xcode 10.2+ - iOS 9.0+ +### Projects targeting iOS >= 13.0 +In case your minimum required version is greater equal iOS 13.0, I recommend using [Combine](https://developer.apple.com/documentation/combine) instead of adding `Lightweight Observable` as a dependency. + +If you rely on having a current and previous value in your subscription closure, please have a look at this extension: [Combine+Pairwise.swift](https://gist.github.com/fxm90/be62335d987016c84d2f8b3731197c98). + +#### Update: Since version `2.2` an `Observable` instance conforms to the [`Publisher`](https://developer.apple.com/documentation/combine/publisher) protocol from Swift's `Combine` 🎉 + +This makes transitioning from `LightweightObservable` to `Combine` a lot easier, as you can use features from `Combine` without having to change the underlying `Observable` to a `Publisher`. + +Example Code for using `Combine` functions on an instance of `PublishSubject`: + +```swift +var subscriptions = Set() + +let publishSubject = PublishSubject() +publishSubject + .map { $0 * 2 } + .sink { print($0) } + .store(in: &subscriptions) + +publishSubject.update(1) // Prints "2" +publishSubject.update(2) // Prints "4" +publishSubject.update(3) // Prints "6" +``` + +**Cheatsheet** + +| `LightweightObservable` | `Combine` | +| ----------------------- | --------------------- | +| `PublishSubject` | `PassthroughSubject` | +| `Variable` | `CurrentValueSubject` | + + ### Integration ##### CocoaPods [CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate Lightweight Observable into your Xcode project using CocoaPods, specify it in your `Podfile`: @@ -84,6 +117,8 @@ let formattedTimeSubject = Variable("4:20 PM") // ... formattedTimeSubject.value = "4:21 PM" +// or +formattedTimeSubject.update("4:21 PM") ``` #### – Create an `Observable` @@ -227,43 +262,42 @@ XCTAssertEqual(viewModel.formattedTime.value, "4:20") Using the given approach, your view-model could look like this: ```swift -class TimeViewModel { +final class ViewModel { // MARK: - Public properties - /// The current time as a formatted string (**immutable**). - var formattedTime: Observable { - formattedTimeSubject + /// The current date and time as a formatted string (**immutable**). + var formattedDate: Observable { + formattedDateSubject } // MARK: - Private properties - /// The current time as a formatted string (**mutable**). - private let formattedTimeSubject: Variable = Variable("\(Date())") + /// The current date and time as a formatted string (**mutable**). + private let formattedDateSubject: Variable = Variable("\(Date())") private var timer: Timer? // MARK: - Initializer init() { - // Update variable with current time every second. - timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { [weak self] _ in - self?.formattedTimeSubject.value = "\(Date())" - }) + // Update variable with current date and time every second. + timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in + self?.formattedDateSubject.value = "\(Date())" + } } ``` And your view controller like this: ```swift -class TimeViewController: UIViewController { +final class ViewController: UIViewController { // MARK: - Outlets - @IBOutlet private var timeLabel: UILabel! + @IBOutlet private var dateLabel: UILabel! // MARK: - Private properties - /// The view model calculating the current time. - private let timeViewModel = TimeViewModel() + private let viewModel = ViewModel() /// The dispose bag for this view controller. On it's deallocation, it removes the /// subscription-closures from the corresponding observable-properties. @@ -274,9 +308,9 @@ class TimeViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - timeViewModel - .formattedTime - .bind(to: \.text, on: timeLabel) + viewModel + .formattedDate + .bind(to: \.text, on: dateLabel) .disposed(by: &disposeBag) } ``` diff --git a/Example/Pods/Local Podspecs/GradientProgressBar.podspec.json b/Example/Pods/Local Podspecs/GradientProgressBar.podspec.json index 759024c..ca1c079 100644 --- a/Example/Pods/Local Podspecs/GradientProgressBar.podspec.json +++ b/Example/Pods/Local Podspecs/GradientProgressBar.podspec.json @@ -16,15 +16,15 @@ "git": "https://github.com/fxm90/GradientProgressBar.git", "tag": "2.0.3" }, - "swift_versions": "5.1", + "swift_versions": "5.5", "platforms": { "ios": "9.0" }, - "source_files": "GradientProgressBar/Classes/**/*", + "source_files": "GradientProgressBar/**/*", "dependencies": { "LightweightObservable": [ "~> 2.1" ] }, - "swift_version": "5.1" + "swift_version": "5.5" } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 46ca340..bb864a1 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,15 +1,15 @@ PODS: - GradientProgressBar (2.0.3): - LightweightObservable (~> 2.1) - - LightweightObservable (2.1.2) + - LightweightObservable (2.2.0) - SnapshotTesting (1.9.0) - SwiftConfigurationFiles (0.0.1) - - SwiftFormat/CLI (0.49.1) - - SwiftLint (0.45.1) + - SwiftFormat/CLI (0.49.4) + - SwiftLint (0.46.3) DEPENDENCIES: - GradientProgressBar (from `../`) - - SnapshotTesting (~> 1.7) + - SnapshotTesting (~> 1.9) - SwiftConfigurationFiles (from `https://github.com/fxm90/SwiftConfigurationFiles.git`) - SwiftFormat/CLI (~> 0.41) - SwiftLint (~> 0.42) @@ -33,13 +33,13 @@ CHECKOUT OPTIONS: :git: https://github.com/fxm90/SwiftConfigurationFiles.git SPEC CHECKSUMS: - GradientProgressBar: f9d961c1b2a1bd9e74c52a36d19a97541ac2a154 - LightweightObservable: c5ac85423a5edbed9a920b4d5c7b8f94ab3688c4 + GradientProgressBar: c3b3d2f6a19349bb5547e301be7f63636923f762 + LightweightObservable: a4fce3323002aa57234f3cf5524eecb144cc781f SnapshotTesting: 6141c48b6aa76ead61431ca665c14ab9a066c53b SwiftConfigurationFiles: 1cf2228a911ebed9f42f8dec077bb634f04ca6c8 - SwiftFormat: 16b41f3229f5e7edb130ac4cd631cceed7af7d5e - SwiftLint: 06ac37e4d38c7068e0935bb30cda95f093bec761 + SwiftFormat: 8acc16efcecb563206cbe90b4cb047cfdf9aafdb + SwiftLint: ae76d82f056734f853c8cd0371503252c606c482 -PODFILE CHECKSUM: 237d5f16f0ced9dc619560f13fbfd816356e1fa5 +PODFILE CHECKSUM: 16e9dd1b60064d93469f561afee3ef05775a3e8d COCOAPODS: 1.11.2 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 66fd12b..e675c6a 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 55; objects = { /* Begin PBXAggregateTarget section */ @@ -37,513 +37,488 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 066BAB990F68DF4D0F5ECCA0091FC644 /* LightweightObservable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B12FDB42E09EF68B5A13B6F29206C58 /* LightweightObservable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 07319FC388250B963206DB0BF5262128 /* CGPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BDC2C00D01795D9D5474A268FEA0790 /* CGPath.swift */; }; - 0D8143C85E91BF1D58A1F220B0BB538E /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10B0AA64C8863B59D8C59809AB912B58 /* Constants.swift */; }; - 1D0EF6FBAF37BB930183B8F5AA719CD2 /* SnapshotTesting-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FFB61086549332856EE450986DDA39E3 /* SnapshotTesting-dummy.m */; }; - 20D275B85C6A51ACBD0E58DA7D73D2F6 /* GradientLayerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C34544F09DCD8607AC013EF74429E48 /* GradientLayerViewModel.swift */; }; - 22211BCDD67D7EACFB24267EC0263FAA /* UIColor+MakeDynamicColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF9C8A32E589354F13CB3BE192A6333 /* UIColor+MakeDynamicColor.swift */; }; - 26C253BDBE3293207EE17F750FA1CC2C /* Pods-GradientProgressBar_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AA9B7DF22F0BF6E9649B6F745933FC2 /* Pods-GradientProgressBar_Example-dummy.m */; }; - 273F141718CA663869BD86F1441401DF /* LightweightObservable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 60F741339642A8D8B19A4EF0EDE2B528 /* LightweightObservable-dummy.m */; }; - 28F1B4D31269CC69CB5F41DBBCEF5222 /* Any.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C2EEFBFFAE6AD15C903A20EE7BF57D7 /* Any.swift */; }; - 2C0C1A356E0D75368E196C24C3761129 /* Diffing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 675C8FED0CA649F447020502AC40DA94 /* Diffing.swift */; }; - 355AA637C91A67E1D4B6FC67A6591B62 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 382E329AC2E0EDCEA9452EDE05FDA08C /* Observable+KeyPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B7AAA3C809414A46F196C6DE5F6CFB4 /* Observable+KeyPath.swift */; }; - 3D1E0E44DB5DB31C932BBB9F1385B57A /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752098F700D4627B4812D33624EC3D46 /* NSView.swift */; }; - 3DAFC3A87D54F6BA47518F4904B7FE54 /* AssertSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27481F5BB2B02F8C989E93FBE449F4C0 /* AssertSnapshot.swift */; }; - 4249BA5FD30CFB0680582D7C7C6EE392 /* AssertInlineSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29287A9837B9E7B9DCE4C137404D02C6 /* AssertInlineSnapshot.swift */; }; - 435CF504758C3111B84C5A12598FBACC /* GradientProgressBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 98A1B4B2D5B06E709BD2E4DC17217B3F /* GradientProgressBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 480D1264071DA1967F86F28F5CF29B8B /* SpriteKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3745B9ADEFD5EB502DDDCA38C54C0469 /* SpriteKit.swift */; }; - 486A6DAD276EB55E6D7C9F515C86C227 /* SnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3347134442AAF2B9DB7E1F4E2E3E8B66 /* SnapshotTestCase.swift */; }; - 486D925EE3EB344F20DFBEFAF1A43E9B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 07319FC388250B963206DB0BF5262128 /* CGPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A4312109DE68F0350FBB5DD551816 /* CGPath.swift */; }; + 0C8D18EAAE993F0FBDEFE0D40D162C64 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 1A8813BF22F729A5E1022428EA998B8D /* UIColor+MakeDynamicColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDE8E0D1576BADB341E24FA3A1558A52 /* UIColor+MakeDynamicColor.swift */; }; + 1D0EF6FBAF37BB930183B8F5AA719CD2 /* SnapshotTesting-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E86B6F99751F56AA8AC35B5835DE4722 /* SnapshotTesting-dummy.m */; }; + 20A84C1F6D1CA74B024784D8735E0E6F /* GradientProgressBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6472FE43D3A4C76F8B11A4BA2B6D13F2 /* GradientProgressBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 21D1934B513FBC964A097F9327319BD7 /* Pods-ExampleSnapshotTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AF94D8B78D54936F5D6CFF9BDF80D52E /* Pods-ExampleSnapshotTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2358ECACBD675FFBFDBA36A56A0F7CCA /* Pods-ExampleTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 08CC589119FCED2C2B2F7D4905893347 /* Pods-ExampleTests-dummy.m */; }; + 28F1B4D31269CC69CB5F41DBBCEF5222 /* Any.swift in Sources */ = {isa = PBXBuildFile; fileRef = E71E37779A210E3F9958FB4B465CC3B6 /* Any.swift */; }; + 2C0C1A356E0D75368E196C24C3761129 /* Diffing.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED5F046F3966BF1758156DB5C0EAC5E /* Diffing.swift */; }; + 306DD9F6386659DFFE11323840C1FA1A /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDFA33C3D1AF4C2C0CDAFFE7D06B88AF /* Observable.swift */; }; + 33CDE5C91D74B34E1DAEE0DAEC1217DA /* GradientProgressBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B72029BACC88761802EF28825BABF1C /* GradientProgressBar-dummy.m */; }; + 379559F8CFEA77C30DC45461CD0560EE /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C70A9626A5985B4F9075500CF16CE8C8 /* Disposable.swift */; }; + 38F2976511EDBB1AB398ECD91AD30130 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 3D1E0E44DB5DB31C932BBB9F1385B57A /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F6960E2E6F81EA1AEEEC7CAC13C054 /* NSView.swift */; }; + 3DAFC3A87D54F6BA47518F4904B7FE54 /* AssertSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEB65A52E203646F5F85230CB37055A7 /* AssertSnapshot.swift */; }; + 4249BA5FD30CFB0680582D7C7C6EE392 /* AssertInlineSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9801722F42CF5540558E2186724E2F08 /* AssertInlineSnapshot.swift */; }; + 480D1264071DA1967F86F28F5CF29B8B /* SpriteKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7C32BCB3A8CDE7A967257032D2CB146 /* SpriteKit.swift */; }; + 486A6DAD276EB55E6D7C9F515C86C227 /* SnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7B244F28A1FD6EEA4564C67C401D680 /* SnapshotTestCase.swift */; }; + 4A0E4E446BEDFF8D0A790B77EC15FEA7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; 4A8EE45D20D442748189087F6A430A75 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EBC8F300895E39EA0DF6D6B2B5E6BCD /* XCTest.framework */; }; - 4F4D449821AB24276FA18CB343B2C3E8 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02CD89009632E27BD479C79D599B107A /* Codable.swift */; }; - 532436EEB8C806728018E24162505A32 /* Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12241E9306298FD7BD30DD97B2F2F585 /* Description.swift */; }; - 5CA71008BD23B355944AC5383821C4E2 /* Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B25BD308FFF65FD10083A71DF8B6D0 /* Internal.swift */; }; - 5CBBABF9386D35CD34879BC8404B4E88 /* MaskLayerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 491FE0D5C97F20B8484CCCC801A2C3DD /* MaskLayerViewModel.swift */; }; - 6235B3883B6D9B3EF262ACFF43631F3D /* SceneKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8625DAD35C01DA8A227DFE847303FD36 /* SceneKit.swift */; }; - 6FA42D338F2CDE1914908E7D0662AED5 /* Diff.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510E624D0F605EB57201AFDACB0A1AA6 /* Diff.swift */; }; - 70060B0C311FBDF840146EEE9B762220 /* PlistEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D247995FCD2185571A788888D6C5722F /* PlistEncoder.swift */; }; - 78BBB110735B5BD1BDDC3CD4FC563323 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 235E88FACFE1686D577A236842D3E2F8 /* Data.swift */; }; - 7B8BDCED411624BCA29DB95EA6D03147 /* GradientProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98B2BF860E17EFC6E61E0A90ACC31F4 /* GradientProgressBar.swift */; }; - 7F5C5DD662B656505ECF172E1DDC232E /* UIBezierPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = A85AAD62B88A5A61ED41F15941BCF50E /* UIBezierPath.swift */; }; - 882F42F47F19D48483EE69B3AE7E08C4 /* NSObject+Builder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D577186EA07941B0486CD763B8ED37B /* NSObject+Builder.swift */; }; - 88DE0AA2E9071FD322F40132B5ACE852 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9D9BB3003EBE622D53CE1A43730C52F /* String.swift */; }; - 895961808A736B3A15B10B290A3E8F05 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 8A1A8F8E8391B6497679E3A3D92F6DBA /* Pods-GradientProgressBar_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E3BCE2B6D70196DE8DC94C2F2C6825C4 /* Pods-GradientProgressBar_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9104476A4778BB28C819AB92599A5B6E /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8703A929D837847AFFD9398983FDB99 /* UIImage.swift */; }; - 91A6F89F808BA1E0865A924AA69D3E15 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 928DBECCA86A6F98E4B42FA62C5FF051 /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4077B2112D2B1D73DE188E8058E85FA1 /* View.swift */; }; - 957508AA897C27F86D544CCF1CED1904 /* NSBezierPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA6A07B9F5942B9B48B90EEB598C7619 /* NSBezierPath.swift */; }; - 96E71750BD8C847E125FAB3C7A336224 /* URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 388DBB0163B3768EC43AB87FFED8A19D /* URLRequest.swift */; }; - 97BEDF828D70F8BE2BE4E917DD992C48 /* NSImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 887414A1F43A80406F38C7F3D271B973 /* NSImage.swift */; }; - 9B00AEBE5F221FE9815159125313C0BD /* Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88324CDA62CABFBF5DA8963930242CDB /* Wait.swift */; }; - 9D65BFC4B2C4B6102D6B7EC25A7CD739 /* NSViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B67BD6ECBAB898E12CB2B4D25E835034 /* NSViewController.swift */; }; - 9D6622CDE2793B13735F47C44A7743ED /* SnapshotTesting-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BF80F682CAE5877E7D5846C8BF547AC /* SnapshotTesting-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D708E502307F6E1100B0777DF41D1EE /* Pods-GradientProgressBar_SnapshotTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D2EDF958393CEC05A58DD7B7B3238148 /* Pods-GradientProgressBar_SnapshotTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F6B241BE1332F18DFCC2BF32E03C42C /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B8C3644CAA8A93B3901127A7B8DE26E /* UIView.swift */; }; - A156CFC9202442C2A5266F1CD2292F56 /* Pods-GradientProgressBar_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B768A051B8D570EDE27F1C0F3FBC8194 /* Pods-GradientProgressBar_Tests-dummy.m */; }; - A95ED18C7F8B9D67FCAD30E3B8FF245B /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80BF588C375E0686FCE12E6B7A297CE7 /* Disposable.swift */; }; + 4F4D449821AB24276FA18CB343B2C3E8 /* Codable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D70287148495215062E5030BA6267BB /* Codable.swift */; }; + 532436EEB8C806728018E24162505A32 /* Description.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2FF4849BA9ABFDAF933BC11BBE59A72 /* Description.swift */; }; + 5CA71008BD23B355944AC5383821C4E2 /* Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 371D3CDC7543AF863ADAE5F4D66D793C /* Internal.swift */; }; + 6235B3883B6D9B3EF262ACFF43631F3D /* SceneKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4342969D6D37396C136697D0BC1C2A06 /* SceneKit.swift */; }; + 6FA42D338F2CDE1914908E7D0662AED5 /* Diff.swift in Sources */ = {isa = PBXBuildFile; fileRef = 195C9E50C429616417E6F569B20896A6 /* Diff.swift */; }; + 70060B0C311FBDF840146EEE9B762220 /* PlistEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86A83C5000A82493337A3DFC79D0B56F /* PlistEncoder.swift */; }; + 711BB9C9656188AB91D91A0984D32CD6 /* GradientLayerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC3DEEE3456BF4A2B0C0A2560F117B25 /* GradientLayerViewModel.swift */; }; + 7871A8E3FFBEE68E4FA2D2EF2448EDB9 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB109E238B73EE3EA91555C6530BF455 /* Constants.swift */; }; + 78BBB110735B5BD1BDDC3CD4FC563323 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE73B31D3D042300127FE7545DC9A288 /* Data.swift */; }; + 7B6CCC6988F0F9F25E34682CB060784C /* GradientProgressBarViewStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2515335EAE757199D7B8D5DFD4D4F94 /* GradientProgressBarViewStyle.swift */; }; + 7F5C5DD662B656505ECF172E1DDC232E /* UIBezierPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E06D57A35648ECBC97644D217B868BD /* UIBezierPath.swift */; }; + 88DE0AA2E9071FD322F40132B5ACE852 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CAC9E06708925371B8BFCC5484444DD /* String.swift */; }; + 90FB652EA175BDA16673BE59E18FB7DF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 9104476A4778BB28C819AB92599A5B6E /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54653ADB348C04B28B4D3455911AEFA0 /* UIImage.swift */; }; + 91738D24777A334C5C250784DA91C5AD /* Observable+KeyPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89D6B1C70C53B6DA6E6D0456F0F7DBD8 /* Observable+KeyPath.swift */; }; + 928DBECCA86A6F98E4B42FA62C5FF051 /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1466DB0C211E9F079BFFFBDFDD4C1BD0 /* View.swift */; }; + 9314D9953FE10754E6DB6B4FA6BD2D8E /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B9CB227C88005476A2E5924D38CC5C0D /* Pods-Example-dummy.m */; }; + 937C8E73F088F4DE5F264575D232D51D /* Pods-Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F88EA58D96440077B653714F58692A9B /* Pods-Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 957508AA897C27F86D544CCF1CED1904 /* NSBezierPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = D067B70655B4D91995A1AD085829D7BB /* NSBezierPath.swift */; }; + 96E71750BD8C847E125FAB3C7A336224 /* URLRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948F5A85ABC960EDF780E259FB3A8E23 /* URLRequest.swift */; }; + 97BEDF828D70F8BE2BE4E917DD992C48 /* NSImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80982F04B55AD6ED4052012DBA5D74E2 /* NSImage.swift */; }; + 9B00AEBE5F221FE9815159125313C0BD /* Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24E9153BF879D5DA5CDF2FF9BD6EE07A /* Wait.swift */; }; + 9D65BFC4B2C4B6102D6B7EC25A7CD739 /* NSViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B38ABB2556378E0FBBFAC5F022A3F36B /* NSViewController.swift */; }; + 9D6622CDE2793B13735F47C44A7743ED /* SnapshotTesting-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BF6AF65269318A0D0E1C541D8D659BB5 /* SnapshotTesting-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F6B241BE1332F18DFCC2BF32E03C42C /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009FB438C78F42859CE255EDC7F22DB3 /* UIView.swift */; }; + A100A48AAC910427987DF5C1C56F7466 /* LightweightObservable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F0E19B3286278186EC4012CDF8CAA48F /* LightweightObservable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; AFE414B3E0D49B39A358DE524B0839D5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - B31C8F56C7D418FD66EAB3FCBBDC73EB /* Pods-GradientProgressBar_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 00690E43157EA42FC6C72C950D850E08 /* Pods-GradientProgressBar_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B7809635630D863A945F9ACA44D80332 /* Observable+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0AE401171F66B5A704B064F6007059B /* Observable+Equatable.swift */; }; - C56B3E1A07308BCC8376D15C735B1C25 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D59128C0184862956F5A6B6C4D6E476 /* CALayer.swift */; }; - CFFD67104AE4ABBFEB3801F9B8149664 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5073BA8E5F040F45B737BBC7393222 /* Async.swift */; }; - D0A29718080A06AB351F6FA41B725BEA /* XCTAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C95B2FA66AB0EFC760FE3BC82E183D /* XCTAttachment.swift */; }; - D3C4D4F28C0180E812B6BA5FC4F5015B /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D21ADE128CE03553F0F1D720F4F967D /* UIViewController.swift */; }; - D7AE9DBB6C5D2522EB24A673921F9365 /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A501BC0324C0925814D79A81451E58C /* SwiftUIView.swift */; }; - DA787DFD55A7814418DE78F66BA70847 /* CaseIterable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E475B473BD1D9805A199E083205DD153 /* CaseIterable.swift */; }; - E11DA5084FCE2C6576AAEF8FAA2BDFDE /* GradientProgressBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FDF59CB8F72DB2EB4C843E7D3DA9F88F /* GradientProgressBar-dummy.m */; }; - E851C563190483BCD5CF2BC3677D54AF /* Pods-GradientProgressBar_SnapshotTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 388C7D788EB5BA29424EEC5FC814D713 /* Pods-GradientProgressBar_SnapshotTests-dummy.m */; }; - E8C537CF67B963C4AEC847148B08868F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - EB5F8B0D9E74FD8A1724B04E6AACFABE /* Snapshotting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DCE065F2DFC9DC8382D7C5D74163571 /* Snapshotting.swift */; }; - FD9BFC7D64311A14771FF0474DD54A86 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DCA8C4CBB512E220B4470D94AF8BE7D /* Observable.swift */; }; - FEB8176EE5F7E44C5399D94BC6DE0C46 /* String+SpecialCharacters.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED333E2FD9F83C466E13C6A69C917345 /* String+SpecialCharacters.swift */; }; + B8ABD3B55B3A8C86F08A41F4BFD5DD3B /* MaskLayerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E51AE19293F251594EF647F0CECE2EFB /* MaskLayerViewModel.swift */; }; + BF76BA47D9E22D7277B99082D5E6B565 /* LightweightObservable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 785E1BC5584D16AC9173E04DE45A6036 /* LightweightObservable-dummy.m */; }; + C00C9FE7C1B3110AF1B4F98E90FA1A01 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + C2F7B05729193ABF3D3185603B6DC3BD /* Pods-ExampleTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BD645920C329144DB30A4181898CDCE5 /* Pods-ExampleTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C56B3E1A07308BCC8376D15C735B1C25 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9761D5B7A8B0AF3C2D31731AA1E42F26 /* CALayer.swift */; }; + C9F9871C4AC572471F57D9BFB4959131 /* Pods-ExampleSnapshotTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 65C02E52F65DFA68BF382C89D70FA2B3 /* Pods-ExampleSnapshotTests-dummy.m */; }; + CC4743DC6060D62950BE2F032E3A62F8 /* NSObject+Builder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26F1E7CECAF0CBEE6DAFF50A38969DDC /* NSObject+Builder.swift */; }; + CFFD67104AE4ABBFEB3801F9B8149664 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33915C6CA41A4120CCCFDA0A30623E99 /* Async.swift */; }; + D0A29718080A06AB351F6FA41B725BEA /* XCTAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8421185176594CFD7B0CCE69071B4F /* XCTAttachment.swift */; }; + D17837903BDA974C6C0ACF8AAA1B3187 /* Observable+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523B7174E480C3FA74F83ABE7056DE17 /* Observable+Equatable.swift */; }; + D3C4D4F28C0180E812B6BA5FC4F5015B /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BBB42D19B8EDB33AE63C1A34EAD81DE /* UIViewController.swift */; }; + D417CA38A01F8E4B15DC7BAA80382A8F /* Observable+Combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F94EC0823DB851E6D0A4C81C33A0CEA /* Observable+Combine.swift */; }; + D7AE9DBB6C5D2522EB24A673921F9365 /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E633CB1D426841C43DF3462991319C4 /* SwiftUIView.swift */; }; + DA787DFD55A7814418DE78F66BA70847 /* CaseIterable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A38BD36975B9051B989F73656223996F /* CaseIterable.swift */; }; + EB5F8B0D9E74FD8A1724B04E6AACFABE /* Snapshotting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAABA5B241D32CC27078958069BCC5B /* Snapshotting.swift */; }; + F475E495B5631AF009DD20E3D82CCFB5 /* GradientProgressBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB4C0EC610FF658186A0676771045C9 /* GradientProgressBar.swift */; }; + FEB8176EE5F7E44C5399D94BC6DE0C46 /* String+SpecialCharacters.swift in Sources */ = {isa = PBXBuildFile; fileRef = F12C335B7DC098086708FA73A72EE357 /* String+SpecialCharacters.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0A67967811FC09BF1D1BF1DD51D96A7D /* PBXContainerItemProxy */ = { + 2C4143B88B4E419936F844851BD4D42A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 52B60EC2A583F24ACBB69C113F5488B9; remoteInfo = SwiftLint; }; - 182C128B231CB9F6F7273D8190808F85 /* PBXContainerItemProxy */ = { + 575435F00ACB459F9A3DA8D983BB400C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B6F859BC597ED3834E9B153B9883E341; - remoteInfo = "Pods-GradientProgressBar_Example"; + remoteGlobalIDString = 1CD0618C486973D5588EF20D2E8C0AEA; + remoteInfo = SwiftFormat; }; - 417A4A2873F5F969F97CEC515597DE48 /* PBXContainerItemProxy */ = { + 6330C453C404AF4FA9250361211F0064 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 086F937CFC9099EB74E4B66BE7CBCB93; - remoteInfo = LightweightObservable; + remoteGlobalIDString = 0AEE99A309977BD12A049FF48AF9BA4B; + remoteInfo = "Pods-Example"; }; - 57F1C2F238FB6045E445894B2A80DB27 /* PBXContainerItemProxy */ = { + 6A65D9D230EDA371D1DC4F4CC2A33815 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 02A49EFF333D539AFC033A5F1B8B0A45; - remoteInfo = GradientProgressBar; + remoteGlobalIDString = B951B6FCD3E55AF969FBA9F7B476B877; + remoteInfo = SwiftConfigurationFiles; }; - 84409BAC4030DA4A48A564375F1C9928 /* PBXContainerItemProxy */ = { + ACAAAF5917685B11C07A55D7F5A513F0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 086F937CFC9099EB74E4B66BE7CBCB93; remoteInfo = LightweightObservable; }; - A2D681B9BFE67C0FD16CB70B0D937910 /* PBXContainerItemProxy */ = { + DBDD7C4BAB11F94EE5188B0FEB6BA0ED /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = ADEAE7CDD604DE4F3072E6021A314487; remoteInfo = SnapshotTesting; }; - B6070903F8F7BC62CE61E72B9316C480 /* PBXContainerItemProxy */ = { + E8CB4AD75D346C9883CBC36830AFE6CF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B951B6FCD3E55AF969FBA9F7B476B877; - remoteInfo = SwiftConfigurationFiles; + remoteGlobalIDString = 086F937CFC9099EB74E4B66BE7CBCB93; + remoteInfo = LightweightObservable; }; - D973566E46CAFFFB479F07C731166FB2 /* PBXContainerItemProxy */ = { + EFE1F9327AC566286D3CD260033BF822 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1CD0618C486973D5588EF20D2E8C0AEA; - remoteInfo = SwiftFormat; + remoteGlobalIDString = 0AEE99A309977BD12A049FF48AF9BA4B; + remoteInfo = "Pods-Example"; }; - E8E8CF318C64CCA1871310BF09DC3FBE /* PBXContainerItemProxy */ = { + FA226955420120A6A11BD2801E8F3F17 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B6F859BC597ED3834E9B153B9883E341; - remoteInfo = "Pods-GradientProgressBar_Example"; + remoteGlobalIDString = 02A49EFF333D539AFC033A5F1B8B0A45; + remoteInfo = GradientProgressBar; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00690E43157EA42FC6C72C950D850E08 /* Pods-GradientProgressBar_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientProgressBar_Tests-umbrella.h"; sourceTree = ""; }; - 00EBB6A2B0A117A761C58ED62B0D4C24 /* SwiftFormat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.debug.xcconfig; sourceTree = ""; }; - 01195480F1DCEF69F5D9619C1B3C44E9 /* SnapshotTesting.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapshotTesting.release.xcconfig; sourceTree = ""; }; - 02CD89009632E27BD479C79D599B107A /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = Sources/SnapshotTesting/Snapshotting/Codable.swift; sourceTree = ""; }; - 02D06ADA7430E485346FE0B225F8FC79 /* Pods-GradientProgressBar_SnapshotTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientProgressBar_SnapshotTests-Info.plist"; sourceTree = ""; }; - 04FE0C4BFF6B969E790DF1AB1F303870 /* Pods-GradientProgressBar_SnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientProgressBar_SnapshotTests.release.xcconfig"; sourceTree = ""; }; + 009FB438C78F42859CE255EDC7F22DB3 /* UIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIView.swift; path = Sources/SnapshotTesting/Snapshotting/UIView.swift; sourceTree = ""; }; + 030C48ABEDDA795341F48F21C6293DFA /* Pods-ExampleTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ExampleTests-acknowledgements.markdown"; sourceTree = ""; }; + 034096A652454C479D78A11AF0738191 /* SnapshotTesting-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-prefix.pch"; sourceTree = ""; }; + 04D67E1AC2B476618545A95A11B5B811 /* SwiftConfigurationFiles.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftConfigurationFiles.release.xcconfig; sourceTree = ""; }; + 0638F8873A3594830C7108D94F8F8104 /* Pods-Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-frameworks.sh"; sourceTree = ""; }; 06D2A33567A0BA45FD04D735CF5FA780 /* GradientProgressBar */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GradientProgressBar; path = GradientProgressBar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 10847F76058FE66CB2ADC3C37B557B54 /* Pods-GradientProgressBar_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientProgressBar_Example-frameworks.sh"; sourceTree = ""; }; - 10B0AA64C8863B59D8C59809AB912B58 /* Constants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - 119753B975957BD0A29B04B381C8A6D0 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - 12241E9306298FD7BD30DD97B2F2F585 /* Description.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Description.swift; path = Sources/SnapshotTesting/Snapshotting/Description.swift; sourceTree = ""; }; - 1E994A8FF390361E6692A06709232E66 /* Pods-GradientProgressBar_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientProgressBar_Example.release.xcconfig"; sourceTree = ""; }; - 1F070D4133AC30EFD0B1CBDAD691998A /* LightweightObservable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-prefix.pch"; sourceTree = ""; }; - 22B25BD308FFF65FD10083A71DF8B6D0 /* Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Internal.swift; path = Sources/SnapshotTesting/Common/Internal.swift; sourceTree = ""; }; - 235E88FACFE1686D577A236842D3E2F8 /* Data.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Data.swift; path = Sources/SnapshotTesting/Snapshotting/Data.swift; sourceTree = ""; }; - 24304AF8B903F5D0B25EB3CE765E2115 /* GradientProgressBar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientProgressBar.release.xcconfig; sourceTree = ""; }; - 266C8D88734DA14C89122CA08DE224B9 /* SnapshotTesting.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapshotTesting.modulemap; sourceTree = ""; }; - 27481F5BB2B02F8C989E93FBE449F4C0 /* AssertSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertSnapshot.swift; path = Sources/SnapshotTesting/AssertSnapshot.swift; sourceTree = ""; }; - 283322DA7A49E2E4D67B814963BECFB3 /* SwiftLint.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.release.xcconfig; sourceTree = ""; }; - 29287A9837B9E7B9DCE4C137404D02C6 /* AssertInlineSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertInlineSnapshot.swift; path = Sources/SnapshotTesting/AssertInlineSnapshot.swift; sourceTree = ""; }; - 2C34544F09DCD8607AC013EF74429E48 /* GradientLayerViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLayerViewModel.swift; sourceTree = ""; }; - 332A91BDCCB0425A9CE22879135892DB /* Pods-GradientProgressBar_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientProgressBar_Tests-acknowledgements.plist"; sourceTree = ""; }; - 3347134442AAF2B9DB7E1F4E2E3E8B66 /* SnapshotTestCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SnapshotTestCase.swift; path = Sources/SnapshotTesting/SnapshotTestCase.swift; sourceTree = ""; }; - 3745B9ADEFD5EB502DDDCA38C54C0469 /* SpriteKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SpriteKit.swift; path = Sources/SnapshotTesting/Snapshotting/SpriteKit.swift; sourceTree = ""; }; - 388C7D788EB5BA29424EEC5FC814D713 /* Pods-GradientProgressBar_SnapshotTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientProgressBar_SnapshotTests-dummy.m"; sourceTree = ""; }; - 388DBB0163B3768EC43AB87FFED8A19D /* URLRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLRequest.swift; path = Sources/SnapshotTesting/Snapshotting/URLRequest.swift; sourceTree = ""; }; - 3D1546F727E84C17FB03D49A501AEBF3 /* LightweightObservable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LightweightObservable.modulemap; sourceTree = ""; }; - 4077B2112D2B1D73DE188E8058E85FA1 /* View.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = View.swift; path = Sources/SnapshotTesting/Common/View.swift; sourceTree = ""; }; - 41CF3CFB21FBFD5C89875B7A951AC6C5 /* Pods-GradientProgressBar_SnapshotTests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-GradientProgressBar_SnapshotTests"; path = Pods_GradientProgressBar_SnapshotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 44611AB9F27D707CE10442E86C554E33 /* Pods-GradientProgressBar_SnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientProgressBar_SnapshotTests.debug.xcconfig"; sourceTree = ""; }; - 44FC5949DA58E53329E8837F44618093 /* SwiftLint.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.debug.xcconfig; sourceTree = ""; }; - 491FE0D5C97F20B8484CCCC801A2C3DD /* MaskLayerViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MaskLayerViewModel.swift; sourceTree = ""; }; - 4BA9CC446A67488BB146BD4AAD8394F7 /* Pods-GradientProgressBar_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientProgressBar_Example.modulemap"; sourceTree = ""; }; - 4D577186EA07941B0486CD763B8ED37B /* NSObject+Builder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSObject+Builder.swift"; sourceTree = ""; }; - 4F8489AE7398E8BD899CD8339F73BA54 /* Pods-GradientProgressBar_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientProgressBar_Example.debug.xcconfig"; sourceTree = ""; }; - 4F9247405B237F2F2FC8E7A4256E26CE /* SnapshotTesting-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapshotTesting-Info.plist"; sourceTree = ""; }; - 510E624D0F605EB57201AFDACB0A1AA6 /* Diff.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diff.swift; path = Sources/SnapshotTesting/Diff.swift; sourceTree = ""; }; - 5A95E0EC64A130765609C642BEF951DC /* SnapshotTesting.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapshotTesting.debug.xcconfig; sourceTree = ""; }; - 5BDC2C00D01795D9D5474A268FEA0790 /* CGPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CGPath.swift; path = Sources/SnapshotTesting/Snapshotting/CGPath.swift; sourceTree = ""; }; - 5BF80F682CAE5877E7D5846C8BF547AC /* SnapshotTesting-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-umbrella.h"; sourceTree = ""; }; - 5CF9C8A32E589354F13CB3BE192A6333 /* UIColor+MakeDynamicColor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+MakeDynamicColor.swift"; sourceTree = ""; }; - 5D59128C0184862956F5A6B6C4D6E476 /* CALayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CALayer.swift; path = Sources/SnapshotTesting/Snapshotting/CALayer.swift; sourceTree = ""; }; - 5DCE065F2DFC9DC8382D7C5D74163571 /* Snapshotting.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Snapshotting.swift; path = Sources/SnapshotTesting/Snapshotting.swift; sourceTree = ""; }; - 5EA356E8533CEBAE574A2489C5EE457C /* GradientProgressBar.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GradientProgressBar.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 074CBA3DACEF2667EFED2C72D45A2403 /* LightweightObservable.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.release.xcconfig; sourceTree = ""; }; + 08CC589119FCED2C2B2F7D4905893347 /* Pods-ExampleTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ExampleTests-dummy.m"; sourceTree = ""; }; + 08E87DFECD69E46292154E099AB8D144 /* SwiftLint.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.debug.xcconfig; sourceTree = ""; }; + 0E633CB1D426841C43DF3462991319C4 /* SwiftUIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftUIView.swift; path = Sources/SnapshotTesting/Snapshotting/SwiftUIView.swift; sourceTree = ""; }; + 143F2717B1133164FBCC65A2DF3C3C67 /* LightweightObservable-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LightweightObservable-Info.plist"; sourceTree = ""; }; + 1466DB0C211E9F079BFFFBDFDD4C1BD0 /* View.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = View.swift; path = Sources/SnapshotTesting/Common/View.swift; sourceTree = ""; }; + 195C9E50C429616417E6F569B20896A6 /* Diff.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diff.swift; path = Sources/SnapshotTesting/Diff.swift; sourceTree = ""; }; + 1BB25BAF1D83CFB93D6664A0EF72047B /* GradientProgressBar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GradientProgressBar-Info.plist"; sourceTree = ""; }; + 1CAC9E06708925371B8BFCC5484444DD /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = Sources/SnapshotTesting/Snapshotting/String.swift; sourceTree = ""; }; + 1EC06CD38CB67E4E8061D4D2DCD617B2 /* Pods-ExampleSnapshotTests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-ExampleSnapshotTests"; path = Pods_ExampleSnapshotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1F667CC0E19EAF34E5A4119E2121F585 /* Pods-Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Example"; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1F94EC0823DB851E6D0A4C81C33A0CEA /* Observable+Combine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Combine.swift"; path = "LightweightObservable/Extensions/Observable+Combine.swift"; sourceTree = ""; }; + 2009541AEFF2EFDA3802BF5CF3C8C6ED /* SnapshotTesting.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapshotTesting.modulemap; sourceTree = ""; }; + 24E9153BF879D5DA5CDF2FF9BD6EE07A /* Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Wait.swift; path = Sources/SnapshotTesting/Extensions/Wait.swift; sourceTree = ""; }; + 26F1E7CECAF0CBEE6DAFF50A38969DDC /* NSObject+Builder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSObject+Builder.swift"; sourceTree = ""; }; + 29B352272E0CA8C60A5C519A7E94508F /* GradientProgressBar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientProgressBar.debug.xcconfig; sourceTree = ""; }; + 2E06D57A35648ECBC97644D217B868BD /* UIBezierPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIBezierPath.swift; path = Sources/SnapshotTesting/Snapshotting/UIBezierPath.swift; sourceTree = ""; }; + 321E0EECA8025D4E3C0406B264AB9F4A /* SwiftFormat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.release.xcconfig; sourceTree = ""; }; + 33915C6CA41A4120CCCFDA0A30623E99 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/SnapshotTesting/Async.swift; sourceTree = ""; }; + 371D3CDC7543AF863ADAE5F4D66D793C /* Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Internal.swift; path = Sources/SnapshotTesting/Common/Internal.swift; sourceTree = ""; }; + 392F0D54DA316F76F7B4DF63E033D602 /* SnapshotTesting-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SnapshotTesting-Info.plist"; sourceTree = ""; }; + 39724ABA4E40A364B25F01F3E3CE31EC /* SwiftLint.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.release.xcconfig; sourceTree = ""; }; + 3CEF637F75EB182A98B69E784C0F845E /* Pods-ExampleSnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ExampleSnapshotTests.debug.xcconfig"; sourceTree = ""; }; + 3D775B472F7AA7D3B9A1593811AABB1F /* Pods-ExampleSnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ExampleSnapshotTests.release.xcconfig"; sourceTree = ""; }; + 3FB4C0EC610FF658186A0676771045C9 /* GradientProgressBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GradientProgressBar.swift; path = GradientProgressBar/GradientProgressBar.swift; sourceTree = ""; }; + 4342969D6D37396C136697D0BC1C2A06 /* SceneKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SceneKit.swift; path = Sources/SnapshotTesting/Snapshotting/SceneKit.swift; sourceTree = ""; }; + 4B72029BACC88761802EF28825BABF1C /* GradientProgressBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GradientProgressBar-dummy.m"; sourceTree = ""; }; + 4B8421185176594CFD7B0CCE69071B4F /* XCTAttachment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XCTAttachment.swift; path = Sources/SnapshotTesting/Common/XCTAttachment.swift; sourceTree = ""; }; + 523B7174E480C3FA74F83ABE7056DE17 /* Observable+Equatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Equatable.swift"; path = "LightweightObservable/Extensions/Observable+Equatable.swift"; sourceTree = ""; }; + 54653ADB348C04B28B4D3455911AEFA0 /* UIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIImage.swift; path = Sources/SnapshotTesting/Snapshotting/UIImage.swift; sourceTree = ""; }; + 5C8A7D0B6CF1EBB569F2C16521C9BEB0 /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.release.xcconfig"; sourceTree = ""; }; 5EBC8F300895E39EA0DF6D6B2B5E6BCD /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 60F741339642A8D8B19A4EF0EDE2B528 /* LightweightObservable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LightweightObservable-dummy.m"; sourceTree = ""; }; - 675C8FED0CA649F447020502AC40DA94 /* Diffing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diffing.swift; path = Sources/SnapshotTesting/Diffing.swift; sourceTree = ""; }; - 681A56BBD34399CA87C8CDC433FE842F /* GradientProgressBar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GradientProgressBar-Info.plist"; sourceTree = ""; }; - 6B8C3644CAA8A93B3901127A7B8DE26E /* UIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIView.swift; path = Sources/SnapshotTesting/Snapshotting/UIView.swift; sourceTree = ""; }; - 6BA6CC273DB1F3DF8863CA959253A9E1 /* LightweightObservable.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.debug.xcconfig; sourceTree = ""; }; - 6FD7099AF64080B46C3BB6BDAEC18C3D /* Pods-GradientProgressBar_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientProgressBar_Tests.debug.xcconfig"; sourceTree = ""; }; - 7089F0D00E320DA5B1AEA2EDA788B012 /* Pods-GradientProgressBar_Tests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-GradientProgressBar_Tests"; path = Pods_GradientProgressBar_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 739B52B367A66EB59594809032052D1F /* SwiftConfigurationFiles.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftConfigurationFiles.debug.xcconfig; sourceTree = ""; }; - 752098F700D4627B4812D33624EC3D46 /* NSView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSView.swift; path = Sources/SnapshotTesting/Snapshotting/NSView.swift; sourceTree = ""; }; - 80BF588C375E0686FCE12E6B7A297CE7 /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = LightweightObservable/Classes/Disposable.swift; sourceTree = ""; }; - 8625DAD35C01DA8A227DFE847303FD36 /* SceneKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SceneKit.swift; path = Sources/SnapshotTesting/Snapshotting/SceneKit.swift; sourceTree = ""; }; - 881946A9C2CAE722465AB597959673A4 /* GradientProgressBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientProgressBar-prefix.pch"; sourceTree = ""; }; - 88324CDA62CABFBF5DA8963930242CDB /* Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Wait.swift; path = Sources/SnapshotTesting/Extensions/Wait.swift; sourceTree = ""; }; - 887414A1F43A80406F38C7F3D271B973 /* NSImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSImage.swift; path = Sources/SnapshotTesting/Snapshotting/NSImage.swift; sourceTree = ""; }; - 8A501BC0324C0925814D79A81451E58C /* SwiftUIView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftUIView.swift; path = Sources/SnapshotTesting/Snapshotting/SwiftUIView.swift; sourceTree = ""; }; - 8B12FDB42E09EF68B5A13B6F29206C58 /* LightweightObservable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-umbrella.h"; sourceTree = ""; }; - 8B7AAA3C809414A46F196C6DE5F6CFB4 /* Observable+KeyPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+KeyPath.swift"; path = "LightweightObservable/Classes/Extensions/Observable+KeyPath.swift"; sourceTree = ""; }; - 8DD33C2202B004A8B452184DCFAB4DEC /* SnapshotTesting-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-prefix.pch"; sourceTree = ""; }; - 98A1B4B2D5B06E709BD2E4DC17217B3F /* GradientProgressBar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientProgressBar-umbrella.h"; sourceTree = ""; }; - 9AA9B7DF22F0BF6E9649B6F745933FC2 /* Pods-GradientProgressBar_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientProgressBar_Example-dummy.m"; sourceTree = ""; }; - 9ADD17205849515D675BE98CA149BC81 /* Pods-GradientProgressBar_SnapshotTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientProgressBar_SnapshotTests-frameworks.sh"; sourceTree = ""; }; - 9C2EEFBFFAE6AD15C903A20EE7BF57D7 /* Any.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Any.swift; path = Sources/SnapshotTesting/Snapshotting/Any.swift; sourceTree = ""; }; - 9D21ADE128CE03553F0F1D720F4F967D /* UIViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIViewController.swift; path = Sources/SnapshotTesting/Snapshotting/UIViewController.swift; sourceTree = ""; }; - 9D92A484AA5503A71CF3AD2A4404D21E /* Pods-GradientProgressBar_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientProgressBar_Example-acknowledgements.markdown"; sourceTree = ""; }; + 630CABE8F692FCDBFD1B122A2D0CE388 /* Pods-ExampleTests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-ExampleTests"; path = Pods_ExampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6472FE43D3A4C76F8B11A4BA2B6D13F2 /* GradientProgressBar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientProgressBar-umbrella.h"; sourceTree = ""; }; + 65C02E52F65DFA68BF382C89D70FA2B3 /* Pods-ExampleSnapshotTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ExampleSnapshotTests-dummy.m"; sourceTree = ""; }; + 6BBB42D19B8EDB33AE63C1A34EAD81DE /* UIViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIViewController.swift; path = Sources/SnapshotTesting/Snapshotting/UIViewController.swift; sourceTree = ""; }; + 6FC0506D7C871976CFFE681307BBC0BF /* Pods-Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Example-acknowledgements.markdown"; sourceTree = ""; }; + 721B54434D8D22FEC5F7F6DC96F12646 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + 7613A2E4E05051A670B04D445388D9F5 /* GradientProgressBar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GradientProgressBar.modulemap; sourceTree = ""; }; + 785E1BC5584D16AC9173E04DE45A6036 /* LightweightObservable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LightweightObservable-dummy.m"; sourceTree = ""; }; + 7CA590CDCEEA3EDA8EF40893AE966B74 /* Pods-ExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ExampleTests.release.xcconfig"; sourceTree = ""; }; + 80982F04B55AD6ED4052012DBA5D74E2 /* NSImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSImage.swift; path = Sources/SnapshotTesting/Snapshotting/NSImage.swift; sourceTree = ""; }; + 85373724BBCC54B7663988B470A5D6EA /* Pods-ExampleTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ExampleTests-acknowledgements.plist"; sourceTree = ""; }; + 86A83C5000A82493337A3DFC79D0B56F /* PlistEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PlistEncoder.swift; path = Sources/SnapshotTesting/Common/PlistEncoder.swift; sourceTree = ""; }; + 87DC31FDBD7C9F8A0106B384E6D99B85 /* Pods-Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-acknowledgements.plist"; sourceTree = ""; }; + 89D6B1C70C53B6DA6E6D0456F0F7DBD8 /* Observable+KeyPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+KeyPath.swift"; path = "LightweightObservable/Extensions/Observable+KeyPath.swift"; sourceTree = ""; }; + 8B75864FEFCDD0C986F965BC9B1D2A1B /* LightweightObservable.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.debug.xcconfig; sourceTree = ""; }; + 8D70287148495215062E5030BA6267BB /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = Sources/SnapshotTesting/Snapshotting/Codable.swift; sourceTree = ""; }; + 8DAABA5B241D32CC27078958069BCC5B /* Snapshotting.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Snapshotting.swift; path = Sources/SnapshotTesting/Snapshotting.swift; sourceTree = ""; }; + 90153A27EB05F606E13162C9C4A4BE5F /* Pods-ExampleSnapshotTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ExampleSnapshotTests.modulemap"; sourceTree = ""; }; + 92595228CA62A3593A599AE616D42DC9 /* LightweightObservable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-prefix.pch"; sourceTree = ""; }; + 948F5A85ABC960EDF780E259FB3A8E23 /* URLRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLRequest.swift; path = Sources/SnapshotTesting/Snapshotting/URLRequest.swift; sourceTree = ""; }; + 94F6960E2E6F81EA1AEEEC7CAC13C054 /* NSView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSView.swift; path = Sources/SnapshotTesting/Snapshotting/NSView.swift; sourceTree = ""; }; + 9761D5B7A8B0AF3C2D31731AA1E42F26 /* CALayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CALayer.swift; path = Sources/SnapshotTesting/Snapshotting/CALayer.swift; sourceTree = ""; }; + 9801722F42CF5540558E2186724E2F08 /* AssertInlineSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertInlineSnapshot.swift; path = Sources/SnapshotTesting/AssertInlineSnapshot.swift; sourceTree = ""; }; + 9D21619E3127A33326194FAC5E0241D7 /* SnapshotTesting.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapshotTesting.debug.xcconfig; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DBBDBEA3437335C1B0890198F3C3CF9 /* Pods-GradientProgressBar_SnapshotTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientProgressBar_SnapshotTests-acknowledgements.plist"; sourceTree = ""; }; - 9DCA8C4CBB512E220B4470D94AF8BE7D /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = LightweightObservable/Classes/Observable.swift; sourceTree = ""; }; - 9E2A2B9627A155B218E8EEFE867E23CA /* GradientProgressBar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientProgressBar.debug.xcconfig; sourceTree = ""; }; - 9EE196C463CA721FC441D8287FCA8B0B /* Pods-GradientProgressBar_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientProgressBar_Tests-acknowledgements.markdown"; sourceTree = ""; }; A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapshotTesting; path = SnapshotTesting.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A85AAD62B88A5A61ED41F15941BCF50E /* UIBezierPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIBezierPath.swift; path = Sources/SnapshotTesting/Snapshotting/UIBezierPath.swift; sourceTree = ""; }; - A8703A929D837847AFFD9398983FDB99 /* UIImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIImage.swift; path = Sources/SnapshotTesting/Snapshotting/UIImage.swift; sourceTree = ""; }; - AD3D9948B0B93D115244EA6E248AC5DC /* readme.md */ = {isa = PBXFileReference; includeInIndex = 1; path = readme.md; sourceTree = ""; }; - B67BD6ECBAB898E12CB2B4D25E835034 /* NSViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSViewController.swift; path = Sources/SnapshotTesting/Snapshotting/NSViewController.swift; sourceTree = ""; }; - B768A051B8D570EDE27F1C0F3FBC8194 /* Pods-GradientProgressBar_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientProgressBar_Tests-dummy.m"; sourceTree = ""; }; - B7998D2A3D8685FD6D3762A23AC93A76 /* Pods-GradientProgressBar_SnapshotTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientProgressBar_SnapshotTests-acknowledgements.markdown"; sourceTree = ""; }; - BA6A07B9F5942B9B48B90EEB598C7619 /* NSBezierPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSBezierPath.swift; path = Sources/SnapshotTesting/Snapshotting/NSBezierPath.swift; sourceTree = ""; }; - BB7F5859015C08DC99F4102C2001E38C /* LightweightObservable-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LightweightObservable-Info.plist"; sourceTree = ""; }; - BCD94D45C0DBC522BBE8EE5D2868269A /* Pods-GradientProgressBar_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientProgressBar_Example-acknowledgements.plist"; sourceTree = ""; }; - C0D2A713E66EEAE9C4BF65B8D406F013 /* Pods-GradientProgressBar_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientProgressBar_Tests.release.xcconfig"; sourceTree = ""; }; - C4C95B2FA66AB0EFC760FE3BC82E183D /* XCTAttachment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XCTAttachment.swift; path = Sources/SnapshotTesting/Common/XCTAttachment.swift; sourceTree = ""; }; - C9D9BB3003EBE622D53CE1A43730C52F /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = Sources/SnapshotTesting/Snapshotting/String.swift; sourceTree = ""; }; + A38BD36975B9051B989F73656223996F /* CaseIterable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CaseIterable.swift; path = Sources/SnapshotTesting/Snapshotting/CaseIterable.swift; sourceTree = ""; }; + AA36DC22EDA044133EE2DB064FF97B29 /* Pods-ExampleSnapshotTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ExampleSnapshotTests-Info.plist"; sourceTree = ""; }; + AB109E238B73EE3EA91555C6530BF455 /* Constants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + AE02F290421D0044A7B9B488A50DBD6C /* SwiftConfigurationFiles.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftConfigurationFiles.debug.xcconfig; sourceTree = ""; }; + AF94D8B78D54936F5D6CFF9BDF80D52E /* Pods-ExampleSnapshotTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ExampleSnapshotTests-umbrella.h"; sourceTree = ""; }; + B149C0EB1C7CAA08D795C71076A689CF /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Example.debug.xcconfig"; sourceTree = ""; }; + B38ABB2556378E0FBBFAC5F022A3F36B /* NSViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSViewController.swift; path = Sources/SnapshotTesting/Snapshotting/NSViewController.swift; sourceTree = ""; }; + B9CB227C88005476A2E5924D38CC5C0D /* Pods-Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Example-dummy.m"; sourceTree = ""; }; + BBF8ECD7AF9CF7402221EB37D4B1409A /* Pods-Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Example-Info.plist"; sourceTree = ""; }; + BD3D0A29787E9FDB0D7CE83EA9392A7A /* Pods-Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Example.modulemap"; sourceTree = ""; }; + BD645920C329144DB30A4181898CDCE5 /* Pods-ExampleTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ExampleTests-umbrella.h"; sourceTree = ""; }; + BF6AF65269318A0D0E1C541D8D659BB5 /* SnapshotTesting-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-umbrella.h"; sourceTree = ""; }; + C0203044E32A06E021A5E706A4EC69BB /* Pods-ExampleSnapshotTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ExampleSnapshotTests-acknowledgements.plist"; sourceTree = ""; }; + C0914218D683BF8BC8C8858C2B9A1041 /* GradientProgressBar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientProgressBar.release.xcconfig; sourceTree = ""; }; + C70A9626A5985B4F9075500CF16CE8C8 /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = LightweightObservable/Disposable.swift; sourceTree = ""; }; + C75C124F1A4261FB6DC06040CA090D87 /* LightweightObservable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LightweightObservable.modulemap; sourceTree = ""; }; CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - D247995FCD2185571A788888D6C5722F /* PlistEncoder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PlistEncoder.swift; path = Sources/SnapshotTesting/Common/PlistEncoder.swift; sourceTree = ""; }; - D2EDF958393CEC05A58DD7B7B3238148 /* Pods-GradientProgressBar_SnapshotTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientProgressBar_SnapshotTests-umbrella.h"; sourceTree = ""; }; - D2F1D5D4FE8EB1B511317314725F9D54 /* SwiftConfigurationFiles.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftConfigurationFiles.release.xcconfig; sourceTree = ""; }; - D4F88EFDF064131C6FF6186C38964C01 /* Pods-GradientProgressBar_Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-GradientProgressBar_Example"; path = Pods_GradientProgressBar_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D997502F7A2A3F2E07DE43BA6C33DEF8 /* SwiftFormat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.release.xcconfig; sourceTree = ""; }; - D9EECF497600BB53CEDDACB2CE8A2B9D /* LightweightObservable.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.release.xcconfig; sourceTree = ""; }; - DDD07CD7827E95C941E7F18E4190991A /* Pods-GradientProgressBar_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientProgressBar_Tests-Info.plist"; sourceTree = ""; }; - DE21FEB95D4FBBE763D10658BDF20FF2 /* Pods-GradientProgressBar_SnapshotTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientProgressBar_SnapshotTests.modulemap"; sourceTree = ""; }; - E0AE401171F66B5A704B064F6007059B /* Observable+Equatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Equatable.swift"; path = "LightweightObservable/Classes/Extensions/Observable+Equatable.swift"; sourceTree = ""; }; - E3BCE2B6D70196DE8DC94C2F2C6825C4 /* Pods-GradientProgressBar_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientProgressBar_Example-umbrella.h"; sourceTree = ""; }; - E475B473BD1D9805A199E083205DD153 /* CaseIterable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CaseIterable.swift; path = Sources/SnapshotTesting/Snapshotting/CaseIterable.swift; sourceTree = ""; }; - E6BE9E9B021216B7EACF614662BC8B46 /* Pods-GradientProgressBar_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientProgressBar_Tests.modulemap"; sourceTree = ""; }; - E98B2BF860E17EFC6E61E0A90ACC31F4 /* GradientProgressBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GradientProgressBar.swift; path = GradientProgressBar/Classes/GradientProgressBar.swift; sourceTree = ""; }; - EA1F180F6598E2C91C54A774C2979FC2 /* Pods-GradientProgressBar_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientProgressBar_Example-Info.plist"; sourceTree = ""; }; - ED333E2FD9F83C466E13C6A69C917345 /* String+SpecialCharacters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+SpecialCharacters.swift"; path = "Sources/SnapshotTesting/Common/String+SpecialCharacters.swift"; sourceTree = ""; }; - ED5073BA8E5F040F45B737BBC7393222 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/SnapshotTesting/Async.swift; sourceTree = ""; }; + CDE8E0D1576BADB341E24FA3A1558A52 /* UIColor+MakeDynamicColor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+MakeDynamicColor.swift"; sourceTree = ""; }; + CE73B31D3D042300127FE7545DC9A288 /* Data.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Data.swift; path = Sources/SnapshotTesting/Snapshotting/Data.swift; sourceTree = ""; }; + CEB65A52E203646F5F85230CB37055A7 /* AssertSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertSnapshot.swift; path = Sources/SnapshotTesting/AssertSnapshot.swift; sourceTree = ""; }; + CED5F046F3966BF1758156DB5C0EAC5E /* Diffing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diffing.swift; path = Sources/SnapshotTesting/Diffing.swift; sourceTree = ""; }; + D067B70655B4D91995A1AD085829D7BB /* NSBezierPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSBezierPath.swift; path = Sources/SnapshotTesting/Snapshotting/NSBezierPath.swift; sourceTree = ""; }; + D82A8CF2E6113DADCCDD0F17A7831924 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + D837B6B884C93257247A6FA854BCF63E /* Pods-ExampleSnapshotTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ExampleSnapshotTests-acknowledgements.markdown"; sourceTree = ""; }; + D90A4312109DE68F0350FBB5DD551816 /* CGPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CGPath.swift; path = Sources/SnapshotTesting/Snapshotting/CGPath.swift; sourceTree = ""; }; + DD8356187265018957F8E0C8B7EA0A44 /* Pods-ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ExampleTests.debug.xcconfig"; sourceTree = ""; }; + DDC943115BA09D872B5FD1C9C598E5A1 /* Pods-ExampleTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ExampleTests-Info.plist"; sourceTree = ""; }; + DFDBA3729D272425F9E33F46EF920BFF /* SnapshotTesting.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapshotTesting.release.xcconfig; sourceTree = ""; }; + E2515335EAE757199D7B8D5DFD4D4F94 /* GradientProgressBarViewStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GradientProgressBarViewStyle.swift; path = GradientProgressBar/GradientProgressBarViewStyle.swift; sourceTree = ""; }; + E2FF4849BA9ABFDAF933BC11BBE59A72 /* Description.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Description.swift; path = Sources/SnapshotTesting/Snapshotting/Description.swift; sourceTree = ""; }; + E43F95A56840098ECFFB3426EC236F54 /* SwiftFormat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.debug.xcconfig; sourceTree = ""; }; + E51AE19293F251594EF647F0CECE2EFB /* MaskLayerViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MaskLayerViewModel.swift; sourceTree = ""; }; + E5E8205AA7BDD235D25195EB499663FA /* Pods-ExampleTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ExampleTests.modulemap"; sourceTree = ""; }; + E71E37779A210E3F9958FB4B465CC3B6 /* Any.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Any.swift; path = Sources/SnapshotTesting/Snapshotting/Any.swift; sourceTree = ""; }; + E7B244F28A1FD6EEA4564C67C401D680 /* SnapshotTestCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SnapshotTestCase.swift; path = Sources/SnapshotTesting/SnapshotTestCase.swift; sourceTree = ""; }; + E7C32BCB3A8CDE7A967257032D2CB146 /* SpriteKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SpriteKit.swift; path = Sources/SnapshotTesting/Snapshotting/SpriteKit.swift; sourceTree = ""; }; + E86B6F99751F56AA8AC35B5835DE4722 /* SnapshotTesting-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapshotTesting-dummy.m"; sourceTree = ""; }; + EC3DEEE3456BF4A2B0C0A2560F117B25 /* GradientLayerViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLayerViewModel.swift; sourceTree = ""; }; + EDFA33C3D1AF4C2C0CDAFFE7D06B88AF /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = LightweightObservable/Observable.swift; sourceTree = ""; }; + F09C7D47084FE71ABBB4F02C1DBA99D2 /* Pods-ExampleSnapshotTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ExampleSnapshotTests-frameworks.sh"; sourceTree = ""; }; + F0E19B3286278186EC4012CDF8CAA48F /* LightweightObservable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-umbrella.h"; sourceTree = ""; }; + F12C335B7DC098086708FA73A72EE357 /* String+SpecialCharacters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+SpecialCharacters.swift"; path = "Sources/SnapshotTesting/Common/String+SpecialCharacters.swift"; sourceTree = ""; }; F196AAA163469B17170E99B82C7C4C0A /* LightweightObservable */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LightweightObservable; path = LightweightObservable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F2A36E971D4A23B8A1BFAD8383412738 /* GradientProgressBar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GradientProgressBar.modulemap; sourceTree = ""; }; - FDF59CB8F72DB2EB4C843E7D3DA9F88F /* GradientProgressBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GradientProgressBar-dummy.m"; sourceTree = ""; }; - FFB61086549332856EE450986DDA39E3 /* SnapshotTesting-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapshotTesting-dummy.m"; sourceTree = ""; }; + F88EA58D96440077B653714F58692A9B /* Pods-Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Example-umbrella.h"; sourceTree = ""; }; + F959045FB2ACD210A5780E78A737055A /* GradientProgressBar.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GradientProgressBar.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + FD09B2B9DA4ECA0F9F21AD977F0F2125 /* GradientProgressBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientProgressBar-prefix.pch"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0DC464491B8196C2E5CE416CD0CD3B58 /* Frameworks */ = { + 4D9B30F2ADC0CEAB4A575CFD11EFFB9D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 895961808A736B3A15B10B290A3E8F05 /* Foundation.framework in Frameworks */, + 0C8D18EAAE993F0FBDEFE0D40D162C64 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 585F9820BDC1556C3203A7BC599068D1 /* Frameworks */ = { + 80CB26F1AFBA6BA2257DE8F446122E81 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E8C537CF67B963C4AEC847148B08868F /* Foundation.framework in Frameworks */, + 4A0E4E446BEDFF8D0A790B77EC15FEA7 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 7EFAA9CFA5AF39C9ED5742D08EA84470 /* Frameworks */ = { + 9280D47AF9C0E39937FFC80009067D70 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 91A6F89F808BA1E0865A924AA69D3E15 /* Foundation.framework in Frameworks */, + C00C9FE7C1B3110AF1B4F98E90FA1A01 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A0D2A429C17F8A97FFAB4B4D3B9E7ABC /* Frameworks */ = { + A3E6F437DCDBD6A93A734772AFD5F236 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 355AA637C91A67E1D4B6FC67A6591B62 /* Foundation.framework in Frameworks */, + AFE414B3E0D49B39A358DE524B0839D5 /* Foundation.framework in Frameworks */, + 4A8EE45D20D442748189087F6A430A75 /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A3E6F437DCDBD6A93A734772AFD5F236 /* Frameworks */ = { + ABA8077563D1D362638BE25ECA7FF044 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AFE414B3E0D49B39A358DE524B0839D5 /* Foundation.framework in Frameworks */, - 4A8EE45D20D442748189087F6A430A75 /* XCTest.framework in Frameworks */, + 38F2976511EDBB1AB398ECD91AD30130 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - BB15C009935EB0D01F6A6B1A2AC15976 /* Frameworks */ = { + D1E98E81AAE9B8D3C4E0B63819D69EE6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 486D925EE3EB344F20DFBEFAF1A43E9B /* Foundation.framework in Frameworks */, + 90FB652EA175BDA16673BE59E18FB7DF /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0E360A9F9862C6DCC0C9EF8C5DF2BF51 /* Support Files */ = { + 01410843265C073BE9C43368900527DE /* ViewModel */ = { isa = PBXGroup; children = ( - 266C8D88734DA14C89122CA08DE224B9 /* SnapshotTesting.modulemap */, - FFB61086549332856EE450986DDA39E3 /* SnapshotTesting-dummy.m */, - 4F9247405B237F2F2FC8E7A4256E26CE /* SnapshotTesting-Info.plist */, - 8DD33C2202B004A8B452184DCFAB4DEC /* SnapshotTesting-prefix.pch */, - 5BF80F682CAE5877E7D5846C8BF547AC /* SnapshotTesting-umbrella.h */, - 5A95E0EC64A130765609C642BEF951DC /* SnapshotTesting.debug.xcconfig */, - 01195480F1DCEF69F5D9619C1B3C44E9 /* SnapshotTesting.release.xcconfig */, + EC3DEEE3456BF4A2B0C0A2560F117B25 /* GradientLayerViewModel.swift */, + E51AE19293F251594EF647F0CECE2EFB /* MaskLayerViewModel.swift */, ); - name = "Support Files"; - path = "../Target Support Files/SnapshotTesting"; + name = ViewModel; + path = GradientProgressBar/ViewModel; sourceTree = ""; }; - 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { + 045FA942BFE8DB929BF31B0D6455A531 /* Pods-ExampleSnapshotTests */ = { isa = PBXGroup; children = ( - 974814B39C0012DECD183BBB91B32103 /* iOS */, - ); - name = Frameworks; + 90153A27EB05F606E13162C9C4A4BE5F /* Pods-ExampleSnapshotTests.modulemap */, + D837B6B884C93257247A6FA854BCF63E /* Pods-ExampleSnapshotTests-acknowledgements.markdown */, + C0203044E32A06E021A5E706A4EC69BB /* Pods-ExampleSnapshotTests-acknowledgements.plist */, + 65C02E52F65DFA68BF382C89D70FA2B3 /* Pods-ExampleSnapshotTests-dummy.m */, + F09C7D47084FE71ABBB4F02C1DBA99D2 /* Pods-ExampleSnapshotTests-frameworks.sh */, + AA36DC22EDA044133EE2DB064FF97B29 /* Pods-ExampleSnapshotTests-Info.plist */, + AF94D8B78D54936F5D6CFF9BDF80D52E /* Pods-ExampleSnapshotTests-umbrella.h */, + 3CEF637F75EB182A98B69E784C0F845E /* Pods-ExampleSnapshotTests.debug.xcconfig */, + 3D775B472F7AA7D3B9A1593811AABB1F /* Pods-ExampleSnapshotTests.release.xcconfig */, + ); + name = "Pods-ExampleSnapshotTests"; + path = "Target Support Files/Pods-ExampleSnapshotTests"; sourceTree = ""; }; - 1A4994587C8740E379304D1195D62258 /* LightweightObservable */ = { + 04671A532A737A9698DE71F7DEA1802A /* Support Files */ = { isa = PBXGroup; children = ( - 80BF588C375E0686FCE12E6B7A297CE7 /* Disposable.swift */, - 9DCA8C4CBB512E220B4470D94AF8BE7D /* Observable.swift */, - E0AE401171F66B5A704B064F6007059B /* Observable+Equatable.swift */, - 8B7AAA3C809414A46F196C6DE5F6CFB4 /* Observable+KeyPath.swift */, - 9CF614E301B83EC4DD18CF37D095ED73 /* Support Files */, + AE02F290421D0044A7B9B488A50DBD6C /* SwiftConfigurationFiles.debug.xcconfig */, + 04D67E1AC2B476618545A95A11B5B811 /* SwiftConfigurationFiles.release.xcconfig */, ); - name = LightweightObservable; - path = LightweightObservable; + name = "Support Files"; + path = "../Target Support Files/SwiftConfigurationFiles"; sourceTree = ""; }; - 2DF6616C733AD295C813A7B4AFFB3F7B /* SwiftLint */ = { + 0A64DB470E4B02FFEE1183140FB557A8 /* Pods-Example */ = { isa = PBXGroup; children = ( - D849F6B1672F929753FBCBD372FABBFA /* Support Files */, - ); - name = SwiftLint; - path = SwiftLint; + BD3D0A29787E9FDB0D7CE83EA9392A7A /* Pods-Example.modulemap */, + 6FC0506D7C871976CFFE681307BBC0BF /* Pods-Example-acknowledgements.markdown */, + 87DC31FDBD7C9F8A0106B384E6D99B85 /* Pods-Example-acknowledgements.plist */, + B9CB227C88005476A2E5924D38CC5C0D /* Pods-Example-dummy.m */, + 0638F8873A3594830C7108D94F8F8104 /* Pods-Example-frameworks.sh */, + BBF8ECD7AF9CF7402221EB37D4B1409A /* Pods-Example-Info.plist */, + F88EA58D96440077B653714F58692A9B /* Pods-Example-umbrella.h */, + B149C0EB1C7CAA08D795C71076A689CF /* Pods-Example.debug.xcconfig */, + 5C8A7D0B6CF1EBB569F2C16521C9BEB0 /* Pods-Example.release.xcconfig */, + ); + name = "Pods-Example"; + path = "Target Support Files/Pods-Example"; sourceTree = ""; }; - 35552DF089F96AC3E9F12C9EE238AE31 /* Extensions */ = { + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { isa = PBXGroup; children = ( - 4D577186EA07941B0486CD763B8ED37B /* NSObject+Builder.swift */, - 5CF9C8A32E589354F13CB3BE192A6333 /* UIColor+MakeDynamicColor.swift */, + 974814B39C0012DECD183BBB91B32103 /* iOS */, ); - name = Extensions; - path = GradientProgressBar/Classes/Extensions; + name = Frameworks; sourceTree = ""; }; - 3D5AEA9F1D53DA9658A949832ACA09D4 /* SwiftFormat */ = { + 2AFC4759ECC4D53FF9953C3CFBE67078 /* Support Files */ = { isa = PBXGroup; children = ( - 73893CCD044DB8B8BFF17C6C86A52345 /* Support Files */, + 2009541AEFF2EFDA3802BF5CF3C8C6ED /* SnapshotTesting.modulemap */, + E86B6F99751F56AA8AC35B5835DE4722 /* SnapshotTesting-dummy.m */, + 392F0D54DA316F76F7B4DF63E033D602 /* SnapshotTesting-Info.plist */, + 034096A652454C479D78A11AF0738191 /* SnapshotTesting-prefix.pch */, + BF6AF65269318A0D0E1C541D8D659BB5 /* SnapshotTesting-umbrella.h */, + 9D21619E3127A33326194FAC5E0241D7 /* SnapshotTesting.debug.xcconfig */, + DFDBA3729D272425F9E33F46EF920BFF /* SnapshotTesting.release.xcconfig */, ); - name = SwiftFormat; - path = SwiftFormat; + name = "Support Files"; + path = "../Target Support Files/SnapshotTesting"; sourceTree = ""; }; - 4697706855BE470EA0EE5646F2A82D28 /* Pods-GradientProgressBar_Example */ = { + 2B23D09BF983A3F081B96D5579D08787 /* Support Files */ = { isa = PBXGroup; children = ( - 4BA9CC446A67488BB146BD4AAD8394F7 /* Pods-GradientProgressBar_Example.modulemap */, - 9D92A484AA5503A71CF3AD2A4404D21E /* Pods-GradientProgressBar_Example-acknowledgements.markdown */, - BCD94D45C0DBC522BBE8EE5D2868269A /* Pods-GradientProgressBar_Example-acknowledgements.plist */, - 9AA9B7DF22F0BF6E9649B6F745933FC2 /* Pods-GradientProgressBar_Example-dummy.m */, - 10847F76058FE66CB2ADC3C37B557B54 /* Pods-GradientProgressBar_Example-frameworks.sh */, - EA1F180F6598E2C91C54A774C2979FC2 /* Pods-GradientProgressBar_Example-Info.plist */, - E3BCE2B6D70196DE8DC94C2F2C6825C4 /* Pods-GradientProgressBar_Example-umbrella.h */, - 4F8489AE7398E8BD899CD8339F73BA54 /* Pods-GradientProgressBar_Example.debug.xcconfig */, - 1E994A8FF390361E6692A06709232E66 /* Pods-GradientProgressBar_Example.release.xcconfig */, - ); - name = "Pods-GradientProgressBar_Example"; - path = "Target Support Files/Pods-GradientProgressBar_Example"; + 08E87DFECD69E46292154E099AB8D144 /* SwiftLint.debug.xcconfig */, + 39724ABA4E40A364B25F01F3E3CE31EC /* SwiftLint.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SwiftLint"; sourceTree = ""; }; - 4EF94CB118C72CED447C8FBDF9771B52 /* SnapshotTesting */ = { + 375FEB92EFE930BA2A191FB619E88201 /* Support Files */ = { isa = PBXGroup; children = ( - 9C2EEFBFFAE6AD15C903A20EE7BF57D7 /* Any.swift */, - 29287A9837B9E7B9DCE4C137404D02C6 /* AssertInlineSnapshot.swift */, - 27481F5BB2B02F8C989E93FBE449F4C0 /* AssertSnapshot.swift */, - ED5073BA8E5F040F45B737BBC7393222 /* Async.swift */, - 5D59128C0184862956F5A6B6C4D6E476 /* CALayer.swift */, - E475B473BD1D9805A199E083205DD153 /* CaseIterable.swift */, - 5BDC2C00D01795D9D5474A268FEA0790 /* CGPath.swift */, - 02CD89009632E27BD479C79D599B107A /* Codable.swift */, - 235E88FACFE1686D577A236842D3E2F8 /* Data.swift */, - 12241E9306298FD7BD30DD97B2F2F585 /* Description.swift */, - 510E624D0F605EB57201AFDACB0A1AA6 /* Diff.swift */, - 675C8FED0CA649F447020502AC40DA94 /* Diffing.swift */, - 22B25BD308FFF65FD10083A71DF8B6D0 /* Internal.swift */, - BA6A07B9F5942B9B48B90EEB598C7619 /* NSBezierPath.swift */, - 887414A1F43A80406F38C7F3D271B973 /* NSImage.swift */, - 752098F700D4627B4812D33624EC3D46 /* NSView.swift */, - B67BD6ECBAB898E12CB2B4D25E835034 /* NSViewController.swift */, - D247995FCD2185571A788888D6C5722F /* PlistEncoder.swift */, - 8625DAD35C01DA8A227DFE847303FD36 /* SceneKit.swift */, - 3347134442AAF2B9DB7E1F4E2E3E8B66 /* SnapshotTestCase.swift */, - 5DCE065F2DFC9DC8382D7C5D74163571 /* Snapshotting.swift */, - 3745B9ADEFD5EB502DDDCA38C54C0469 /* SpriteKit.swift */, - C9D9BB3003EBE622D53CE1A43730C52F /* String.swift */, - ED333E2FD9F83C466E13C6A69C917345 /* String+SpecialCharacters.swift */, - 8A501BC0324C0925814D79A81451E58C /* SwiftUIView.swift */, - A85AAD62B88A5A61ED41F15941BCF50E /* UIBezierPath.swift */, - A8703A929D837847AFFD9398983FDB99 /* UIImage.swift */, - 6B8C3644CAA8A93B3901127A7B8DE26E /* UIView.swift */, - 9D21ADE128CE03553F0F1D720F4F967D /* UIViewController.swift */, - 388DBB0163B3768EC43AB87FFED8A19D /* URLRequest.swift */, - 4077B2112D2B1D73DE188E8058E85FA1 /* View.swift */, - 88324CDA62CABFBF5DA8963930242CDB /* Wait.swift */, - C4C95B2FA66AB0EFC760FE3BC82E183D /* XCTAttachment.swift */, - 0E360A9F9862C6DCC0C9EF8C5DF2BF51 /* Support Files */, + 7613A2E4E05051A670B04D445388D9F5 /* GradientProgressBar.modulemap */, + 4B72029BACC88761802EF28825BABF1C /* GradientProgressBar-dummy.m */, + 1BB25BAF1D83CFB93D6664A0EF72047B /* GradientProgressBar-Info.plist */, + FD09B2B9DA4ECA0F9F21AD977F0F2125 /* GradientProgressBar-prefix.pch */, + 6472FE43D3A4C76F8B11A4BA2B6D13F2 /* GradientProgressBar-umbrella.h */, + 29B352272E0CA8C60A5C519A7E94508F /* GradientProgressBar.debug.xcconfig */, + C0914218D683BF8BC8C8858C2B9A1041 /* GradientProgressBar.release.xcconfig */, ); - name = SnapshotTesting; - path = SnapshotTesting; + name = "Support Files"; + path = "Example/Pods/Target Support Files/GradientProgressBar"; sourceTree = ""; }; - 501B71AE249330277AEFF81DB813272E /* Products */ = { + 43AAC1AB1516723E83B3890B1D058A16 /* SwiftConfigurationFiles */ = { isa = PBXGroup; children = ( - 06D2A33567A0BA45FD04D735CF5FA780 /* GradientProgressBar */, - F196AAA163469B17170E99B82C7C4C0A /* LightweightObservable */, - D4F88EFDF064131C6FF6186C38964C01 /* Pods-GradientProgressBar_Example */, - 41CF3CFB21FBFD5C89875B7A951AC6C5 /* Pods-GradientProgressBar_SnapshotTests */, - 7089F0D00E320DA5B1AEA2EDA788B012 /* Pods-GradientProgressBar_Tests */, - A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting */, + 04671A532A737A9698DE71F7DEA1802A /* Support Files */, ); - name = Products; + name = SwiftConfigurationFiles; + path = SwiftConfigurationFiles; sourceTree = ""; }; - 51B409D1FE790E72828AE614D56A5116 /* Pods-GradientProgressBar_Tests */ = { + 68189F4BA915C8498218E2720941E2FA /* Development Pods */ = { isa = PBXGroup; children = ( - E6BE9E9B021216B7EACF614662BC8B46 /* Pods-GradientProgressBar_Tests.modulemap */, - 9EE196C463CA721FC441D8287FCA8B0B /* Pods-GradientProgressBar_Tests-acknowledgements.markdown */, - 332A91BDCCB0425A9CE22879135892DB /* Pods-GradientProgressBar_Tests-acknowledgements.plist */, - B768A051B8D570EDE27F1C0F3FBC8194 /* Pods-GradientProgressBar_Tests-dummy.m */, - DDD07CD7827E95C941E7F18E4190991A /* Pods-GradientProgressBar_Tests-Info.plist */, - 00690E43157EA42FC6C72C950D850E08 /* Pods-GradientProgressBar_Tests-umbrella.h */, - 6FD7099AF64080B46C3BB6BDAEC18C3D /* Pods-GradientProgressBar_Tests.debug.xcconfig */, - C0D2A713E66EEAE9C4BF65B8D406F013 /* Pods-GradientProgressBar_Tests.release.xcconfig */, - ); - name = "Pods-GradientProgressBar_Tests"; - path = "Target Support Files/Pods-GradientProgressBar_Tests"; + 8742DA6E7546C232C831AB7BAE86BD62 /* GradientProgressBar */, + ); + name = "Development Pods"; sourceTree = ""; }; - 64454E3EB1A73FDD090D1A14B49643EC /* Support Files */ = { + 79F4C85456D00FAD2CD09DD5BBB8C75D /* Misc */ = { isa = PBXGroup; children = ( - F2A36E971D4A23B8A1BFAD8383412738 /* GradientProgressBar.modulemap */, - FDF59CB8F72DB2EB4C843E7D3DA9F88F /* GradientProgressBar-dummy.m */, - 681A56BBD34399CA87C8CDC433FE842F /* GradientProgressBar-Info.plist */, - 881946A9C2CAE722465AB597959673A4 /* GradientProgressBar-prefix.pch */, - 98A1B4B2D5B06E709BD2E4DC17217B3F /* GradientProgressBar-umbrella.h */, - 9E2A2B9627A155B218E8EEFE867E23CA /* GradientProgressBar.debug.xcconfig */, - 24304AF8B903F5D0B25EB3CE765E2115 /* GradientProgressBar.release.xcconfig */, + AB109E238B73EE3EA91555C6530BF455 /* Constants.swift */, ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/GradientProgressBar"; + name = Misc; + path = GradientProgressBar/Misc; sourceTree = ""; }; - 73893CCD044DB8B8BFF17C6C86A52345 /* Support Files */ = { + 7F87DE7A8BC04E9550149752BC042574 /* Extensions */ = { isa = PBXGroup; children = ( - 00EBB6A2B0A117A761C58ED62B0D4C24 /* SwiftFormat.debug.xcconfig */, - D997502F7A2A3F2E07DE43BA6C33DEF8 /* SwiftFormat.release.xcconfig */, + 26F1E7CECAF0CBEE6DAFF50A38969DDC /* NSObject+Builder.swift */, + CDE8E0D1576BADB341E24FA3A1558A52 /* UIColor+MakeDynamicColor.swift */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftFormat"; + name = Extensions; + path = GradientProgressBar/Extensions; sourceTree = ""; }; - 7628836BB6E658EB7854D7B2D1AD6449 /* Development Pods */ = { + 8117A0062130D047C63C2824B16563F9 /* SwiftFormat */ = { isa = PBXGroup; children = ( - CCE5FD02B8A96E215B4ED88994A25459 /* GradientProgressBar */, + 82BF8F914435313C9DCFF6FAFE9EF700 /* Support Files */, ); - name = "Development Pods"; + name = SwiftFormat; + path = SwiftFormat; sourceTree = ""; }; - 7A79F42FA71A47D9957C3938A4165D34 /* Misc */ = { + 82BF8F914435313C9DCFF6FAFE9EF700 /* Support Files */ = { isa = PBXGroup; children = ( - 10B0AA64C8863B59D8C59809AB912B58 /* Constants.swift */, + E43F95A56840098ECFFB3426EC236F54 /* SwiftFormat.debug.xcconfig */, + 321E0EECA8025D4E3C0406B264AB9F4A /* SwiftFormat.release.xcconfig */, ); - name = Misc; - path = GradientProgressBar/Classes/Misc; + name = "Support Files"; + path = "../Target Support Files/SwiftFormat"; sourceTree = ""; }; - 866F4707586BA782EEE16BB0E4DDA12E /* Pods */ = { + 8742DA6E7546C232C831AB7BAE86BD62 /* GradientProgressBar */ = { isa = PBXGroup; children = ( - 1A4994587C8740E379304D1195D62258 /* LightweightObservable */, - 4EF94CB118C72CED447C8FBDF9771B52 /* SnapshotTesting */, - 89A71E3BC8ACA4ED6EA26DC7EFD6325B /* SwiftConfigurationFiles */, - 3D5AEA9F1D53DA9658A949832ACA09D4 /* SwiftFormat */, - 2DF6616C733AD295C813A7B4AFFB3F7B /* SwiftLint */, + 3FB4C0EC610FF658186A0676771045C9 /* GradientProgressBar.swift */, + E2515335EAE757199D7B8D5DFD4D4F94 /* GradientProgressBarViewStyle.swift */, + 7F87DE7A8BC04E9550149752BC042574 /* Extensions */, + 79F4C85456D00FAD2CD09DD5BBB8C75D /* Misc */, + CC9B818F1ADFDC983469A8624B5B8598 /* Pod */, + 375FEB92EFE930BA2A191FB619E88201 /* Support Files */, + 01410843265C073BE9C43368900527DE /* ViewModel */, ); - name = Pods; + name = GradientProgressBar; + path = ../..; sourceTree = ""; }; - 89A71E3BC8ACA4ED6EA26DC7EFD6325B /* SwiftConfigurationFiles */ = { + 8D4021A66B75C4DAC37FB29AF10F5972 /* LightweightObservable */ = { isa = PBXGroup; children = ( - 9F500AA9EDCC9F77CF819939A745BC17 /* Support Files */, + C70A9626A5985B4F9075500CF16CE8C8 /* Disposable.swift */, + EDFA33C3D1AF4C2C0CDAFFE7D06B88AF /* Observable.swift */, + 1F94EC0823DB851E6D0A4C81C33A0CEA /* Observable+Combine.swift */, + 523B7174E480C3FA74F83ABE7056DE17 /* Observable+Equatable.swift */, + 89D6B1C70C53B6DA6E6D0456F0F7DBD8 /* Observable+KeyPath.swift */, + F62BDBCF2DC54A7887F6D705A6E84E66 /* Support Files */, ); - name = SwiftConfigurationFiles; - path = SwiftConfigurationFiles; + name = LightweightObservable; + path = LightweightObservable; sourceTree = ""; }; 974814B39C0012DECD183BBB91B32103 /* iOS */ = { @@ -555,110 +530,141 @@ name = iOS; sourceTree = ""; }; - 9CF614E301B83EC4DD18CF37D095ED73 /* Support Files */ = { + A45F4A4E9AC8AF47029D4812E205A54B /* SwiftLint */ = { isa = PBXGroup; children = ( - 3D1546F727E84C17FB03D49A501AEBF3 /* LightweightObservable.modulemap */, - 60F741339642A8D8B19A4EF0EDE2B528 /* LightweightObservable-dummy.m */, - BB7F5859015C08DC99F4102C2001E38C /* LightweightObservable-Info.plist */, - 1F070D4133AC30EFD0B1CBDAD691998A /* LightweightObservable-prefix.pch */, - 8B12FDB42E09EF68B5A13B6F29206C58 /* LightweightObservable-umbrella.h */, - 6BA6CC273DB1F3DF8863CA959253A9E1 /* LightweightObservable.debug.xcconfig */, - D9EECF497600BB53CEDDACB2CE8A2B9D /* LightweightObservable.release.xcconfig */, + 2B23D09BF983A3F081B96D5579D08787 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/LightweightObservable"; + name = SwiftLint; + path = SwiftLint; sourceTree = ""; }; - 9F500AA9EDCC9F77CF819939A745BC17 /* Support Files */ = { + B20CDDB99F9A244705C84FA6126E2714 /* Products */ = { isa = PBXGroup; children = ( - 739B52B367A66EB59594809032052D1F /* SwiftConfigurationFiles.debug.xcconfig */, - D2F1D5D4FE8EB1B511317314725F9D54 /* SwiftConfigurationFiles.release.xcconfig */, + 06D2A33567A0BA45FD04D735CF5FA780 /* GradientProgressBar */, + F196AAA163469B17170E99B82C7C4C0A /* LightweightObservable */, + 1F667CC0E19EAF34E5A4119E2121F585 /* Pods-Example */, + 1EC06CD38CB67E4E8061D4D2DCD617B2 /* Pods-ExampleSnapshotTests */, + 630CABE8F692FCDBFD1B122A2D0CE388 /* Pods-ExampleTests */, + A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftConfigurationFiles"; + name = Products; sourceTree = ""; }; - A88371E96B7A17AEF874B1107CA27575 /* Pods-GradientProgressBar_SnapshotTests */ = { + CC9B818F1ADFDC983469A8624B5B8598 /* Pod */ = { isa = PBXGroup; children = ( - DE21FEB95D4FBBE763D10658BDF20FF2 /* Pods-GradientProgressBar_SnapshotTests.modulemap */, - B7998D2A3D8685FD6D3762A23AC93A76 /* Pods-GradientProgressBar_SnapshotTests-acknowledgements.markdown */, - 9DBBDBEA3437335C1B0890198F3C3CF9 /* Pods-GradientProgressBar_SnapshotTests-acknowledgements.plist */, - 388C7D788EB5BA29424EEC5FC814D713 /* Pods-GradientProgressBar_SnapshotTests-dummy.m */, - 9ADD17205849515D675BE98CA149BC81 /* Pods-GradientProgressBar_SnapshotTests-frameworks.sh */, - 02D06ADA7430E485346FE0B225F8FC79 /* Pods-GradientProgressBar_SnapshotTests-Info.plist */, - D2EDF958393CEC05A58DD7B7B3238148 /* Pods-GradientProgressBar_SnapshotTests-umbrella.h */, - 44611AB9F27D707CE10442E86C554E33 /* Pods-GradientProgressBar_SnapshotTests.debug.xcconfig */, - 04FE0C4BFF6B969E790DF1AB1F303870 /* Pods-GradientProgressBar_SnapshotTests.release.xcconfig */, - ); - name = "Pods-GradientProgressBar_SnapshotTests"; - path = "Target Support Files/Pods-GradientProgressBar_SnapshotTests"; + F959045FB2ACD210A5780E78A737055A /* GradientProgressBar.podspec */, + D82A8CF2E6113DADCCDD0F17A7831924 /* LICENSE */, + 721B54434D8D22FEC5F7F6DC96F12646 /* README.md */, + ); + name = Pod; sourceTree = ""; }; - BD503414780FB9A87F686E3788176D13 /* Pod */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 5EA356E8533CEBAE574A2489C5EE457C /* GradientProgressBar.podspec */, - 119753B975957BD0A29B04B381C8A6D0 /* LICENSE */, - AD3D9948B0B93D115244EA6E248AC5DC /* readme.md */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 68189F4BA915C8498218E2720941E2FA /* Development Pods */, + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, + D9E4C6772BA43B15D379F74ADB1F3D24 /* Pods */, + B20CDDB99F9A244705C84FA6126E2714 /* Products */, + FCB384E7AF45D36A0288068BA3CDE9E4 /* Targets Support Files */, ); - name = Pod; sourceTree = ""; }; - CCE5FD02B8A96E215B4ED88994A25459 /* GradientProgressBar */ = { + D9E4C6772BA43B15D379F74ADB1F3D24 /* Pods */ = { isa = PBXGroup; children = ( - E98B2BF860E17EFC6E61E0A90ACC31F4 /* GradientProgressBar.swift */, - 35552DF089F96AC3E9F12C9EE238AE31 /* Extensions */, - 7A79F42FA71A47D9957C3938A4165D34 /* Misc */, - BD503414780FB9A87F686E3788176D13 /* Pod */, - 64454E3EB1A73FDD090D1A14B49643EC /* Support Files */, - DE0B37F80BEF3A649C998106389BE019 /* ViewModel */, + 8D4021A66B75C4DAC37FB29AF10F5972 /* LightweightObservable */, + DB9FA77551B6F1F7BB7B66D9513B92B4 /* SnapshotTesting */, + 43AAC1AB1516723E83B3890B1D058A16 /* SwiftConfigurationFiles */, + 8117A0062130D047C63C2824B16563F9 /* SwiftFormat */, + A45F4A4E9AC8AF47029D4812E205A54B /* SwiftLint */, ); - name = GradientProgressBar; - path = ../..; + name = Pods; sourceTree = ""; }; - CF1408CF629C7361332E53B88F7BD30C = { + DB9FA77551B6F1F7BB7B66D9513B92B4 /* SnapshotTesting */ = { isa = PBXGroup; children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - 7628836BB6E658EB7854D7B2D1AD6449 /* Development Pods */, - 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, - 866F4707586BA782EEE16BB0E4DDA12E /* Pods */, - 501B71AE249330277AEFF81DB813272E /* Products */, - E9495FD9672C7EB077B2F237EDC858B2 /* Targets Support Files */, + E71E37779A210E3F9958FB4B465CC3B6 /* Any.swift */, + 9801722F42CF5540558E2186724E2F08 /* AssertInlineSnapshot.swift */, + CEB65A52E203646F5F85230CB37055A7 /* AssertSnapshot.swift */, + 33915C6CA41A4120CCCFDA0A30623E99 /* Async.swift */, + 9761D5B7A8B0AF3C2D31731AA1E42F26 /* CALayer.swift */, + A38BD36975B9051B989F73656223996F /* CaseIterable.swift */, + D90A4312109DE68F0350FBB5DD551816 /* CGPath.swift */, + 8D70287148495215062E5030BA6267BB /* Codable.swift */, + CE73B31D3D042300127FE7545DC9A288 /* Data.swift */, + E2FF4849BA9ABFDAF933BC11BBE59A72 /* Description.swift */, + 195C9E50C429616417E6F569B20896A6 /* Diff.swift */, + CED5F046F3966BF1758156DB5C0EAC5E /* Diffing.swift */, + 371D3CDC7543AF863ADAE5F4D66D793C /* Internal.swift */, + D067B70655B4D91995A1AD085829D7BB /* NSBezierPath.swift */, + 80982F04B55AD6ED4052012DBA5D74E2 /* NSImage.swift */, + 94F6960E2E6F81EA1AEEEC7CAC13C054 /* NSView.swift */, + B38ABB2556378E0FBBFAC5F022A3F36B /* NSViewController.swift */, + 86A83C5000A82493337A3DFC79D0B56F /* PlistEncoder.swift */, + 4342969D6D37396C136697D0BC1C2A06 /* SceneKit.swift */, + E7B244F28A1FD6EEA4564C67C401D680 /* SnapshotTestCase.swift */, + 8DAABA5B241D32CC27078958069BCC5B /* Snapshotting.swift */, + E7C32BCB3A8CDE7A967257032D2CB146 /* SpriteKit.swift */, + 1CAC9E06708925371B8BFCC5484444DD /* String.swift */, + F12C335B7DC098086708FA73A72EE357 /* String+SpecialCharacters.swift */, + 0E633CB1D426841C43DF3462991319C4 /* SwiftUIView.swift */, + 2E06D57A35648ECBC97644D217B868BD /* UIBezierPath.swift */, + 54653ADB348C04B28B4D3455911AEFA0 /* UIImage.swift */, + 009FB438C78F42859CE255EDC7F22DB3 /* UIView.swift */, + 6BBB42D19B8EDB33AE63C1A34EAD81DE /* UIViewController.swift */, + 948F5A85ABC960EDF780E259FB3A8E23 /* URLRequest.swift */, + 1466DB0C211E9F079BFFFBDFDD4C1BD0 /* View.swift */, + 24E9153BF879D5DA5CDF2FF9BD6EE07A /* Wait.swift */, + 4B8421185176594CFD7B0CCE69071B4F /* XCTAttachment.swift */, + 2AFC4759ECC4D53FF9953C3CFBE67078 /* Support Files */, ); + name = SnapshotTesting; + path = SnapshotTesting; sourceTree = ""; }; - D849F6B1672F929753FBCBD372FABBFA /* Support Files */ = { + F09E33613C1114497450A7A84C7D9882 /* Pods-ExampleTests */ = { isa = PBXGroup; children = ( - 44FC5949DA58E53329E8837F44618093 /* SwiftLint.debug.xcconfig */, - 283322DA7A49E2E4D67B814963BECFB3 /* SwiftLint.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SwiftLint"; + E5E8205AA7BDD235D25195EB499663FA /* Pods-ExampleTests.modulemap */, + 030C48ABEDDA795341F48F21C6293DFA /* Pods-ExampleTests-acknowledgements.markdown */, + 85373724BBCC54B7663988B470A5D6EA /* Pods-ExampleTests-acknowledgements.plist */, + 08CC589119FCED2C2B2F7D4905893347 /* Pods-ExampleTests-dummy.m */, + DDC943115BA09D872B5FD1C9C598E5A1 /* Pods-ExampleTests-Info.plist */, + BD645920C329144DB30A4181898CDCE5 /* Pods-ExampleTests-umbrella.h */, + DD8356187265018957F8E0C8B7EA0A44 /* Pods-ExampleTests.debug.xcconfig */, + 7CA590CDCEEA3EDA8EF40893AE966B74 /* Pods-ExampleTests.release.xcconfig */, + ); + name = "Pods-ExampleTests"; + path = "Target Support Files/Pods-ExampleTests"; sourceTree = ""; }; - DE0B37F80BEF3A649C998106389BE019 /* ViewModel */ = { + F62BDBCF2DC54A7887F6D705A6E84E66 /* Support Files */ = { isa = PBXGroup; children = ( - 2C34544F09DCD8607AC013EF74429E48 /* GradientLayerViewModel.swift */, - 491FE0D5C97F20B8484CCCC801A2C3DD /* MaskLayerViewModel.swift */, + C75C124F1A4261FB6DC06040CA090D87 /* LightweightObservable.modulemap */, + 785E1BC5584D16AC9173E04DE45A6036 /* LightweightObservable-dummy.m */, + 143F2717B1133164FBCC65A2DF3C3C67 /* LightweightObservable-Info.plist */, + 92595228CA62A3593A599AE616D42DC9 /* LightweightObservable-prefix.pch */, + F0E19B3286278186EC4012CDF8CAA48F /* LightweightObservable-umbrella.h */, + 8B75864FEFCDD0C986F965BC9B1D2A1B /* LightweightObservable.debug.xcconfig */, + 074CBA3DACEF2667EFED2C72D45A2403 /* LightweightObservable.release.xcconfig */, ); - name = ViewModel; - path = GradientProgressBar/Classes/ViewModel; + name = "Support Files"; + path = "../Target Support Files/LightweightObservable"; sourceTree = ""; }; - E9495FD9672C7EB077B2F237EDC858B2 /* Targets Support Files */ = { + FCB384E7AF45D36A0288068BA3CDE9E4 /* Targets Support Files */ = { isa = PBXGroup; children = ( - 4697706855BE470EA0EE5646F2A82D28 /* Pods-GradientProgressBar_Example */, - A88371E96B7A17AEF874B1107CA27575 /* Pods-GradientProgressBar_SnapshotTests */, - 51B409D1FE790E72828AE614D56A5116 /* Pods-GradientProgressBar_Tests */, + 0A64DB470E4B02FFEE1183140FB557A8 /* Pods-Example */, + 045FA942BFE8DB929BF31B0D6455A531 /* Pods-ExampleSnapshotTests */, + F09E33613C1114497450A7A84C7D9882 /* Pods-ExampleTests */, ); name = "Targets Support Files"; sourceTree = ""; @@ -666,51 +672,51 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 3DB53013216AE1CFCAD939686EC8C0A4 /* Headers */ = { + 1485F00414A7C3466BE5E72A72283967 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9D6622CDE2793B13735F47C44A7743ED /* SnapshotTesting-umbrella.h in Headers */, + C2F7B05729193ABF3D3185603B6DC3BD /* Pods-ExampleTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6CB6FA3DCC0FB8AE83869FD33FC13FFC /* Headers */ = { + 39764123F310FD0742CB2A8189954DB3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B31C8F56C7D418FD66EAB3FCBBDC73EB /* Pods-GradientProgressBar_Tests-umbrella.h in Headers */, + A100A48AAC910427987DF5C1C56F7466 /* LightweightObservable-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 90CA50DC8F9D74647796D44ACCCE29AE /* Headers */ = { + 3BD22F482E3C5B3C141E73BB898007BC /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9D708E502307F6E1100B0777DF41D1EE /* Pods-GradientProgressBar_SnapshotTests-umbrella.h in Headers */, + 937C8E73F088F4DE5F264575D232D51D /* Pods-Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - BFB30B63DEF1330F5B0CD359F0E4917A /* Headers */ = { + 3DB53013216AE1CFCAD939686EC8C0A4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 435CF504758C3111B84C5A12598FBACC /* GradientProgressBar-umbrella.h in Headers */, + 9D6622CDE2793B13735F47C44A7743ED /* SnapshotTesting-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - D8778AA80BAB19554F8313E2D4048A2F /* Headers */ = { + 78D4A33DF85850D60E72D4A820878713 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 066BAB990F68DF4D0F5ECCA0091FC644 /* LightweightObservable-umbrella.h in Headers */, + 20A84C1F6D1CA74B024784D8735E0E6F /* GradientProgressBar-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - E6FDCAE853789EF00EEB24C3199A188C /* Headers */ = { + 7E6C14F67D4435243A786F2B6B2A11E2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 8A1A8F8E8391B6497679E3A3D92F6DBA /* Pods-GradientProgressBar_Example-umbrella.h in Headers */, + 21D1934B513FBC964A097F9327319BD7 /* Pods-ExampleSnapshotTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -719,17 +725,17 @@ /* Begin PBXNativeTarget section */ 02A49EFF333D539AFC033A5F1B8B0A45 /* GradientProgressBar */ = { isa = PBXNativeTarget; - buildConfigurationList = 48251C2DDF6821DD2D848034463B954B /* Build configuration list for PBXNativeTarget "GradientProgressBar" */; + buildConfigurationList = 04C068763824FF1CF9CB4DDF9FD2557B /* Build configuration list for PBXNativeTarget "GradientProgressBar" */; buildPhases = ( - BFB30B63DEF1330F5B0CD359F0E4917A /* Headers */, - 04C17D71DDE08A318F7B6563ECAAEFB3 /* Sources */, - 7EFAA9CFA5AF39C9ED5742D08EA84470 /* Frameworks */, - 44836904C1BB958AE40C6CE3FC9953FE /* Resources */, + 78D4A33DF85850D60E72D4A820878713 /* Headers */, + 54B29BBADFFA644D5D5A3C58B1D358B8 /* Sources */, + 4D9B30F2ADC0CEAB4A575CFD11EFFB9D /* Frameworks */, + 950E51608FF8372F0C4EEC284932D921 /* Resources */, ); buildRules = ( ); dependencies = ( - 4B829EEA93504FE2AA4FCDA7912F5AEE /* PBXTargetDependency */, + A34C9E74EE2A85ED2CCAA33BE2BAB9D6 /* PBXTargetDependency */, ); name = GradientProgressBar; productName = GradientProgressBar; @@ -738,12 +744,12 @@ }; 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */ = { isa = PBXNativeTarget; - buildConfigurationList = D4799C46D4B079A4C19E9EA77F37EBF8 /* Build configuration list for PBXNativeTarget "LightweightObservable" */; + buildConfigurationList = A65A144262C886FDE9C40F9DEB2429A2 /* Build configuration list for PBXNativeTarget "LightweightObservable" */; buildPhases = ( - D8778AA80BAB19554F8313E2D4048A2F /* Headers */, - C76CFD7B2EAB4A75E2A25CDD1D408E6B /* Sources */, - 0DC464491B8196C2E5CE416CD0CD3B58 /* Frameworks */, - 202AB01534D7FAC25D5B8B985D298191 /* Resources */, + 39764123F310FD0742CB2A8189954DB3 /* Headers */, + D85C091775D671185421E163FB5F0943 /* Sources */, + D1E98E81AAE9B8D3C4E0B63819D69EE6 /* Frameworks */, + EE90E2401A4D4AA48153712162CA895A /* Resources */, ); buildRules = ( ); @@ -754,43 +760,66 @@ productReference = F196AAA163469B17170E99B82C7C4C0A /* LightweightObservable */; productType = "com.apple.product-type.framework"; }; - 1AB9FA15A3579E782195C6E2380EBE25 /* Pods-GradientProgressBar_Tests */ = { + 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */ = { isa = PBXNativeTarget; - buildConfigurationList = E24CB1CAA9095D1A3B85A98EB9A68E4D /* Build configuration list for PBXNativeTarget "Pods-GradientProgressBar_Tests" */; + buildConfigurationList = 50780EADBA55588F6C9F3D15DEA5B65E /* Build configuration list for PBXNativeTarget "Pods-Example" */; buildPhases = ( - 6CB6FA3DCC0FB8AE83869FD33FC13FFC /* Headers */, - 316094058B702A6C6E0BD0CCAA6F9FE7 /* Sources */, - 585F9820BDC1556C3203A7BC599068D1 /* Frameworks */, - 2747B8D6799922C0B41F54FA502F1F28 /* Resources */, + 3BD22F482E3C5B3C141E73BB898007BC /* Headers */, + E5774804C8AA446DEE09A45354FD4362 /* Sources */, + ABA8077563D1D362638BE25ECA7FF044 /* Frameworks */, + 719989854E42CB6216C0D6F1AAE79465 /* Resources */, ); buildRules = ( ); dependencies = ( - 8F95AB68E4A321F43F0AB282B3780286 /* PBXTargetDependency */, + 51707F7680BDFF3AC601D1B549B7E1B0 /* PBXTargetDependency */, + 23EF2D5CEACFDE5A05604AB12E79738F /* PBXTargetDependency */, + CDBADED9FECFD1DD165A83160D18CECB /* PBXTargetDependency */, + E5EAF4A066C48729B89F5BDEF27BBE84 /* PBXTargetDependency */, + CC86CE3CD4468596439C35C20AFAC256 /* PBXTargetDependency */, + ); + name = "Pods-Example"; + productName = Pods_Example; + productReference = 1F667CC0E19EAF34E5A4119E2121F585 /* Pods-Example */; + productType = "com.apple.product-type.framework"; + }; + 2E478506373DA9227C696FD1F7FA01EF /* Pods-ExampleSnapshotTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84CDCDFA78FC721129F4BAEF33C05ABC /* Build configuration list for PBXNativeTarget "Pods-ExampleSnapshotTests" */; + buildPhases = ( + 7E6C14F67D4435243A786F2B6B2A11E2 /* Headers */, + 20ED7AD39A7C7057642A56C232683E68 /* Sources */, + 9280D47AF9C0E39937FFC80009067D70 /* Frameworks */, + BFFDECF6631E998032D4314EC8C792C9 /* Resources */, ); - name = "Pods-GradientProgressBar_Tests"; - productName = Pods_GradientProgressBar_Tests; - productReference = 7089F0D00E320DA5B1AEA2EDA788B012 /* Pods-GradientProgressBar_Tests */; + buildRules = ( + ); + dependencies = ( + 51D1E3ED9298D31A2A07BF891064D393 /* PBXTargetDependency */, + 1B80AA20FA14C3F5CEDE99C43C05582E /* PBXTargetDependency */, + ); + name = "Pods-ExampleSnapshotTests"; + productName = Pods_ExampleSnapshotTests; + productReference = 1EC06CD38CB67E4E8061D4D2DCD617B2 /* Pods-ExampleSnapshotTests */; productType = "com.apple.product-type.framework"; }; - 4368F633F74899F5BB25F414A2249300 /* Pods-GradientProgressBar_SnapshotTests */ = { + 4432A314DF5F14FFF8809E319054F4AF /* Pods-ExampleTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 013D473D300DBB0DFE2DE45651916820 /* Build configuration list for PBXNativeTarget "Pods-GradientProgressBar_SnapshotTests" */; + buildConfigurationList = F0287A78E5A76A2A6A40287F0DDED66F /* Build configuration list for PBXNativeTarget "Pods-ExampleTests" */; buildPhases = ( - 90CA50DC8F9D74647796D44ACCCE29AE /* Headers */, - BDAEC36152254472D27467565DE2DCFB /* Sources */, - BB15C009935EB0D01F6A6B1A2AC15976 /* Frameworks */, - A6D79B837863AE4E693E8535A1F3F3AE /* Resources */, + 1485F00414A7C3466BE5E72A72283967 /* Headers */, + E75AD816BDF5379296E39CADCB1AD12B /* Sources */, + 80CB26F1AFBA6BA2257DE8F446122E81 /* Frameworks */, + D350226F7E4E15FDB327A278A8336B8C /* Resources */, ); buildRules = ( ); dependencies = ( - 88D212F0C965F71B1C520732510B0CBC /* PBXTargetDependency */, - 4346C6D8CF3C476E29E92798A086E81A /* PBXTargetDependency */, + 69A9D61539A7F56FD7FD19ACA7FCC6F9 /* PBXTargetDependency */, ); - name = "Pods-GradientProgressBar_SnapshotTests"; - productName = Pods_GradientProgressBar_SnapshotTests; - productReference = 41CF3CFB21FBFD5C89875B7A951AC6C5 /* Pods-GradientProgressBar_SnapshotTests */; + name = "Pods-ExampleTests"; + productName = Pods_ExampleTests; + productReference = 630CABE8F692FCDBFD1B122A2D0CE388 /* Pods-ExampleTests */; productType = "com.apple.product-type.framework"; }; ADEAE7CDD604DE4F3072E6021A314487 /* SnapshotTesting */ = { @@ -811,29 +840,6 @@ productReference = A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting */; productType = "com.apple.product-type.framework"; }; - B6F859BC597ED3834E9B153B9883E341 /* Pods-GradientProgressBar_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6172707C06D06CCD452090DD0F6A4460 /* Build configuration list for PBXNativeTarget "Pods-GradientProgressBar_Example" */; - buildPhases = ( - E6FDCAE853789EF00EEB24C3199A188C /* Headers */, - 2778CC17C24AB21435741BF8D1F39F59 /* Sources */, - A0D2A429C17F8A97FFAB4B4D3B9E7ABC /* Frameworks */, - 63E9F49BDFF51A949179A400673EEFD8 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - DA78DC091D32C9FD700780615063820F /* PBXTargetDependency */, - D006835224E9D6CAFD076089F11A7D37 /* PBXTargetDependency */, - 195720250EB555B7586F0C194FEBEC43 /* PBXTargetDependency */, - 81B48CEABD5E1B970C8CFCA4AF382BC1 /* PBXTargetDependency */, - C642372B0DD425EAE79E86E8C8AEE5BB /* PBXTargetDependency */, - ); - name = "Pods-GradientProgressBar_Example"; - productName = Pods_GradientProgressBar_Example; - productReference = D4F88EFDF064131C6FF6186C38964C01 /* Pods-GradientProgressBar_Example */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -844,7 +850,7 @@ LastUpgradeCheck = 1240; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; + compatibilityVersion = "Xcode 13.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -852,15 +858,15 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 501B71AE249330277AEFF81DB813272E /* Products */; + productRefGroup = B20CDDB99F9A244705C84FA6126E2714 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 02A49EFF333D539AFC033A5F1B8B0A45 /* GradientProgressBar */, 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */, - B6F859BC597ED3834E9B153B9883E341 /* Pods-GradientProgressBar_Example */, - 4368F633F74899F5BB25F414A2249300 /* Pods-GradientProgressBar_SnapshotTests */, - 1AB9FA15A3579E782195C6E2380EBE25 /* Pods-GradientProgressBar_Tests */, + 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */, + 2E478506373DA9227C696FD1F7FA01EF /* Pods-ExampleSnapshotTests */, + 4432A314DF5F14FFF8809E319054F4AF /* Pods-ExampleTests */, ADEAE7CDD604DE4F3072E6021A314487 /* SnapshotTesting */, B951B6FCD3E55AF969FBA9F7B476B877 /* SwiftConfigurationFiles */, 1CD0618C486973D5588EF20D2E8C0AEA /* SwiftFormat */, @@ -870,42 +876,42 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 202AB01534D7FAC25D5B8B985D298191 /* Resources */ = { + 719989854E42CB6216C0D6F1AAE79465 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 2747B8D6799922C0B41F54FA502F1F28 /* Resources */ = { + 950E51608FF8372F0C4EEC284932D921 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 44836904C1BB958AE40C6CE3FC9953FE /* Resources */ = { + BFFDECF6631E998032D4314EC8C792C9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 63E9F49BDFF51A949179A400673EEFD8 /* Resources */ = { + D350226F7E4E15FDB327A278A8336B8C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - A6D79B837863AE4E693E8535A1F3F3AE /* Resources */ = { + EABF71C4857BAE69F08CA52822E17A0D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - EABF71C4857BAE69F08CA52822E17A0D /* Resources */ = { + EE90E2401A4D4AA48153712162CA895A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -915,33 +921,26 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 04C17D71DDE08A318F7B6563ECAAEFB3 /* Sources */ = { + 20ED7AD39A7C7057642A56C232683E68 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0D8143C85E91BF1D58A1F220B0BB538E /* Constants.swift in Sources */, - 20D275B85C6A51ACBD0E58DA7D73D2F6 /* GradientLayerViewModel.swift in Sources */, - 7B8BDCED411624BCA29DB95EA6D03147 /* GradientProgressBar.swift in Sources */, - E11DA5084FCE2C6576AAEF8FAA2BDFDE /* GradientProgressBar-dummy.m in Sources */, - 5CBBABF9386D35CD34879BC8404B4E88 /* MaskLayerViewModel.swift in Sources */, - 882F42F47F19D48483EE69B3AE7E08C4 /* NSObject+Builder.swift in Sources */, - 22211BCDD67D7EACFB24267EC0263FAA /* UIColor+MakeDynamicColor.swift in Sources */, + C9F9871C4AC572471F57D9BFB4959131 /* Pods-ExampleSnapshotTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2778CC17C24AB21435741BF8D1F39F59 /* Sources */ = { + 54B29BBADFFA644D5D5A3C58B1D358B8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 26C253BDBE3293207EE17F750FA1CC2C /* Pods-GradientProgressBar_Example-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 316094058B702A6C6E0BD0CCAA6F9FE7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A156CFC9202442C2A5266F1CD2292F56 /* Pods-GradientProgressBar_Tests-dummy.m in Sources */, + 7871A8E3FFBEE68E4FA2D2EF2448EDB9 /* Constants.swift in Sources */, + 711BB9C9656188AB91D91A0984D32CD6 /* GradientLayerViewModel.swift in Sources */, + F475E495B5631AF009DD20E3D82CCFB5 /* GradientProgressBar.swift in Sources */, + 33CDE5C91D74B34E1DAEE0DAEC1217DA /* GradientProgressBar-dummy.m in Sources */, + 7B6CCC6988F0F9F25E34682CB060784C /* GradientProgressBarViewStyle.swift in Sources */, + B8ABD3B55B3A8C86F08A41F4BFD5DD3B /* MaskLayerViewModel.swift in Sources */, + CC4743DC6060D62950BE2F032E3A62F8 /* NSObject+Builder.swift in Sources */, + 1A8813BF22F729A5E1022428EA998B8D /* UIColor+MakeDynamicColor.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -986,93 +985,99 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BDAEC36152254472D27467565DE2DCFB /* Sources */ = { + D85C091775D671185421E163FB5F0943 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E851C563190483BCD5CF2BC3677D54AF /* Pods-GradientProgressBar_SnapshotTests-dummy.m in Sources */, + 379559F8CFEA77C30DC45461CD0560EE /* Disposable.swift in Sources */, + BF76BA47D9E22D7277B99082D5E6B565 /* LightweightObservable-dummy.m in Sources */, + 306DD9F6386659DFFE11323840C1FA1A /* Observable.swift in Sources */, + D417CA38A01F8E4B15DC7BAA80382A8F /* Observable+Combine.swift in Sources */, + D17837903BDA974C6C0ACF8AAA1B3187 /* Observable+Equatable.swift in Sources */, + 91738D24777A334C5C250784DA91C5AD /* Observable+KeyPath.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C76CFD7B2EAB4A75E2A25CDD1D408E6B /* Sources */ = { + E5774804C8AA446DEE09A45354FD4362 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A95ED18C7F8B9D67FCAD30E3B8FF245B /* Disposable.swift in Sources */, - 273F141718CA663869BD86F1441401DF /* LightweightObservable-dummy.m in Sources */, - FD9BFC7D64311A14771FF0474DD54A86 /* Observable.swift in Sources */, - B7809635630D863A945F9ACA44D80332 /* Observable+Equatable.swift in Sources */, - 382E329AC2E0EDCEA9452EDE05FDA08C /* Observable+KeyPath.swift in Sources */, + 9314D9953FE10754E6DB6B4FA6BD2D8E /* Pods-Example-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E75AD816BDF5379296E39CADCB1AD12B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2358ECACBD675FFBFDBA36A56A0F7CCA /* Pods-ExampleTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 195720250EB555B7586F0C194FEBEC43 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftConfigurationFiles; - target = B951B6FCD3E55AF969FBA9F7B476B877 /* SwiftConfigurationFiles */; - targetProxy = B6070903F8F7BC62CE61E72B9316C480 /* PBXContainerItemProxy */; - }; - 4346C6D8CF3C476E29E92798A086E81A /* PBXTargetDependency */ = { + 1B80AA20FA14C3F5CEDE99C43C05582E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SnapshotTesting; target = ADEAE7CDD604DE4F3072E6021A314487 /* SnapshotTesting */; - targetProxy = A2D681B9BFE67C0FD16CB70B0D937910 /* PBXContainerItemProxy */; + targetProxy = DBDD7C4BAB11F94EE5188B0FEB6BA0ED /* PBXContainerItemProxy */; }; - 4B829EEA93504FE2AA4FCDA7912F5AEE /* PBXTargetDependency */ = { + 23EF2D5CEACFDE5A05604AB12E79738F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = LightweightObservable; target = 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */; - targetProxy = 84409BAC4030DA4A48A564375F1C9928 /* PBXContainerItemProxy */; + targetProxy = ACAAAF5917685B11C07A55D7F5A513F0 /* PBXContainerItemProxy */; }; - 81B48CEABD5E1B970C8CFCA4AF382BC1 /* PBXTargetDependency */ = { + 51707F7680BDFF3AC601D1B549B7E1B0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SwiftFormat; - target = 1CD0618C486973D5588EF20D2E8C0AEA /* SwiftFormat */; - targetProxy = D973566E46CAFFFB479F07C731166FB2 /* PBXContainerItemProxy */; + name = GradientProgressBar; + target = 02A49EFF333D539AFC033A5F1B8B0A45 /* GradientProgressBar */; + targetProxy = FA226955420120A6A11BD2801E8F3F17 /* PBXContainerItemProxy */; }; - 88D212F0C965F71B1C520732510B0CBC /* PBXTargetDependency */ = { + 51D1E3ED9298D31A2A07BF891064D393 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-GradientProgressBar_Example"; - target = B6F859BC597ED3834E9B153B9883E341 /* Pods-GradientProgressBar_Example */; - targetProxy = 182C128B231CB9F6F7273D8190808F85 /* PBXContainerItemProxy */; + name = "Pods-Example"; + target = 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */; + targetProxy = EFE1F9327AC566286D3CD260033BF822 /* PBXContainerItemProxy */; }; - 8F95AB68E4A321F43F0AB282B3780286 /* PBXTargetDependency */ = { + 69A9D61539A7F56FD7FD19ACA7FCC6F9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-GradientProgressBar_Example"; - target = B6F859BC597ED3834E9B153B9883E341 /* Pods-GradientProgressBar_Example */; - targetProxy = E8E8CF318C64CCA1871310BF09DC3FBE /* PBXContainerItemProxy */; + name = "Pods-Example"; + target = 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */; + targetProxy = 6330C453C404AF4FA9250361211F0064 /* PBXContainerItemProxy */; }; - C642372B0DD425EAE79E86E8C8AEE5BB /* PBXTargetDependency */ = { + A34C9E74EE2A85ED2CCAA33BE2BAB9D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LightweightObservable; + target = 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */; + targetProxy = E8CB4AD75D346C9883CBC36830AFE6CF /* PBXContainerItemProxy */; + }; + CC86CE3CD4468596439C35C20AFAC256 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftLint; target = 52B60EC2A583F24ACBB69C113F5488B9 /* SwiftLint */; - targetProxy = 0A67967811FC09BF1D1BF1DD51D96A7D /* PBXContainerItemProxy */; + targetProxy = 2C4143B88B4E419936F844851BD4D42A /* PBXContainerItemProxy */; }; - D006835224E9D6CAFD076089F11A7D37 /* PBXTargetDependency */ = { + CDBADED9FECFD1DD165A83160D18CECB /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = LightweightObservable; - target = 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */; - targetProxy = 417A4A2873F5F969F97CEC515597DE48 /* PBXContainerItemProxy */; + name = SwiftConfigurationFiles; + target = B951B6FCD3E55AF969FBA9F7B476B877 /* SwiftConfigurationFiles */; + targetProxy = 6A65D9D230EDA371D1DC4F4CC2A33815 /* PBXContainerItemProxy */; }; - DA78DC091D32C9FD700780615063820F /* PBXTargetDependency */ = { + E5EAF4A066C48729B89F5BDEF27BBE84 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GradientProgressBar; - target = 02A49EFF333D539AFC033A5F1B8B0A45 /* GradientProgressBar */; - targetProxy = 57F1C2F238FB6045E445894B2A80DB27 /* PBXContainerItemProxy */; + name = SwiftFormat; + target = 1CD0618C486973D5588EF20D2E8C0AEA /* SwiftFormat */; + targetProxy = 575435F00ACB459F9A3DA8D983BB400C /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 192CF50F2A3EA6CC4A80827539768D17 /* Debug */ = { + 0026BA06E49A22605C96376A25A7CF32 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F8489AE7398E8BD899CD8339F73BA54 /* Pods-GradientProgressBar_Example.debug.xcconfig */; + baseConfigurationReference = 074CBA3DACEF2667EFED2C72D45A2403 /* LightweightObservable.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1081,30 +1086,32 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/LightweightObservable/LightweightObservable-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/LightweightObservable/LightweightObservable-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LightweightObservable/LightweightObservable.modulemap"; + PRODUCT_MODULE_NAME = LightweightObservable; + PRODUCT_NAME = LightweightObservable; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.5; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 1DC320FECA285828A902C83DC174F020 /* Release */ = { + 294050C79672F2AC80819F1DBBBA5342 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 24304AF8B903F5D0B25EB3CE765E2115 /* GradientProgressBar.release.xcconfig */; + baseConfigurationReference = 29B352272E0CA8C60A5C519A7E94508F /* GradientProgressBar.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1116,28 +1123,28 @@ GCC_PREFIX_HEADER = "Target Support Files/GradientProgressBar/GradientProgressBar-prefix.pch"; INFOPLIST_FILE = "Target Support Files/GradientProgressBar/GradientProgressBar-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MODULEMAP_FILE = "Target Support Files/GradientProgressBar/GradientProgressBar.modulemap"; PRODUCT_MODULE_NAME = GradientProgressBar; PRODUCT_NAME = GradientProgressBar; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; + SWIFT_VERSION = 5.5; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 26DB48509AB8230C5E6A3765FE2EBFAC /* Debug */ = { + 38054F06D12494D19A4C008BB03C6C4F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6FD7099AF64080B46C3BB6BDAEC18C3D /* Pods-GradientProgressBar_Tests.debug.xcconfig */; + baseConfigurationReference = DFDBA3729D272425F9E33F46EF920BFF /* SnapshotTesting.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1147,76 +1154,82 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/SnapshotTesting/SnapshotTesting-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting.modulemap"; + PRODUCT_MODULE_NAME = SnapshotTesting; + PRODUCT_NAME = SnapshotTesting; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; - }; - 2B9B4FFEC0599168AD4B3878672A2426 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D997502F7A2A3F2E07DE43BA6C33DEF8 /* SwiftFormat.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; name = Release; }; - 39D0F8C0DF8A3DF1976A02725A047CFE /* Release */ = { + 4062373683B4E7F5C7166110E2F5B2A9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 283322DA7A49E2E4D67B814963BECFB3 /* SwiftLint.release.xcconfig */; + baseConfigurationReference = AE02F290421D0044A7B9B488A50DBD6C /* SwiftConfigurationFiles.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 4D23A2E978BA72DC562C20ADE8F7F09C /* Release */ = { + 779F014C78F05DAE2552C48D50C2F5BF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D2F1D5D4FE8EB1B511317314725F9D54 /* SwiftConfigurationFiles.release.xcconfig */; + baseConfigurationReference = C0914218D683BF8BC8C8858C2B9A1041 /* GradientProgressBar.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/GradientProgressBar/GradientProgressBar-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GradientProgressBar/GradientProgressBar-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/GradientProgressBar/GradientProgressBar.modulemap"; + PRODUCT_MODULE_NAME = GradientProgressBar; + PRODUCT_NAME = GradientProgressBar; SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.5; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; - 5A6B935BE16F6A0DF56A54B8CCA51F62 /* Release */ = { + 7E04FB171D6ACA40C6E0CEC58FFECF70 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 04FE0C4BFF6B969E790DF1AB1F303870 /* Pods-GradientProgressBar_SnapshotTests.release.xcconfig */; + baseConfigurationReference = DD8356187265018957F8E0C8B7EA0A44 /* Pods-ExampleTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1226,12 +1239,15 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1240,17 +1256,15 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 7073071A95165FEAA0509F7B4524263A /* Release */ = { + 8B2A9AB578F492EBA041FAA048620A24 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 01195480F1DCEF69F5D9619C1B3C44E9 /* SnapshotTesting.release.xcconfig */; + baseConfigurationReference = 9D21619E3127A33326194FAC5E0241D7 /* SnapshotTesting.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1263,8 +1277,11 @@ GCC_PREFIX_HEADER = "Target Support Files/SnapshotTesting/SnapshotTesting-prefix.pch"; INFOPLIST_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MODULEMAP_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting.modulemap"; PRODUCT_MODULE_NAME = SnapshotTesting; PRODUCT_NAME = SnapshotTesting; @@ -1273,27 +1290,65 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 74A4367AFBA2BC72E9F0249101354BDA /* Debug */ = { + 8DEF60E8A61723230ABCDDDD8B05F224 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 44FC5949DA58E53329E8837F44618093 /* SwiftLint.debug.xcconfig */; + baseConfigurationReference = 321E0EECA8025D4E3C0406B264AB9F4A /* SwiftFormat.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { + 8E5D49873F13E5FA3D1721C55C64AD43 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3D775B472F7AA7D3B9A1593811AABB1F /* Pods-ExampleSnapshotTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1346,7 +1401,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = "$(FRAMEWORK_SEARCH_PATHS)"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -1360,89 +1415,11 @@ }; name = Debug; }; - 8FE0B4025645967B73EE74B683185228 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5A95E0EC64A130765609C642BEF951DC /* SnapshotTesting.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SnapshotTesting/SnapshotTesting-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SnapshotTesting/SnapshotTesting.modulemap"; - PRODUCT_MODULE_NAME = SnapshotTesting; - PRODUCT_NAME = SnapshotTesting; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.2; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 927649A6AE753E581B1ACC49BFF983F4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9E2A2B9627A155B218E8EEFE867E23CA /* GradientProgressBar.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/GradientProgressBar/GradientProgressBar-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GradientProgressBar/GradientProgressBar-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/GradientProgressBar/GradientProgressBar.modulemap"; - PRODUCT_MODULE_NAME = GradientProgressBar; - PRODUCT_NAME = GradientProgressBar; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9B37241A118549BC576074606BB93C76 /* Debug */ = { + 954A97AB3C7E7C18CC5F80181743F93B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 739B52B367A66EB59594809032052D1F /* SwiftConfigurationFiles.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 9C098BD6D4C1A6EA7DE25E70049F33CF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 44611AB9F27D707CE10442E86C554E33 /* Pods-GradientProgressBar_SnapshotTests.debug.xcconfig */; + baseConfigurationReference = 5C8A7D0B6CF1EBB569F2C16521C9BEB0 /* Pods-Example.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1452,12 +1429,15 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-Example/Pods-Example.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1466,12 +1446,13 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { + 9553C89E183877A5CB2F3C6801BEC129 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1521,7 +1502,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1533,12 +1514,11 @@ }; name = Release; }; - AA843FC43851896C513C784A6DC61D1B /* Release */ = { + 9A89840B7A55F1B3266F65FBDAA1A04F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C0D2A713E66EEAE9C4BF65B8D406F013 /* Pods-GradientProgressBar_Tests.release.xcconfig */; + baseConfigurationReference = 7CA590CDCEEA3EDA8EF40893AE966B74 /* Pods-ExampleTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1548,12 +1528,15 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1568,11 +1551,10 @@ }; name = Release; }; - C20B9340B5EB0300241CB9534F9233FC /* Release */ = { + 9BC132ACDCC4DFC763446C4B4079AE4B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D9EECF497600BB53CEDDACB2CE8A2B9D /* LightweightObservable.release.xcconfig */; + baseConfigurationReference = 8B75864FEFCDD0C986F965BC9B1D2A1B /* LightweightObservable.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1584,27 +1566,46 @@ GCC_PREFIX_HEADER = "Target Support Files/LightweightObservable/LightweightObservable-prefix.pch"; INFOPLIST_FILE = "Target Support Files/LightweightObservable/LightweightObservable-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MODULEMAP_FILE = "Target Support Files/LightweightObservable/LightweightObservable.modulemap"; PRODUCT_MODULE_NAME = LightweightObservable; PRODUCT_NAME = LightweightObservable; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; + SWIFT_VERSION = 5.5; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; + name = Debug; + }; + AD81E62ACCB0B7A923FC8AA288F9921E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 39724ABA4E40A364B25F01F3E3CE31EC /* SwiftLint.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; name = Release; }; - C8E5A30DBC2E6FA5E05C0668974C305B /* Debug */ = { + B2870A81B98E874FFA8269A01F013AAB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6BA6CC273DB1F3DF8863CA959253A9E1 /* LightweightObservable.debug.xcconfig */; + baseConfigurationReference = B149C0EB1C7CAA08D795C71076A689CF /* Pods-Example.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1613,30 +1614,64 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/LightweightObservable/LightweightObservable-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/LightweightObservable/LightweightObservable-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/LightweightObservable/LightweightObservable.modulemap"; - PRODUCT_MODULE_NAME = LightweightObservable; - PRODUCT_NAME = LightweightObservable; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Example/Pods-Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - DC3F1463D0F19C3E5036225936248CED /* Release */ = { + B4D735C278D065C9DB708F250D0B915D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E43F95A56840098ECFFB3426EC236F54 /* SwiftFormat.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + D2E2A385931B22FAADBBF66D4C5E591D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 04D67E1AC2B476618545A95A11B5B811 /* SwiftConfigurationFiles.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + D4A4E5C5AD1926CB29F766E185807BAD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1E994A8FF390361E6692A06709232E66 /* Pods-GradientProgressBar_Example.release.xcconfig */; + baseConfigurationReference = 3CEF637F75EB182A98B69E784C0F845E /* Pods-ExampleSnapshotTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1646,12 +1681,15 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1660,21 +1698,21 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - EEE49C51BEAF7FB68B4772A03D1DF160 /* Debug */ = { + EADD1F50ABC8096A0D6CB18822BB4EE4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 00EBB6A2B0A117A761C58ED62B0D4C24 /* SwiftFormat.debug.xcconfig */; + baseConfigurationReference = 08E87DFECD69E46292154E099AB8D144 /* SwiftLint.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -1683,11 +1721,11 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 013D473D300DBB0DFE2DE45651916820 /* Build configuration list for PBXNativeTarget "Pods-GradientProgressBar_SnapshotTests" */ = { + 04C068763824FF1CF9CB4DDF9FD2557B /* Build configuration list for PBXNativeTarget "GradientProgressBar" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9C098BD6D4C1A6EA7DE25E70049F33CF /* Debug */, - 5A6B935BE16F6A0DF56A54B8CCA51F62 /* Release */, + 294050C79672F2AC80819F1DBBBA5342 /* Debug */, + 779F014C78F05DAE2552C48D50C2F5BF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1695,8 +1733,8 @@ 331A33CBF071F9C6C103AB492799B536 /* Build configuration list for PBXNativeTarget "SnapshotTesting" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8FE0B4025645967B73EE74B683185228 /* Debug */, - 7073071A95165FEAA0509F7B4524263A /* Release */, + 8B2A9AB578F492EBA041FAA048620A24 /* Debug */, + 38054F06D12494D19A4C008BB03C6C4F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1704,71 +1742,71 @@ 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */, - 9E406C6AAF85E580207CD97B0044DEAB /* Release */, + 90D4D09BCB6A4660E43ACBE9ECB6FE9A /* Debug */, + 9553C89E183877A5CB2F3C6801BEC129 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 48251C2DDF6821DD2D848034463B954B /* Build configuration list for PBXNativeTarget "GradientProgressBar" */ = { + 50780EADBA55588F6C9F3D15DEA5B65E /* Build configuration list for PBXNativeTarget "Pods-Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 927649A6AE753E581B1ACC49BFF983F4 /* Debug */, - 1DC320FECA285828A902C83DC174F020 /* Release */, + B2870A81B98E874FFA8269A01F013AAB /* Debug */, + 954A97AB3C7E7C18CC5F80181743F93B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6172707C06D06CCD452090DD0F6A4460 /* Build configuration list for PBXNativeTarget "Pods-GradientProgressBar_Example" */ = { + 6B2B7DF197DF6A7CA487150557230A41 /* Build configuration list for PBXAggregateTarget "SwiftFormat" */ = { isa = XCConfigurationList; buildConfigurations = ( - 192CF50F2A3EA6CC4A80827539768D17 /* Debug */, - DC3F1463D0F19C3E5036225936248CED /* Release */, + B4D735C278D065C9DB708F250D0B915D /* Debug */, + 8DEF60E8A61723230ABCDDDD8B05F224 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6B2B7DF197DF6A7CA487150557230A41 /* Build configuration list for PBXAggregateTarget "SwiftFormat" */ = { + 84CDCDFA78FC721129F4BAEF33C05ABC /* Build configuration list for PBXNativeTarget "Pods-ExampleSnapshotTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - EEE49C51BEAF7FB68B4772A03D1DF160 /* Debug */, - 2B9B4FFEC0599168AD4B3878672A2426 /* Release */, + D4A4E5C5AD1926CB29F766E185807BAD /* Debug */, + 8E5D49873F13E5FA3D1721C55C64AD43 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AE7B4FB01588B9E6DF09CB79FC7CE7BD /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { + A65A144262C886FDE9C40F9DEB2429A2 /* Build configuration list for PBXNativeTarget "LightweightObservable" */ = { isa = XCConfigurationList; buildConfigurations = ( - 74A4367AFBA2BC72E9F0249101354BDA /* Debug */, - 39D0F8C0DF8A3DF1976A02725A047CFE /* Release */, + 9BC132ACDCC4DFC763446C4B4079AE4B /* Debug */, + 0026BA06E49A22605C96376A25A7CF32 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - C94370DDBAF2E85B239A19BD8F0908C6 /* Build configuration list for PBXAggregateTarget "SwiftConfigurationFiles" */ = { + AE7B4FB01588B9E6DF09CB79FC7CE7BD /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9B37241A118549BC576074606BB93C76 /* Debug */, - 4D23A2E978BA72DC562C20ADE8F7F09C /* Release */, + EADD1F50ABC8096A0D6CB18822BB4EE4 /* Debug */, + AD81E62ACCB0B7A923FC8AA288F9921E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D4799C46D4B079A4C19E9EA77F37EBF8 /* Build configuration list for PBXNativeTarget "LightweightObservable" */ = { + C94370DDBAF2E85B239A19BD8F0908C6 /* Build configuration list for PBXAggregateTarget "SwiftConfigurationFiles" */ = { isa = XCConfigurationList; buildConfigurations = ( - C8E5A30DBC2E6FA5E05C0668974C305B /* Debug */, - C20B9340B5EB0300241CB9534F9233FC /* Release */, + 4062373683B4E7F5C7166110E2F5B2A9 /* Debug */, + D2E2A385931B22FAADBBF66D4C5E591D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E24CB1CAA9095D1A3B85A98EB9A68E4D /* Build configuration list for PBXNativeTarget "Pods-GradientProgressBar_Tests" */ = { + F0287A78E5A76A2A6A40287F0DDED66F /* Build configuration list for PBXNativeTarget "Pods-ExampleTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 26DB48509AB8230C5E6A3765FE2EBFAC /* Debug */, - AA843FC43851896C513C784A6DC61D1B /* Release */, + 7E04FB171D6ACA40C6E0CEC58FFECF70 /* Debug */, + 9A89840B7A55F1B3266F65FBDAA1A04F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientProgressBar.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientProgressBar.xcscheme index 43147b6..d520dcd 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientProgressBar.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientProgressBar.xcscheme @@ -1,6 +1,6 @@ - - - - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.2.6 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-Info.plist b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-Info.plist index 9a86452..c054f9c 100644 --- a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-Info.plist +++ b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.1.2 + 2.2.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.xcconfig b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.xcconfig deleted file mode 100644 index 99bf93c..0000000 --- a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/LightweightObservable -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Info.plist b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-Info.plist similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Info.plist rename to Example/Pods/Target Support Files/Pods-Example/Pods-Example-Info.plist diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-acknowledgements.markdown rename to Example/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.markdown diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-acknowledgements.plist rename to Example/Pods/Target Support Files/Pods-Example/Pods-Example-acknowledgements.plist diff --git a/Example/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m new file mode 100644 index 0000000..6ee3f90 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_Example : NSObject +@end +@implementation PodsDummy_Pods_Example +@end diff --git a/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist new file mode 100644 index 0000000..c2d13ee --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-input-files.xcfilelist @@ -0,0 +1,3 @@ +${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh +${BUILT_PRODUCTS_DIR}/GradientProgressBar/GradientProgressBar.framework +${BUILT_PRODUCTS_DIR}/LightweightObservable/LightweightObservable.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist new file mode 100644 index 0000000..56b9b33 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Debug-output-files.xcfilelist @@ -0,0 +1,2 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GradientProgressBar.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LightweightObservable.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist new file mode 100644 index 0000000..c2d13ee --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-input-files.xcfilelist @@ -0,0 +1,3 @@ +${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh +${BUILT_PRODUCTS_DIR}/GradientProgressBar/GradientProgressBar.framework +${BUILT_PRODUCTS_DIR}/LightweightObservable/LightweightObservable.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist new file mode 100644 index 0000000..56b9b33 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks-Release-output-files.xcfilelist @@ -0,0 +1,2 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GradientProgressBar.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LightweightObservable.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks.sh similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-frameworks.sh rename to Example/Pods/Target Support Files/Pods-Example/Pods-Example-frameworks.sh diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h similarity index 55% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-umbrella.h rename to Example/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h index 42682fe..ecf498e 100644 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-umbrella.h +++ b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h @@ -11,6 +11,6 @@ #endif -FOUNDATION_EXPORT double Pods_GradientProgressBar_TestsVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_GradientProgressBar_TestsVersionString[]; +FOUNDATION_EXPORT double Pods_ExampleVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_ExampleVersionString[]; diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.debug.xcconfig rename to Example/Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig diff --git a/Example/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap b/Example/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap new file mode 100644 index 0000000..4b5189f --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-Example/Pods-Example.modulemap @@ -0,0 +1,6 @@ +framework module Pods_Example { + umbrella header "Pods-Example-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.release.xcconfig rename to Example/Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-Info.plist b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-Info.plist similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-Info.plist rename to Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-Info.plist diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-acknowledgements.markdown similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-acknowledgements.markdown rename to Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-acknowledgements.markdown diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-acknowledgements.plist similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-acknowledgements.plist rename to Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-acknowledgements.plist diff --git a/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-dummy.m b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-dummy.m new file mode 100644 index 0000000..bbd6f2a --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_ExampleSnapshotTests : NSObject +@end +@implementation PodsDummy_Pods_ExampleSnapshotTests +@end diff --git a/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Debug-input-files.xcfilelist b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Debug-input-files.xcfilelist new file mode 100644 index 0000000..ea4c1bf --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Debug-input-files.xcfilelist @@ -0,0 +1,2 @@ +${PODS_ROOT}/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks.sh +${BUILT_PRODUCTS_DIR}/SnapshotTesting/SnapshotTesting.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Debug-output-files.xcfilelist b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Debug-output-files.xcfilelist new file mode 100644 index 0000000..55c9d8b --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Debug-output-files.xcfilelist @@ -0,0 +1 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapshotTesting.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Release-input-files.xcfilelist b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Release-input-files.xcfilelist new file mode 100644 index 0000000..ea4c1bf --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Release-input-files.xcfilelist @@ -0,0 +1,2 @@ +${PODS_ROOT}/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks.sh +${BUILT_PRODUCTS_DIR}/SnapshotTesting/SnapshotTesting.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Release-output-files.xcfilelist b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Release-output-files.xcfilelist new file mode 100644 index 0000000..55c9d8b --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks-Release-output-files.xcfilelist @@ -0,0 +1 @@ +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapshotTesting.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-frameworks.sh b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks.sh similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-frameworks.sh rename to Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-frameworks.sh diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-umbrella.h b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-umbrella.h similarity index 55% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-umbrella.h rename to Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-umbrella.h index a3040bb..3aab667 100644 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-umbrella.h +++ b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-umbrella.h @@ -11,6 +11,6 @@ #endif -FOUNDATION_EXPORT double Pods_GradientProgressBar_ExampleVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_GradientProgressBar_ExampleVersionString[]; +FOUNDATION_EXPORT double Pods_ExampleSnapshotTestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_ExampleSnapshotTestsVersionString[]; diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.debug.xcconfig similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.debug.xcconfig rename to Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.debug.xcconfig diff --git a/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.modulemap b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.modulemap new file mode 100644 index 0000000..2b3067d --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_ExampleSnapshotTests { + umbrella header "Pods-ExampleSnapshotTests-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.release.xcconfig b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.release.xcconfig similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.release.xcconfig rename to Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.release.xcconfig diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-Info.plist b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-Info.plist similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-Info.plist rename to Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-Info.plist diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-acknowledgements.markdown similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-acknowledgements.markdown rename to Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-acknowledgements.markdown diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-acknowledgements.plist similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-acknowledgements.plist rename to Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-acknowledgements.plist diff --git a/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-dummy.m b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-dummy.m new file mode 100644 index 0000000..c0024d5 --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_ExampleTests : NSObject +@end +@implementation PodsDummy_Pods_ExampleTests +@end diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-umbrella.h b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-umbrella.h similarity index 53% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-umbrella.h rename to Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-umbrella.h index 37d1db7..b12f2ef 100644 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-umbrella.h +++ b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-umbrella.h @@ -11,6 +11,6 @@ #endif -FOUNDATION_EXPORT double Pods_GradientProgressBar_SnapshotTestsVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_GradientProgressBar_SnapshotTestsVersionString[]; +FOUNDATION_EXPORT double Pods_ExampleTestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_ExampleTestsVersionString[]; diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.debug.xcconfig similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.debug.xcconfig rename to Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.debug.xcconfig diff --git a/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.modulemap b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.modulemap new file mode 100644 index 0000000..08843bd --- /dev/null +++ b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_ExampleTests { + umbrella header "Pods-ExampleTests-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.release.xcconfig similarity index 100% rename from Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.release.xcconfig rename to Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests.release.xcconfig diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-dummy.m b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-dummy.m deleted file mode 100644 index 7b41345..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_GradientProgressBar_Example : NSObject -@end -@implementation PodsDummy_Pods_GradientProgressBar_Example -@end diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-resources.sh b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-resources.sh deleted file mode 100755 index 345301f..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example-resources.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then - # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy - # resources to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY:-}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" - fi -fi diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.modulemap b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.modulemap deleted file mode 100644 index 9d97db2..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Example/Pods-GradientProgressBar_Example.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_GradientProgressBar_Example { - umbrella header "Pods-GradientProgressBar_Example-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-dummy.m b/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-dummy.m deleted file mode 100644 index 361358e..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_GradientProgressBar_SnapshotTests : NSObject -@end -@implementation PodsDummy_Pods_GradientProgressBar_SnapshotTests -@end diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.modulemap b/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.modulemap deleted file mode 100644 index c885a9c..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_SnapshotTests/Pods-GradientProgressBar_SnapshotTests.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_GradientProgressBar_SnapshotTests { - umbrella header "Pods-GradientProgressBar_SnapshotTests-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Info.plist b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-dummy.m b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-dummy.m deleted file mode 100644 index dd80d02..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_GradientProgressBar_Tests : NSObject -@end -@implementation PodsDummy_Pods_GradientProgressBar_Tests -@end diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-frameworks.sh deleted file mode 100755 index 08e3eaa..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-frameworks.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} - -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" - fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" - fi - fi -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=1 -} - -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-resources.sh deleted file mode 100755 index 345301f..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests-resources.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then - # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy - # resources to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY:-}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" - fi -fi diff --git a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.modulemap b/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.modulemap deleted file mode 100644 index 94f70e3..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientProgressBar_Tests/Pods-GradientProgressBar_Tests.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_GradientProgressBar_Tests { - umbrella header "Pods-GradientProgressBar_Tests-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.xcconfig b/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.xcconfig deleted file mode 100644 index 80a45ac..0000000 --- a/Example/Pods/Target Support Files/SnapshotTesting/SnapshotTesting.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapshotTesting -ENABLE_BITCODE = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = $(inherited) -framework "XCTest" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapshotTesting -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/SwiftFormat/SwiftFormat.xcconfig b/Example/Pods/Target Support Files/SwiftFormat/SwiftFormat.xcconfig deleted file mode 100644 index 4b6e88b..0000000 --- a/Example/Pods/Target Support Files/SwiftFormat/SwiftFormat.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftFormat -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftFormat -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/Pods/Target Support Files/SwiftLint/SwiftLint.xcconfig b/Example/Pods/Target Support Files/SwiftLint/SwiftLint.xcconfig deleted file mode 100644 index 59a6456..0000000 --- a/Example/Pods/Target Support Files/SwiftLint/SwiftLint.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SwiftLint -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/SwiftLint -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Example/SnapshotTests/CustomColorSnapshotTestCase.swift b/Example/SnapshotTests/CustomColorSnapshotTestCase.swift deleted file mode 100644 index f872ac8..0000000 --- a/Example/SnapshotTests/CustomColorSnapshotTestCase.swift +++ /dev/null @@ -1,78 +0,0 @@ -// -// CustomColorSnapshotTestCase.swift -// GradientProgressBar_SnapshotTests -// -// Created by Felix Mau on 07.11.19. -// Copyright © 2019 Felix Mau. All rights reserved. -// - -import XCTest -import SnapshotTesting - -@testable import GradientProgressBar - -class CustomColorSnapshotTestCase: XCTestCase { - // MARK: - Config - - /// The frame we use for rendering the `GradientProgressBar`. This will also be the image size for our snapshot. - private static let frame = CGRect(x: 0.0, y: 0.0, width: 375.0, height: 4.0) - - /// The trait collection we use for our snapshot. - private static let traitCollection = UITraitCollection(userInterfaceStyle: .light) - - /// The custom colors we use on this test-case. - /// Source: https://color.adobe.com/Pink-Flamingo-color-theme-10343714/ - private static let gradientColors = [ - #colorLiteral(red: 0.9490196078, green: 0.3215686275, blue: 0.431372549, alpha: 1), #colorLiteral(red: 0.9450980392, green: 0.4784313725, blue: 0.5921568627, alpha: 1), #colorLiteral(red: 0.9529411765, green: 0.737254902, blue: 0.7843137255, alpha: 1), #colorLiteral(red: 0.4274509804, green: 0.8666666667, blue: 0.9490196078, alpha: 1), #colorLiteral(red: 0.7568627451, green: 0.9411764706, blue: 0.9568627451, alpha: 1), - ] - - // MARK: - Test cases - - func testGradientProgressBarWithProgressSetToZero() { - // Given - let gradientProgressBar = GradientProgressBar(frame: Self.frame) - gradientProgressBar.gradientColors = Self.gradientColors - - // When - gradientProgressBar.progress = 0.0 - - // Then - assertSnapshot(matching: gradientProgressBar, as: .image(traits: Self.traitCollection)) - } - - func testGradientProgressBarWithProgressSetTo33Percent() { - // Given - let gradientProgressBar = GradientProgressBar(frame: Self.frame) - gradientProgressBar.gradientColors = Self.gradientColors - - // When - gradientProgressBar.progress = 0.33 - - // Then - assertSnapshot(matching: gradientProgressBar, as: .image(traits: Self.traitCollection)) - } - - func testGradientProgressBarWithProgressSetTo66Percent() { - // Given - let gradientProgressBar = GradientProgressBar(frame: Self.frame) - gradientProgressBar.gradientColors = Self.gradientColors - - // When - gradientProgressBar.progress = 0.66 - - // Then - assertSnapshot(matching: gradientProgressBar, as: .image(traits: Self.traitCollection)) - } - - func testGradientProgressBarWithProgressSetTo100Percent() { - // Given - let gradientProgressBar = GradientProgressBar(frame: Self.frame) - gradientProgressBar.gradientColors = Self.gradientColors - - // When - gradientProgressBar.progress = 1.0 - - // Then - assertSnapshot(matching: gradientProgressBar, as: .image(traits: Self.traitCollection)) - } -} diff --git a/Example/SnapshotTests/DefaultColorSnapshotTestCase.swift b/Example/SnapshotTests/DefaultColorSnapshotTestCase.swift deleted file mode 100644 index e2616d8..0000000 --- a/Example/SnapshotTests/DefaultColorSnapshotTestCase.swift +++ /dev/null @@ -1,68 +0,0 @@ -// -// DefaultColorSnapshotTestCase.swift -// GradientProgressBar_SnapshotTests -// -// Created by Felix Mau on 07.11.19. -// Copyright © 2019 Felix Mau. All rights reserved. -// - -import XCTest -import SnapshotTesting - -@testable import GradientProgressBar - -class DefaultColorSnapshotTestCase: XCTestCase { - // MARK: - Config - - /// The frame we use for rendering the `GradientProgressBar`. This will also be the image size for our snapshot. - private static let frame = CGRect(x: 0.0, y: 0.0, width: 375.0, height: 4.0) - - /// The trait collection we use for our snapshot. - private static let traitCollection = UITraitCollection(userInterfaceStyle: .dark) - - // MARK: - Test cases - - func testGradientProgressBarWithProgressSetToZero() { - // Given - let gradientProgressBar = GradientProgressBar(frame: Self.frame) - - // When - gradientProgressBar.progress = 0.0 - - // Then - assertSnapshot(matching: gradientProgressBar, as: .image(traits: Self.traitCollection)) - } - - func testGradientProgressBarWithProgressSetTo33Percent() { - // Given - let gradientProgressBar = GradientProgressBar(frame: Self.frame) - - // When - gradientProgressBar.progress = 0.33 - - // Then - assertSnapshot(matching: gradientProgressBar, as: .image(traits: Self.traitCollection)) - } - - func testGradientProgressBarWithProgressSetTo66Percent() { - // Given - let gradientProgressBar = GradientProgressBar(frame: Self.frame) - - // When - gradientProgressBar.progress = 0.66 - - // Then - assertSnapshot(matching: gradientProgressBar, as: .image(traits: Self.traitCollection)) - } - - func testGradientProgressBarWithProgressSetTo100Percent() { - // Given - let gradientProgressBar = GradientProgressBar(frame: Self.frame) - - // When - gradientProgressBar.progress = 1.0 - - // Then - assertSnapshot(matching: gradientProgressBar, as: .image(traits: Self.traitCollection)) - } -} diff --git a/Example/SnapshotTests/Info.plist b/Example/SnapshotTests/Info.plist deleted file mode 100644 index 64d65ca..0000000 --- a/Example/SnapshotTests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - $(PRODUCT_BUNDLE_PACKAGE_TYPE) - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo33Percent.1.png b/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo33Percent.1.png deleted file mode 100644 index 3219e4e..0000000 Binary files a/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo33Percent.1.png and /dev/null differ diff --git a/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo66Percent.1.png b/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo66Percent.1.png deleted file mode 100644 index 00d1630..0000000 Binary files a/Example/SnapshotTests/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo66Percent.1.png and /dev/null differ diff --git a/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo33Percent.1.png b/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo33Percent.1.png deleted file mode 100644 index 9ffab7e..0000000 Binary files a/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo33Percent.1.png and /dev/null differ diff --git a/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo66Percent.1.png b/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo66Percent.1.png deleted file mode 100644 index ce7a6b4..0000000 Binary files a/Example/SnapshotTests/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressBarWithProgressSetTo66Percent.1.png and /dev/null differ diff --git a/Example/Tests/Info.plist b/Example/Tests/Info.plist deleted file mode 100644 index ba72822..0000000 --- a/Example/Tests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/Example/fastlane/Fastfile b/Example/fastlane/Fastfile index 09a12bc..7a59cd4 100644 --- a/Example/fastlane/Fastfile +++ b/Example/fastlane/Fastfile @@ -18,10 +18,12 @@ default_platform(:ios) platform :ios do desc "Execute SwiftFormat and treat any formatting errors as real errors." lane :format do - swiftformat(executable: "Pods/SwiftFormat/CommandLineTool/swiftformat", - config: "Pods/SwiftConfigurationFiles/.swiftformat", - path: "../", - lint: true) + swiftformat( + executable: "Pods/SwiftFormat/CommandLineTool/swiftformat", + config: "Pods/SwiftConfigurationFiles/.swiftformat", + path: "../", + lint: true + ) end desc "Execute SwiftLint and treat any formatting errors as real errors." @@ -35,9 +37,11 @@ platform :ios do desc "Execute tests." lane :tests do - run_tests(workspace: "GradientProgressBar.xcworkspace", - devices: ["iPhone 13"], - scheme: "GradientProgressBar-Example") + run_tests( + workspace: "Example.xcworkspace", + devices: ["iPhone 13"], + scheme: "Example" + ) end desc "Execute validation of library." diff --git a/GradientProgressBar.podspec b/GradientProgressBar.podspec index 7511c05..e0330fa 100644 --- a/GradientProgressBar.podspec +++ b/GradientProgressBar.podspec @@ -28,10 +28,10 @@ Inspired by https://codepen.io/marcobiedermann/pen/LExXWW s.author = { 'Felix Mau' => 'me@felix.hamburg' } s.source = { :git => 'https://github.com/fxm90/GradientProgressBar.git', :tag => s.version.to_s } - s.swift_version = '5.1' + s.swift_version = '5.5' s.ios.deployment_target = '9.0' - s.source_files = 'GradientProgressBar/Classes/**/*' + s.source_files = 'GradientProgressBar/**/*' # s.resource_bundles = { # 'GradientProgressBar' => ['GradientProgressBar/Assets/*.png'] diff --git a/GradientProgressBar/Assets/.gitkeep b/GradientProgressBar/Assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/GradientProgressBar/Classes/.gitkeep b/GradientProgressBar/Classes/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/GradientProgressBar/Classes/Extensions/NSObject+Builder.swift b/GradientProgressBar/Extensions/NSObject+Builder.swift similarity index 100% rename from GradientProgressBar/Classes/Extensions/NSObject+Builder.swift rename to GradientProgressBar/Extensions/NSObject+Builder.swift diff --git a/GradientProgressBar/Classes/Extensions/UIColor+MakeDynamicColor.swift b/GradientProgressBar/Extensions/UIColor+MakeDynamicColor.swift similarity index 84% rename from GradientProgressBar/Classes/Extensions/UIColor+MakeDynamicColor.swift rename to GradientProgressBar/Extensions/UIColor+MakeDynamicColor.swift index 20b8c69..ddfcf22 100644 --- a/GradientProgressBar/Classes/Extensions/UIColor+MakeDynamicColor.swift +++ b/GradientProgressBar/Extensions/UIColor+MakeDynamicColor.swift @@ -24,10 +24,8 @@ extension UIColor { return lightVariant } - return UIColor { (traitCollection: UITraitCollection) -> UIColor in - traitCollection.userInterfaceStyle == .dark - ? darkVariant - : lightVariant + return UIColor { + $0.userInterfaceStyle == .dark ? darkVariant : lightVariant } } } diff --git a/GradientProgressBar/GradientProgressBar.swift b/GradientProgressBar/GradientProgressBar.swift new file mode 100644 index 0000000..f758339 --- /dev/null +++ b/GradientProgressBar/GradientProgressBar.swift @@ -0,0 +1,155 @@ +// +// GradientProgressBar.swift +// GradientProgressBar +// +// Created by Felix Mau on 01.03.17. +// Copyright © 2017 Felix Mau. All rights reserved. +// + +import UIKit +import LightweightObservable + +/// Protocol for managing a progress bar, as defined by `UIProgressView` from Apple. +/// To provide the same interface with `GradientProgressBar`, we're gonna make both classes conform to this protocol. +/// +/// - SeeAlso: [Apple documentation for `UIProgressView`](https://apple.co/2HjwstS) +protocol UIProgressHandling { + /// The current progress shown by the receiver (between 0.0 and 1.0, inclusive). + var progress: Float { get set } + + /// Adjusts the current progress shown by the receiver, optionally animating the change. + /// + /// - Parameters: + /// - progress: The new progress value (between 0.0 and 1.0, inclusive). + /// - animated: `true` if the change should be animated, `false` if the change should happen immediately. + func setProgress(_ progress: Float, animated: Bool) +} + +extension UIProgressView: UIProgressHandling {} + +/// A customizable gradient progress view. +@IBDesignable +open class GradientProgressBar: UIView { + // MARK: - Public properties + + /// Gradient colors for the progress view. + public var gradientColors: [UIColor] { + get { gradientLayerViewModel.gradientColors } + set { gradientLayerViewModel.gradientColors = newValue } + } + + /// Animation duration for calls to `setProgress(x, animated: true)`. + public var animationDuration: TimeInterval { + get { maskLayerViewModel.animationDuration } + set { maskLayerViewModel.animationDuration = newValue } + } + + /// Animation timing function for calls to `setProgress(x, animated: true)`. + public var timingFunction: CAMediaTimingFunction { + get { maskLayerViewModel.timingFunction } + set { maskLayerViewModel.timingFunction = newValue } + } + + /// Layer containing the gradient. + public let gradientLayer = CAGradientLayer() + .set(\.anchorPoint, to: .zero) + .set(\.startPoint, to: .zero) + .set(\.endPoint, to: CGPoint(x: 1, y: 0)) + + /// Alpha mask for showing only the visible "progress"-part of the gradient layer. + public let maskLayer = CALayer() + .set(\.backgroundColor, to: UIColor.white.cgColor) + + // MARK: - Private properties + + /// View-model containing all logic related to the gradient-layer. + private let gradientLayerViewModel = GradientLayerViewModel() + + /// View-model containing all logic related to the mask-layer. + private let maskLayerViewModel = MaskLayerViewModel() + + /// The dispose bag for the observables. + private var disposeBag = DisposeBag() + + // MARK: - Constructor + + override public init(frame: CGRect) { + super.init(frame: frame) + + commonInit() + } + + public required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + + commonInit() + } + + // MARK: - Public methods + + override open func layoutSubviews() { + super.layoutSubviews() + + // Unfortunately `CALayer` is not affected by autolayout, so any change in the size of the view will not change the gradient layer. + // That's why we'll have to update the frame here manually. + gradientLayer.frame = bounds + + // Inform the view-model about the changed bounds, so it can calculate a new frame for the mask-layer, based on the current progress value. + maskLayerViewModel.bounds = bounds + } + + // MARK: - Private methods + + private func commonInit() { + setupProgressView() + bindViewModelsToView() + } + + private func setupProgressView() { + backgroundColor = UIColor.GradientProgressBar.backgroundColor + + // Apply the mask to the gradient layer, in order to show only the current progress of the gradient. + gradientLayer.mask = maskLayer + layer.insertSublayer(gradientLayer, at: 0) + } + + private func bindViewModelsToView() { + gradientLayerViewModel.gradientLayerColors.subscribeDistinct { [weak self] newGradientLayerColors, _ in + self?.gradientLayer.colors = newGradientLayerColors + }.disposed(by: &disposeBag) + + maskLayerViewModel.maskLayerFrameAnimation.subscribeDistinct { [weak self] newMaskLayerFrameAnimation, _ in + self?.animateMaskLayer(frame: newMaskLayerFrameAnimation.frame, + duration: newMaskLayerFrameAnimation.duration, + timingFunction: newMaskLayerFrameAnimation.timingFunction) + }.disposed(by: &disposeBag) + } + + private func animateMaskLayer(frame: CGRect, duration: TimeInterval, timingFunction: CAMediaTimingFunction) { + CATransaction.begin() + CATransaction.setAnimationDuration(duration) + CATransaction.setAnimationTimingFunction(timingFunction) + + maskLayer.frame = frame + + CATransaction.commit() + } +} + +// MARK: - `UIProgressHandling` conformance + +extension GradientProgressBar: UIProgressHandling { + // MARK: - Public properties + + @IBInspectable + open var progress: Float { + get { maskLayerViewModel.progress } + set { maskLayerViewModel.progress = newValue } + } + + // MARK: - Public methods + + open func setProgress(_ progress: Float, animated: Bool) { + maskLayerViewModel.setProgress(progress, animated: animated) + } +} diff --git a/GradientProgressBar/GradientProgressBarViewStyle.swift b/GradientProgressBar/GradientProgressBarViewStyle.swift new file mode 100644 index 0000000..1e45344 --- /dev/null +++ b/GradientProgressBar/GradientProgressBarViewStyle.swift @@ -0,0 +1,84 @@ +// +// GradientProgressBarViewStyle.swift +// GradientProgressBar +// +// Created by Felix Mau on 02.02.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI + +// Workaround to fix `xcodebuild` errors when running `pod lib lint`, like e.g.: +// +// - `xcodebuild`: error: cannot find type 'Color' in scope +// - `xcodebuild`: error: cannot find type 'View' in scope +// +// > This failure occurs because builds with a deployment target earlier than iOS 11 will also build for the armv7 architecture, +// > and there is no armv7 swiftmodule for SwiftUI in the iOS SDK because the OS version in which it was first introduced (iOS 13) +// > does not support armv7 anymore. +// +// Source: https://stackoverflow.com/a/61954608 +#if arch(arm64) || arch(x86_64) + /// A `ProgressViewStyle` showing a gradient. + /// + /// - Note: Requires **iOS 15**, due to the view-modifier `mask(alignment:_:)`. + @available(iOS 15.0, *) + public struct GradientProgressBarViewStyle: ProgressViewStyle { + // MARK: - Config + + public enum Config { + public static let defaultBackgroundColor = Color(UIColor.GradientProgressBar.backgroundColor) + public static let defaultGradientColors = UIColor.GradientProgressBar.gradientColors.map(Color.init) + public static let defaultCornerRadius: Double = 2 + } + + // MARK: - Public properties + + let backgroundColor: Color + let gradientColors: [Color] + let cornerRadius: Double + + // MARK: - Public methods + + public func makeBody(configuration: Configuration) -> some View { + GeometryReader { proxy in + ZStack { + RoundedRectangle(cornerRadius: cornerRadius) + .fill(backgroundColor) + + LinearGradient(colors: gradientColors, startPoint: .leading, endPoint: .trailing) + .mask(alignment: .leading) { + RoundedRectangle(cornerRadius: cornerRadius) + .frame(width: (configuration.fractionCompleted ?? 0) * proxy.size.width) + } + } + } + } + } + + // MARK: - Helpers + + @available(iOS 15.0, *) + public extension ProgressViewStyle where Self == GradientProgressBarViewStyle { + /// Syntactic sugar for returning an instance of the `GradientProgressBarViewStyle` + /// with the **default parameters**. + static var gradientProgressBar: Self { + gradientProgressBar() + } + + /// Syntactic sugar for returning an instance of the `GradientProgressBarViewStyle`. + /// + /// - Parameters: + /// - backgroundColor: The background-color shown behind the gradient (clipped by a possible `cornerRadius`). + /// - gradientColors: The colors used for the gradient. + /// - cornerRadius: The corner-radius used on the background and the progress bar. + static func gradientProgressBar(backgroundColor: Color = GradientProgressBarViewStyle.Config.defaultBackgroundColor, + gradientColors: [Color] = GradientProgressBarViewStyle.Config.defaultGradientColors, + cornerRadius: Double = GradientProgressBarViewStyle.Config.defaultCornerRadius) -> Self { + GradientProgressBarViewStyle(backgroundColor: backgroundColor, + gradientColors: gradientColors, + cornerRadius: cornerRadius) + } + } + +#endif diff --git a/GradientProgressBar/Classes/Misc/Constants.swift b/GradientProgressBar/Misc/Constants.swift similarity index 100% rename from GradientProgressBar/Classes/Misc/Constants.swift rename to GradientProgressBar/Misc/Constants.swift diff --git a/GradientProgressBar/Classes/ViewModel/GradientLayerViewModel.swift b/GradientProgressBar/ViewModel/GradientLayerViewModel.swift similarity index 97% rename from GradientProgressBar/Classes/ViewModel/GradientLayerViewModel.swift rename to GradientProgressBar/ViewModel/GradientLayerViewModel.swift index feb3a91..8f060f8 100644 --- a/GradientProgressBar/Classes/ViewModel/GradientLayerViewModel.swift +++ b/GradientProgressBar/ViewModel/GradientLayerViewModel.swift @@ -41,6 +41,6 @@ final class GradientLayerViewModel { private extension Array where Element: UIColor { /// The Quartz color that corresponds to the color objects. var cgColor: [CGColor] { - map { $0.cgColor } + map(\.cgColor) } } diff --git a/GradientProgressBar/Classes/ViewModel/MaskLayerViewModel.swift b/GradientProgressBar/ViewModel/MaskLayerViewModel.swift similarity index 100% rename from GradientProgressBar/Classes/ViewModel/MaskLayerViewModel.swift rename to GradientProgressBar/ViewModel/MaskLayerViewModel.swift diff --git a/Package.swift b/Package.swift index cc52cb9..74a3d2a 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.0 +// swift-tools-version:5.5 import PackageDescription @@ -15,7 +15,7 @@ let package = Package(name: "GradientProgressBar", targets: [ .target(name: "GradientProgressBar", dependencies: ["LightweightObservable"], - path: "GradientProgressBar/Classes"), + path: "GradientProgressBar/"), .testTarget(name: "GradientProgressBarTests", dependencies: ["GradientProgressBar"], path: "Example/Tests/"), diff --git a/readme.md b/readme.md index 2a8c878..5ce269d 100644 --- a/readme.md +++ b/readme.md @@ -11,7 +11,7 @@ A customizable gradient progress bar (UIProgressView). Inspired by [iOS 7 Progre To run the example project, clone the repo, and open the workspace from the Example directory. ### Requirements -- Swift 5.0 +- Swift 5.5 - Xcode 11 - iOS 9.0+ @@ -43,7 +43,9 @@ dependencies: [ ``` -### How to use +### How to use (`UIKit`) +*[Scroll down](#how-to-use-swiftui) for the SwiftUI documentation.* + Simply drop a `UIView` into your View Controller in the Storyboard. Select your view and in the `Identity Inspector` change the class to `GradientProgressBar`. >Don't forget to change the module to `GradientProgressBar` too. @@ -67,6 +69,7 @@ gradientProgressView.setProgress(0.75, animated: true) gradientProgressView.progress = 0.75 ``` + ### Configuration #### – Property `animationDuration` Adjusts the animation duration for calls to `setProgress(_:animated:)`: @@ -95,7 +98,7 @@ progressView.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) ### Troubleshooting #### Interface Builder Support -Unfortunatly the Interface Builder support is currently broken for Cocoapods frameworks. If you need Interface Builder support, add the following code to your Podfile and run `pod install` again. Afterwards you should be able to use the `GradientProgressBar` inside the Interface Builder :) +Unfortunately the Interface Builder support is currently broken for Cocoapods frameworks. If you need Interface Builder support, add the following code to your Podfile and run `pod install` again. Afterwards you should be able to use the `GradientProgressBar` inside the Interface Builder :) ``` post_install do |installer| installer.pods_project.build_configurations.each do |config| @@ -116,6 +119,69 @@ Based on [my gist](https://gist.github.com/fxm90/50d6c73d07c4d9755981b9bb4c5ab93 Please have a look at the example application for further details :) +### How to use (`SwiftUI`) +*[Scroll up](#how-to-use-uikit) for the UIKit documentation.* + +Since version 2.1.0 this framework provides a [`ProgressViewStyle`](https://developer.apple.com/documentation/swiftui/progressviewstyle) that can be used in SwiftUI. + +```swift +struct ExampleView: View { + + @State + private var progress = 0.5 + + var body: some View { + ProgressView(value: progress, total: 1) + .progressViewStyle(.gradientProgressBar) + .frame(height: 4) + } +} +``` + +### Configuration + +```swift +struct ExampleView: View { + + @State + private var progress = 0.5 + + var body: some View { + ProgressView(value: progress, total: 1) + .progressViewStyle( + .gradientProgressBar( + backgroundColor: .gray.opacity(0.05), + gradientColors: [.red, .white, .blue], + cornerRadius: 4) + ) + .frame(height: 8) + } +} +``` + + +#### – Parameter `backgroundColor` +The background-color shown behind the gradient (clipped by a possible `cornerRadius`). + +#### – Parameter `gradientColors` +The colors used for the gradient. + +#### – Parameter `cornerRadius` +The corner-radius used on the background and the progress bar. + +### Add / Adapt animation +To add an animation you have to wrap the update of the `@State` property inside [`withAnimation(_:_:)`](https://developer.apple.com/documentation/swiftui/withanimation(_:_:)/). + +```swift +Button("Animate progress") { + withAnimation(.easeInOut) { + progress += 0.1 + } +} +``` + +Please have a look at the [Apple documentation for `Animation`](https://developer.apple.com/documentation/swiftui/animation) on how to further customise the animation. + ### Author Felix Mau (me(@)felix.hamburg)