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/Example/.swiftlint.yml b/Example/.swiftlint.yml index 8bb590b..6275d0e 100644 --- a/Example/.swiftlint.yml +++ b/Example/.swiftlint.yml @@ -1,4 +1,4 @@ -# +# # .swiftlint.yml # Created by Felix Mau (https://felix.hamburg) # @@ -10,7 +10,7 @@ file_header: required_pattern: | \/\/ \/\/ SWIFTLINT_CURRENT_FILENAME - \/\/ (GradientLoadingBar|GradientLoadingBar_Example|GradientLoadingBar_Tests|GradientLoadingBar_SnapshotTests) + \/\/ (GradientLoadingBar|Example|ExampleTests|ExampleSnapshotTests) \/\/ \/\/ Created by .*? on \d{2}\.\d{2}\.\d{2}\. \/\/ Copyright © \d{4} .*?\. All rights reserved\. @@ -23,5 +23,4 @@ included: excluded: - Pods -parent_config: Pods/SwiftConfigurationFiles/.swiftlint.yml - +parent_config: Pods/SwiftConfigurationFiles/.swiftlint.yml \ No newline at end of file diff --git a/Example/Example.xcodeproj/project.pbxproj b/Example/Example.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2bedf65 --- /dev/null +++ b/Example/Example.xcodeproj/project.pbxproj @@ -0,0 +1,980 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 8A0BF2A649F852F27812AA32 /* Pods_ExampleTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28825A77907675CA26D91A13 /* Pods_ExampleTests.framework */; }; + A3603BFBB6494793AEE84E88 /* Pods_ExampleSnapshotTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 255BE21D23572DD0713A94E2 /* Pods_ExampleSnapshotTests.framework */; }; + DC4E50A16A3B84900FBD1981 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12DDBD589B02F5D3C9C3AF69 /* Pods_Example.framework */; }; + DCA9833A27D68AD400D6EA30 /* ExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA9833927D68AD400D6EA30 /* ExampleApp.swift */; }; + DCA9833E27D68AD600D6EA30 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCA9833D27D68AD600D6EA30 /* Assets.xcassets */; }; + DCA9834127D68AD600D6EA30 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DCA9834027D68AD600D6EA30 /* Preview Assets.xcassets */; }; + DCA9836927D68E3500D6EA30 /* StoryboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA9836827D68E3500D6EA30 /* StoryboardView.swift */; }; + DCA9836C27D6905000D6EA30 /* EntryPointView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA9836B27D6905000D6EA30 /* EntryPointView.swift */; }; + DCA9837127D6912300D6EA30 /* BasicExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA9837027D6912300D6EA30 /* BasicExampleViewController.swift */; }; + DCA9837627D693BB00D6EA30 /* BasicExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DCA9837527D693BB00D6EA30 /* BasicExample.storyboard */; }; + DCA9837827D6951C00D6EA30 /* SafeAreaExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA9837727D6951C00D6EA30 /* SafeAreaExampleViewController.swift */; }; + DCA9837A27D6958500D6EA30 /* SafeAreaExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DCA9837927D6958500D6EA30 /* SafeAreaExample.storyboard */; }; + DCA9838727D6A44700D6EA30 /* NavigationBarExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA9838627D6A44700D6EA30 /* NavigationBarExampleViewController.swift */; }; + DCA9838927D6A55A00D6EA30 /* NavigationBarExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DCA9838827D6A55A00D6EA30 /* NavigationBarExample.storyboard */; }; + DCA9838B27D6A74800D6EA30 /* SwiftUIExampleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA9838A27D6A74800D6EA30 /* SwiftUIExampleView.swift */; }; + F50E4C7E28061655001232D3 /* AdvancedExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F50E4C7D28061655001232D3 /* AdvancedExample.storyboard */; }; + F50E4C8028061715001232D3 /* AdvancedExampleTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F50E4C7F28061715001232D3 /* AdvancedExampleTableViewController.swift */; }; + F560001227EA2032001913A0 /* GradientLoadingBarView+ViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F560001127EA2032001913A0 /* GradientLoadingBarView+ViewModelTestCase.swift */; }; + F57C83C927DA11580025AA11 /* GradientLoadingBarViewTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F57C83C827DA11580025AA11 /* GradientLoadingBarViewTestCase.swift */; }; + F5C7E8882809CDEE00036B8E /* CustomColorsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5C7E8872809CDEE00036B8E /* CustomColorsTableViewCell.swift */; }; + F5C7E88A2809CDF600036B8E /* InterfaceBuilderSetupTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5C7E8892809CDF600036B8E /* InterfaceBuilderSetupTableViewCell.swift */; }; + F5C7E88C2809CDFD00036B8E /* CustomSuperviewTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5C7E88B2809CDFD00036B8E /* CustomSuperviewTableViewCell.swift */; }; + F5C7E88F2809CF1200036B8E /* BorderedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5C7E88E2809CF1200036B8E /* BorderedButton.swift */; }; + F5F5B69C27D94B1800D998B5 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5F5B69727D94B1800D998B5 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift */; }; + F5F5B69D27D94B1800D998B5 /* GradientLoadingBarViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5F5B69927D94B1800D998B5 /* GradientLoadingBarViewModelTestCase.swift */; }; + F5F5B69E27D94B1800D998B5 /* GradientActivityIndicatorViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5F5B69A27D94B1800D998B5 /* GradientActivityIndicatorViewModelTestCase.swift */; }; + F5F5B69F27D94B1800D998B5 /* NotchGradientLoadingBarViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5F5B69B27D94B1800D998B5 /* NotchGradientLoadingBarViewModelTestCase.swift */; }; + F5FC82FA27DA0BBF00FE1D7D /* GradientActivityIndicatorViewTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5FC82E827DA0BBF00FE1D7D /* GradientActivityIndicatorViewTestCase.swift */; }; + F5FC82FE27DA0BBF00FE1D7D /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = F5FC82EF27DA0BBF00FE1D7D /* README.md */; }; + F5FC830027DA0BBF00FE1D7D /* GradientLoadingBarControllerTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5FC82F327DA0BBF00FE1D7D /* GradientLoadingBarControllerTestCase.swift */; }; + F5FC830127DA0BBF00FE1D7D /* NotchGradientLoadingBarControllerTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5FC82F427DA0BBF00FE1D7D /* NotchGradientLoadingBarControllerTestCase.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + DCA9834727D68AD600D6EA30 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DCA9832E27D68AD400D6EA30 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DCA9833527D68AD400D6EA30; + remoteInfo = Example; + }; + F5FC82E227DA0B3200FE1D7D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DCA9832E27D68AD400D6EA30 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DCA9833527D68AD400D6EA30; + remoteInfo = Example; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 12DDBD589B02F5D3C9C3AF69 /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 255BE21D23572DD0713A94E2 /* Pods_ExampleSnapshotTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ExampleSnapshotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 28825A77907675CA26D91A13 /* Pods_ExampleTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ExampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3299012A62A2E4310D02CD78 /* 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 = ""; }; + 58EE67DB75A1006623BCF31C /* 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 = ""; }; + 8546348DA9E4805657E6F366 /* 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 = ""; }; + A84CFB3E33CA7C6024D463AF /* 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 = ""; }; + B4A7D9EEF6ADF47333E77805 /* 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 = ""; }; + DCA9833627D68AD400D6EA30 /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DCA9833927D68AD400D6EA30 /* ExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleApp.swift; sourceTree = ""; }; + DCA9833D27D68AD600D6EA30 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DCA9834027D68AD600D6EA30 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + DCA9834627D68AD600D6EA30 /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DCA9836827D68E3500D6EA30 /* StoryboardView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardView.swift; sourceTree = ""; }; + DCA9836B27D6905000D6EA30 /* EntryPointView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntryPointView.swift; sourceTree = ""; }; + DCA9837027D6912300D6EA30 /* BasicExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicExampleViewController.swift; sourceTree = ""; }; + DCA9837527D693BB00D6EA30 /* BasicExample.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = BasicExample.storyboard; sourceTree = ""; }; + DCA9837727D6951C00D6EA30 /* SafeAreaExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafeAreaExampleViewController.swift; sourceTree = ""; }; + DCA9837927D6958500D6EA30 /* SafeAreaExample.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SafeAreaExample.storyboard; sourceTree = ""; }; + DCA9838627D6A44700D6EA30 /* NavigationBarExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarExampleViewController.swift; sourceTree = ""; }; + DCA9838827D6A55A00D6EA30 /* NavigationBarExample.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NavigationBarExample.storyboard; sourceTree = ""; }; + DCA9838A27D6A74800D6EA30 /* SwiftUIExampleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIExampleView.swift; sourceTree = ""; }; + F50E4C7D28061655001232D3 /* AdvancedExample.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = AdvancedExample.storyboard; sourceTree = ""; }; + F50E4C7F28061715001232D3 /* AdvancedExampleTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedExampleTableViewController.swift; sourceTree = ""; }; + F560001127EA2032001913A0 /* GradientLoadingBarView+ViewModelTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GradientLoadingBarView+ViewModelTestCase.swift"; sourceTree = ""; }; + F57C83C827DA11580025AA11 /* GradientLoadingBarViewTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarViewTestCase.swift; sourceTree = ""; }; + F5C7E8872809CDEE00036B8E /* CustomColorsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomColorsTableViewCell.swift; sourceTree = ""; }; + F5C7E8892809CDF600036B8E /* InterfaceBuilderSetupTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceBuilderSetupTableViewCell.swift; sourceTree = ""; }; + F5C7E88B2809CDFD00036B8E /* CustomSuperviewTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSuperviewTableViewCell.swift; sourceTree = ""; }; + F5C7E88E2809CF1200036B8E /* BorderedButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BorderedButton.swift; sourceTree = ""; }; + F5F5B69727D94B1800D998B5 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift"; sourceTree = ""; }; + F5F5B69927D94B1800D998B5 /* GradientLoadingBarViewModelTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarViewModelTestCase.swift; sourceTree = ""; }; + F5F5B69A27D94B1800D998B5 /* GradientActivityIndicatorViewModelTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorViewModelTestCase.swift; sourceTree = ""; }; + F5F5B69B27D94B1800D998B5 /* NotchGradientLoadingBarViewModelTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotchGradientLoadingBarViewModelTestCase.swift; sourceTree = ""; }; + F5FC82DE27DA0B3200FE1D7D /* ExampleSnapshotTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleSnapshotTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F5FC82E827DA0BBF00FE1D7D /* GradientActivityIndicatorViewTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorViewTestCase.swift; sourceTree = ""; }; + F5FC82EF27DA0BBF00FE1D7D /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + F5FC82F327DA0BBF00FE1D7D /* GradientLoadingBarControllerTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarControllerTestCase.swift; sourceTree = ""; }; + F5FC82F427DA0BBF00FE1D7D /* NotchGradientLoadingBarControllerTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotchGradientLoadingBarControllerTestCase.swift; sourceTree = ""; }; + FAA1A12E84EBC1F48401EB10 /* 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 = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DCA9833327D68AD400D6EA30 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DC4E50A16A3B84900FBD1981 /* Pods_Example.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCA9834327D68AD600D6EA30 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8A0BF2A649F852F27812AA32 /* Pods_ExampleTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F5FC82DB27DA0B3200FE1D7D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A3603BFBB6494793AEE84E88 /* Pods_ExampleSnapshotTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33D2CE217238EAE7A5515634 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 12DDBD589B02F5D3C9C3AF69 /* Pods_Example.framework */, + 28825A77907675CA26D91A13 /* Pods_ExampleTests.framework */, + 255BE21D23572DD0713A94E2 /* Pods_ExampleSnapshotTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + A6AC3866473F1A669D221CA4 /* Pods */ = { + isa = PBXGroup; + children = ( + FAA1A12E84EBC1F48401EB10 /* Pods-Example.debug.xcconfig */, + 3299012A62A2E4310D02CD78 /* Pods-Example.release.xcconfig */, + 8546348DA9E4805657E6F366 /* Pods-ExampleTests.debug.xcconfig */, + A84CFB3E33CA7C6024D463AF /* Pods-ExampleTests.release.xcconfig */, + 58EE67DB75A1006623BCF31C /* Pods-ExampleSnapshotTests.debug.xcconfig */, + B4A7D9EEF6ADF47333E77805 /* Pods-ExampleSnapshotTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + DCA9832D27D68AD400D6EA30 = { + isa = PBXGroup; + children = ( + DCA9833827D68AD400D6EA30 /* Example */, + DCA9834927D68AD600D6EA30 /* ExampleTests */, + F5FC82DF27DA0B3200FE1D7D /* ExampleSnapshotTests */, + DCA9833727D68AD400D6EA30 /* Products */, + A6AC3866473F1A669D221CA4 /* Pods */, + 33D2CE217238EAE7A5515634 /* Frameworks */, + ); + sourceTree = ""; + }; + DCA9833727D68AD400D6EA30 /* Products */ = { + isa = PBXGroup; + children = ( + DCA9833627D68AD400D6EA30 /* Example.app */, + DCA9834627D68AD600D6EA30 /* ExampleTests.xctest */, + F5FC82DE27DA0B3200FE1D7D /* ExampleSnapshotTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + DCA9833827D68AD400D6EA30 /* Example */ = { + isa = PBXGroup; + children = ( + DCA9836727D68E3500D6EA30 /* Helper */, + DCA9836A27D68E3C00D6EA30 /* Scenes */, + DCA9833927D68AD400D6EA30 /* ExampleApp.swift */, + DCA9833D27D68AD600D6EA30 /* Assets.xcassets */, + DCA9833F27D68AD600D6EA30 /* Preview Content */, + ); + path = Example; + sourceTree = ""; + }; + DCA9833F27D68AD600D6EA30 /* Preview Content */ = { + isa = PBXGroup; + children = ( + DCA9834027D68AD600D6EA30 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + DCA9834927D68AD600D6EA30 /* ExampleTests */ = { + isa = PBXGroup; + children = ( + F5F5B69827D94B1800D998B5 /* ViewModel */, + F5F5B69627D94B1800D998B5 /* Views */, + ); + path = ExampleTests; + sourceTree = ""; + }; + DCA9836727D68E3500D6EA30 /* Helper */ = { + isa = PBXGroup; + children = ( + DCA9836827D68E3500D6EA30 /* StoryboardView.swift */, + ); + path = Helper; + sourceTree = ""; + }; + DCA9836A27D68E3C00D6EA30 /* Scenes */ = { + isa = PBXGroup; + children = ( + DCA9836E27D6909A00D6EA30 /* AdvancedExample */, + DCA9836D27D6908F00D6EA30 /* BasicExample */, + DCA9837427D691C600D6EA30 /* NavigationBarExample */, + DCA9837227D691A200D6EA30 /* SafeAreaExample */, + DCA9836F27D690A400D6EA30 /* SwiftUIExample */, + DCA9836B27D6905000D6EA30 /* EntryPointView.swift */, + ); + path = Scenes; + sourceTree = ""; + }; + DCA9836D27D6908F00D6EA30 /* BasicExample */ = { + isa = PBXGroup; + children = ( + DCA9837527D693BB00D6EA30 /* BasicExample.storyboard */, + DCA9837027D6912300D6EA30 /* BasicExampleViewController.swift */, + ); + path = BasicExample; + sourceTree = ""; + }; + DCA9836E27D6909A00D6EA30 /* AdvancedExample */ = { + isa = PBXGroup; + children = ( + F5C7E8862809CDE200036B8E /* Cells */, + F5C7E88D2809CF0700036B8E /* Views */, + F50E4C7D28061655001232D3 /* AdvancedExample.storyboard */, + F50E4C7F28061715001232D3 /* AdvancedExampleTableViewController.swift */, + ); + path = AdvancedExample; + sourceTree = ""; + }; + DCA9836F27D690A400D6EA30 /* SwiftUIExample */ = { + isa = PBXGroup; + children = ( + DCA9838A27D6A74800D6EA30 /* SwiftUIExampleView.swift */, + ); + path = SwiftUIExample; + sourceTree = ""; + }; + DCA9837227D691A200D6EA30 /* SafeAreaExample */ = { + isa = PBXGroup; + children = ( + DCA9837927D6958500D6EA30 /* SafeAreaExample.storyboard */, + DCA9837727D6951C00D6EA30 /* SafeAreaExampleViewController.swift */, + ); + path = SafeAreaExample; + sourceTree = ""; + }; + DCA9837427D691C600D6EA30 /* NavigationBarExample */ = { + isa = PBXGroup; + children = ( + DCA9838827D6A55A00D6EA30 /* NavigationBarExample.storyboard */, + DCA9838627D6A44700D6EA30 /* NavigationBarExampleViewController.swift */, + ); + path = NavigationBarExample; + sourceTree = ""; + }; + F5C7E8862809CDE200036B8E /* Cells */ = { + isa = PBXGroup; + children = ( + F5C7E8872809CDEE00036B8E /* CustomColorsTableViewCell.swift */, + F5C7E8892809CDF600036B8E /* InterfaceBuilderSetupTableViewCell.swift */, + F5C7E88B2809CDFD00036B8E /* CustomSuperviewTableViewCell.swift */, + ); + path = Cells; + sourceTree = ""; + }; + F5C7E88D2809CF0700036B8E /* Views */ = { + isa = PBXGroup; + children = ( + F5C7E88E2809CF1200036B8E /* BorderedButton.swift */, + ); + path = Views; + sourceTree = ""; + }; + F5F5B69627D94B1800D998B5 /* Views */ = { + isa = PBXGroup; + children = ( + F5F5B69727D94B1800D998B5 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift */, + ); + path = Views; + sourceTree = ""; + }; + F5F5B69827D94B1800D998B5 /* ViewModel */ = { + isa = PBXGroup; + children = ( + F5F5B69A27D94B1800D998B5 /* GradientActivityIndicatorViewModelTestCase.swift */, + F560001127EA2032001913A0 /* GradientLoadingBarView+ViewModelTestCase.swift */, + F5F5B69927D94B1800D998B5 /* GradientLoadingBarViewModelTestCase.swift */, + F5F5B69B27D94B1800D998B5 /* NotchGradientLoadingBarViewModelTestCase.swift */, + ); + path = ViewModel; + sourceTree = ""; + }; + F5FC82DF27DA0B3200FE1D7D /* ExampleSnapshotTests */ = { + isa = PBXGroup; + children = ( + F5FC82E727DA0BBF00FE1D7D /* GradientActivityIndicatorView */, + F5FC82F227DA0BBF00FE1D7D /* GradientLoadingBarController */, + F5FC830727DA0D8400FE1D7D /* GradientLoadingBarView */, + F5FC82EF27DA0BBF00FE1D7D /* README.md */, + ); + path = ExampleSnapshotTests; + sourceTree = ""; + }; + F5FC82E727DA0BBF00FE1D7D /* GradientActivityIndicatorView */ = { + isa = PBXGroup; + children = ( + F5FC82E827DA0BBF00FE1D7D /* GradientActivityIndicatorViewTestCase.swift */, + ); + path = GradientActivityIndicatorView; + sourceTree = ""; + }; + F5FC82F227DA0BBF00FE1D7D /* GradientLoadingBarController */ = { + isa = PBXGroup; + children = ( + F5FC82F327DA0BBF00FE1D7D /* GradientLoadingBarControllerTestCase.swift */, + F5FC82F427DA0BBF00FE1D7D /* NotchGradientLoadingBarControllerTestCase.swift */, + ); + path = GradientLoadingBarController; + sourceTree = ""; + }; + F5FC830727DA0D8400FE1D7D /* GradientLoadingBarView */ = { + isa = PBXGroup; + children = ( + F57C83C827DA11580025AA11 /* GradientLoadingBarViewTestCase.swift */, + ); + path = GradientLoadingBarView; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DCA9833527D68AD400D6EA30 /* Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = DCA9835A27D68AD600D6EA30 /* Build configuration list for PBXNativeTarget "Example" */; + buildPhases = ( + 52082F0E9B4B579867A82146 /* [CP] Check Pods Manifest.lock */, + DCA9833227D68AD400D6EA30 /* Sources */, + DCA9833327D68AD400D6EA30 /* Frameworks */, + DCA9833427D68AD400D6EA30 /* Resources */, + C56CF067D28EB40785524B49 /* [CP] Embed Pods Frameworks */, + DCA9836527D68D6400D6EA30 /* SwiftFormat */, + DCA9836627D68D7000D6EA30 /* SwiftLint */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Example; + productName = Example; + productReference = DCA9833627D68AD400D6EA30 /* Example.app */; + productType = "com.apple.product-type.application"; + }; + DCA9834527D68AD600D6EA30 /* ExampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DCA9835D27D68AD600D6EA30 /* Build configuration list for PBXNativeTarget "ExampleTests" */; + buildPhases = ( + 765F099D280F5648383C9020 /* [CP] Check Pods Manifest.lock */, + DCA9834227D68AD600D6EA30 /* Sources */, + DCA9834327D68AD600D6EA30 /* Frameworks */, + DCA9834427D68AD600D6EA30 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DCA9834827D68AD600D6EA30 /* PBXTargetDependency */, + ); + name = ExampleTests; + productName = ExampleTests; + productReference = DCA9834627D68AD600D6EA30 /* ExampleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + F5FC82DD27DA0B3200FE1D7D /* ExampleSnapshotTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = F5FC82E627DA0B3200FE1D7D /* Build configuration list for PBXNativeTarget "ExampleSnapshotTests" */; + buildPhases = ( + 716A5EA63D5ED262C053AE2D /* [CP] Check Pods Manifest.lock */, + F5FC82DA27DA0B3200FE1D7D /* Sources */, + F5FC82DB27DA0B3200FE1D7D /* Frameworks */, + F5FC82DC27DA0B3200FE1D7D /* Resources */, + 849CA8738A44CA8E17195413 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + F5FC82E327DA0B3200FE1D7D /* PBXTargetDependency */, + ); + name = ExampleSnapshotTests; + productName = ExampleSnapshotTests; + productReference = F5FC82DE27DA0B3200FE1D7D /* ExampleSnapshotTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DCA9832E27D68AD400D6EA30 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1320; + LastUpgradeCheck = 1320; + TargetAttributes = { + DCA9833527D68AD400D6EA30 = { + CreatedOnToolsVersion = 13.2.1; + }; + DCA9834527D68AD600D6EA30 = { + CreatedOnToolsVersion = 13.2.1; + TestTargetID = DCA9833527D68AD400D6EA30; + }; + F5FC82DD27DA0B3200FE1D7D = { + CreatedOnToolsVersion = 13.2.1; + TestTargetID = DCA9833527D68AD400D6EA30; + }; + }; + }; + buildConfigurationList = DCA9833127D68AD400D6EA30 /* Build configuration list for PBXProject "Example" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DCA9832D27D68AD400D6EA30; + productRefGroup = DCA9833727D68AD400D6EA30 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DCA9833527D68AD400D6EA30 /* Example */, + DCA9834527D68AD600D6EA30 /* ExampleTests */, + F5FC82DD27DA0B3200FE1D7D /* ExampleSnapshotTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DCA9833427D68AD400D6EA30 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DCA9834127D68AD600D6EA30 /* Preview Assets.xcassets in Resources */, + F50E4C7E28061655001232D3 /* AdvancedExample.storyboard in Resources */, + DCA9837A27D6958500D6EA30 /* SafeAreaExample.storyboard in Resources */, + DCA9837627D693BB00D6EA30 /* BasicExample.storyboard in Resources */, + DCA9833E27D68AD600D6EA30 /* Assets.xcassets in Resources */, + DCA9838927D6A55A00D6EA30 /* NavigationBarExample.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCA9834427D68AD600D6EA30 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F5FC82DC27DA0B3200FE1D7D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F5FC82FE27DA0BBF00FE1D7D /* README.md in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 52082F0E9B4B579867A82146 /* [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; + }; + 716A5EA63D5ED262C053AE2D /* [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; + }; + 765F099D280F5648383C9020 /* [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; + }; + 849CA8738A44CA8E17195413 /* [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; + }; + C56CF067D28EB40785524B49 /* [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; + }; + DCA9836527D68D6400D6EA30 /* 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"; + }; + DCA9836627D68D7000D6EA30 /* 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 */ + DCA9833227D68AD400D6EA30 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DCA9837127D6912300D6EA30 /* BasicExampleViewController.swift in Sources */, + DCA9833A27D68AD400D6EA30 /* ExampleApp.swift in Sources */, + F5C7E88F2809CF1200036B8E /* BorderedButton.swift in Sources */, + F5C7E8882809CDEE00036B8E /* CustomColorsTableViewCell.swift in Sources */, + DCA9836927D68E3500D6EA30 /* StoryboardView.swift in Sources */, + F5C7E88C2809CDFD00036B8E /* CustomSuperviewTableViewCell.swift in Sources */, + F5C7E88A2809CDF600036B8E /* InterfaceBuilderSetupTableViewCell.swift in Sources */, + F50E4C8028061715001232D3 /* AdvancedExampleTableViewController.swift in Sources */, + DCA9836C27D6905000D6EA30 /* EntryPointView.swift in Sources */, + DCA9837827D6951C00D6EA30 /* SafeAreaExampleViewController.swift in Sources */, + DCA9838727D6A44700D6EA30 /* NavigationBarExampleViewController.swift in Sources */, + DCA9838B27D6A74800D6EA30 /* SwiftUIExampleView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DCA9834227D68AD600D6EA30 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F560001227EA2032001913A0 /* GradientLoadingBarView+ViewModelTestCase.swift in Sources */, + F5F5B69E27D94B1800D998B5 /* GradientActivityIndicatorViewModelTestCase.swift in Sources */, + F5F5B69C27D94B1800D998B5 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift in Sources */, + F5F5B69F27D94B1800D998B5 /* NotchGradientLoadingBarViewModelTestCase.swift in Sources */, + F5F5B69D27D94B1800D998B5 /* GradientLoadingBarViewModelTestCase.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F5FC82DA27DA0B3200FE1D7D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F5FC82FA27DA0BBF00FE1D7D /* GradientActivityIndicatorViewTestCase.swift in Sources */, + F57C83C927DA11580025AA11 /* GradientLoadingBarViewTestCase.swift in Sources */, + F5FC830027DA0BBF00FE1D7D /* GradientLoadingBarControllerTestCase.swift in Sources */, + F5FC830127DA0BBF00FE1D7D /* NotchGradientLoadingBarControllerTestCase.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + DCA9834827D68AD600D6EA30 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DCA9833527D68AD400D6EA30 /* Example */; + targetProxy = DCA9834727D68AD600D6EA30 /* PBXContainerItemProxy */; + }; + F5FC82E327DA0B3200FE1D7D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DCA9833527D68AD400D6EA30 /* Example */; + targetProxy = F5FC82E227DA0B3200FE1D7D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + DCA9835827D68AD600D6EA30 /* 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; + }; + DCA9835927D68AD600D6EA30 /* 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; + }; + DCA9835B27D68AD600D6EA30 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FAA1A12E84EBC1F48401EB10 /* 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_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.gradientLoadingBar.example.Example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + DCA9835C27D68AD600D6EA30 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3299012A62A2E4310D02CD78 /* 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_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.gradientLoadingBar.example.Example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + DCA9835E27D68AD600D6EA30 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8546348DA9E4805657E6F366 /* Pods-ExampleTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = F63GJC2AN7; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientLoadingBar.example.ExampleTests; + 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 = Debug; + }; + DCA9835F27D68AD600D6EA30 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A84CFB3E33CA7C6024D463AF /* Pods-ExampleTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = F63GJC2AN7; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientLoadingBar.example.ExampleTests; + 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; + }; + F5FC82E427DA0B3200FE1D7D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 58EE67DB75A1006623BCF31C /* Pods-ExampleSnapshotTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientLoadingBar.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 = Debug; + }; + F5FC82E527DA0B3200FE1D7D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B4A7D9EEF6ADF47333E77805 /* Pods-ExampleSnapshotTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = hamburg.felix.gradientLoadingBar.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; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DCA9833127D68AD400D6EA30 /* Build configuration list for PBXProject "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCA9835827D68AD600D6EA30 /* Debug */, + DCA9835927D68AD600D6EA30 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DCA9835A27D68AD600D6EA30 /* Build configuration list for PBXNativeTarget "Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCA9835B27D68AD600D6EA30 /* Debug */, + DCA9835C27D68AD600D6EA30 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DCA9835D27D68AD600D6EA30 /* Build configuration list for PBXNativeTarget "ExampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DCA9835E27D68AD600D6EA30 /* Debug */, + DCA9835F27D68AD600D6EA30 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F5FC82E627DA0B3200FE1D7D /* Build configuration list for PBXNativeTarget "ExampleSnapshotTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F5FC82E427DA0B3200FE1D7D /* Debug */, + F5FC82E527DA0B3200FE1D7D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DCA9832E27D68AD400D6EA30 /* Project object */; +} diff --git a/Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Example/Pods/Pods.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/Example/GradientLoadingBar.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Example/GradientLoadingBar.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Example/Example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Example/GradientLoadingBar.xcworkspace/contents.xcworkspacedata b/Example/Example.xcworkspace/contents.xcworkspacedata similarity index 76% rename from Example/GradientLoadingBar.xcworkspace/contents.xcworkspacedata rename to Example/Example.xcworkspace/contents.xcworkspacedata index 15907d8..a37cf19 100644 --- a/Example/GradientLoadingBar.xcworkspace/contents.xcworkspacedata +++ b/Example/Example.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:Example.xcodeproj"> diff --git a/Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Example/Pods/Pods.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Example/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist 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..82786fc --- /dev/null +++ b/Example/Example/ExampleApp.swift @@ -0,0 +1,31 @@ +// +// ExampleApp.swift +// Example +// +// Created by Felix Mau on 07.03.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..9ae3a94 --- /dev/null +++ b/Example/Example/Scenes/AdvancedExample/AdvancedExample.storyboard @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Example/Scenes/AdvancedExample/AdvancedExampleTableViewController.swift b/Example/Example/Scenes/AdvancedExample/AdvancedExampleTableViewController.swift new file mode 100644 index 0000000..e4448ba --- /dev/null +++ b/Example/Example/Scenes/AdvancedExample/AdvancedExampleTableViewController.swift @@ -0,0 +1,138 @@ +// +// AdvancedExampleTableViewController.swift +// Example +// +// Created by Felix Mau on 12.04.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import UIKit +import SwiftUI +import GradientLoadingBar + +final class AdvancedExampleTableViewController: UITableViewController { + // MARK: - Config + + private enum Config { + /// The custom gradient colors we use. + /// 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 firstSectionHeaderHeight: CGFloat = 48 + + /// + static let defaultSectionHeaderHeight: CGFloat = 32 + } + + // MARK: - Types + + private enum Section: CaseIterable { + case customColors + case interfaceBuilderSetup + case customSuperview + + var cellIdentifier: String { + switch self { + case .customColors: + return CustomColorsTableViewCell.reuseIdentifier + + case .interfaceBuilderSetup: + return InterfaceBuilderSetupTableViewCell.reuseIdentifier + + case .customSuperview: + return CustomSuperviewTableViewCell.reuseIdentifier + } + } + + var sectionTitle: String { + switch self { + case .customColors: + return "Custom Colors" + + case .interfaceBuilderSetup: + return "Interface Builder Setup" + + case .customSuperview: + return "Custom Superview" + } + } + + var sectionHeaderHeight: CGFloat { + switch self { + case .customColors: + return Config.firstSectionHeaderHeight + + case .interfaceBuilderSetup, .customSuperview: + return Config.defaultSectionHeaderHeight + } + } + } + + // MARK: - Private properties + + private let gradientLoadingBar = GradientLoadingBar() + + // MARK: - Public methods + + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = .systemGroupedBackground + + gradientLoadingBar.gradientColors = Config.gradientColors + } + + // MARK: - Table view data source + + override func numberOfSections(in _: UITableView) -> Int { + Section.allCases.count + } + + override func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int { + 1 + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let section = Section.allCases[indexPath.section] + switch section { + case .customColors: + guard let cell = tableView.dequeueReusableCell(withIdentifier: section.cellIdentifier, for: indexPath) as? CustomColorsTableViewCell else { + fatalError("⚠️ – Invalid table view setup. Expected to have `CustomColorsTableViewCell` at this point!") + } + + cell.tapHandler = { [weak self] in + if self?.gradientLoadingBar.isHidden == true { + self?.gradientLoadingBar.fadeIn() + } else { + self?.gradientLoadingBar.fadeOut() + } + } + + return cell + + case .interfaceBuilderSetup, .customSuperview: + return tableView.dequeueReusableCell(withIdentifier: section.cellIdentifier, for: indexPath) + } + } + + override func tableView(_: UITableView, titleForHeaderInSection section: Int) -> String? { + Section.allCases[section].sectionTitle + } + + override func tableView(_: UITableView, heightForHeaderInSection section: Int) -> CGFloat { + Section.allCases[section].sectionHeaderHeight + } +} + +// MARK: - Helper + +struct AdvancedExampleView: View { + var body: some View { + StoryboardView(name: "AdvancedExample") + .navigationTitle("🚀 Advanced Example") + .edgesIgnoringSafeArea(.bottom) + } +} diff --git a/Example/Example/Scenes/AdvancedExample/Cells/CustomColorsTableViewCell.swift b/Example/Example/Scenes/AdvancedExample/Cells/CustomColorsTableViewCell.swift new file mode 100644 index 0000000..7a6880a --- /dev/null +++ b/Example/Example/Scenes/AdvancedExample/Cells/CustomColorsTableViewCell.swift @@ -0,0 +1,23 @@ +// +// CustomColorsTableViewCell.swift +// Example +// +// Created by Felix Mau on 15.04.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import UIKit + +final class CustomColorsTableViewCell: UITableViewCell { + // MARK: - Public properties + + static let reuseIdentifier = "CustomColorsTableViewCell" + + var tapHandler: (() -> Void)? + + // MARK: - Private methods + + @IBAction private func customColorsButtonTouchUpInside(_: Any) { + tapHandler?() + } +} diff --git a/Example/Example/Scenes/AdvancedExample/Cells/CustomSuperviewTableViewCell.swift b/Example/Example/Scenes/AdvancedExample/Cells/CustomSuperviewTableViewCell.swift new file mode 100644 index 0000000..c2333f6 --- /dev/null +++ b/Example/Example/Scenes/AdvancedExample/Cells/CustomSuperviewTableViewCell.swift @@ -0,0 +1,61 @@ +// +// CustomSuperviewTableViewCell.swift +// Example +// +// Created by Felix Mau on 15.04.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import UIKit +import GradientLoadingBar + +final class CustomSuperviewTableViewCell: UITableViewCell { + // MARK: - Config + + private enum Config { + static let height: CGFloat = 3 + } + + // MARK: - Outlets + + @IBOutlet private var toggleButton: UIButton! + + // MARK: - Public properties + + static let reuseIdentifier = "CustomSuperviewViewCell" + + // MARK: - Private properties + + private let gradientActivityIndicatorView = GradientActivityIndicatorView() + + // MARK: - Public methods + + override func awakeFromNib() { + super.awakeFromNib() + + setupGradientActivityIndicatorView() + } + + // MARK: - Private methods + + private func setupGradientActivityIndicatorView() { + gradientActivityIndicatorView.translatesAutoresizingMaskIntoConstraints = false + toggleButton.addSubview(gradientActivityIndicatorView) + + NSLayoutConstraint.activate([ + gradientActivityIndicatorView.leadingAnchor.constraint(equalTo: toggleButton.leadingAnchor), + gradientActivityIndicatorView.trailingAnchor.constraint(equalTo: toggleButton.trailingAnchor), + + gradientActivityIndicatorView.bottomAnchor.constraint(equalTo: toggleButton.bottomAnchor), + gradientActivityIndicatorView.heightAnchor.constraint(equalToConstant: Config.height), + ]) + } + + @IBAction private func toggleButtonTouchUpInside(_: Any) { + if gradientActivityIndicatorView.isHidden { + gradientActivityIndicatorView.fadeIn() + } else { + gradientActivityIndicatorView.fadeOut() + } + } +} diff --git a/Example/Example/Scenes/AdvancedExample/Cells/InterfaceBuilderSetupTableViewCell.swift b/Example/Example/Scenes/AdvancedExample/Cells/InterfaceBuilderSetupTableViewCell.swift new file mode 100644 index 0000000..ae4f5f0 --- /dev/null +++ b/Example/Example/Scenes/AdvancedExample/Cells/InterfaceBuilderSetupTableViewCell.swift @@ -0,0 +1,40 @@ +// +// InterfaceBuilderSetupTableViewCell.swift +// Example +// +// Created by Felix Mau on 15.04.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import UIKit +import GradientLoadingBar + +final class InterfaceBuilderSetupTableViewCell: UITableViewCell { + // MARK: - Config + + private enum Config { + static let animationDuration: TimeInterval = 0.5 + } + + // MARK: - Outlets + + @IBOutlet private var gradientActivityIndicator: GradientActivityIndicatorView! + + // MARK: - Public properties + + static let reuseIdentifier = "InterfaceBuilderSetupTableViewCell" + + // MARK: - Private methods + + @IBAction private func toggleIBSetupButtonTouchUpInside(_: Any) { + // We explicitly "only" reduce the alpha here, as calling `fadeIn()` / `fadeOut()` would update the `isHidden` + // flag accordingly. This would then lead to a height-update of the parent stack view. + UIView.animate(withDuration: Config.animationDuration) { + if self.gradientActivityIndicator.alpha > 0 { + self.gradientActivityIndicator.alpha = 0 + } else { + self.gradientActivityIndicator.alpha = 1 + } + } + } +} diff --git a/Example/Example/Scenes/AdvancedExample/Views/BorderedButton.swift b/Example/Example/Scenes/AdvancedExample/Views/BorderedButton.swift new file mode 100644 index 0000000..31a180f --- /dev/null +++ b/Example/Example/Scenes/AdvancedExample/Views/BorderedButton.swift @@ -0,0 +1,46 @@ +// +// BorderedButton.swift +// Example +// +// Created by Felix Mau on 15.04.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import UIKit + +@IBDesignable +final class BorderedButton: UIButton { + // MARK: - Config + + private enum Config { + static let borderColor = #colorLiteral(red: 0.2862745098, green: 0.5647058824, blue: 0.8862745098, alpha: 1) + static let borderWidth: CGFloat = 1 + static let cornerRadius: CGFloat = 4 + } + + // MARK: - Initializer + + override init(frame: CGRect) { + super.init(frame: frame) + + commonInit() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + + commonInit() + } + + // MARK: - Private methods + + private func commonInit() { + backgroundColor = .clear + tintColor = Config.borderColor + + layer.borderColor = Config.borderColor.cgColor + layer.borderWidth = Config.borderWidth + layer.cornerRadius = Config.cornerRadius + layer.masksToBounds = true + } +} diff --git a/Example/Example/Scenes/BasicExample/BasicExample.storyboard b/Example/Example/Scenes/BasicExample/BasicExample.storyboard new file mode 100644 index 0000000..857b4b5 --- /dev/null +++ b/Example/Example/Scenes/BasicExample/BasicExample.storyboard @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/GradientLoadingBar/BasicExampleViewController.swift b/Example/Example/Scenes/BasicExample/BasicExampleViewController.swift similarity index 52% rename from Example/GradientLoadingBar/BasicExampleViewController.swift rename to Example/Example/Scenes/BasicExample/BasicExampleViewController.swift index 1287eb7..a7fae8a 100644 --- a/Example/GradientLoadingBar/BasicExampleViewController.swift +++ b/Example/Example/Scenes/BasicExample/BasicExampleViewController.swift @@ -1,23 +1,27 @@ // // BasicExampleViewController.swift -// GradientLoadingBar_Example +// Example // -// Created by Felix Mau on 30.09.17. -// Copyright © 2017 Felix Mau. All rights reserved. +// Created by Felix Mau on 07.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. // import UIKit +import SwiftUI import GradientLoadingBar -class BasicExampleViewController: UIViewController { +final class BasicExampleViewController: UIViewController { // MARK: - Public methods override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) + // Reset any possible visible loading bar. GradientLoadingBar.shared.fadeOut() } + // MARK: - Private methods + @IBAction private func showButtonTouchUpInside(_: Any) { GradientLoadingBar.shared.fadeIn() } @@ -26,3 +30,12 @@ class BasicExampleViewController: UIViewController { GradientLoadingBar.shared.fadeOut() } } + +// 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..6f7928b --- /dev/null +++ b/Example/Example/Scenes/EntryPointView.swift @@ -0,0 +1,94 @@ +// +// EntryPointView.swift +// Example +// +// Created by Felix Mau on 07.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI + +struct EntryPointView: View { + // MARK: - Private properties + + @State + private var isNavigationBarExampleVisible = false + + // MARK: - Render + + var body: some View { + NavigationView { + List { + Section(header: Text("UIKit Examples")) { + NavigationLink(destination: BasicExampleView()) { + TitleSubtitleView(title: "🏡 Basic Example", + subtitle: "Basic usage and setup.") + } + + NavigationLink(destination: SafeAreaExampleView()) { + TitleSubtitleView(title: "📲 Safe Area Example", + subtitle: "Loading bar ignoring the safe area.") + } + + NavigationLink(destination: AdvancedExampleView()) { + TitleSubtitleView(title: "🚀 Advanced Example", + subtitle: "How to apply e.g. custom colors.") + } + + Button { + isNavigationBarExampleVisible = true + } label: { + TitleSubtitleView(title: "🧭 Navigation Bar Example", + subtitle: "Attach the loading bar to a navigation bar.") + // Make entire row tappable and not just the text. + .frame(maxWidth: .infinity, alignment: .leading) + .contentShape(Rectangle()) + } + .buttonStyle(PlainButtonStyle()) + } + + Section(header: Text("SwiftUI Examples")) { + NavigationLink(destination: SwiftUIExampleView()) { + TitleSubtitleView(title: "🎨 GradientLoadingBarView Example", + subtitle: "How to use the SwiftUI view.") + } + } + } + // We present the `NavigationBarExampleView` 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: $isNavigationBarExampleVisible) { + NavigationBarExampleView() + } + // 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/NavigationBarExample/NavigationBarExample.storyboard b/Example/Example/Scenes/NavigationBarExample/NavigationBarExample.storyboard new file mode 100644 index 0000000..1b41d19 --- /dev/null +++ b/Example/Example/Scenes/NavigationBarExample/NavigationBarExample.storyboard @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/GradientLoadingBar/NavigationBarExampleViewController.swift b/Example/Example/Scenes/NavigationBarExample/NavigationBarExampleViewController.swift similarity index 72% rename from Example/GradientLoadingBar/NavigationBarExampleViewController.swift rename to Example/Example/Scenes/NavigationBarExample/NavigationBarExampleViewController.swift index 1b23060..200cbb4 100644 --- a/Example/GradientLoadingBar/NavigationBarExampleViewController.swift +++ b/Example/Example/Scenes/NavigationBarExample/NavigationBarExampleViewController.swift @@ -1,15 +1,16 @@ // // NavigationBarExampleViewController.swift -// GradientLoadingBar_Example +// Example // -// Created by Felix Mau on 29.08.18. -// Copyright © 2018 Felix Mau. All rights reserved. +// Created by Felix Mau on 07.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. // import UIKit +import SwiftUI import GradientLoadingBar -class NavigationBarExampleViewController: UIViewController { +final class NavigationBarExampleViewController: UIViewController { // MARK: - Config private enum Config { @@ -26,20 +27,16 @@ class NavigationBarExampleViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + let barButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneButtonTapped)) + navigationItem.rightBarButtonItem = barButtonItem + setupGradientProgressIndicatorView() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) - gradientProgressIndicatorView.fadeOut() - } - - @IBAction private func showButtonTouchUpInside(_: Any) { - gradientProgressIndicatorView.fadeIn() - } - - @IBAction private func hideButtonTouchUpInside(_: Any) { + // Reset any possible visible loading bar. gradientProgressIndicatorView.fadeOut() } @@ -48,8 +45,6 @@ class NavigationBarExampleViewController: UIViewController { private func setupGradientProgressIndicatorView() { guard let navigationBar = navigationController?.navigationBar else { return } - gradientProgressIndicatorView.fadeOut(duration: 0) - gradientProgressIndicatorView.translatesAutoresizingMaskIntoConstraints = false navigationBar.addSubview(gradientProgressIndicatorView) @@ -61,4 +56,24 @@ class NavigationBarExampleViewController: UIViewController { gradientProgressIndicatorView.heightAnchor.constraint(equalToConstant: Config.height), ]) } + + @IBAction private func doneButtonTapped(_: Any) { + dismiss(animated: true) + } + + @IBAction private func showButtonTouchUpInside(_: Any) { + gradientProgressIndicatorView.fadeIn() + } + + @IBAction private func hideButtonTouchUpInside(_: Any) { + gradientProgressIndicatorView.fadeOut() + } +} + +// MARK: - Helpers + +struct NavigationBarExampleView: View { + var body: some View { + StoryboardView(name: "NavigationBarExample") + } } diff --git a/Example/Example/Scenes/SafeAreaExample/SafeAreaExample.storyboard b/Example/Example/Scenes/SafeAreaExample/SafeAreaExample.storyboard new file mode 100644 index 0000000..82f76d0 --- /dev/null +++ b/Example/Example/Scenes/SafeAreaExample/SafeAreaExample.storyboard @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/GradientLoadingBar/SafeAreaExampleViewController.swift b/Example/Example/Scenes/SafeAreaExample/SafeAreaExampleViewController.swift similarity index 68% rename from Example/GradientLoadingBar/SafeAreaExampleViewController.swift rename to Example/Example/Scenes/SafeAreaExample/SafeAreaExampleViewController.swift index 48ad54c..ce54bdb 100644 --- a/Example/GradientLoadingBar/SafeAreaExampleViewController.swift +++ b/Example/Example/Scenes/SafeAreaExample/SafeAreaExampleViewController.swift @@ -1,19 +1,19 @@ // // SafeAreaExampleViewController.swift -// GradientLoadingBar_Example +// Example // -// Created by Felix Mau on 30.08.18. -// Copyright © 2018 Felix Mau. All rights reserved. +// Created by Felix Mau on 07.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. // import UIKit +import SwiftUI import GradientLoadingBar -class SafeAreaExampleViewController: UIViewController { +final class SafeAreaExampleViewController: UIViewController { // MARK: - Private properties private let gradientLoadingBar = GradientLoadingBar(isRelativeToSafeArea: false) - private let notchGradientLoadingBar = NotchGradientLoadingBar(isRelativeToSafeArea: false) // MARK: - Public methods @@ -21,10 +21,13 @@ class SafeAreaExampleViewController: UIViewController { override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) + // Reset any possible visible loading bar. gradientLoadingBar.fadeOut() notchGradientLoadingBar.fadeOut() } + // MARK: - Private methods + @IBAction private func showBasicBarButtonTouchUpInside(_: Any) { gradientLoadingBar.fadeIn() } @@ -41,3 +44,12 @@ class SafeAreaExampleViewController: UIViewController { notchGradientLoadingBar.fadeOut() } } + +// MARK: - Helpers + +struct SafeAreaExampleView: View { + var body: some View { + StoryboardView(name: "SafeAreaExample") + .navigationTitle("📲 Safe Area Example") + } +} diff --git a/Example/Example/Scenes/SwiftUIExample/SwiftUIExampleView.swift b/Example/Example/Scenes/SwiftUIExample/SwiftUIExampleView.swift new file mode 100644 index 0000000..a91709f --- /dev/null +++ b/Example/Example/Scenes/SwiftUIExample/SwiftUIExampleView.swift @@ -0,0 +1,172 @@ +// +// SwiftUIExampleView.swift +// Example +// +// Created by Felix Mau on 07.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI +import GradientLoadingBar + +struct SwiftUIExampleView: View { + // MARK: - Render + + var body: some View { + List { + Section(header: Text("Default example")) { + DefaultExampleView() + } + + Section(header: Text("Custom colors")) { + CustomColorsExampleView() + } + + Section(header: Text("Custom animation duration")) { + CustomProgressDurationExampleView() + } + } + .navigationTitle("🎨 SwiftUI Example") + } +} + +// MARK: - Subviews + +private struct DefaultExampleView: View { + @State + private var isVisible = true + + var body: some View { + VStack(spacing: 16) { + Text("Example using the default configuration.") + .frame(maxWidth: .infinity, alignment: .leading) + + GradientLoadingBarView() + .frame(maxWidth: .infinity, maxHeight: 3) + .cornerRadius(1.5) + .opacity(isVisible ? 1 : 0) + + HStack(spacing: 16) { + Button("Show") { + withAnimation(.easeInOut) { + isVisible = true + } + } + .buttonStyle(RoundedRectangleButtonStyle()) + + Button("Hide") { + withAnimation(.easeInOut) { + isVisible = false + } + } + .buttonStyle(RoundedRectangleButtonStyle()) + } + } + .padding(.horizontal, 8) + .padding(.vertical, 16) + } +} + +private struct CustomColorsExampleView: View { + private enum Config { + /// The custom gradient colors we use. + /// 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) + } + + @State + private var isVisible = true + + var body: some View { + VStack(spacing: 16) { + Text("Example showing how to provide custom gradient colors.") + .frame(maxWidth: .infinity, alignment: .leading) + + GradientLoadingBarView(gradientColors: Config.gradientColors) + .frame(maxWidth: .infinity, maxHeight: 3) + .cornerRadius(1.5) + .opacity(isVisible ? 1 : 0) + + HStack(spacing: 16) { + Button("Show") { + withAnimation(.easeInOut) { + isVisible = true + } + } + .buttonStyle(RoundedRectangleButtonStyle()) + + Button("Hide") { + withAnimation(.easeInOut) { + isVisible = false + } + } + .buttonStyle(RoundedRectangleButtonStyle()) + } + } + .padding(.horizontal, 8) + .padding(.vertical, 16) + } +} + +private struct CustomProgressDurationExampleView: View { + private enum Config { + /// The custom progress duration to use. + static let progressDuration: TimeInterval = 10 + } + + @State + private var isVisible = true + + var body: some View { + VStack(spacing: 16) { + Text("Example showing how to provide a custom progress animation duration.") + .frame(maxWidth: .infinity, alignment: .leading) + + GradientLoadingBarView(progressDuration: Config.progressDuration) + .frame(maxWidth: .infinity, maxHeight: 3) + .cornerRadius(1.5) + .opacity(isVisible ? 1 : 0) + + HStack(spacing: 16) { + Button("Show") { + withAnimation(.easeInOut) { + isVisible = true + } + } + .buttonStyle(RoundedRectangleButtonStyle()) + + Button("Hide") { + withAnimation(.easeInOut) { + isVisible = false + } + } + .buttonStyle(RoundedRectangleButtonStyle()) + } + } + .padding(.horizontal, 8) + .padding(.vertical, 16) + } +} + +// MARK: - Helper + +private struct RoundedRectangleButtonStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .padding(12) + .frame(maxWidth: .infinity) + .foregroundColor(.white) + .background(Color.blue.cornerRadius(8)) + .scaleEffect(configuration.isPressed ? 0.95 : 1) + } +} + +// MARK: - Preview + +struct SwiftUIExampleView_Previews: PreviewProvider { + static var previews: some View { + SwiftUIExampleView() + } +} diff --git a/Example/ExampleSnapshotTests/GradientActivityIndicatorView/GradientActivityIndicatorViewTestCase.swift b/Example/ExampleSnapshotTests/GradientActivityIndicatorView/GradientActivityIndicatorViewTestCase.swift new file mode 100644 index 0000000..8617c5f --- /dev/null +++ b/Example/ExampleSnapshotTests/GradientActivityIndicatorView/GradientActivityIndicatorViewTestCase.swift @@ -0,0 +1,55 @@ +// +// GradientActivityIndicatorViewTestCase.swift +// ExampleSnapshotTests +// +// Created by Felix Mau on 09.11.19. +// Copyright © 2019 Felix Mau. All rights reserved. +// + +import XCTest +import SnapshotTesting + +@testable import GradientLoadingBar + +final class GradientActivityIndicatorViewTestCase: XCTestCase { + // MARK: - Config + + private enum Config { + /// The frame we use for rendering the `GradientActivityIndicatorView`. + /// This will also be the image size for our snapshot. + static let frame = CGRect(origin: .zero, size: CGSize(width: 375, height: 4)) + + /// 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), + ] + } + + // MARK: - Test cases + + func test_gradientActivityIndicatorView_shouldContainCorrectDefaultColors() { + // Given + let gradientActivityIndicatorView = GradientActivityIndicatorView(frame: Config.frame) + + // We're only interested in the initial state containing the correct gradient-colors. + // Therefore we're gonna remove the progress animation. + gradientActivityIndicatorView.layer.removeAllAnimations() + + // Then + assertSnapshot(matching: gradientActivityIndicatorView, as: .image) + } + + func test_gradientActivityIndicatorView_shouldContainCorrectCustomColors() { + // Given + let gradientActivityIndicatorView = GradientActivityIndicatorView(frame: Config.frame) + gradientActivityIndicatorView.gradientColors = Config.gradientColors + + // We're only interested in the initial state containing the correct gradient-colors. + // Therefore we're gonna remove the progress animation. + gradientActivityIndicatorView.layer.removeAllAnimations() + + // Then + assertSnapshot(matching: gradientActivityIndicatorView, as: .image) + } +} diff --git a/Example/SnapshotTests/GradientActivityIndicatorView/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png b/Example/ExampleSnapshotTests/GradientActivityIndicatorView/__Snapshots__/GradientActivityIndicatorViewTestCase/test_gradientActivityIndicatorView_shouldContainCorrectCustomColors.1.png similarity index 100% rename from Example/SnapshotTests/GradientActivityIndicatorView/__Snapshots__/CustomColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png rename to Example/ExampleSnapshotTests/GradientActivityIndicatorView/__Snapshots__/GradientActivityIndicatorViewTestCase/test_gradientActivityIndicatorView_shouldContainCorrectCustomColors.1.png diff --git a/Example/SnapshotTests/GradientActivityIndicatorView/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png b/Example/ExampleSnapshotTests/GradientActivityIndicatorView/__Snapshots__/GradientActivityIndicatorViewTestCase/test_gradientActivityIndicatorView_shouldContainCorrectDefaultColors.1.png similarity index 100% rename from Example/SnapshotTests/GradientActivityIndicatorView/__Snapshots__/DefaultColorSnapshotTestCase/testGradientProgressIndicatorViewShouldContainCorrectColorsInitially.1.png rename to Example/ExampleSnapshotTests/GradientActivityIndicatorView/__Snapshots__/GradientActivityIndicatorViewTestCase/test_gradientActivityIndicatorView_shouldContainCorrectDefaultColors.1.png diff --git a/Example/ExampleSnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift b/Example/ExampleSnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift new file mode 100644 index 0000000..8ab8aaf --- /dev/null +++ b/Example/ExampleSnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift @@ -0,0 +1,43 @@ +// +// GradientLoadingBarControllerTestCase.swift +// ExampleSnapshotTests +// +// Created by Felix Mau on 14.06.20. +// Copyright © 2020 Felix Mau. All rights reserved. +// + +import XCTest +import SnapshotTesting + +@testable import GradientLoadingBar + +final class GradientLoadingBarControllerTestCase: XCTestCase { + // MARK: - Config + + private enum Config { + /// The percentage of pixels that must match. + static let precision: Float = 0.99 + } + + // MARK: - Test cases + + func test_gradientLoadingBarController() { + // Given + let rootViewController = UIViewController() + let gradientLoadingBarController = GradientLoadingBarController() + + // When + gradientLoadingBarController.fadeIn(duration: 0) + + let expectation = expectation(description: "Wait for view to appear.") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + expectation.fulfill() + } + + // Then + wait(for: [expectation], timeout: 1) + + assertSnapshot(matching: rootViewController, + as: .image(drawHierarchyInKeyWindow: true, precision: Config.precision)) + } +} diff --git a/Example/ExampleSnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift b/Example/ExampleSnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift new file mode 100644 index 0000000..49c744e --- /dev/null +++ b/Example/ExampleSnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift @@ -0,0 +1,45 @@ +// +// NotchGradientLoadingBarControllerTestCase.swift +// ExampleSnapshotTests +// +// Created by Felix Mau on 14.06.20. +// Copyright © 2020 Felix Mau. All rights reserved. +// + +import XCTest +import SnapshotTesting + +@testable import GradientLoadingBar + +final class NotchGradientLoadingBarControllerTestCase: XCTestCase { + // swiftlint:disable:previous type_name + + // MARK: - Config + + private enum Config { + /// The percentage of pixels that must match. + static let precision: Float = 0.99 + } + + // MARK: - Test cases + + func test_notchGradientLoadingBarController() { + // Given + let rootViewController = UIViewController() + let notchGradientLoadingBarController = NotchGradientLoadingBarController() + + // When + notchGradientLoadingBarController.fadeIn(duration: 0) + + let expectation = expectation(description: "Wait for view to appear.") + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + expectation.fulfill() + } + + // Then + wait(for: [expectation], timeout: 1) + + assertSnapshot(matching: rootViewController, + as: .image(drawHierarchyInKeyWindow: true, precision: Config.precision)) + } +} diff --git a/Example/ExampleSnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/test_gradientLoadingBarController.1.png b/Example/ExampleSnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/test_gradientLoadingBarController.1.png new file mode 100644 index 0000000..bef75cf Binary files /dev/null and b/Example/ExampleSnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/test_gradientLoadingBarController.1.png differ diff --git a/Example/ExampleSnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/test_notchGradientLoadingBarController.1.png b/Example/ExampleSnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/test_notchGradientLoadingBarController.1.png new file mode 100644 index 0000000..92d0b79 Binary files /dev/null and b/Example/ExampleSnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/test_notchGradientLoadingBarController.1.png differ diff --git a/Example/ExampleSnapshotTests/GradientLoadingBarView/GradientLoadingBarViewTestCase.swift b/Example/ExampleSnapshotTests/GradientLoadingBarView/GradientLoadingBarViewTestCase.swift new file mode 100644 index 0000000..dbe028a --- /dev/null +++ b/Example/ExampleSnapshotTests/GradientLoadingBarView/GradientLoadingBarViewTestCase.swift @@ -0,0 +1,53 @@ +// +// GradientLoadingBarViewTestCase.swift +// ExampleSnapshotTests +// +// Created by Felix Mau on 10.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import XCTest +import SwiftUI +import SnapshotTesting + +@testable import GradientLoadingBar + +final class GradientLoadingBarViewTestCase: XCTestCase { + // MARK: - Config + + private enum Config { + /// The frame we use for rendering the `GradientLoadingBarView`. + /// This will also be the image size for our snapshot. + static let frame = CGRect(origin: .zero, size: CGSize(width: 375, height: 4)) + + /// 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) + + /// The percentage of pixels that must match. + /// We explicitly reduce the precision for the custom colors test case here, to avoid flaky tests. + static let customColorsPrecision: Float = 0.99 + } + + // MARK: - Test cases + + func test_gradientLoadingBarView_shouldContainCorrectDefaultColors() { + // Given + let gradientLoadingBarView = GradientLoadingBarView() + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: gradientLoadingBarView, as: .image) + } + + func test_gradientLoadingBarView_shouldContainCorrectCustomColors() { + // Given + let gradientLoadingBarView = GradientLoadingBarView(gradientColors: Config.gradientColors) + .frame(width: Config.frame.width, height: Config.frame.height) + + // Then + assertSnapshot(matching: gradientLoadingBarView, as: .image(precision: Config.customColorsPrecision)) + } +} diff --git a/Example/ExampleSnapshotTests/GradientLoadingBarView/__Snapshots__/GradientLoadingBarViewTestCase/test_gradientLoadingBarView_shouldContainCorrectCustomColors.1.png b/Example/ExampleSnapshotTests/GradientLoadingBarView/__Snapshots__/GradientLoadingBarViewTestCase/test_gradientLoadingBarView_shouldContainCorrectCustomColors.1.png new file mode 100644 index 0000000..98dc62a Binary files /dev/null and b/Example/ExampleSnapshotTests/GradientLoadingBarView/__Snapshots__/GradientLoadingBarViewTestCase/test_gradientLoadingBarView_shouldContainCorrectCustomColors.1.png differ diff --git a/Example/ExampleSnapshotTests/GradientLoadingBarView/__Snapshots__/GradientLoadingBarViewTestCase/test_gradientLoadingBarView_shouldContainCorrectDefaultColors.1.png b/Example/ExampleSnapshotTests/GradientLoadingBarView/__Snapshots__/GradientLoadingBarViewTestCase/test_gradientLoadingBarView_shouldContainCorrectDefaultColors.1.png new file mode 100644 index 0000000..effddff Binary files /dev/null and b/Example/ExampleSnapshotTests/GradientLoadingBarView/__Snapshots__/GradientLoadingBarViewTestCase/test_gradientLoadingBarView_shouldContainCorrectDefaultColors.1.png differ 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/Tests/ViewModel/GradientActivityIndicatorViewModelTestCase.swift b/Example/ExampleTests/ViewModel/GradientActivityIndicatorViewModelTestCase.swift similarity index 99% rename from Example/Tests/ViewModel/GradientActivityIndicatorViewModelTestCase.swift rename to Example/ExampleTests/ViewModel/GradientActivityIndicatorViewModelTestCase.swift index 826b11c..76a1e2e 100644 --- a/Example/Tests/ViewModel/GradientActivityIndicatorViewModelTestCase.swift +++ b/Example/ExampleTests/ViewModel/GradientActivityIndicatorViewModelTestCase.swift @@ -1,6 +1,6 @@ // // GradientActivityIndicatorViewModelTestCase.swift -// GradientLoadingBar_Tests +// ExampleTests // // Created by Felix Mau on 26.08.19. // Copyright © 2019 Felix Mau. All rights reserved. diff --git a/Example/ExampleTests/ViewModel/GradientLoadingBarView+ViewModelTestCase.swift b/Example/ExampleTests/ViewModel/GradientLoadingBarView+ViewModelTestCase.swift new file mode 100644 index 0000000..0ce7431 --- /dev/null +++ b/Example/ExampleTests/ViewModel/GradientLoadingBarView+ViewModelTestCase.swift @@ -0,0 +1,81 @@ +// +// GradientLoadingBarView+ViewModelTestCase.swift +// ExampleTests +// +// Created by Felix Mau on 22.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import XCTest +import SwiftUI + +@testable import GradientLoadingBar + +// swiftlint:disable:next type_name +final class GradientLoadingBarView_ViewModelTestCase: XCTestCase { + // MARK: - Test property `gradientColors` + + func test_initialGradientColors_shouldIncludeReversedGradientColors() { + // Given + let gradientColors: [Color] = [.red, .yellow, .green] + + // When + let viewModel = GradientLoadingBarView.ViewModel(gradientColors: gradientColors, progressDuration: 1) + + // Then + let expectedGradientColors: [Color] = [.red, .yellow, .green, .yellow, .red, .yellow, .green] + XCTAssertEqual(viewModel.gradientColors, expectedGradientColors) + } + + // MARK: - Test property `horizontalOffset` + + func test_initialHorizontalOffset_shouldBeZero() { + // When + let viewModel = GradientLoadingBarView.ViewModel(gradientColors: [], progressDuration: 1) + + // Then + XCTAssertEqual(viewModel.horizontalOffset, 0) + } + + func test_settingSize_shouldUpdateHorizontalOffset() { + // Given + let viewModel = GradientLoadingBarView.ViewModel(gradientColors: [], progressDuration: 1) + let size = CGSize(width: .random(in: 1 ... 100_000), height: .random(in: 1 ... 100_000)) + + var receivedValues = [CGFloat]() + let subscription = viewModel.$horizontalOffset.sink { + receivedValues.append($0) + } + + withExtendedLifetime(subscription) { + // When + viewModel.size = size + } + + // Then + let expectedValues = [0, -size.width, size.width] + XCTAssertEqual(receivedValues, expectedValues) + } + + // MARK: - Test property `gradientWidth` + + func test_initialGradientWidth_shouldBeZero() { + // When + let viewModel = GradientLoadingBarView.ViewModel(gradientColors: [], progressDuration: 1) + + // Then + XCTAssertEqual(viewModel.gradientWidth, 0) + } + + func test_settingSize_shouldUpdateGradientWidth() { + // Given + let viewModel = GradientLoadingBarView.ViewModel(gradientColors: [], progressDuration: 1) + let size = CGSize(width: .random(in: 1 ... 100_000), height: .random(in: 1 ... 100_000)) + + // When + viewModel.size = size + + // Then + XCTAssertEqual(viewModel.gradientWidth, size.width * 3) + } +} diff --git a/Example/Tests/ViewModel/GradientLoadingBarViewModelTestCase.swift b/Example/ExampleTests/ViewModel/GradientLoadingBarViewModelTestCase.swift similarity index 73% rename from Example/Tests/ViewModel/GradientLoadingBarViewModelTestCase.swift rename to Example/ExampleTests/ViewModel/GradientLoadingBarViewModelTestCase.swift index dc8061b..2b923e0 100644 --- a/Example/Tests/ViewModel/GradientLoadingBarViewModelTestCase.swift +++ b/Example/ExampleTests/ViewModel/GradientLoadingBarViewModelTestCase.swift @@ -1,6 +1,6 @@ // // GradientLoadingBarViewModelTestCase.swift -// GradientLoadingBar_Tests +// ExampleTests // // Created by Felix Mau on 26.12.17. // Copyright © 2017 Felix Mau. All rights reserved. @@ -11,7 +11,7 @@ import LightweightObservable @testable import GradientLoadingBar -class GradientLoadingBarViewModelTestCase: XCTestCase { +final class GradientLoadingBarViewModelTestCase: XCTestCase { // MARK: - Private properties private var sharedApplicationMock: SharedApplicationMock! @@ -35,7 +35,7 @@ class GradientLoadingBarViewModelTestCase: XCTestCase { // MARK: - Test observable `superview` - func testInitializerShouldSetupSuperviewObservableNil() throws { + func test_initializer_shouldSetupSuperviewObservable_withNil() throws { // When let viewModel = GradientLoadingBarViewModel(sharedApplication: sharedApplicationMock, notificationCenter: notificationCenter) @@ -45,13 +45,10 @@ class GradientLoadingBarViewModelTestCase: XCTestCase { XCTAssertNil(variable.value) } - func testInitializerShouldSetupSuperviewObservableWithKeyWindow() { + func test_initializer_shouldSetupSuperviewObservable_withKeyWindow() { // Given let keyWindow = UIWindow() - keyWindow.makeKey() - - let otherWindow = UIWindow() - sharedApplicationMock.windows = [keyWindow, otherWindow] + sharedApplicationMock.keyWindowInConnectedScenes = keyWindow // When let viewModel = GradientLoadingBarViewModel(sharedApplication: sharedApplicationMock, @@ -61,19 +58,17 @@ class GradientLoadingBarViewModelTestCase: XCTestCase { XCTAssertEqual(viewModel.superview.value, keyWindow) } - func testInitializerShouldSetupSuperviewObservableAfterUIWindowDidBecomeKeyNotification() { + func test_initializer_shouldSetupSuperviewObservable_afterUIWindowDidBecomeKeyNotification() { // Given - let keyWindow = UIWindow() - keyWindow.makeKey() - - let otherWindow = UIWindow() - sharedApplicationMock.windows = [otherWindow] + sharedApplicationMock.keyWindowInConnectedScenes = nil let viewModel = GradientLoadingBarViewModel(sharedApplication: sharedApplicationMock, notificationCenter: notificationCenter) // When - sharedApplicationMock.windows.append(keyWindow) + let keyWindow = UIWindow() + sharedApplicationMock.keyWindowInConnectedScenes = keyWindow + notificationCenter.post(name: UIWindow.didBecomeKeyNotification, object: nil) @@ -81,18 +76,15 @@ class GradientLoadingBarViewModelTestCase: XCTestCase { XCTAssertEqual(viewModel.superview.value, keyWindow) } - func testDeinitShouldResetSuperviewObservableToNil() { + func test_deinit_shouldResetSuperviewObservable_withNil() { // Given let keyWindow = UIWindow() - keyWindow.makeKey() - - let otherWindow = UIWindow() - sharedApplicationMock.windows = [keyWindow, otherWindow] + sharedApplicationMock.keyWindowInConnectedScenes = keyWindow var viewModel: GradientLoadingBarViewModel? = GradientLoadingBarViewModel(sharedApplication: sharedApplicationMock, notificationCenter: notificationCenter) - let expectation = self.expectation(description: "Expected observer to be informed to reset superview to nil.") + let expectation = expectation(description: "Expected observer to be informed to reset superview to nil.") var disposeBag = DisposeBag() // As we've just initialized the view model it has to exist at this point, and therefore we can "safely" use force-unwrapping here. @@ -116,6 +108,6 @@ class GradientLoadingBarViewModelTestCase: XCTestCase { // MARK: - Mocks -private class SharedApplicationMock: UIApplicationProtocol { - var windows = [UIWindow]() +private final class SharedApplicationMock: UIApplicationProtocol { + var keyWindowInConnectedScenes: UIWindow? } diff --git a/Example/Tests/ViewModel/NotchGradientLoadingBarViewModelTestCase.swift b/Example/ExampleTests/ViewModel/NotchGradientLoadingBarViewModelTestCase.swift similarity index 83% rename from Example/Tests/ViewModel/NotchGradientLoadingBarViewModelTestCase.swift rename to Example/ExampleTests/ViewModel/NotchGradientLoadingBarViewModelTestCase.swift index ac3b2ce..9c7ace7 100644 --- a/Example/Tests/ViewModel/NotchGradientLoadingBarViewModelTestCase.swift +++ b/Example/ExampleTests/ViewModel/NotchGradientLoadingBarViewModelTestCase.swift @@ -1,6 +1,6 @@ // // NotchGradientLoadingBarViewModelTestCase.swift -// GradientLoadingBar_Tests +// ExampleTests // // Created by Felix Mau on 26.12.17. // Copyright © 2017 Felix Mau. All rights reserved. @@ -10,8 +10,8 @@ import XCTest @testable import GradientLoadingBar -class NotchGradientLoadingBarViewModelTestCase: XCTestCase { - func testInitializerShouldSetSafeAreaDeviceToIPhoneX() { +final class NotchGradientLoadingBarViewModelTestCase: XCTestCase { + func test_initializer_shouldSetSafeAreaDevice_toIPhoneX() { // Given let deviceIdentifiers = ["iPhone10,3", "iPhone10,6", "iPhone11,2", "iPhone11,4", "iPhone11,6"] deviceIdentifiers.forEach { deviceIdentifier in @@ -24,7 +24,7 @@ class NotchGradientLoadingBarViewModelTestCase: XCTestCase { } } - func testInitializerShouldSetSafeAreaDeviceToIPhoneXR() { + func test_initializer_shouldSetSafeAreaDevice_toIPhoneXR() { // Given let deviceIdentifiers = ["iPhone11,8"] deviceIdentifiers.forEach { deviceIdentifier in @@ -37,7 +37,7 @@ class NotchGradientLoadingBarViewModelTestCase: XCTestCase { } } - func testInitializerShouldSetSafeAreaDeviceToIPhone11() { + func test_initializer_shouldSetSafeAreaDevice_toIPhone11() { // Given let deviceIdentifiers = ["iPhone12,1", "iPhone12,3", "iPhone12,5"] deviceIdentifiers.forEach { deviceIdentifier in @@ -50,7 +50,7 @@ class NotchGradientLoadingBarViewModelTestCase: XCTestCase { } } - func testInitializerShouldSetSafeAreaDeviceToIPhone12() { + func test_initializer_shouldSetSafeAreaDevice_toIPhone12() { // Given let deviceIdentifiers = ["iPhone13,1", "iPhone13,2", "iPhone13,3", "iPhone13,4"] deviceIdentifiers.forEach { deviceIdentifier in @@ -63,7 +63,7 @@ class NotchGradientLoadingBarViewModelTestCase: XCTestCase { } } - func testInitializerShouldSetSafeAreaDeviceToIPhone13() { + func test_initializer_shouldSetSafeAreaDevice_toIPhone13() { // Given let deviceIdentifiers = ["iPhone14,4", "iPhone14,5", "iPhone14,2", "iPhone14,3"] deviceIdentifiers.forEach { deviceIdentifier in @@ -76,7 +76,7 @@ class NotchGradientLoadingBarViewModelTestCase: XCTestCase { } } - func testInitializerShouldSetSafeAreaDeviceToUnknown() { + func test_initializer_shouldSetSafeAreaDevice_toUnknown() { // Given let deviceIdentifier = "Foo-Bar-🤡" diff --git a/Example/Tests/Views/GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift b/Example/ExampleTests/Views/GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift similarity index 77% rename from Example/Tests/Views/GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift rename to Example/ExampleTests/Views/GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift index 4742a14..c289d88 100644 --- a/Example/Tests/Views/GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift +++ b/Example/ExampleTests/Views/GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift @@ -1,6 +1,6 @@ // // GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift -// GradientLoadingBar_Tests +// ExampleTests // // Created by Felix Mau on 19.05.19. // Copyright © 2017 Felix Mau. All rights reserved. @@ -11,7 +11,7 @@ import XCTest @testable import GradientLoadingBar // swiftlint:disable:next type_name -class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { +final class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { // MARK: - Private properties private var window: UIWindow! @@ -24,7 +24,7 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { // In order for UIView animations to be executed correctly, the corresponding view has to be attached to a visible window. // Therefore we're gonna use the current key-window, add our testing view here in `setUp()` and remove it later in `tearDown()`. - window = UIApplication.shared.windows.first { $0.isKeyWindow } + window = UIApplication.shared.keyWindowInConnectedScenes gradientActivityIndicatorView = GradientActivityIndicatorView() window.addSubview(gradientActivityIndicatorView) @@ -41,9 +41,9 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { // MARK: - Test method `animate(isHidden:)` - func testAnimateIsHiddenShouldShowViewAndCallCompletionHandler() { + func test_animateIsHidden_shouldShowView_andCallCompletionHandler() { // Given - let expectation = self.expectation(description: "Expect completion handler to be called.") + let expectation = expectation(description: "Expect completion handler to be called.") // Hide view to validate fade-in. gradientActivityIndicatorView.alpha = 0 @@ -62,9 +62,9 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { XCTAssertEqual(gradientActivityIndicatorView.alpha, 1.0, accuracy: CGFloat.ulpOfOne) } - func testAnimateIsHiddenWithInterruptionShouldShowViewAndCallCompletionHandler() { + func test_animateIsHidden_withInterruption_shouldShowView_andCallCompletionHandler() { // Given - let expectation = self.expectation(description: "Expect completion handler to be called.") + let expectation = expectation(description: "Expect completion handler to be called.") // Hide view to validate fade-in. gradientActivityIndicatorView.alpha = 0 @@ -85,9 +85,9 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { XCTAssertFalse(gradientActivityIndicatorView.isHidden) } - func testAnimateIsHiddenShouldHideViewAndCallCompletionHandler() { + func test_animateIsHidden_shouldHideView_andCallCompletionHandler() { // Given - let expectation = self.expectation(description: "Expect completion handler to be called.") + let expectation = expectation(description: "Expect completion handler to be called.") // When gradientActivityIndicatorView.animate(isHidden: true, duration: 0.1) { isFinished in @@ -102,9 +102,9 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { XCTAssertEqual(gradientActivityIndicatorView.alpha, 0, accuracy: CGFloat.ulpOfOne) } - func testAnimateIsHiddenWithInterruptionShouldNotHideViewAndCallCompletionHandler() { + func test_animateIsHidden_withInterruption_shouldNotHideView_andCallCompletionHandler() { // Given - let expectation = self.expectation(description: "Expect completion handler to be called.") + let expectation = expectation(description: "Expect completion handler to be called.") // When gradientActivityIndicatorView.animate(isHidden: true, duration: 0.1) { isFinished in @@ -123,9 +123,9 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { // MARK: - Test method `fadeIn()` - func testFadeInShouldShowViewAndCallCompletionHandler() { + func test_fadeIn_shouldShowView_andCallCompletionHandler() { // Given - let expectation = self.expectation(description: "Expect completion handler to be called.") + let expectation = expectation(description: "Expect completion handler to be called.") // Hide view to validate fade-in. gradientActivityIndicatorView.alpha = 0 @@ -144,9 +144,9 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { XCTAssertEqual(gradientActivityIndicatorView.alpha, 1.0, accuracy: CGFloat.ulpOfOne) } - func testFadeInWithInterruptionShouldShowViewAndCallCompletionHandler() { + func test_fadeIn_withInterruption_shouldShowView_andCallCompletionHandler() { // Given - let expectation = self.expectation(description: "Expect completion handler to be called.") + let expectation = expectation(description: "Expect completion handler to be called.") // Hide view to validate fade-in. gradientActivityIndicatorView.alpha = 0 @@ -169,9 +169,9 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { // MARK: - Test method `fadeOut()` - func testFadeOutShouldHideViewAndCallCompletionHandler() { + func test_fadeOut_shouldHideView_andCallCompletionHandler() { // Given - let expectation = self.expectation(description: "Expect completion handler to be called.") + let expectation = expectation(description: "Expect completion handler to be called.") // When gradientActivityIndicatorView.fadeOut(duration: 0.1) { isFinished in @@ -186,9 +186,9 @@ class GradientActivityIndicatorViewAnimateIsHiddenTestCase: XCTestCase { XCTAssertEqual(gradientActivityIndicatorView.alpha, 0, accuracy: CGFloat.ulpOfOne) } - func testFadeOutWithInterruptionShouldNotHideViewAndCallCompletionHandler() { + func test_fadeOut_withInterruption_shouldNotHideView_andCallCompletionHandler() { // Given - let expectation = self.expectation(description: "Expect completion handler to be called.") + let expectation = expectation(description: "Expect completion handler to be called.") // When gradientActivityIndicatorView.fadeOut(duration: 0.1) { isFinished in diff --git a/Example/Gemfile.lock b/Example/Gemfile.lock index 9b1c2de..f57a108 100644 --- a/Example/Gemfile.lock +++ b/Example/Gemfile.lock @@ -3,7 +3,7 @@ GEM specs: CFPropertyList (3.0.5) rexml - activesupport (6.1.4.1) + activesupport (6.1.5) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -17,27 +17,27 @@ 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.567.0) + aws-sdk-core (3.130.0) 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.55.0) + aws-sdk-core (~> 3, >= 3.127.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.109.0) - aws-sdk-core (~> 3, >= 3.122.0) + aws-sdk-s3 (1.113.0) + aws-sdk-core (~> 3, >= 3.127.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) - cocoapods (1.11.2) + claide (1.1.0) + cocoapods (1.11.3) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.11.2) + cocoapods-core (= 1.11.3) cocoapods-deintegrate (>= 1.0.3, < 2.0) cocoapods-downloader (>= 1.4.0, < 2.0) cocoapods-plugins (>= 1.0.0, < 2.0) @@ -52,7 +52,7 @@ GEM nap (~> 1.0) ruby-macho (>= 1.0, < 3.0) xcodeproj (>= 1.21.0, < 2.0) - cocoapods-core (1.11.2) + cocoapods-core (1.11.3) activesupport (>= 5.0, < 7) addressable (~> 2.8) algoliasearch (~> 1.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.92.0) + faraday (1.10.0) 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.204.3) 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) - ffi (1.15.4) + fastlane-plugin-swiftformat (0.2.0) + ffi (1.15.5) 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.16.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,16 +183,16 @@ 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.1) + addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) google-apis-storage_v1 (~> 0.1) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.1.0) - faraday (>= 0.17.3, < 2.0) + googleauth (1.1.2) + faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) multi_json (~> 1.11) @@ -198,15 +202,15 @@ GEM http-cookie (1.0.4) domain_name (~> 0.5) httpclient (2.8.3) - i18n (1.8.11) + i18n (1.10.0) concurrent-ruby (~> 1.0) - jmespath (1.4.0) + jmespath (1.6.1) json (2.6.1) jwt (2.3.0) memoist (0.16.2) mini_magick (4.11.0) mini_mime (1.1.2) - minitest (5.14.4) + minitest (5.15.0) molinillo (0.8.0) multi_json (1.15.0) multipart-post (2.0.0) @@ -230,9 +234,9 @@ GEM ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.16.0) + signet (0.16.1) addressable (~> 2.8) - faraday (>= 0.17.3, < 2.0) + faraday (>= 0.17.5, < 3.0) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) simctl (1.6.8) @@ -253,7 +257,7 @@ GEM uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.8) + unf_ext (0.0.8.1) unicode-display_width (1.8.0) webrick (1.7.0) word_wrap (1.0.0) @@ -268,7 +272,7 @@ GEM rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) - zeitwerk (2.5.1) + zeitwerk (2.5.4) PLATFORMS ruby @@ -279,4 +283,4 @@ DEPENDENCIES fastlane-plugin-swiftformat BUNDLED WITH - 2.1.4 + 2.3.8 diff --git a/Example/GradientLoadingBar.xcodeproj/project.pbxproj b/Example/GradientLoadingBar.xcodeproj/project.pbxproj deleted file mode 100644 index 8209003..0000000 --- a/Example/GradientLoadingBar.xcodeproj/project.pbxproj +++ /dev/null @@ -1,903 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 397E9F2412E802485B755A87 /* Pods_GradientLoadingBar_SnapshotTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABA9B1EF5F3928BA6E31D3EA /* Pods_GradientLoadingBar_SnapshotTests.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 */; }; - 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; - 640E8AC0231457620008C5A6 /* GradientActivityIndicatorViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 640E8ABF231457620008C5A6 /* GradientActivityIndicatorViewModelTestCase.swift */; }; - 6430C3A32338F1CA001F4A33 /* LargeNavigationBarHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6430C3A22338F1CA001F4A33 /* LargeNavigationBarHeaderView.swift */; }; - 649A163C23770B4400404F3C /* DefaultColorSnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649A163B23770B4400404F3C /* DefaultColorSnapshotTestCase.swift */; }; - 649A164423770E9300404F3C /* CustomColorSnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649A164323770E9300404F3C /* CustomColorSnapshotTestCase.swift */; }; - 64C596EC2351D80000A6CC97 /* InterfaceBuilderExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C596EB2351D7FF00A6CC97 /* InterfaceBuilderExampleViewController.swift */; }; - 64E0F5BF2211B7D20066D00D /* GradientLoadingBarViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64E0F5BB2211B7D20066D00D /* GradientLoadingBarViewModelTestCase.swift */; }; - 64E7F4252293E16B00BE5095 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64E7F4242293E16B00BE5095 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift */; }; - 77357BD34CFF2778341F80E8 /* Pods_GradientLoadingBar_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03CD5D69D7C3FBBDBF5FABBB /* Pods_GradientLoadingBar_Example.framework */; }; - 8020C040972E902A8CCAA9E7 /* Pods_GradientLoadingBar_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 434E3C8A6E245A38C2831E73 /* Pods_GradientLoadingBar_Tests.framework */; }; - 972CFBCC2138849A006F14C9 /* SafeAreaExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972CFBCB2138849A006F14C9 /* SafeAreaExampleViewController.swift */; }; - 97464E6721372BCD0097183A /* AdvancedExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97464E6621372BCD0097183A /* AdvancedExampleViewController.swift */; }; - 97464E6921372C010097183A /* NavigationBarExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97464E6821372C010097183A /* NavigationBarExampleViewController.swift */; }; - 97B6F5FE2143F31F008CFEA5 /* UIColor+CustomColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97B6F5FA2143F31F008CFEA5 /* UIColor+CustomColors.swift */; }; - 97B6F5FF2143F31F008CFEA5 /* BlueFilledButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97B6F5FC2143F31F008CFEA5 /* BlueFilledButton.swift */; }; - 97B6F6002143F31F008CFEA5 /* BlueBorderedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97B6F5FD2143F31F008CFEA5 /* BlueBorderedButton.swift */; }; - DC190F622496A25A0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC190F602496A24F0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift */; }; - DC9FF938270A470D0065B5B9 /* NotchGradientLoadingBarViewModelTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC9FF937270A470D0065B5B9 /* NotchGradientLoadingBarViewModelTestCase.swift */; }; - DCE3AB13249761B300889FFA /* Snapshotting+WindowedImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCE3AB11249761AB00889FFA /* Snapshotting+WindowedImage.swift */; }; - DCE3AB16249764BB00889FFA /* GradientLoadingBarControllerTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCE3AB14249764A000889FFA /* GradientLoadingBarControllerTestCase.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 607FACC81AFB9204008FA782 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 607FACCF1AFB9204008FA782; - remoteInfo = GradientLoadingBar; - }; - 649A163E23770B4400404F3C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 607FACC81AFB9204008FA782 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 607FACCF1AFB9204008FA782; - remoteInfo = GradientLoadingBar_Example; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 03CD5D69D7C3FBBDBF5FABBB /* Pods_GradientLoadingBar_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientLoadingBar_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0E24EC094BE0798D462B5F96 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 14959BE5652C9E83FC09BBDD /* Pods-GradientLoadingBar_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig"; sourceTree = ""; }; - 172FD3755BEBFF66683F5D81 /* Pods-GradientLoadingBar_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig"; sourceTree = ""; }; - 3DC26E6D2B0C63183F508578 /* Pods-GradientLoadingBar_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig"; sourceTree = ""; }; - 434E3C8A6E245A38C2831E73 /* Pods_GradientLoadingBar_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientLoadingBar_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 607FACD01AFB9204008FA782 /* GradientLoadingBar_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GradientLoadingBar_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 = ""; }; - 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; - 607FACE51AFB9204008FA782 /* GradientLoadingBar_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GradientLoadingBar_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 640E8ABF231457620008C5A6 /* GradientActivityIndicatorViewModelTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorViewModelTestCase.swift; sourceTree = ""; }; - 6430C3A22338F1CA001F4A33 /* LargeNavigationBarHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LargeNavigationBarHeaderView.swift; sourceTree = ""; }; - 649A163923770B4400404F3C /* GradientLoadingBar_SnapshotTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GradientLoadingBar_SnapshotTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 649A163B23770B4400404F3C /* DefaultColorSnapshotTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultColorSnapshotTestCase.swift; sourceTree = ""; }; - 649A163D23770B4400404F3C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 649A164323770E9300404F3C /* CustomColorSnapshotTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomColorSnapshotTestCase.swift; sourceTree = ""; }; - 64C596EB2351D7FF00A6CC97 /* InterfaceBuilderExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceBuilderExampleViewController.swift; sourceTree = ""; }; - 64E0F5BB2211B7D20066D00D /* GradientLoadingBarViewModelTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarViewModelTestCase.swift; sourceTree = ""; }; - 64E7F4242293E16B00BE5095 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift"; sourceTree = ""; }; - 972CFBCB2138849A006F14C9 /* SafeAreaExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafeAreaExampleViewController.swift; sourceTree = ""; }; - 97464E6621372BCD0097183A /* AdvancedExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedExampleViewController.swift; sourceTree = ""; }; - 97464E6821372C010097183A /* NavigationBarExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationBarExampleViewController.swift; sourceTree = ""; }; - 97B6F5FA2143F31F008CFEA5 /* UIColor+CustomColors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+CustomColors.swift"; sourceTree = ""; }; - 97B6F5FC2143F31F008CFEA5 /* BlueFilledButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlueFilledButton.swift; sourceTree = ""; }; - 97B6F5FD2143F31F008CFEA5 /* BlueBorderedButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlueBorderedButton.swift; sourceTree = ""; }; - A98CA9F1B0C1BD6864C14E01 /* Pods-GradientLoadingBar_SnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_SnapshotTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.release.xcconfig"; sourceTree = ""; }; - ABA9B1EF5F3928BA6E31D3EA /* Pods_GradientLoadingBar_SnapshotTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_GradientLoadingBar_SnapshotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C06CA4DFA1DCB931095ABD3D /* GradientLoadingBar.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = GradientLoadingBar.podspec; path = ../GradientLoadingBar.podspec; sourceTree = ""; }; - DC190F602496A24F0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotchGradientLoadingBarControllerTestCase.swift; sourceTree = ""; }; - DC9FF937270A470D0065B5B9 /* NotchGradientLoadingBarViewModelTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotchGradientLoadingBarViewModelTestCase.swift; sourceTree = ""; }; - DCE3AB11249761AB00889FFA /* Snapshotting+WindowedImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Snapshotting+WindowedImage.swift"; sourceTree = ""; }; - DCE3AB14249764A000889FFA /* GradientLoadingBarControllerTestCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarControllerTestCase.swift; sourceTree = ""; }; - DCE3AB172497670400889FFA /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - E7B292793F03D669ACAA92D2 /* Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig"; sourceTree = ""; }; - F76834BE9E43CA11377EC030 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; - FECB95A4857728345199461F /* Pods-GradientLoadingBar_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-GradientLoadingBar_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 607FACCD1AFB9204008FA782 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 77357BD34CFF2778341F80E8 /* Pods_GradientLoadingBar_Example.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE21AFB9204008FA782 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8020C040972E902A8CCAA9E7 /* Pods_GradientLoadingBar_Tests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 649A163623770B4400404F3C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 397E9F2412E802485B755A87 /* Pods_GradientLoadingBar_SnapshotTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 607FACC71AFB9204008FA782 = { - isa = PBXGroup; - children = ( - 607FACF51AFB993E008FA782 /* Podspec Metadata */, - 607FACD21AFB9204008FA782 /* Example for GradientLoadingBar */, - 607FACE81AFB9204008FA782 /* Tests */, - 649A163A23770B4400404F3C /* SnapshotTests */, - 607FACD11AFB9204008FA782 /* Products */, - BFC08F9E633527E553EDA250 /* Pods */, - DB185876CEF7C6517EB25B58 /* Frameworks */, - ); - sourceTree = ""; - }; - 607FACD11AFB9204008FA782 /* Products */ = { - isa = PBXGroup; - children = ( - 607FACD01AFB9204008FA782 /* GradientLoadingBar_Example.app */, - 607FACE51AFB9204008FA782 /* GradientLoadingBar_Tests.xctest */, - 649A163923770B4400404F3C /* GradientLoadingBar_SnapshotTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 607FACD21AFB9204008FA782 /* Example for GradientLoadingBar */ = { - isa = PBXGroup; - children = ( - 97B6F5F92143F31F008CFEA5 /* Extensions */, - 97B6F5FB2143F31F008CFEA5 /* Views */, - 607FACD71AFB9204008FA782 /* BasicExampleViewController.swift */, - 972CFBCB2138849A006F14C9 /* SafeAreaExampleViewController.swift */, - 64C596EB2351D7FF00A6CC97 /* InterfaceBuilderExampleViewController.swift */, - 97464E6621372BCD0097183A /* AdvancedExampleViewController.swift */, - 97464E6821372C010097183A /* NavigationBarExampleViewController.swift */, - 607FACD51AFB9204008FA782 /* AppDelegate.swift */, - 607FACD91AFB9204008FA782 /* Main.storyboard */, - 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */, - 607FACD31AFB9204008FA782 /* Supporting Files */, - ); - name = "Example for GradientLoadingBar"; - path = GradientLoadingBar; - sourceTree = ""; - }; - 607FACD31AFB9204008FA782 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 607FACD41AFB9204008FA782 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 607FACE81AFB9204008FA782 /* Tests */ = { - isa = PBXGroup; - children = ( - 64C6B3E72313259500076A69 /* ViewModel */, - 64E7F4222293E16B00BE5095 /* Views */, - 607FACE91AFB9204008FA782 /* Supporting Files */, - ); - path = Tests; - sourceTree = ""; - }; - 607FACE91AFB9204008FA782 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - 607FACEA1AFB9204008FA782 /* Info.plist */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - 607FACF51AFB993E008FA782 /* Podspec Metadata */ = { - isa = PBXGroup; - children = ( - C06CA4DFA1DCB931095ABD3D /* GradientLoadingBar.podspec */, - 0E24EC094BE0798D462B5F96 /* README.md */, - F76834BE9E43CA11377EC030 /* LICENSE */, - ); - name = "Podspec Metadata"; - sourceTree = ""; - }; - 649A163A23770B4400404F3C /* SnapshotTests */ = { - isa = PBXGroup; - children = ( - DCE3AB102497619600889FFA /* _Helper */, - DC190F5E2496A2290069E2B0 /* GradientActivityIndicatorView */, - DC190F5F2496A2380069E2B0 /* GradientLoadingBarController */, - 649A163D23770B4400404F3C /* Info.plist */, - DCE3AB172497670400889FFA /* README.md */, - ); - path = SnapshotTests; - sourceTree = ""; - }; - 64C6B3E72313259500076A69 /* ViewModel */ = { - isa = PBXGroup; - children = ( - 64E0F5BB2211B7D20066D00D /* GradientLoadingBarViewModelTestCase.swift */, - 640E8ABF231457620008C5A6 /* GradientActivityIndicatorViewModelTestCase.swift */, - DC9FF937270A470D0065B5B9 /* NotchGradientLoadingBarViewModelTestCase.swift */, - ); - path = ViewModel; - sourceTree = ""; - }; - 64E7F4222293E16B00BE5095 /* Views */ = { - isa = PBXGroup; - children = ( - 64E7F4242293E16B00BE5095 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift */, - ); - path = Views; - sourceTree = ""; - }; - 97B6F5F92143F31F008CFEA5 /* Extensions */ = { - isa = PBXGroup; - children = ( - 97B6F5FA2143F31F008CFEA5 /* UIColor+CustomColors.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - 97B6F5FB2143F31F008CFEA5 /* Views */ = { - isa = PBXGroup; - children = ( - 97B6F5FC2143F31F008CFEA5 /* BlueFilledButton.swift */, - 97B6F5FD2143F31F008CFEA5 /* BlueBorderedButton.swift */, - 6430C3A22338F1CA001F4A33 /* LargeNavigationBarHeaderView.swift */, - ); - path = Views; - sourceTree = ""; - }; - BFC08F9E633527E553EDA250 /* Pods */ = { - isa = PBXGroup; - children = ( - 3DC26E6D2B0C63183F508578 /* Pods-GradientLoadingBar_Example.debug.xcconfig */, - 172FD3755BEBFF66683F5D81 /* Pods-GradientLoadingBar_Example.release.xcconfig */, - FECB95A4857728345199461F /* Pods-GradientLoadingBar_Tests.debug.xcconfig */, - 14959BE5652C9E83FC09BBDD /* Pods-GradientLoadingBar_Tests.release.xcconfig */, - E7B292793F03D669ACAA92D2 /* Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig */, - A98CA9F1B0C1BD6864C14E01 /* Pods-GradientLoadingBar_SnapshotTests.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - DB185876CEF7C6517EB25B58 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 03CD5D69D7C3FBBDBF5FABBB /* Pods_GradientLoadingBar_Example.framework */, - 434E3C8A6E245A38C2831E73 /* Pods_GradientLoadingBar_Tests.framework */, - ABA9B1EF5F3928BA6E31D3EA /* Pods_GradientLoadingBar_SnapshotTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - DC190F5E2496A2290069E2B0 /* GradientActivityIndicatorView */ = { - isa = PBXGroup; - children = ( - 649A163B23770B4400404F3C /* DefaultColorSnapshotTestCase.swift */, - 649A164323770E9300404F3C /* CustomColorSnapshotTestCase.swift */, - ); - path = GradientActivityIndicatorView; - sourceTree = ""; - }; - DC190F5F2496A2380069E2B0 /* GradientLoadingBarController */ = { - isa = PBXGroup; - children = ( - DCE3AB14249764A000889FFA /* GradientLoadingBarControllerTestCase.swift */, - DC190F602496A24F0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift */, - ); - path = GradientLoadingBarController; - sourceTree = ""; - }; - DCE3AB102497619600889FFA /* _Helper */ = { - isa = PBXGroup; - children = ( - DCE3AB11249761AB00889FFA /* Snapshotting+WindowedImage.swift */, - ); - path = _Helper; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 607FACCF1AFB9204008FA782 /* GradientLoadingBar_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "GradientLoadingBar_Example" */; - buildPhases = ( - 8A80B9B4778F0A3D30371790 /* [CP] Check Pods Manifest.lock */, - 607FACCC1AFB9204008FA782 /* Sources */, - 607FACCD1AFB9204008FA782 /* Frameworks */, - 607FACCE1AFB9204008FA782 /* Resources */, - 1A66A3C243446BE65EBE3AAE /* [CP] Embed Pods Frameworks */, - 972EE1C9201CA5C4001F603C /* Swiftformat */, - 9753E83D1F80F7D300EF2822 /* Swiftlint */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GradientLoadingBar_Example; - productName = GradientLoadingBar; - productReference = 607FACD01AFB9204008FA782 /* GradientLoadingBar_Example.app */; - productType = "com.apple.product-type.application"; - }; - 607FACE41AFB9204008FA782 /* GradientLoadingBar_Tests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "GradientLoadingBar_Tests" */; - buildPhases = ( - 04A6606B8779F59C5BA953A7 /* [CP] Check Pods Manifest.lock */, - 607FACE11AFB9204008FA782 /* Sources */, - 607FACE21AFB9204008FA782 /* Frameworks */, - 607FACE31AFB9204008FA782 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 607FACE71AFB9204008FA782 /* PBXTargetDependency */, - ); - name = GradientLoadingBar_Tests; - productName = Tests; - productReference = 607FACE51AFB9204008FA782 /* GradientLoadingBar_Tests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 649A163823770B4400404F3C /* GradientLoadingBar_SnapshotTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 649A164223770B4400404F3C /* Build configuration list for PBXNativeTarget "GradientLoadingBar_SnapshotTests" */; - buildPhases = ( - C6F0F8135CCFB10901DB76DB /* [CP] Check Pods Manifest.lock */, - 649A163523770B4400404F3C /* Sources */, - 649A163623770B4400404F3C /* Frameworks */, - 649A163723770B4400404F3C /* Resources */, - 568034A03F733A9FAEAC587B /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 649A163F23770B4400404F3C /* PBXTargetDependency */, - ); - name = GradientLoadingBar_SnapshotTests; - productName = SnapshotTests; - productReference = 649A163923770B4400404F3C /* GradientLoadingBar_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; - LastSwiftMigration = 1020; - }; - 607FACE41AFB9204008FA782 = { - CreatedOnToolsVersion = 6.3.1; - LastSwiftMigration = 1020; - TestTargetID = 607FACCF1AFB9204008FA782; - }; - 649A163823770B4400404F3C = { - CreatedOnToolsVersion = 11.2; - ProvisioningStyle = Automatic; - TestTargetID = 607FACCF1AFB9204008FA782; - }; - }; - }; - buildConfigurationList = 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "GradientLoadingBar" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 607FACC71AFB9204008FA782; - productRefGroup = 607FACD11AFB9204008FA782 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 607FACCF1AFB9204008FA782 /* GradientLoadingBar_Example */, - 607FACE41AFB9204008FA782 /* GradientLoadingBar_Tests */, - 649A163823770B4400404F3C /* GradientLoadingBar_SnapshotTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 607FACCE1AFB9204008FA782 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 607FACDB1AFB9204008FA782 /* Main.storyboard in Resources */, - 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE31AFB9204008FA782 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 649A163723770B4400404F3C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 04A6606B8779F59C5BA953A7 /* [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-GradientLoadingBar_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; - }; - 1A66A3C243446BE65EBE3AAE /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/GradientLoadingBar/GradientLoadingBar.framework", - "${BUILT_PRODUCTS_DIR}/LightweightObservable/LightweightObservable.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GradientLoadingBar.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LightweightObservable.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 568034A03F733A9FAEAC587B /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 8A80B9B4778F0A3D30371790 /* [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-GradientLoadingBar_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; - }; - 972EE1C9201CA5C4001F603C /* 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"; - }; - 9753E83D1F80F7D300EF2822 /* 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"; - }; - C6F0F8135CCFB10901DB76DB /* [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-GradientLoadingBar_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; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 607FACCC1AFB9204008FA782 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 607FACD81AFB9204008FA782 /* BasicExampleViewController.swift in Sources */, - 64C596EC2351D80000A6CC97 /* InterfaceBuilderExampleViewController.swift in Sources */, - 972CFBCC2138849A006F14C9 /* SafeAreaExampleViewController.swift in Sources */, - 97464E6721372BCD0097183A /* AdvancedExampleViewController.swift in Sources */, - 6430C3A32338F1CA001F4A33 /* LargeNavigationBarHeaderView.swift in Sources */, - 607FACD61AFB9204008FA782 /* AppDelegate.swift in Sources */, - 97B6F5FF2143F31F008CFEA5 /* BlueFilledButton.swift in Sources */, - 97B6F5FE2143F31F008CFEA5 /* UIColor+CustomColors.swift in Sources */, - 97B6F6002143F31F008CFEA5 /* BlueBorderedButton.swift in Sources */, - 97464E6921372C010097183A /* NavigationBarExampleViewController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 607FACE11AFB9204008FA782 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 640E8AC0231457620008C5A6 /* GradientActivityIndicatorViewModelTestCase.swift in Sources */, - 64E0F5BF2211B7D20066D00D /* GradientLoadingBarViewModelTestCase.swift in Sources */, - DC9FF938270A470D0065B5B9 /* NotchGradientLoadingBarViewModelTestCase.swift in Sources */, - 64E7F4252293E16B00BE5095 /* GradientActivityIndicatorView+AnimateIsHiddenTestCase.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 649A163523770B4400404F3C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DCE3AB13249761B300889FFA /* Snapshotting+WindowedImage.swift in Sources */, - DC190F622496A25A0069E2B0 /* NotchGradientLoadingBarControllerTestCase.swift in Sources */, - DCE3AB16249764BB00889FFA /* GradientLoadingBarControllerTestCase.swift in Sources */, - 649A164423770E9300404F3C /* CustomColorSnapshotTestCase.swift in Sources */, - 649A163C23770B4400404F3C /* DefaultColorSnapshotTestCase.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 607FACE71AFB9204008FA782 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 607FACCF1AFB9204008FA782 /* GradientLoadingBar_Example */; - targetProxy = 607FACE61AFB9204008FA782 /* PBXContainerItemProxy */; - }; - 649A163F23770B4400404F3C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 607FACCF1AFB9204008FA782 /* GradientLoadingBar_Example */; - targetProxy = 649A163E23770B4400404F3C /* 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 = 9.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 = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 607FACF01AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3DC26E6D2B0C63183F508578 /* Pods-GradientLoadingBar_Example.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = GradientLoadingBar/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; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 607FACF11AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 172FD3755BEBFF66683F5D81 /* Pods-GradientLoadingBar_Example.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = GradientLoadingBar/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; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 607FACF31AFB9204008FA782 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FECB95A4857728345199461F /* Pods-GradientLoadingBar_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)/GradientLoadingBar_Example.app/GradientLoadingBar_Example"; - }; - name = Debug; - }; - 607FACF41AFB9204008FA782 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 14959BE5652C9E83FC09BBDD /* Pods-GradientLoadingBar_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)/GradientLoadingBar_Example.app/GradientLoadingBar_Example"; - }; - name = Release; - }; - 649A164023770B4400404F3C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E7B292793F03D669ACAA92D2 /* Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - 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.2; - 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)/GradientLoadingBar_Example.app/GradientLoadingBar_Example"; - }; - name = Debug; - }; - 649A164123770B4400404F3C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A98CA9F1B0C1BD6864C14E01 /* Pods-GradientLoadingBar_SnapshotTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - 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.2; - 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)/GradientLoadingBar_Example.app/GradientLoadingBar_Example"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 607FACCB1AFB9204008FA782 /* Build configuration list for PBXProject "GradientLoadingBar" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACED1AFB9204008FA782 /* Debug */, - 607FACEE1AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "GradientLoadingBar_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACF01AFB9204008FA782 /* Debug */, - 607FACF11AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "GradientLoadingBar_Tests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 607FACF31AFB9204008FA782 /* Debug */, - 607FACF41AFB9204008FA782 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 649A164223770B4400404F3C /* Build configuration list for PBXNativeTarget "GradientLoadingBar_SnapshotTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 649A164023770B4400404F3C /* Debug */, - 649A164123770B4400404F3C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 607FACC81AFB9204008FA782 /* Project object */; -} diff --git a/Example/GradientLoadingBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/GradientLoadingBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 9d8a6fe..0000000 --- a/Example/GradientLoadingBar.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Example/GradientLoadingBar.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar-Example.xcscheme b/Example/GradientLoadingBar.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar-Example.xcscheme deleted file mode 100644 index dd5fd93..0000000 --- a/Example/GradientLoadingBar.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar-Example.xcscheme +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/GradientLoadingBar/AdvancedExampleViewController.swift b/Example/GradientLoadingBar/AdvancedExampleViewController.swift deleted file mode 100644 index c47547b..0000000 --- a/Example/GradientLoadingBar/AdvancedExampleViewController.swift +++ /dev/null @@ -1,105 +0,0 @@ -// -// AdvancedExampleViewController.swift -// GradientLoadingBar_Example -// -// Created by Felix Mau on 30.08.18. -// Copyright © 2018 Felix Mau. All rights reserved. -// - -import UIKit -import GradientLoadingBar - -class AdvancedExampleViewController: UIViewController { - // MARK: - Config - - private enum Config { - /// The programatically applied height of the `GradientActivityIndicatorView`. - static let height: CGFloat = 3.5 - } - - // MARK: - Outlets - - @IBOutlet private var programmaticallyButton: BlueBorderedButton! - @IBOutlet private var customColorsButton: BlueBorderedButton! - - // MARK: - Private properties - - // swiftlint:disable:next identifier_name - private let programmaticallyGradientActivityIndicatorView = GradientActivityIndicatorView() - - // swiftlint:disable:next identifier_name - private let customColorsGradientActivityIndicatorView: GradientActivityIndicatorView = { - let gradientActivityIndicatorView = GradientActivityIndicatorView() - - // Source: https://color.adobe.com/Pink-Flamingo-color-theme-10343714/ - gradientActivityIndicatorView.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), - ] - - return gradientActivityIndicatorView - }() - - // MARK: - Public methods - - override func viewDidLoad() { - super.viewDidLoad() - - setupProgrammaticallyGradientActivityIndicatorView() - setupCustomColorsGradientActivityIndicatorView() - } - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - - programmaticallyGradientActivityIndicatorView.fadeOut() - customColorsGradientActivityIndicatorView.fadeOut() - } - - @IBAction private func toggleProgrammaticallyButtonTouchUpInside(_: Any) { - if programmaticallyGradientActivityIndicatorView.isHidden { - programmaticallyGradientActivityIndicatorView.fadeIn() - } else { - programmaticallyGradientActivityIndicatorView.fadeOut() - } - } - - @IBAction private func toggleCustomColorsButtonTouchUpInside(_: Any) { - if customColorsGradientActivityIndicatorView.isHidden { - customColorsGradientActivityIndicatorView.fadeIn() - } else { - customColorsGradientActivityIndicatorView.fadeOut() - } - } - - // MARK: - Private methods - - private func setupProgrammaticallyGradientActivityIndicatorView() { - programmaticallyGradientActivityIndicatorView.fadeOut(duration: 0) - - programmaticallyGradientActivityIndicatorView.translatesAutoresizingMaskIntoConstraints = false - programmaticallyButton.addSubview(programmaticallyGradientActivityIndicatorView) - - NSLayoutConstraint.activate([ - programmaticallyGradientActivityIndicatorView.leadingAnchor.constraint(equalTo: programmaticallyButton.leadingAnchor), - programmaticallyGradientActivityIndicatorView.trailingAnchor.constraint(equalTo: programmaticallyButton.trailingAnchor), - - programmaticallyGradientActivityIndicatorView.topAnchor.constraint(equalTo: programmaticallyButton.topAnchor), - programmaticallyGradientActivityIndicatorView.heightAnchor.constraint(equalToConstant: Config.height), - ]) - } - - private func setupCustomColorsGradientActivityIndicatorView() { - customColorsGradientActivityIndicatorView.fadeOut(duration: 0) - - customColorsGradientActivityIndicatorView.translatesAutoresizingMaskIntoConstraints = false - customColorsButton.addSubview(customColorsGradientActivityIndicatorView) - - NSLayoutConstraint.activate([ - customColorsGradientActivityIndicatorView.leadingAnchor.constraint(equalTo: customColorsButton.leadingAnchor), - customColorsGradientActivityIndicatorView.trailingAnchor.constraint(equalTo: customColorsButton.trailingAnchor), - - customColorsGradientActivityIndicatorView.bottomAnchor.constraint(equalTo: customColorsButton.bottomAnchor), - customColorsGradientActivityIndicatorView.heightAnchor.constraint(equalToConstant: Config.height), - ]) - } -} diff --git a/Example/GradientLoadingBar/AppDelegate.swift b/Example/GradientLoadingBar/AppDelegate.swift deleted file mode 100644 index 98b435b..0000000 --- a/Example/GradientLoadingBar/AppDelegate.swift +++ /dev/null @@ -1,52 +0,0 @@ -// -// AppDelegate.swift -// GradientLoadingBar -// -// Created by Felix Mau on 30.09.17. -// Copyright © 2017 Felix Mau. All rights reserved. -// - -import GradientLoadingBar -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. - - // Example on how to customize the shared instance of `GradientLoadingBar`. - // We're gonna use the same height though ¯\_(ツ)_/¯ - let customGradientLoadingBar = GradientLoadingBar(height: 3.0) - GradientLoadingBar.shared = customGradientLoadingBar - - return 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/GradientLoadingBar/Base.lproj/LaunchScreen.xib b/Example/GradientLoadingBar/Base.lproj/LaunchScreen.xib deleted file mode 100644 index 72a748c..0000000 --- a/Example/GradientLoadingBar/Base.lproj/LaunchScreen.xib +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/GradientLoadingBar/Base.lproj/Main.storyboard b/Example/GradientLoadingBar/Base.lproj/Main.storyboard deleted file mode 100644 index 6a8cae1..0000000 --- a/Example/GradientLoadingBar/Base.lproj/Main.storyboard +++ /dev/null @@ -1,489 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/GradientLoadingBar/Extensions/UIColor+CustomColors.swift b/Example/GradientLoadingBar/Extensions/UIColor+CustomColors.swift deleted file mode 100644 index bceb3af..0000000 --- a/Example/GradientLoadingBar/Extensions/UIColor+CustomColors.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// UIColor+CustomColors.swift -// GradientLoadingBar_Example -// -// Created by Felix Mau on 29.08.18. -// Copyright © 2018 Felix Mau. All rights reserved. -// - -import UIKit - -extension UIColor { - /// Config that contains all our custom defined colors. - enum CustomColors { - static let blue = #colorLiteral(red: 0.2862745098, green: 0.5647058824, blue: 0.8862745098, alpha: 1) - } -} diff --git a/Example/GradientLoadingBar/Info.plist b/Example/GradientLoadingBar/Info.plist deleted file mode 100644 index 6f460e0..0000000 --- a/Example/GradientLoadingBar/Info.plist +++ /dev/null @@ -1,41 +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 - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortraitUpsideDown - - - diff --git a/Example/GradientLoadingBar/InterfaceBuilderExampleViewController.swift b/Example/GradientLoadingBar/InterfaceBuilderExampleViewController.swift deleted file mode 100644 index 031bc33..0000000 --- a/Example/GradientLoadingBar/InterfaceBuilderExampleViewController.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// InterfaceBuilderExampleViewController.swift -// GradientLoadingBar_Example -// -// Created by Felix Mau on 12.10.19. -// Copyright © 2018 Felix Mau. All rights reserved. -// - -import UIKit -import GradientLoadingBar - -class InterfaceBuilderExampleViewController: UIViewController { - // MARK: - Outlets - - @IBOutlet private var gradientActivityIndicatorView: GradientActivityIndicatorView! - - // MARK: - Public methods - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - - gradientActivityIndicatorView.fadeOut() - } - - @IBAction private func showButtonTouchUpInside(_: Any) { - gradientActivityIndicatorView.fadeIn() - } - - @IBAction private func hideButtonTouchUpInside(_: Any) { - gradientActivityIndicatorView.fadeOut() - } -} diff --git a/Example/GradientLoadingBar/Views/BlueBorderedButton.swift b/Example/GradientLoadingBar/Views/BlueBorderedButton.swift deleted file mode 100644 index 5ffa5a8..0000000 --- a/Example/GradientLoadingBar/Views/BlueBorderedButton.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// BlueBorderedButton.swift -// GradientLoadingBar_Example -// -// Created by Felix Mau on 29.08.18. -// Copyright © 2018 Felix Mau. All rights reserved. -// - -import UIKit - -@IBDesignable -final class BlueBorderedButton: UIButton { - // MARK: - Initializer - - override init(frame: CGRect) { - super.init(frame: frame) - - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - - commonInit() - } - - // MARK: - Private methods - - private func commonInit() { - backgroundColor = .clear - tintColor = UIColor.CustomColors.blue - - layer.cornerRadius = 4 - layer.borderColor = UIColor.CustomColors.blue.cgColor - layer.borderWidth = 1 - } -} diff --git a/Example/GradientLoadingBar/Views/BlueFilledButton.swift b/Example/GradientLoadingBar/Views/BlueFilledButton.swift deleted file mode 100644 index 39501bf..0000000 --- a/Example/GradientLoadingBar/Views/BlueFilledButton.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// BlueFilledButton.swift -// GradientLoadingBar_Example -// -// Created by Felix Mau on 29.08.18. -// Copyright © 2018 Felix Mau. All rights reserved. -// - -import UIKit - -@IBDesignable -final class BlueFilledButton: UIButton { - // MARK: - Initializer - - override init(frame: CGRect) { - super.init(frame: frame) - - commonInit() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - - commonInit() - } - - override func prepareForInterfaceBuilder() { - super.prepareForInterfaceBuilder() - - commonInit() - } - - // MARK: - Private methods - - private func commonInit() { - tintColor = .white - backgroundColor = UIColor.CustomColors.blue - - layer.cornerRadius = 4.0 - } -} diff --git a/Example/GradientLoadingBar/Views/LargeNavigationBarHeaderView.swift b/Example/GradientLoadingBar/Views/LargeNavigationBarHeaderView.swift deleted file mode 100644 index 1bf2afb..0000000 --- a/Example/GradientLoadingBar/Views/LargeNavigationBarHeaderView.swift +++ /dev/null @@ -1,85 +0,0 @@ -// -// LargeNavigationBarHeaderView.swift -// GradientLoadingBar_Example -// -// Created by Felix Mau on 23.09.19. -// Copyright © 2019 CocoaPods. All rights reserved. -// - -import UIKit - -@IBDesignable -final class LargeNavigationBarHeaderView: UIView { - // MARK: - Public properties - - @IBInspectable var title: String = "" { - didSet { - titleLabel.text = title - } - } - - @IBInspectable var prompt: String = "" { - didSet { - promptLabel.text = prompt - } - } - - // MARK: - Private properties - - private let titleLabel = UILabel(frame: .zero) - - private let promptLabel = UILabel(frame: .zero) - - // MARK: - Initializer - - override init(frame: CGRect) { - super.init(frame: frame) - - commonInit() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - - commonInit() - } - - // MARK: - Private methods - - private func commonInit() { - setupTitleLabel() - setupPromptLabel() - } - - private func setupTitleLabel() { - let fontDescriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: .largeTitle) - titleLabel.font = UIFont.systemFont(ofSize: fontDescriptor.pointSize, weight: .bold) - titleLabel.textColor = .label - - titleLabel.translatesAutoresizingMaskIntoConstraints = false - addSubview(titleLabel) - - NSLayoutConstraint.activate([ - titleLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 16.0), - titleLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -16.0), - - titleLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -8.0), - ]) - } - - private func setupPromptLabel() { - promptLabel.font = UIFont.preferredFont(forTextStyle: .footnote) - promptLabel.textAlignment = .center - promptLabel.textColor = .label - - promptLabel.translatesAutoresizingMaskIntoConstraints = false - addSubview(promptLabel) - - NSLayoutConstraint.activate([ - promptLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 8.0), - promptLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -8.0), - - promptLabel.topAnchor.constraint(equalTo: topAnchor, constant: 9.5), - ]) - } -} diff --git a/Example/Podfile b/Example/Podfile index 4fcdec5..daa3694 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -4,7 +4,7 @@ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '13.0' use_frameworks! -target 'GradientLoadingBar_Example' do +target 'Example' do pod 'GradientLoadingBar', :path => '../' # Development pods. @@ -12,17 +12,16 @@ target 'GradientLoadingBar_Example' do pod 'SwiftLint', '~> 0.42' pod 'SwiftConfigurationFiles', :git => 'https://github.com/fxm90/SwiftConfigurationFiles.git' - target 'GradientLoadingBar_Tests' do + target 'ExampleTests' do inherit! :search_paths - - # Pods for testing. + # Pods for testing end - target 'GradientLoadingBar_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| @@ -46,4 +45,5 @@ target 'GradientLoadingBar_Example' do end end end + end diff --git a/Example/Podfile.lock b/Example/Podfile.lock index e5fe377..cd0809c 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,15 +1,15 @@ PODS: - GradientLoadingBar (2.2.5): - 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.6) + - SwiftLint (0.47.0) DEPENDENCIES: - GradientLoadingBar (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: - GradientLoadingBar: e7813a92e69c23045d033ae4305252c6c975f608 - LightweightObservable: c5ac85423a5edbed9a920b4d5c7b8f94ab3688c4 + GradientLoadingBar: 4daebb3ab58a17792cc998f11e5bb37f60f1feb7 + LightweightObservable: a4fce3323002aa57234f3cf5524eecb144cc781f SnapshotTesting: 6141c48b6aa76ead61431ca665c14ab9a066c53b SwiftConfigurationFiles: 1cf2228a911ebed9f42f8dec077bb634f04ca6c8 - SwiftFormat: 16b41f3229f5e7edb130ac4cd631cceed7af7d5e - SwiftLint: 06ac37e4d38c7068e0935bb30cda95f093bec761 + SwiftFormat: e40542bcf76fdaa006d0dc26a9ca8278ca028d76 + SwiftLint: d41cc46a2ae58ac6d9f26954bc89f1d72e71fdef -PODFILE CHECKSUM: 36b90780cb508f9eaca4f0ac59660e3e748de601 +PODFILE CHECKSUM: 236416c4c4856713b28b6bf3da014054e9b319f2 COCOAPODS: 1.11.3 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/GradientLoadingBar.podspec.json b/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json index b3f20dd..6a3b77f 100644 --- a/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json +++ b/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json @@ -16,15 +16,15 @@ "git": "https://github.com/fxm90/GradientLoadingBar.git", "tag": "2.2.5" }, - "swift_versions": "5.1", + "swift_versions": "5.5", "platforms": { "ios": "9.0" }, - "source_files": "GradientLoadingBar/Classes/**/*", + "source_files": "GradientLoadingBar/**/*", "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 e5fe377..cd0809c 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,15 +1,15 @@ PODS: - GradientLoadingBar (2.2.5): - 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.6) + - SwiftLint (0.47.0) DEPENDENCIES: - GradientLoadingBar (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: - GradientLoadingBar: e7813a92e69c23045d033ae4305252c6c975f608 - LightweightObservable: c5ac85423a5edbed9a920b4d5c7b8f94ab3688c4 + GradientLoadingBar: 4daebb3ab58a17792cc998f11e5bb37f60f1feb7 + LightweightObservable: a4fce3323002aa57234f3cf5524eecb144cc781f SnapshotTesting: 6141c48b6aa76ead61431ca665c14ab9a066c53b SwiftConfigurationFiles: 1cf2228a911ebed9f42f8dec077bb634f04ca6c8 - SwiftFormat: 16b41f3229f5e7edb130ac4cd631cceed7af7d5e - SwiftLint: 06ac37e4d38c7068e0935bb30cda95f093bec761 + SwiftFormat: e40542bcf76fdaa006d0dc26a9ca8278ca028d76 + SwiftLint: d41cc46a2ae58ac6d9f26954bc89f1d72e71fdef -PODFILE CHECKSUM: 36b90780cb508f9eaca4f0ac59660e3e748de601 +PODFILE CHECKSUM: 236416c4c4856713b28b6bf3da014054e9b319f2 COCOAPODS: 1.11.3 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 951fa23..147a89e 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,265 +37,287 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 07319FC388250B963206DB0BF5262128 /* CGPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BDC2C00D01795D9D5474A268FEA0790 /* CGPath.swift */; }; - 0ACD0ACD5263B4D09556739F7926FF96 /* NotchGradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A6AFF4C6A1BA30CE9B8A5B1CEDC407A /* NotchGradientLoadingBarViewModel.swift */; }; - 1D0EF6FBAF37BB930183B8F5AA719CD2 /* SnapshotTesting-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FFB61086549332856EE450986DDA39E3 /* SnapshotTesting-dummy.m */; }; - 2115DE52F6A03FFC0F6A938F158F9259 /* NotchGradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9CADA2B0AD5E703D468B06A67A80492 /* NotchGradientLoadingBarController.swift */; }; - 2527F1E9F6147C56510A178BE9F8502A /* Pods-GradientLoadingBar_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 132C18988D60EF85736C043D43C19E57 /* Pods-GradientLoadingBar_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 26CDF96C31DF5C0DE76299B9D1518AC0 /* 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 */; }; - 3D1E0E44DB5DB31C932BBB9F1385B57A /* NSView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752098F700D4627B4812D33624EC3D46 /* NSView.swift */; }; - 3DAFC3A87D54F6BA47518F4904B7FE54 /* AssertSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27481F5BB2B02F8C989E93FBE449F4C0 /* AssertSnapshot.swift */; }; - 3E9A56ADB8427F240D98E65F282D5AB3 /* Pods-GradientLoadingBar_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8194C4CB9E683FC366F48513ED1B1A9A /* Pods-GradientLoadingBar_Example-dummy.m */; }; - 4249BA5FD30CFB0680582D7C7C6EE392 /* AssertInlineSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29287A9837B9E7B9DCE4C137404D02C6 /* AssertInlineSnapshot.swift */; }; - 480D1264071DA1967F86F28F5CF29B8B /* SpriteKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3745B9ADEFD5EB502DDDCA38C54C0469 /* SpriteKit.swift */; }; - 486A6DAD276EB55E6D7C9F515C86C227 /* SnapshotTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3347134442AAF2B9DB7E1F4E2E3E8B66 /* SnapshotTestCase.swift */; }; + 07319FC388250B963206DB0BF5262128 /* CGPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90A4312109DE68F0350FBB5DD551816 /* CGPath.swift */; }; + 0993CFA284465B399E5751D3E7325F86 /* GradientActivityIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87CAC30F6748F36B220B6FFBB099F400 /* GradientActivityIndicatorView.swift */; }; + 0DCAF4A19F8C1C70ECBB50585736C5DF /* NotchGradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F116A9CB112E9964EFBAE098BB0FF3 /* NotchGradientLoadingBarViewModel.swift */; }; + 1019BF45D831558688E9C56329170B9E /* LightweightObservable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 785E1BC5584D16AC9173E04DE45A6036 /* LightweightObservable-dummy.m */; }; + 1A056F67353C10463EEEA5C0FA6A7740 /* LightweightObservable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F0E19B3286278186EC4012CDF8CAA48F /* LightweightObservable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D0EF6FBAF37BB930183B8F5AA719CD2 /* SnapshotTesting-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E86B6F99751F56AA8AC35B5835DE4722 /* SnapshotTesting-dummy.m */; }; + 205D1E6FB60EC6EB3D5165C8CE55B9C6 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C70A9626A5985B4F9075500CF16CE8C8 /* Disposable.swift */; }; + 21C8D6180F8BEC606A7BD9977308A980 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 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 */; }; + 38CF2E41CED18C1A2CBF4B1B92CB29D6 /* NotchGradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2439E5D58837F574A6E713D3F367BEC3 /* NotchGradientLoadingBarController.swift */; }; + 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 */; }; + 470D4A5B3FC79586168226E3D2B87E87 /* GradientActivityIndicatorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 030CF26233DD6FA78F7A785D81295540 /* GradientActivityIndicatorViewModel.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 */; }; - 4BE134B742037AAB5A883E394D6702E0 /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A900E1CFF1D76CF61DDF7358F5C8863 /* Pods-GradientLoadingBar_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 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 */; }; - 6235B3883B6D9B3EF262ACFF43631F3D /* SceneKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8625DAD35C01DA8A227DFE847303FD36 /* SceneKit.swift */; }; - 6754C82145E0C59C9AF97D91D7321D72 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 68C5DB73151103C8F43EF26688EE5600 /* GradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BC3C52825EB9FF41BCF9CDBAD1CFBFC /* GradientLoadingBarViewModel.swift */; }; - 6FA42D338F2CDE1914908E7D0662AED5 /* Diff.swift in Sources */ = {isa = PBXBuildFile; fileRef = 510E624D0F605EB57201AFDACB0A1AA6 /* Diff.swift */; }; - 6FFBF94E8163A16367C42D61BF77DAA6 /* GradientActivityIndicatorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FBDE3024CEF242BA05EBFE42A753D313 /* GradientActivityIndicatorView.swift */; }; - 70060B0C311FBDF840146EEE9B762220 /* PlistEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D247995FCD2185571A788888D6C5722F /* PlistEncoder.swift */; }; - 776004E55702AEB7C0881078F2CF0F36 /* Pods-GradientLoadingBar_SnapshotTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4371A74F9A6D74628527A30E755EFF25 /* Pods-GradientLoadingBar_SnapshotTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 78BBB110735B5BD1BDDC3CD4FC563323 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = 235E88FACFE1686D577A236842D3E2F8 /* Data.swift */; }; - 7F5C5DD662B656505ECF172E1DDC232E /* UIBezierPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = A85AAD62B88A5A61ED41F15941BCF50E /* UIBezierPath.swift */; }; - 8122289F42E6A1441BB40125D4E87A95 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80BF588C375E0686FCE12E6B7A297CE7 /* Disposable.swift */; }; - 8368D89E28CF3A09A2A4CBBA83663DCD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 88DE0AA2E9071FD322F40132B5ACE852 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9D9BB3003EBE622D53CE1A43730C52F /* String.swift */; }; - 8CFC4188603B9D2F1121730741BF4129 /* GradientLoadingBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EB5F6B9626AFB367351433E58717378 /* GradientLoadingBar-dummy.m */; }; - 9104476A4778BB28C819AB92599A5B6E /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8703A929D837847AFFD9398983FDB99 /* UIImage.swift */; }; - 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 */; }; - 9A928C98ED7DC6E400590141FFF8184D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 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, ); }; }; - 9F6B241BE1332F18DFCC2BF32E03C42C /* UIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B8C3644CAA8A93B3901127A7B8DE26E /* UIView.swift */; }; - A515BDBD2767A9B62C4204B56D536D5A /* GradientLoadingBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EA6885FB45B2DE2A16E806813F4448C3 /* GradientLoadingBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AE9CFFEF1A0418411A63B2FA919F82BC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 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 */; }; + 67117F04E8CA91F2AB32BBA6509777D1 /* GradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5A62DE73AA75C458941AE3D87044394 /* GradientLoadingBarViewModel.swift */; }; + 6F9A550D7CBC5AB6D5F8211FA736C6FE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 6FA42D338F2CDE1914908E7D0662AED5 /* Diff.swift in Sources */ = {isa = PBXBuildFile; fileRef = 195C9E50C429616417E6F569B20896A6 /* Diff.swift */; }; + 70060B0C311FBDF840146EEE9B762220 /* PlistEncoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86A83C5000A82493337A3DFC79D0B56F /* PlistEncoder.swift */; }; + 701A44C2A76A0827E6280A51E6F06CA4 /* Observable+Combine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F94EC0823DB851E6D0A4C81C33A0CEA /* Observable+Combine.swift */; }; + 78BBB110735B5BD1BDDC3CD4FC563323 /* Data.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE73B31D3D042300127FE7545DC9A288 /* Data.swift */; }; + 7F5C5DD662B656505ECF172E1DDC232E /* UIBezierPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E06D57A35648ECBC97644D217B868BD /* UIBezierPath.swift */; }; + 801669AE2ABD3BEDE9E2E9BEEC7C8F56 /* GradientLoadingBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 21378D1DA027CF4A7FFCDCA856BACFA9 /* GradientLoadingBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88DE0AA2E9071FD322F40132B5ACE852 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CAC9E06708925371B8BFCC5484444DD /* String.swift */; }; + 8C6A97407F5503C0A8E9A230055825FC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 9104476A4778BB28C819AB92599A5B6E /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54653ADB348C04B28B4D3455911AEFA0 /* UIImage.swift */; }; + 928DBECCA86A6F98E4B42FA62C5FF051 /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1466DB0C211E9F079BFFFBDFDD4C1BD0 /* View.swift */; }; + 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 */; }; + 9804F2AD08D10C4B255B68683FE5F008 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05587BFF5422D03CCD3FE65046A7581F /* Constants.swift */; }; + 9B00AEBE5F221FE9815159125313C0BD /* Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24E9153BF879D5DA5CDF2FF9BD6EE07A /* Wait.swift */; }; + 9B2FA7DE72372AE510CD9FD1004E02BA /* GradientLoadingBarView+ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7831D5B6C85AD4A68C37F591B9AB355C /* GradientLoadingBarView+ViewModel.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 */; }; + AA3E7FC891EE7D76B71B480813B071FA /* GradientLoadingBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E12ABE7585D42CC165EC2CF40771788 /* GradientLoadingBarView.swift */; }; AFE414B3E0D49B39A358DE524B0839D5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - B0A60594C47C96278C474E106460EB42 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DCA8C4CBB512E220B4470D94AF8BE7D /* Observable.swift */; }; - B43913DEF1B6D4A37DFCCBC484C0EAA3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - BFD9C55A9E36054591864A3D066CEB4E /* Pods-GradientLoadingBar_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A9107CAA27BA0679345F24910903133 /* Pods-GradientLoadingBar_Tests-dummy.m */; }; - C56B3E1A07308BCC8376D15C735B1C25 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D59128C0184862956F5A6B6C4D6E476 /* CALayer.swift */; }; - CCF6BE5916BD8F64AACED287B1364524 /* Pods-GradientLoadingBar_SnapshotTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 172DF8516EF6D5757C3FBEF1C0CB52DC /* Pods-GradientLoadingBar_SnapshotTests-dummy.m */; }; - CFFD67104AE4ABBFEB3801F9B8149664 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5073BA8E5F040F45B737BBC7393222 /* Async.swift */; }; - D0A29718080A06AB351F6FA41B725BEA /* XCTAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4C95B2FA66AB0EFC760FE3BC82E183D /* XCTAttachment.swift */; }; - D3B742506DD86C2472678C4231F3CA7C /* GradientActivityIndicatorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02F507B925649BDDC9AD86D1081E2FDE /* GradientActivityIndicatorViewModel.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 */; }; - E0404744D0B923F648287A50A63209FB /* GradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 920B8BFECED5286B10CD4EAA43825EB6 /* GradientLoadingBarController.swift */; }; - E7F302A02A4D9CDBB6ED77A635E0D71D /* Observable+KeyPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B7AAA3C809414A46F196C6DE5F6CFB4 /* Observable+KeyPath.swift */; }; - E9F255F44A070FE2F4A65A212FAEF61F /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C882B82678DDD020D9056F5C439A303D /* Constants.swift */; }; - EB5F8B0D9E74FD8A1724B04E6AACFABE /* Snapshotting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DCE065F2DFC9DC8382D7C5D74163571 /* Snapshotting.swift */; }; - EE9AE0164C3214055E15309068AA5167 /* GradientActivityIndicatorView+AnimateIsHidden.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55AAE272FE0A61E24BF8311A0DEE32D3 /* GradientActivityIndicatorView+AnimateIsHidden.swift */; }; - F8E9F04AB9A810D3ADCC67FA95CCD9D0 /* Observable+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0AE401171F66B5A704B064F6007059B /* Observable+Equatable.swift */; }; - FCC2B5A63338D5A23A4A22DDC7BD22EB /* LightweightObservable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B12FDB42E09EF68B5A13B6F29206C58 /* LightweightObservable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FEB8176EE5F7E44C5399D94BC6DE0C46 /* String+SpecialCharacters.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED333E2FD9F83C466E13C6A69C917345 /* String+SpecialCharacters.swift */; }; + B75C5770C7B1F07197F749756B259693 /* Pods-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B9CB227C88005476A2E5924D38CC5C0D /* Pods-Example-dummy.m */; }; + B81ABE71BF97A96624CF7B1695F93F71 /* Observable+KeyPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89D6B1C70C53B6DA6E6D0456F0F7DBD8 /* Observable+KeyPath.swift */; }; + C00C9FE7C1B3110AF1B4F98E90FA1A01 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + C1F0EE396EF4614766224610763D0648 /* GradientActivityIndicatorView+AnimateIsHidden.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81F1A9242FB0D528BE3C986DA898222B /* GradientActivityIndicatorView+AnimateIsHidden.swift */; }; + C2F7B05729193ABF3D3185603B6DC3BD /* Pods-ExampleTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BD645920C329144DB30A4181898CDCE5 /* Pods-ExampleTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C3D5042E935F8F32A8155361207A1AF6 /* Observable+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523B7174E480C3FA74F83ABE7056DE17 /* Observable+Equatable.swift */; }; + C56B3E1A07308BCC8376D15C735B1C25 /* CALayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9761D5B7A8B0AF3C2D31731AA1E42F26 /* CALayer.swift */; }; + C6F8DD3E26E1AA37E21277B19909F932 /* GradientLoadingBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C2CEF8E81CA45EDEED0F2C58AAF55AB2 /* GradientLoadingBar-dummy.m */; }; + C9F9871C4AC572471F57D9BFB4959131 /* Pods-ExampleSnapshotTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 65C02E52F65DFA68BF382C89D70FA2B3 /* Pods-ExampleSnapshotTests-dummy.m */; }; + CAAADD4E379515FAAC6411B598BED2DB /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDFA33C3D1AF4C2C0CDAFFE7D06B88AF /* Observable.swift */; }; + CFFD67104AE4ABBFEB3801F9B8149664 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33915C6CA41A4120CCCFDA0A30623E99 /* Async.swift */; }; + D0A29718080A06AB351F6FA41B725BEA /* XCTAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B8421185176594CFD7B0CCE69071B4F /* XCTAttachment.swift */; }; + D3C4D4F28C0180E812B6BA5FC4F5015B /* UIViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BBB42D19B8EDB33AE63C1A34EAD81DE /* UIViewController.swift */; }; + D7AE9DBB6C5D2522EB24A673921F9365 /* SwiftUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E633CB1D426841C43DF3462991319C4 /* SwiftUIView.swift */; }; + D89148BFC07632D1FE62D5CF4616C2E8 /* Pods-Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F88EA58D96440077B653714F58692A9B /* Pods-Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DA787DFD55A7814418DE78F66BA70847 /* CaseIterable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A38BD36975B9051B989F73656223996F /* CaseIterable.swift */; }; + E191E67DC6F3E229C64141DFCB2272B3 /* GradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82F9FF6AB5C3A7FF3BA5129F302EBC42 /* GradientLoadingBarController.swift */; }; + EB5F8B0D9E74FD8A1724B04E6AACFABE /* Snapshotting.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DAABA5B241D32CC27078958069BCC5B /* Snapshotting.swift */; }; + FEB8176EE5F7E44C5399D94BC6DE0C46 /* String+SpecialCharacters.swift in Sources */ = {isa = PBXBuildFile; fileRef = F12C335B7DC098086708FA73A72EE357 /* String+SpecialCharacters.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 1A288224DD88E7929E76A0F7426DCA1D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E0B6892AAEBA4792BFD4534123482521; - remoteInfo = "Pods-GradientLoadingBar_Example"; - }; - 37EF13960F5FE5AD371518E3EF2264CA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = ADEAE7CDD604DE4F3072E6021A314487; - remoteInfo = SnapshotTesting; - }; - 69923C0DCC5D250C66583E9139A796BF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E0B6892AAEBA4792BFD4534123482521; - remoteInfo = "Pods-GradientLoadingBar_Example"; - }; - 6DB68D8BBE9AA7A465BC6B50BCCB356C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 086F937CFC9099EB74E4B66BE7CBCB93; - remoteInfo = LightweightObservable; - }; - C47DC454DBF78E784D3BF99EB4F26380 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 086F937CFC9099EB74E4B66BE7CBCB93; - remoteInfo = LightweightObservable; - }; - C517585EFB4EC6F26A97045672F93408 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 52B60EC2A583F24ACBB69C113F5488B9; - remoteInfo = SwiftLint; - }; - CF7FA9373A539F47E9FE2D6437617BC3 /* PBXContainerItemProxy */ = { + 120C38BF58AF5D82B47527BEEC5B144E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B951B6FCD3E55AF969FBA9F7B476B877; remoteInfo = SwiftConfigurationFiles; }; - D1D244BE174E0FACF92F258BE6BAF653 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AD9297F9E6CC3E50EDCFECA0A77800B7; - remoteInfo = GradientLoadingBar; - }; - ED318F74ACCF5F2A391A74CECC4AF733 /* PBXContainerItemProxy */ = { + 1CA40FC7044AEF100C1D27FAB7268645 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 1CD0618C486973D5588EF20D2E8C0AEA; remoteInfo = SwiftFormat; }; + 5BDC45EA5ACD2669BE0B4AE72B21F022 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0AEE99A309977BD12A049FF48AF9BA4B; + remoteInfo = "Pods-Example"; + }; + 69525D79F4D5FA7862447A37147DCF61 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 086F937CFC9099EB74E4B66BE7CBCB93; + remoteInfo = LightweightObservable; + }; + 6E2F9A971893F3799C755AF9FA10C1E5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = ADEAE7CDD604DE4F3072E6021A314487; + remoteInfo = SnapshotTesting; + }; + 7242656DEF78C5AAE010E3BF4AA3A63F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0AEE99A309977BD12A049FF48AF9BA4B; + remoteInfo = "Pods-Example"; + }; + 7D378D58859933A991581EF02E1EA517 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 086F937CFC9099EB74E4B66BE7CBCB93; + remoteInfo = LightweightObservable; + }; + D6487DA6A5A566A6DA3AA6F4E6460617 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AD9297F9E6CC3E50EDCFECA0A77800B7; + remoteInfo = GradientLoadingBar; + }; + FB1CA4157FA7DA975B36E982441B0826 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 52B60EC2A583F24ACBB69C113F5488B9; + remoteInfo = SwiftLint; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 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 = ""; }; - 01F10362867DE1BC975D30D2B32F0ECA /* GradientLoadingBar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GradientLoadingBar-Info.plist"; sourceTree = ""; }; - 02CD89009632E27BD479C79D599B107A /* Codable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Codable.swift; path = Sources/SnapshotTesting/Snapshotting/Codable.swift; sourceTree = ""; }; - 02F507B925649BDDC9AD86D1081E2FDE /* GradientActivityIndicatorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorViewModel.swift; sourceTree = ""; }; - 0A6AFF4C6A1BA30CE9B8A5B1CEDC407A /* NotchGradientLoadingBarViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NotchGradientLoadingBarViewModel.swift; sourceTree = ""; }; - 108AACC96F7DBC089B0840E09F19C698 /* Pods-GradientLoadingBar_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Example.release.xcconfig"; sourceTree = ""; }; - 12241E9306298FD7BD30DD97B2F2F585 /* Description.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Description.swift; path = Sources/SnapshotTesting/Snapshotting/Description.swift; sourceTree = ""; }; - 132C18988D60EF85736C043D43C19E57 /* Pods-GradientLoadingBar_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_Tests-umbrella.h"; sourceTree = ""; }; - 13520AB8B3790CE3CEDCBBEEE1EF237A /* Pods-GradientLoadingBar_SnapshotTests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-GradientLoadingBar_SnapshotTests"; path = Pods_GradientLoadingBar_SnapshotTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1679A4CF92D4ADFB15F8200201EC3AE5 /* Pods-GradientLoadingBar_SnapshotTests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientLoadingBar_SnapshotTests-frameworks.sh"; sourceTree = ""; }; - 1711FC18263D47D46851F0433A93F110 /* Pods-GradientLoadingBar_Tests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-GradientLoadingBar_Tests"; path = Pods_GradientLoadingBar_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 172DF8516EF6D5757C3FBEF1C0CB52DC /* Pods-GradientLoadingBar_SnapshotTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_SnapshotTests-dummy.m"; sourceTree = ""; }; - 1A9107CAA27BA0679345F24910903133 /* Pods-GradientLoadingBar_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_Tests-dummy.m"; sourceTree = ""; }; - 1B664F0A7F5E59140F761C16069995E9 /* Pods-GradientLoadingBar_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Tests.release.xcconfig"; sourceTree = ""; }; - 1CA5ADE67427DB590BC5414E8E4498BA /* Pods-GradientLoadingBar_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Tests-acknowledgements.plist"; sourceTree = ""; }; - 1F070D4133AC30EFD0B1CBDAD691998A /* LightweightObservable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-prefix.pch"; sourceTree = ""; }; - 219D91F90F2D4E48019FF8920700C17F /* Pods-GradientLoadingBar_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_Tests-acknowledgements.markdown"; 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 = ""; }; - 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 = ""; }; - 2D246858B1E28690CC1921F1EC8328E1 /* Pods-GradientLoadingBar_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientLoadingBar_Example-frameworks.sh"; sourceTree = ""; }; - 2E16A843354D5BC8D4DA54D9AEFEAAB2 /* Pods-GradientLoadingBar_SnapshotTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_SnapshotTests-acknowledgements.plist"; sourceTree = ""; }; - 2EB5F6B9626AFB367351433E58717378 /* GradientLoadingBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GradientLoadingBar-dummy.m"; 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 = ""; }; - 388DBB0163B3768EC43AB87FFED8A19D /* URLRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = URLRequest.swift; path = Sources/SnapshotTesting/Snapshotting/URLRequest.swift; sourceTree = ""; }; - 3A900E1CFF1D76CF61DDF7358F5C8863 /* Pods-GradientLoadingBar_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_Example-umbrella.h"; sourceTree = ""; }; - 3C6A379C135C84644F189B8056CCBA04 /* Pods-GradientLoadingBar_Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-GradientLoadingBar_Example"; path = Pods_GradientLoadingBar_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 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 = ""; }; - 412F23BDA9646A7744AC81F4006F0817 /* GradientLoadingBar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientLoadingBar.release.xcconfig; sourceTree = ""; }; - 432F44D6009308BDE038D8F587A32CC7 /* GradientLoadingBar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GradientLoadingBar.modulemap; sourceTree = ""; }; - 4371A74F9A6D74628527A30E755EFF25 /* Pods-GradientLoadingBar_SnapshotTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_SnapshotTests-umbrella.h"; sourceTree = ""; }; - 44FC5949DA58E53329E8837F44618093 /* SwiftLint.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.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 = ""; }; - 55AAE272FE0A61E24BF8311A0DEE32D3 /* GradientActivityIndicatorView+AnimateIsHidden.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "GradientActivityIndicatorView+AnimateIsHidden.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 = ""; }; - 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 = ""; }; - 5EB07AAAC446BF6E90F73800EBBC633A /* readme.md */ = {isa = PBXFileReference; includeInIndex = 1; path = readme.md; 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 = ""; }; + 030CF26233DD6FA78F7A785D81295540 /* GradientActivityIndicatorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorViewModel.swift; 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 = ""; }; + 05587BFF5422D03CCD3FE65046A7581F /* Constants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + 0638F8873A3594830C7108D94F8F8104 /* Pods-Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Example-frameworks.sh"; sourceTree = ""; }; + 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 = ""; }; + 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 = ""; }; + 21378D1DA027CF4A7FFCDCA856BACFA9 /* GradientLoadingBar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-umbrella.h"; sourceTree = ""; }; + 2439E5D58837F574A6E713D3F367BEC3 /* NotchGradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NotchGradientLoadingBarController.swift; sourceTree = ""; }; + 24E9153BF879D5DA5CDF2FF9BD6EE07A /* Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Wait.swift; path = Sources/SnapshotTesting/Extensions/Wait.swift; 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 = ""; }; + 4342969D6D37396C136697D0BC1C2A06 /* SceneKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SceneKit.swift; path = Sources/SnapshotTesting/Snapshotting/SceneKit.swift; 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 = ""; }; + 53448614ED135D041009472CEAE59999 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; 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 = ""; }; - 652D9AA358DBDB2DBA1CFB02CCBA8DC4 /* Pods-GradientLoadingBar_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Tests-Info.plist"; sourceTree = ""; }; - 675C8FED0CA649F447020502AC40DA94 /* Diffing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Diffing.swift; path = Sources/SnapshotTesting/Diffing.swift; sourceTree = ""; }; + 611C0D66A0AB67C0F761CBF1393B123C /* readme.md */ = {isa = PBXFileReference; includeInIndex = 1; path = readme.md; sourceTree = ""; }; + 630CABE8F692FCDBFD1B122A2D0CE388 /* Pods-ExampleTests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-ExampleTests"; path = Pods_ExampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 65C02E52F65DFA68BF382C89D70FA2B3 /* Pods-ExampleSnapshotTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ExampleSnapshotTests-dummy.m"; sourceTree = ""; }; 67873E92210DD4E777C49C6E8AEDC108 /* GradientLoadingBar */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GradientLoadingBar; path = GradientLoadingBar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 67DB9A65EEF58E7930846A0CEE3DA0F2 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; - 69838A921E83418B945E72EB342809F5 /* Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig"; 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 = ""; }; - 72E1E31C3B08F491DD072C74B13669AB /* GradientLoadingBar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientLoadingBar.debug.xcconfig; sourceTree = ""; }; - 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 = ""; }; - 7BFBD5D32218C4E5AE0EE65833E6E9BE /* GradientLoadingBar.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GradientLoadingBar.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 80BF588C375E0686FCE12E6B7A297CE7 /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = LightweightObservable/Classes/Disposable.swift; sourceTree = ""; }; - 8194C4CB9E683FC366F48513ED1B1A9A /* Pods-GradientLoadingBar_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_Example-dummy.m"; sourceTree = ""; }; - 8625DAD35C01DA8A227DFE847303FD36 /* SceneKit.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SceneKit.swift; path = Sources/SnapshotTesting/Snapshotting/SceneKit.swift; 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 = ""; }; - 8BC3C52825EB9FF41BCF9CDBAD1CFBFC /* GradientLoadingBarViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarViewModel.swift; sourceTree = ""; }; - 8DD33C2202B004A8B452184DCFAB4DEC /* SnapshotTesting-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapshotTesting-prefix.pch"; sourceTree = ""; }; - 920B8BFECED5286B10CD4EAA43825EB6 /* GradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GradientLoadingBarController.swift; path = GradientLoadingBar/Classes/GradientLoadingBarController.swift; 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 = ""; }; + 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 = ""; }; + 7831D5B6C85AD4A68C37F591B9AB355C /* GradientLoadingBarView+ViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "GradientLoadingBarView+ViewModel.swift"; 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 = ""; }; + 819F2B088E9DC0A9F4CF69454E651B99 /* GradientLoadingBar.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GradientLoadingBar.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 81F1A9242FB0D528BE3C986DA898222B /* GradientActivityIndicatorView+AnimateIsHidden.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "GradientActivityIndicatorView+AnimateIsHidden.swift"; sourceTree = ""; }; + 82F9FF6AB5C3A7FF3BA5129F302EBC42 /* GradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarController.swift; sourceTree = ""; }; + 836F33603CBD5C97EB86223F95F1AF65 /* GradientLoadingBar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GradientLoadingBar.modulemap; 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 = ""; }; + 87CAC30F6748F36B220B6FFBB099F400 /* GradientActivityIndicatorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorView.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; }; - 9DCA8C4CBB512E220B4470D94AF8BE7D /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = LightweightObservable/Classes/Observable.swift; sourceTree = ""; }; - 9DD32929B122D2561D1E99468EECDBF7 /* Pods-GradientLoadingBar_SnapshotTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_SnapshotTests.release.xcconfig"; sourceTree = ""; }; + 9E12ABE7585D42CC165EC2CF40771788 /* GradientLoadingBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarView.swift; sourceTree = ""; }; A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SnapshotTesting; path = SnapshotTesting.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A652F20CE7EE44E64565C2120B651665 /* Pods-GradientLoadingBar_SnapshotTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientLoadingBar_SnapshotTests.modulemap"; sourceTree = ""; }; - 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 = ""; }; - A95E7032DE35DF972EF7FEC8A884303B /* Pods-GradientLoadingBar_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Example.debug.xcconfig"; sourceTree = ""; }; - B1518F0564D9405495037F4713C4F143 /* Pods-GradientLoadingBar_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientLoadingBar_Tests.modulemap"; sourceTree = ""; }; - B27AAA41B1DEF56C8059867126A15A38 /* Pods-GradientLoadingBar_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Example-Info.plist"; sourceTree = ""; }; - B67BD6ECBAB898E12CB2B4D25E835034 /* NSViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NSViewController.swift; path = Sources/SnapshotTesting/Snapshotting/NSViewController.swift; sourceTree = ""; }; - B7FF35F32E5C06204CAF8183AC101D53 /* Pods-GradientLoadingBar_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Example-acknowledgements.plist"; 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 = ""; }; - BBB6B9166CB669730E6755D0283ACC89 /* GradientLoadingBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-prefix.pch"; sourceTree = ""; }; - BEBA37204701F79F631433A8EEF190E7 /* Pods-GradientLoadingBar_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_Example-acknowledgements.markdown"; sourceTree = ""; }; - C4C95B2FA66AB0EFC760FE3BC82E183D /* XCTAttachment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = XCTAttachment.swift; path = Sources/SnapshotTesting/Common/XCTAttachment.swift; sourceTree = ""; }; - C882B82678DDD020D9056F5C439A303D /* Constants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - C9CADA2B0AD5E703D468B06A67A80492 /* NotchGradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotchGradientLoadingBarController.swift; path = GradientLoadingBar/Classes/NotchGradientLoadingBarController.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 = ""; }; + A9E3431ABFE25C3CB43A736E3499CFDB /* GradientLoadingBar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GradientLoadingBar-Info.plist"; sourceTree = ""; }; + AA36DC22EDA044133EE2DB064FF97B29 /* Pods-ExampleSnapshotTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ExampleSnapshotTests-Info.plist"; 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 = ""; }; + C2CEF8E81CA45EDEED0F2C58AAF55AB2 /* GradientLoadingBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GradientLoadingBar-dummy.m"; sourceTree = ""; }; + C70A9626A5985B4F9075500CF16CE8C8 /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = LightweightObservable/Disposable.swift; sourceTree = ""; }; + C731711056A77F92D85D953818CE446A /* GradientLoadingBar.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientLoadingBar.debug.xcconfig; 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 = ""; }; - D2F1D5D4FE8EB1B511317314725F9D54 /* SwiftConfigurationFiles.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftConfigurationFiles.release.xcconfig; sourceTree = ""; }; - 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 = ""; }; - E0AE401171F66B5A704B064F6007059B /* Observable+Equatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Equatable.swift"; path = "LightweightObservable/Classes/Extensions/Observable+Equatable.swift"; sourceTree = ""; }; - E0D90990792D653F523A884442305989 /* Pods-GradientLoadingBar_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientLoadingBar_Example.modulemap"; sourceTree = ""; }; - E475B473BD1D9805A199E083205DD153 /* CaseIterable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CaseIterable.swift; path = Sources/SnapshotTesting/Snapshotting/CaseIterable.swift; sourceTree = ""; }; - EA6885FB45B2DE2A16E806813F4448C3 /* GradientLoadingBar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-umbrella.h"; 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 = ""; }; + 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 = ""; }; + 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 = ""; }; + 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 = ""; }; + E5A62DE73AA75C458941AE3D87044394 /* GradientLoadingBarViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarViewModel.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 = ""; }; + 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; }; - F7B1750DE470F045803DE2094D5F7264 /* Pods-GradientLoadingBar_SnapshotTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_SnapshotTests-Info.plist"; sourceTree = ""; }; - FBAEAE91BB9B77006558E537894C33C5 /* Pods-GradientLoadingBar_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Tests.debug.xcconfig"; sourceTree = ""; }; - FBDE3024CEF242BA05EBFE42A753D313 /* GradientActivityIndicatorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientActivityIndicatorView.swift; sourceTree = ""; }; - FF135E1D23F08BE7F1D7FFC86260EF9B /* Pods-GradientLoadingBar_SnapshotTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_SnapshotTests-acknowledgements.markdown"; 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 = ""; }; + F9F116A9CB112E9964EFBAE098BB0FF3 /* NotchGradientLoadingBarViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NotchGradientLoadingBarViewModel.swift; sourceTree = ""; }; + FA4E48AA903E92EA5AB9E6CDB5C619D6 /* GradientLoadingBar.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientLoadingBar.release.xcconfig; sourceTree = ""; }; + FDD0B75FBBD1ED8256363BDA8367D869 /* GradientLoadingBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-prefix.pch"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 21E1037D4BAE27CF8D26BA0913E02991 /* Frameworks */ = { + 4D2FCA3E5D6A458448500A6C7B9B42DE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9A928C98ED7DC6E400590141FFF8184D /* Foundation.framework in Frameworks */, + 6F9A550D7CBC5AB6D5F8211FA736C6FE /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 663D284D2517F59C4EF9A97C628583B7 /* Frameworks */ = { + 50FD1A55A768D837C91217B4AAE0A00B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B43913DEF1B6D4A37DFCCBC484C0EAA3 /* Foundation.framework in Frameworks */, + 21C8D6180F8BEC606A7BD9977308A980 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 80CB26F1AFBA6BA2257DE8F446122E81 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4A0E4E446BEDFF8D0A790B77EC15FEA7 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9280D47AF9C0E39937FFC80009067D70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C00C9FE7C1B3110AF1B4F98E90FA1A01 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -308,56 +330,80 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BAC4B04FC3FA2B79DAC279C0D21C8C5C /* Frameworks */ = { + A954471A8A4F347E9DDF93C0716D534D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AE9CFFEF1A0418411A63B2FA919F82BC /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ED5AC0D962E33B70032B2026DD2CC8B2 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6754C82145E0C59C9AF97D91D7321D72 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F646365FBEF9107873B7F1590CD0853A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8368D89E28CF3A09A2A4CBBA83663DCD /* Foundation.framework in Frameworks */, + 8C6A97407F5503C0A8E9A230055825FC /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0E360A9F9862C6DCC0C9EF8C5DF2BF51 /* Support Files */ = { + 04417F0D3627BF2A933E31FA1C6C073A /* GradientActivityIndicatorView */ = { 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 */, + 87CAC30F6748F36B220B6FFBB099F400 /* GradientActivityIndicatorView.swift */, + 81F1A9242FB0D528BE3C986DA898222B /* GradientActivityIndicatorView+AnimateIsHidden.swift */, + 030CF26233DD6FA78F7A785D81295540 /* GradientActivityIndicatorViewModel.swift */, ); - name = "Support Files"; - path = "../Target Support Files/SnapshotTesting"; + name = GradientActivityIndicatorView; + path = GradientActivityIndicatorView; sourceTree = ""; }; - 11743C6FFCADF6A7B5BE6FA435115EA3 /* Views */ = { + 045FA942BFE8DB929BF31B0D6455A531 /* Pods-ExampleSnapshotTests */ = { isa = PBXGroup; children = ( - FBDE3024CEF242BA05EBFE42A753D313 /* GradientActivityIndicatorView.swift */, - 55AAE272FE0A61E24BF8311A0DEE32D3 /* GradientActivityIndicatorView+AnimateIsHidden.swift */, + 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 = Views; - path = GradientLoadingBar/Classes/Views; + name = "Pods-ExampleSnapshotTests"; + path = "Target Support Files/Pods-ExampleSnapshotTests"; + sourceTree = ""; + }; + 04671A532A737A9698DE71F7DEA1802A /* Support Files */ = { + isa = PBXGroup; + children = ( + AE02F290421D0044A7B9B488A50DBD6C /* SwiftConfigurationFiles.debug.xcconfig */, + 04D67E1AC2B476618545A95A11B5B811 /* SwiftConfigurationFiles.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SwiftConfigurationFiles"; + sourceTree = ""; + }; + 0A64DB470E4B02FFEE1183140FB557A8 /* Pods-Example */ = { + isa = PBXGroup; + children = ( + 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 = ""; + }; + 135BE4C1CBFFCE3599CB176F5FB20CC4 /* NotchGradientLoadingBar */ = { + isa = PBXGroup; + children = ( + 2439E5D58837F574A6E713D3F367BEC3 /* NotchGradientLoadingBarController.swift */, + F9F116A9CB112E9964EFBAE098BB0FF3 /* NotchGradientLoadingBarViewModel.swift */, + ); + name = NotchGradientLoadingBar; + path = NotchGradientLoadingBar; sourceTree = ""; }; 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { @@ -368,190 +414,128 @@ name = Frameworks; sourceTree = ""; }; - 182051F58B71F1C24E92C50B91E729E9 /* Pods-GradientLoadingBar_Tests */ = { + 2AFC4759ECC4D53FF9953C3CFBE67078 /* Support Files */ = { isa = PBXGroup; children = ( - B1518F0564D9405495037F4713C4F143 /* Pods-GradientLoadingBar_Tests.modulemap */, - 219D91F90F2D4E48019FF8920700C17F /* Pods-GradientLoadingBar_Tests-acknowledgements.markdown */, - 1CA5ADE67427DB590BC5414E8E4498BA /* Pods-GradientLoadingBar_Tests-acknowledgements.plist */, - 1A9107CAA27BA0679345F24910903133 /* Pods-GradientLoadingBar_Tests-dummy.m */, - 652D9AA358DBDB2DBA1CFB02CCBA8DC4 /* Pods-GradientLoadingBar_Tests-Info.plist */, - 132C18988D60EF85736C043D43C19E57 /* Pods-GradientLoadingBar_Tests-umbrella.h */, - FBAEAE91BB9B77006558E537894C33C5 /* Pods-GradientLoadingBar_Tests.debug.xcconfig */, - 1B664F0A7F5E59140F761C16069995E9 /* Pods-GradientLoadingBar_Tests.release.xcconfig */, + 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 = "Pods-GradientLoadingBar_Tests"; - path = "Target Support Files/Pods-GradientLoadingBar_Tests"; + name = "Support Files"; + path = "../Target Support Files/SnapshotTesting"; sourceTree = ""; }; - 1A4994587C8740E379304D1195D62258 /* LightweightObservable */ = { + 2B23D09BF983A3F081B96D5579D08787 /* Support Files */ = { isa = PBXGroup; children = ( - 80BF588C375E0686FCE12E6B7A297CE7 /* Disposable.swift */, - 9DCA8C4CBB512E220B4470D94AF8BE7D /* Observable.swift */, - E0AE401171F66B5A704B064F6007059B /* Observable+Equatable.swift */, - 8B7AAA3C809414A46F196C6DE5F6CFB4 /* Observable+KeyPath.swift */, - 9CF614E301B83EC4DD18CF37D095ED73 /* Support Files */, + 08E87DFECD69E46292154E099AB8D144 /* SwiftLint.debug.xcconfig */, + 39724ABA4E40A364B25F01F3E3CE31EC /* SwiftLint.release.xcconfig */, ); - name = LightweightObservable; - path = LightweightObservable; + name = "Support Files"; + path = "../Target Support Files/SwiftLint"; sourceTree = ""; }; - 2BEFDB084B1FC055097BB3AF7230859C /* Pod */ = { + 38EF5B181960A8750663ECF07A3502C3 /* GradientLoadingBar */ = { isa = PBXGroup; children = ( - 7BFBD5D32218C4E5AE0EE65833E6E9BE /* GradientLoadingBar.podspec */, - 67DB9A65EEF58E7930846A0CEE3DA0F2 /* LICENSE */, - 5EB07AAAC446BF6E90F73800EBBC633A /* readme.md */, - ); - name = Pod; - sourceTree = ""; - }; - 2DF6616C733AD295C813A7B4AFFB3F7B /* SwiftLint */ = { - isa = PBXGroup; - children = ( - D849F6B1672F929753FBCBD372FABBFA /* Support Files */, - ); - name = SwiftLint; - path = SwiftLint; - sourceTree = ""; - }; - 3D5AEA9F1D53DA9658A949832ACA09D4 /* SwiftFormat */ = { - isa = PBXGroup; - children = ( - 73893CCD044DB8B8BFF17C6C86A52345 /* Support Files */, - ); - name = SwiftFormat; - path = SwiftFormat; - sourceTree = ""; - }; - 42C5E31CFED75787FC35907ED840E206 /* Products */ = { - isa = PBXGroup; - children = ( - 67873E92210DD4E777C49C6E8AEDC108 /* GradientLoadingBar */, - F196AAA163469B17170E99B82C7C4C0A /* LightweightObservable */, - 3C6A379C135C84644F189B8056CCBA04 /* Pods-GradientLoadingBar_Example */, - 13520AB8B3790CE3CEDCBBEEE1EF237A /* Pods-GradientLoadingBar_SnapshotTests */, - 1711FC18263D47D46851F0433A93F110 /* Pods-GradientLoadingBar_Tests */, - A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting */, - ); - name = Products; - sourceTree = ""; - }; - 4EF94CB118C72CED447C8FBDF9771B52 /* SnapshotTesting */ = { - 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 */, - ); - name = SnapshotTesting; - path = SnapshotTesting; - sourceTree = ""; - }; - 625395338A1C7013D0E5EA11C9A0F5B4 /* GradientLoadingBar */ = { - isa = PBXGroup; - children = ( - 920B8BFECED5286B10CD4EAA43825EB6 /* GradientLoadingBarController.swift */, - C9CADA2B0AD5E703D468B06A67A80492 /* NotchGradientLoadingBarController.swift */, - A8B491E4E7AD1B86A1B5A7A9DE523DEC /* Misc */, - 2BEFDB084B1FC055097BB3AF7230859C /* Pod */, - C7B4887CB582A60B2828150E550CA0C1 /* Support Files */, - 839E937F28D0B9CB9F457692610A394A /* ViewModel */, - 11743C6FFCADF6A7B5BE6FA435115EA3 /* Views */, + 6FF7073798AFBF1D99CD8DC37B79EF7D /* Feature */, + 9D6FDED1CC4FBBD62B291239E9E05F21 /* Helper */, + E32BE6555DD6BBAE8AA0BD75EBC700E4 /* Pod */, + CAE26C40F3F1E36EAEF7CC547EC400D9 /* Support Files */, ); name = GradientLoadingBar; path = ../..; sourceTree = ""; }; - 73893CCD044DB8B8BFF17C6C86A52345 /* Support Files */ = { + 43AAC1AB1516723E83B3890B1D058A16 /* SwiftConfigurationFiles */ = { isa = PBXGroup; children = ( - 00EBB6A2B0A117A761C58ED62B0D4C24 /* SwiftFormat.debug.xcconfig */, - D997502F7A2A3F2E07DE43BA6C33DEF8 /* SwiftFormat.release.xcconfig */, + 04671A532A737A9698DE71F7DEA1802A /* Support Files */, + ); + name = SwiftConfigurationFiles; + path = SwiftConfigurationFiles; + sourceTree = ""; + }; + 4D8343AE50A21BF85F8F1BB899B830A1 /* GradientLoadingBarView */ = { + isa = PBXGroup; + children = ( + 9E12ABE7585D42CC165EC2CF40771788 /* GradientLoadingBarView.swift */, + 7831D5B6C85AD4A68C37F591B9AB355C /* GradientLoadingBarView+ViewModel.swift */, + ); + name = GradientLoadingBarView; + path = GradientLoadingBarView; + sourceTree = ""; + }; + 64B259A515FD4521DED276EDCF320F32 /* GradientLoadingBar */ = { + isa = PBXGroup; + children = ( + 82F9FF6AB5C3A7FF3BA5129F302EBC42 /* GradientLoadingBarController.swift */, + E5A62DE73AA75C458941AE3D87044394 /* GradientLoadingBarViewModel.swift */, + ); + name = GradientLoadingBar; + path = GradientLoadingBar; + sourceTree = ""; + }; + 6FF7073798AFBF1D99CD8DC37B79EF7D /* Feature */ = { + isa = PBXGroup; + children = ( + 04417F0D3627BF2A933E31FA1C6C073A /* GradientActivityIndicatorView */, + 64B259A515FD4521DED276EDCF320F32 /* GradientLoadingBar */, + 4D8343AE50A21BF85F8F1BB899B830A1 /* GradientLoadingBarView */, + 135BE4C1CBFFCE3599CB176F5FB20CC4 /* NotchGradientLoadingBar */, + ); + name = Feature; + path = GradientLoadingBar/Feature; + sourceTree = ""; + }; + 8117A0062130D047C63C2824B16563F9 /* SwiftFormat */ = { + isa = PBXGroup; + children = ( + 82BF8F914435313C9DCFF6FAFE9EF700 /* Support Files */, + ); + name = SwiftFormat; + path = SwiftFormat; + sourceTree = ""; + }; + 82BF8F914435313C9DCFF6FAFE9EF700 /* Support Files */ = { + isa = PBXGroup; + children = ( + E43F95A56840098ECFFB3426EC236F54 /* SwiftFormat.debug.xcconfig */, + 321E0EECA8025D4E3C0406B264AB9F4A /* SwiftFormat.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/SwiftFormat"; sourceTree = ""; }; - 810FDB3212C2E1BF5CEB60C53A119039 /* Pods-GradientLoadingBar_SnapshotTests */ = { + 8D4021A66B75C4DAC37FB29AF10F5972 /* LightweightObservable */ = { isa = PBXGroup; children = ( - A652F20CE7EE44E64565C2120B651665 /* Pods-GradientLoadingBar_SnapshotTests.modulemap */, - FF135E1D23F08BE7F1D7FFC86260EF9B /* Pods-GradientLoadingBar_SnapshotTests-acknowledgements.markdown */, - 2E16A843354D5BC8D4DA54D9AEFEAAB2 /* Pods-GradientLoadingBar_SnapshotTests-acknowledgements.plist */, - 172DF8516EF6D5757C3FBEF1C0CB52DC /* Pods-GradientLoadingBar_SnapshotTests-dummy.m */, - 1679A4CF92D4ADFB15F8200201EC3AE5 /* Pods-GradientLoadingBar_SnapshotTests-frameworks.sh */, - F7B1750DE470F045803DE2094D5F7264 /* Pods-GradientLoadingBar_SnapshotTests-Info.plist */, - 4371A74F9A6D74628527A30E755EFF25 /* Pods-GradientLoadingBar_SnapshotTests-umbrella.h */, - 69838A921E83418B945E72EB342809F5 /* Pods-GradientLoadingBar_SnapshotTests.debug.xcconfig */, - 9DD32929B122D2561D1E99468EECDBF7 /* Pods-GradientLoadingBar_SnapshotTests.release.xcconfig */, + C70A9626A5985B4F9075500CF16CE8C8 /* Disposable.swift */, + EDFA33C3D1AF4C2C0CDAFFE7D06B88AF /* Observable.swift */, + 1F94EC0823DB851E6D0A4C81C33A0CEA /* Observable+Combine.swift */, + 523B7174E480C3FA74F83ABE7056DE17 /* Observable+Equatable.swift */, + 89D6B1C70C53B6DA6E6D0456F0F7DBD8 /* Observable+KeyPath.swift */, + F62BDBCF2DC54A7887F6D705A6E84E66 /* Support Files */, ); - name = "Pods-GradientLoadingBar_SnapshotTests"; - path = "Target Support Files/Pods-GradientLoadingBar_SnapshotTests"; + name = LightweightObservable; + path = LightweightObservable; sourceTree = ""; }; - 839E937F28D0B9CB9F457692610A394A /* ViewModel */ = { + 912BA9CC2708BCAB8AF5FD0F58C99A42 /* Products */ = { isa = PBXGroup; children = ( - 02F507B925649BDDC9AD86D1081E2FDE /* GradientActivityIndicatorViewModel.swift */, - 8BC3C52825EB9FF41BCF9CDBAD1CFBFC /* GradientLoadingBarViewModel.swift */, - 0A6AFF4C6A1BA30CE9B8A5B1CEDC407A /* NotchGradientLoadingBarViewModel.swift */, + 67873E92210DD4E777C49C6E8AEDC108 /* GradientLoadingBar */, + F196AAA163469B17170E99B82C7C4C0A /* LightweightObservable */, + 1F667CC0E19EAF34E5A4119E2121F585 /* Pods-Example */, + 1EC06CD38CB67E4E8061D4D2DCD617B2 /* Pods-ExampleSnapshotTests */, + 630CABE8F692FCDBFD1B122A2D0CE388 /* Pods-ExampleTests */, + A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting */, ); - name = ViewModel; - path = GradientLoadingBar/Classes/ViewModel; - sourceTree = ""; - }; - 866F4707586BA782EEE16BB0E4DDA12E /* Pods */ = { - isa = PBXGroup; - children = ( - 1A4994587C8740E379304D1195D62258 /* LightweightObservable */, - 4EF94CB118C72CED447C8FBDF9771B52 /* SnapshotTesting */, - 89A71E3BC8ACA4ED6EA26DC7EFD6325B /* SwiftConfigurationFiles */, - 3D5AEA9F1D53DA9658A949832ACA09D4 /* SwiftFormat */, - 2DF6616C733AD295C813A7B4AFFB3F7B /* SwiftLint */, - ); - name = Pods; - sourceTree = ""; - }; - 89A71E3BC8ACA4ED6EA26DC7EFD6325B /* SwiftConfigurationFiles */ = { - isa = PBXGroup; - children = ( - 9F500AA9EDCC9F77CF819939A745BC17 /* Support Files */, - ); - name = SwiftConfigurationFiles; - path = SwiftConfigurationFiles; + name = Products; sourceTree = ""; }; 974814B39C0012DECD183BBB91B32103 /* iOS */ = { @@ -563,108 +547,160 @@ name = iOS; sourceTree = ""; }; - 9CF614E301B83EC4DD18CF37D095ED73 /* Support Files */ = { + 9D6FDED1CC4FBBD62B291239E9E05F21 /* Helper */ = { 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 */, + 05587BFF5422D03CCD3FE65046A7581F /* Constants.swift */, ); - name = "Support Files"; - path = "../Target Support Files/LightweightObservable"; + name = Helper; + path = GradientLoadingBar/Helper; sourceTree = ""; }; - 9F500AA9EDCC9F77CF819939A745BC17 /* Support Files */ = { + A45F4A4E9AC8AF47029D4812E205A54B /* SwiftLint */ = { isa = PBXGroup; children = ( - 739B52B367A66EB59594809032052D1F /* SwiftConfigurationFiles.debug.xcconfig */, - D2F1D5D4FE8EB1B511317314725F9D54 /* SwiftConfigurationFiles.release.xcconfig */, + 2B23D09BF983A3F081B96D5579D08787 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftConfigurationFiles"; + name = SwiftLint; + path = SwiftLint; sourceTree = ""; }; - A8B491E4E7AD1B86A1B5A7A9DE523DEC /* Misc */ = { + B2665421823061B3284ED62A6FADD254 /* Development Pods */ = { isa = PBXGroup; children = ( - C882B82678DDD020D9056F5C439A303D /* Constants.swift */, + 38EF5B181960A8750663ECF07A3502C3 /* GradientLoadingBar */, ); - name = Misc; - path = GradientLoadingBar/Classes/Misc; + name = "Development Pods"; sourceTree = ""; }; - B61AD2E05C344D7309F63862B66F2BC0 /* Pods-GradientLoadingBar_Example */ = { + CAE26C40F3F1E36EAEF7CC547EC400D9 /* Support Files */ = { isa = PBXGroup; children = ( - E0D90990792D653F523A884442305989 /* Pods-GradientLoadingBar_Example.modulemap */, - BEBA37204701F79F631433A8EEF190E7 /* Pods-GradientLoadingBar_Example-acknowledgements.markdown */, - B7FF35F32E5C06204CAF8183AC101D53 /* Pods-GradientLoadingBar_Example-acknowledgements.plist */, - 8194C4CB9E683FC366F48513ED1B1A9A /* Pods-GradientLoadingBar_Example-dummy.m */, - 2D246858B1E28690CC1921F1EC8328E1 /* Pods-GradientLoadingBar_Example-frameworks.sh */, - B27AAA41B1DEF56C8059867126A15A38 /* Pods-GradientLoadingBar_Example-Info.plist */, - 3A900E1CFF1D76CF61DDF7358F5C8863 /* Pods-GradientLoadingBar_Example-umbrella.h */, - A95E7032DE35DF972EF7FEC8A884303B /* Pods-GradientLoadingBar_Example.debug.xcconfig */, - 108AACC96F7DBC089B0840E09F19C698 /* Pods-GradientLoadingBar_Example.release.xcconfig */, - ); - name = "Pods-GradientLoadingBar_Example"; - path = "Target Support Files/Pods-GradientLoadingBar_Example"; - sourceTree = ""; - }; - C7B4887CB582A60B2828150E550CA0C1 /* Support Files */ = { - isa = PBXGroup; - children = ( - 432F44D6009308BDE038D8F587A32CC7 /* GradientLoadingBar.modulemap */, - 2EB5F6B9626AFB367351433E58717378 /* GradientLoadingBar-dummy.m */, - 01F10362867DE1BC975D30D2B32F0ECA /* GradientLoadingBar-Info.plist */, - BBB6B9166CB669730E6755D0283ACC89 /* GradientLoadingBar-prefix.pch */, - EA6885FB45B2DE2A16E806813F4448C3 /* GradientLoadingBar-umbrella.h */, - 72E1E31C3B08F491DD072C74B13669AB /* GradientLoadingBar.debug.xcconfig */, - 412F23BDA9646A7744AC81F4006F0817 /* GradientLoadingBar.release.xcconfig */, + 836F33603CBD5C97EB86223F95F1AF65 /* GradientLoadingBar.modulemap */, + C2CEF8E81CA45EDEED0F2C58AAF55AB2 /* GradientLoadingBar-dummy.m */, + A9E3431ABFE25C3CB43A736E3499CFDB /* GradientLoadingBar-Info.plist */, + FDD0B75FBBD1ED8256363BDA8367D869 /* GradientLoadingBar-prefix.pch */, + 21378D1DA027CF4A7FFCDCA856BACFA9 /* GradientLoadingBar-umbrella.h */, + C731711056A77F92D85D953818CE446A /* GradientLoadingBar.debug.xcconfig */, + FA4E48AA903E92EA5AB9E6CDB5C619D6 /* GradientLoadingBar.release.xcconfig */, ); name = "Support Files"; path = "Example/Pods/Target Support Files/GradientLoadingBar"; sourceTree = ""; }; - CE6272E67A33588A9F25C079BF5BB051 /* Development Pods */ = { - isa = PBXGroup; - children = ( - 625395338A1C7013D0E5EA11C9A0F5B4 /* GradientLoadingBar */, - ); - name = "Development Pods"; - sourceTree = ""; - }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - CE6272E67A33588A9F25C079BF5BB051 /* Development Pods */, + B2665421823061B3284ED62A6FADD254 /* Development Pods */, 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, - 866F4707586BA782EEE16BB0E4DDA12E /* Pods */, - 42C5E31CFED75787FC35907ED840E206 /* Products */, - F35D8C7C6DA5C631C17C6CAC2AECDFEA /* Targets Support Files */, + D9E4C6772BA43B15D379F74ADB1F3D24 /* Pods */, + 912BA9CC2708BCAB8AF5FD0F58C99A42 /* Products */, + FCB384E7AF45D36A0288068BA3CDE9E4 /* Targets Support Files */, ); sourceTree = ""; }; - D849F6B1672F929753FBCBD372FABBFA /* Support Files */ = { + D9E4C6772BA43B15D379F74ADB1F3D24 /* Pods */ = { isa = PBXGroup; children = ( - 44FC5949DA58E53329E8837F44618093 /* SwiftLint.debug.xcconfig */, - 283322DA7A49E2E4D67B814963BECFB3 /* SwiftLint.release.xcconfig */, + 8D4021A66B75C4DAC37FB29AF10F5972 /* LightweightObservable */, + DB9FA77551B6F1F7BB7B66D9513B92B4 /* SnapshotTesting */, + 43AAC1AB1516723E83B3890B1D058A16 /* SwiftConfigurationFiles */, + 8117A0062130D047C63C2824B16563F9 /* SwiftFormat */, + A45F4A4E9AC8AF47029D4812E205A54B /* SwiftLint */, + ); + name = Pods; + sourceTree = ""; + }; + DB9FA77551B6F1F7BB7B66D9513B92B4 /* SnapshotTesting */ = { + isa = PBXGroup; + children = ( + 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 = ""; + }; + E32BE6555DD6BBAE8AA0BD75EBC700E4 /* Pod */ = { + isa = PBXGroup; + children = ( + 819F2B088E9DC0A9F4CF69454E651B99 /* GradientLoadingBar.podspec */, + 53448614ED135D041009472CEAE59999 /* LICENSE */, + 611C0D66A0AB67C0F761CBF1393B123C /* readme.md */, + ); + name = Pod; + sourceTree = ""; + }; + F09E33613C1114497450A7A84C7D9882 /* Pods-ExampleTests */ = { + isa = PBXGroup; + children = ( + 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 = ""; + }; + F62BDBCF2DC54A7887F6D705A6E84E66 /* Support Files */ = { + isa = PBXGroup; + children = ( + 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 = "Support Files"; - path = "../Target Support Files/SwiftLint"; + path = "../Target Support Files/LightweightObservable"; sourceTree = ""; }; - F35D8C7C6DA5C631C17C6CAC2AECDFEA /* Targets Support Files */ = { + FCB384E7AF45D36A0288068BA3CDE9E4 /* Targets Support Files */ = { isa = PBXGroup; children = ( - B61AD2E05C344D7309F63862B66F2BC0 /* Pods-GradientLoadingBar_Example */, - 810FDB3212C2E1BF5CEB60C53A119039 /* Pods-GradientLoadingBar_SnapshotTests */, - 182051F58B71F1C24E92C50B91E729E9 /* Pods-GradientLoadingBar_Tests */, + 0A64DB470E4B02FFEE1183140FB557A8 /* Pods-Example */, + 045FA942BFE8DB929BF31B0D6455A531 /* Pods-ExampleSnapshotTests */, + F09E33613C1114497450A7A84C7D9882 /* Pods-ExampleTests */, ); name = "Targets Support Files"; sourceTree = ""; @@ -672,6 +708,14 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 1485F00414A7C3466BE5E72A72283967 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C2F7B05729193ABF3D3185603B6DC3BD /* Pods-ExampleTests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3DB53013216AE1CFCAD939686EC8C0A4 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -680,43 +724,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C55D0E8D825ACBABCA55D20231466C03 /* Headers */ = { + 7E6C14F67D4435243A786F2B6B2A11E2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 776004E55702AEB7C0881078F2CF0F36 /* Pods-GradientLoadingBar_SnapshotTests-umbrella.h in Headers */, + 21D1934B513FBC964A097F9327319BD7 /* Pods-ExampleSnapshotTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - E3B249FF3BEA15F8D820AA30FC63B42A /* Headers */ = { + 88BF40573660B4BB1A84652A6F7B22F7 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A515BDBD2767A9B62C4204B56D536D5A /* GradientLoadingBar-umbrella.h in Headers */, + 801669AE2ABD3BEDE9E2E9BEEC7C8F56 /* GradientLoadingBar-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EA4F25403A153665117D255C5772568D /* Headers */ = { + 8F2E0B274EB5DF0EF0445590D1F1C984 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 4BE134B742037AAB5A883E394D6702E0 /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */, + D89148BFC07632D1FE62D5CF4616C2E8 /* Pods-Example-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - EB075AC0D74FDA180E229808940A9D80 /* Headers */ = { + D05D4FD59BABC17F449744E6D18A4DEF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - FCC2B5A63338D5A23A4A22DDC7BD22EB /* LightweightObservable-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F7B0E7FF99A86CC897C98DBE3679D5B8 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2527F1E9F6147C56510A178BE9F8502A /* Pods-GradientLoadingBar_Tests-umbrella.h in Headers */, + 1A056F67353C10463EEEA5C0FA6A7740 /* LightweightObservable-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -725,12 +761,12 @@ /* Begin PBXNativeTarget section */ 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */ = { isa = PBXNativeTarget; - buildConfigurationList = E598EEF4D31D9D300FD68C581396B57A /* Build configuration list for PBXNativeTarget "LightweightObservable" */; + buildConfigurationList = 19329349B606D7670FDFA26CDF174508 /* Build configuration list for PBXNativeTarget "LightweightObservable" */; buildPhases = ( - EB075AC0D74FDA180E229808940A9D80 /* Headers */, - 98CE4C67296CC980712BF38C4B016A52 /* Sources */, - 663D284D2517F59C4EF9A97C628583B7 /* Frameworks */, - BD63343023DFAAF7A95B152191F7752E /* Resources */, + D05D4FD59BABC17F449744E6D18A4DEF /* Headers */, + 633B4ED6CF38D19FC5CEA60C9F4ACB6F /* Sources */, + 4D2FCA3E5D6A458448500A6C7B9B42DE /* Frameworks */, + C1C8E25FEF177EFD2448E6E5852E4965 /* Resources */, ); buildRules = ( ); @@ -741,58 +777,81 @@ productReference = F196AAA163469B17170E99B82C7C4C0A /* LightweightObservable */; productType = "com.apple.product-type.framework"; }; - 2D25DEDF3D75C227835191E29870E7C2 /* Pods-GradientLoadingBar_Tests */ = { + 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */ = { isa = PBXNativeTarget; - buildConfigurationList = 65463214C51D389DB615B2FC4BEEBB9A /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Tests" */; + buildConfigurationList = DEC8C7C6183C8CB28E37C671AF3EBB82 /* Build configuration list for PBXNativeTarget "Pods-Example" */; buildPhases = ( - F7B0E7FF99A86CC897C98DBE3679D5B8 /* Headers */, - FAF12747714546F34E3590CD55DAC829 /* Sources */, - F646365FBEF9107873B7F1590CD0853A /* Frameworks */, - B415E42E58E34C50CF8B799C41E80617 /* Resources */, + 8F2E0B274EB5DF0EF0445590D1F1C984 /* Headers */, + 203DD628AAF3FB99758F754DBB412850 /* Sources */, + A954471A8A4F347E9DDF93C0716D534D /* Frameworks */, + 11646F422953A144A1AA42025159C502 /* Resources */, ); buildRules = ( ); dependencies = ( - 09B64417E17793718F88D91DF9DF9E64 /* PBXTargetDependency */, + 3AE703CCD1F92924816C8DE9A47A947F /* PBXTargetDependency */, + 9852D6A97E1D68B7D4EF91BF2B43A037 /* PBXTargetDependency */, + 84388114D304783852682711DD5A1710 /* PBXTargetDependency */, + 2DAD0389E3EB7E0BE2D9B7D5BC6099F0 /* PBXTargetDependency */, + 197BA64B464C70957376916A6AC134E2 /* PBXTargetDependency */, ); - name = "Pods-GradientLoadingBar_Tests"; - productName = Pods_GradientLoadingBar_Tests; - productReference = 1711FC18263D47D46851F0433A93F110 /* Pods-GradientLoadingBar_Tests */; + name = "Pods-Example"; + productName = Pods_Example; + productReference = 1F667CC0E19EAF34E5A4119E2121F585 /* Pods-Example */; productType = "com.apple.product-type.framework"; }; - A90357950A476FE4A373B62B3B4CB4B5 /* Pods-GradientLoadingBar_SnapshotTests */ = { + 2E478506373DA9227C696FD1F7FA01EF /* Pods-ExampleSnapshotTests */ = { isa = PBXNativeTarget; - buildConfigurationList = A79C25C72298FC50BB18B7E3A9554F1D /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_SnapshotTests" */; + buildConfigurationList = 84CDCDFA78FC721129F4BAEF33C05ABC /* Build configuration list for PBXNativeTarget "Pods-ExampleSnapshotTests" */; buildPhases = ( - C55D0E8D825ACBABCA55D20231466C03 /* Headers */, - F2DD0F3058F1A2DA2F85F8306742295F /* Sources */, - ED5AC0D962E33B70032B2026DD2CC8B2 /* Frameworks */, - ACF08C75C53E425407DFE769404BCD3D /* Resources */, + 7E6C14F67D4435243A786F2B6B2A11E2 /* Headers */, + 20ED7AD39A7C7057642A56C232683E68 /* Sources */, + 9280D47AF9C0E39937FFC80009067D70 /* Frameworks */, + BFFDECF6631E998032D4314EC8C792C9 /* Resources */, ); buildRules = ( ); dependencies = ( - 14D2BC2857F98939AD697FD46EAED0DC /* PBXTargetDependency */, - 9921E89B03B39ABAD5B3BA70E5FB0EE2 /* PBXTargetDependency */, + A49C0FD2FBEA9AE91915E5A0063E5D83 /* PBXTargetDependency */, + E7D2D236C0E01977BB01033F4729FACE /* PBXTargetDependency */, ); - name = "Pods-GradientLoadingBar_SnapshotTests"; - productName = Pods_GradientLoadingBar_SnapshotTests; - productReference = 13520AB8B3790CE3CEDCBBEEE1EF237A /* Pods-GradientLoadingBar_SnapshotTests */; + name = "Pods-ExampleSnapshotTests"; + productName = Pods_ExampleSnapshotTests; + productReference = 1EC06CD38CB67E4E8061D4D2DCD617B2 /* Pods-ExampleSnapshotTests */; + productType = "com.apple.product-type.framework"; + }; + 4432A314DF5F14FFF8809E319054F4AF /* Pods-ExampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = F0287A78E5A76A2A6A40287F0DDED66F /* Build configuration list for PBXNativeTarget "Pods-ExampleTests" */; + buildPhases = ( + 1485F00414A7C3466BE5E72A72283967 /* Headers */, + E75AD816BDF5379296E39CADCB1AD12B /* Sources */, + 80CB26F1AFBA6BA2257DE8F446122E81 /* Frameworks */, + D350226F7E4E15FDB327A278A8336B8C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 6AC69FDF5B1BBE96DE58CF1B798F08D9 /* PBXTargetDependency */, + ); + name = "Pods-ExampleTests"; + productName = Pods_ExampleTests; + productReference = 630CABE8F692FCDBFD1B122A2D0CE388 /* Pods-ExampleTests */; productType = "com.apple.product-type.framework"; }; AD9297F9E6CC3E50EDCFECA0A77800B7 /* GradientLoadingBar */ = { isa = PBXNativeTarget; - buildConfigurationList = 43BA60EDD2249290FB9F0AB390E37237 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */; + buildConfigurationList = 2EC1FFFA0F1737E2574EBE19A95AC2B7 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */; buildPhases = ( - E3B249FF3BEA15F8D820AA30FC63B42A /* Headers */, - 1DA93EC394F28A17CC48D6C357689C97 /* Sources */, - 21E1037D4BAE27CF8D26BA0913E02991 /* Frameworks */, - C462862E46C544AC23DBC789B2C1E060 /* Resources */, + 88BF40573660B4BB1A84652A6F7B22F7 /* Headers */, + 336B4EFB20C317EF343E1442256D3D43 /* Sources */, + 50FD1A55A768D837C91217B4AAE0A00B /* Frameworks */, + A06E585A3366A0AC0DC1A1FA00A843FE /* Resources */, ); buildRules = ( ); dependencies = ( - 41071CD67C6E75EA26E871DD955D0910 /* PBXTargetDependency */, + B5B38FD817222BA72630FECB6DA0F258 /* PBXTargetDependency */, ); name = GradientLoadingBar; productName = GradientLoadingBar; @@ -817,29 +876,6 @@ productReference = A037DBBCCACBFACB5C39A80B1C273043 /* SnapshotTesting */; productType = "com.apple.product-type.framework"; }; - E0B6892AAEBA4792BFD4534123482521 /* Pods-GradientLoadingBar_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 402EB0955AF7AE0C98C697B37C821B7E /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */; - buildPhases = ( - EA4F25403A153665117D255C5772568D /* Headers */, - 5516BE8F572A5076956ED78891A7D545 /* Sources */, - BAC4B04FC3FA2B79DAC279C0D21C8C5C /* Frameworks */, - C7838D9FAA34DDF83CC3C022CACB9940 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 107D2FC9B211E3FC56377418789853CF /* PBXTargetDependency */, - 48ECE6B7BE677BA85ECACF15A2CFBF39 /* PBXTargetDependency */, - C315266E4E3798F74C693541CDB649B8 /* PBXTargetDependency */, - 3C08857FBF5CA2DDCEE00F4EA5648752 /* PBXTargetDependency */, - 1584AE100921E7F4FAEA97CB66353C95 /* PBXTargetDependency */, - ); - name = "Pods-GradientLoadingBar_Example"; - productName = Pods_GradientLoadingBar_Example; - productReference = 3C6A379C135C84644F189B8056CCBA04 /* Pods-GradientLoadingBar_Example */; - productType = "com.apple.product-type.framework"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -850,7 +886,7 @@ LastUpgradeCheck = 1240; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; + compatibilityVersion = "Xcode 13.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( @@ -858,15 +894,15 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 42C5E31CFED75787FC35907ED840E206 /* Products */; + productRefGroup = 912BA9CC2708BCAB8AF5FD0F58C99A42 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( AD9297F9E6CC3E50EDCFECA0A77800B7 /* GradientLoadingBar */, 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */, - E0B6892AAEBA4792BFD4534123482521 /* Pods-GradientLoadingBar_Example */, - A90357950A476FE4A373B62B3B4CB4B5 /* Pods-GradientLoadingBar_SnapshotTests */, - 2D25DEDF3D75C227835191E29870E7C2 /* Pods-GradientLoadingBar_Tests */, + 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */, + 2E478506373DA9227C696FD1F7FA01EF /* Pods-ExampleSnapshotTests */, + 4432A314DF5F14FFF8809E319054F4AF /* Pods-ExampleTests */, ADEAE7CDD604DE4F3072E6021A314487 /* SnapshotTesting */, B951B6FCD3E55AF969FBA9F7B476B877 /* SwiftConfigurationFiles */, 1CD0618C486973D5588EF20D2E8C0AEA /* SwiftFormat */, @@ -876,35 +912,35 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - ACF08C75C53E425407DFE769404BCD3D /* Resources */ = { + 11646F422953A144A1AA42025159C502 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - B415E42E58E34C50CF8B799C41E80617 /* Resources */ = { + A06E585A3366A0AC0DC1A1FA00A843FE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - BD63343023DFAAF7A95B152191F7752E /* Resources */ = { + BFFDECF6631E998032D4314EC8C792C9 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C462862E46C544AC23DBC789B2C1E060 /* Resources */ = { + C1C8E25FEF177EFD2448E6E5852E4965 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C7838D9FAA34DDF83CC3C022CACB9940 /* Resources */ = { + D350226F7E4E15FDB327A278A8336B8C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -921,39 +957,50 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 1DA93EC394F28A17CC48D6C357689C97 /* Sources */ = { + 203DD628AAF3FB99758F754DBB412850 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E9F255F44A070FE2F4A65A212FAEF61F /* Constants.swift in Sources */, - 6FFBF94E8163A16367C42D61BF77DAA6 /* GradientActivityIndicatorView.swift in Sources */, - EE9AE0164C3214055E15309068AA5167 /* GradientActivityIndicatorView+AnimateIsHidden.swift in Sources */, - D3B742506DD86C2472678C4231F3CA7C /* GradientActivityIndicatorViewModel.swift in Sources */, - 8CFC4188603B9D2F1121730741BF4129 /* GradientLoadingBar-dummy.m in Sources */, - E0404744D0B923F648287A50A63209FB /* GradientLoadingBarController.swift in Sources */, - 68C5DB73151103C8F43EF26688EE5600 /* GradientLoadingBarViewModel.swift in Sources */, - 2115DE52F6A03FFC0F6A938F158F9259 /* NotchGradientLoadingBarController.swift in Sources */, - 0ACD0ACD5263B4D09556739F7926FF96 /* NotchGradientLoadingBarViewModel.swift in Sources */, + B75C5770C7B1F07197F749756B259693 /* Pods-Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 5516BE8F572A5076956ED78891A7D545 /* Sources */ = { + 20ED7AD39A7C7057642A56C232683E68 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3E9A56ADB8427F240D98E65F282D5AB3 /* Pods-GradientLoadingBar_Example-dummy.m in Sources */, + C9F9871C4AC572471F57D9BFB4959131 /* Pods-ExampleSnapshotTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 98CE4C67296CC980712BF38C4B016A52 /* Sources */ = { + 336B4EFB20C317EF343E1442256D3D43 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8122289F42E6A1441BB40125D4E87A95 /* Disposable.swift in Sources */, - 26CDF96C31DF5C0DE76299B9D1518AC0 /* LightweightObservable-dummy.m in Sources */, - B0A60594C47C96278C474E106460EB42 /* Observable.swift in Sources */, - F8E9F04AB9A810D3ADCC67FA95CCD9D0 /* Observable+Equatable.swift in Sources */, - E7F302A02A4D9CDBB6ED77A635E0D71D /* Observable+KeyPath.swift in Sources */, + 9804F2AD08D10C4B255B68683FE5F008 /* Constants.swift in Sources */, + 0993CFA284465B399E5751D3E7325F86 /* GradientActivityIndicatorView.swift in Sources */, + C1F0EE396EF4614766224610763D0648 /* GradientActivityIndicatorView+AnimateIsHidden.swift in Sources */, + 470D4A5B3FC79586168226E3D2B87E87 /* GradientActivityIndicatorViewModel.swift in Sources */, + C6F8DD3E26E1AA37E21277B19909F932 /* GradientLoadingBar-dummy.m in Sources */, + E191E67DC6F3E229C64141DFCB2272B3 /* GradientLoadingBarController.swift in Sources */, + AA3E7FC891EE7D76B71B480813B071FA /* GradientLoadingBarView.swift in Sources */, + 9B2FA7DE72372AE510CD9FD1004E02BA /* GradientLoadingBarView+ViewModel.swift in Sources */, + 67117F04E8CA91F2AB32BBA6509777D1 /* GradientLoadingBarViewModel.swift in Sources */, + 38CF2E41CED18C1A2CBF4B1B92CB29D6 /* NotchGradientLoadingBarController.swift in Sources */, + 0DCAF4A19F8C1C70ECBB50585736C5DF /* NotchGradientLoadingBarViewModel.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 633B4ED6CF38D19FC5CEA60C9F4ACB6F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 205D1E6FB60EC6EB3D5165C8CE55B9C6 /* Disposable.swift in Sources */, + 1019BF45D831558688E9C56329170B9E /* LightweightObservable-dummy.m in Sources */, + CAAADD4E379515FAAC6411B598BED2DB /* Observable.swift in Sources */, + 701A44C2A76A0827E6280A51E6F06CA4 /* Observable+Combine.swift in Sources */, + C3D5042E935F8F32A8155361207A1AF6 /* Observable+Equatable.swift in Sources */, + B81ABE71BF97A96624CF7B1695F93F71 /* Observable+KeyPath.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -998,120 +1045,79 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F2DD0F3058F1A2DA2F85F8306742295F /* Sources */ = { + E75AD816BDF5379296E39CADCB1AD12B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CCF6BE5916BD8F64AACED287B1364524 /* Pods-GradientLoadingBar_SnapshotTests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FAF12747714546F34E3590CD55DAC829 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - BFD9C55A9E36054591864A3D066CEB4E /* Pods-GradientLoadingBar_Tests-dummy.m in Sources */, + 2358ECACBD675FFBFDBA36A56A0F7CCA /* Pods-ExampleTests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 09B64417E17793718F88D91DF9DF9E64 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-GradientLoadingBar_Example"; - target = E0B6892AAEBA4792BFD4534123482521 /* Pods-GradientLoadingBar_Example */; - targetProxy = 69923C0DCC5D250C66583E9139A796BF /* PBXContainerItemProxy */; - }; - 107D2FC9B211E3FC56377418789853CF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GradientLoadingBar; - target = AD9297F9E6CC3E50EDCFECA0A77800B7 /* GradientLoadingBar */; - targetProxy = D1D244BE174E0FACF92F258BE6BAF653 /* PBXContainerItemProxy */; - }; - 14D2BC2857F98939AD697FD46EAED0DC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-GradientLoadingBar_Example"; - target = E0B6892AAEBA4792BFD4534123482521 /* Pods-GradientLoadingBar_Example */; - targetProxy = 1A288224DD88E7929E76A0F7426DCA1D /* PBXContainerItemProxy */; - }; - 1584AE100921E7F4FAEA97CB66353C95 /* PBXTargetDependency */ = { + 197BA64B464C70957376916A6AC134E2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftLint; target = 52B60EC2A583F24ACBB69C113F5488B9 /* SwiftLint */; - targetProxy = C517585EFB4EC6F26A97045672F93408 /* PBXContainerItemProxy */; + targetProxy = FB1CA4157FA7DA975B36E982441B0826 /* PBXContainerItemProxy */; }; - 3C08857FBF5CA2DDCEE00F4EA5648752 /* PBXTargetDependency */ = { + 2DAD0389E3EB7E0BE2D9B7D5BC6099F0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftFormat; target = 1CD0618C486973D5588EF20D2E8C0AEA /* SwiftFormat */; - targetProxy = ED318F74ACCF5F2A391A74CECC4AF733 /* PBXContainerItemProxy */; + targetProxy = 1CA40FC7044AEF100C1D27FAB7268645 /* PBXContainerItemProxy */; }; - 41071CD67C6E75EA26E871DD955D0910 /* PBXTargetDependency */ = { + 3AE703CCD1F92924816C8DE9A47A947F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = LightweightObservable; - target = 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */; - targetProxy = C47DC454DBF78E784D3BF99EB4F26380 /* PBXContainerItemProxy */; + name = GradientLoadingBar; + target = AD9297F9E6CC3E50EDCFECA0A77800B7 /* GradientLoadingBar */; + targetProxy = D6487DA6A5A566A6DA3AA6F4E6460617 /* PBXContainerItemProxy */; }; - 48ECE6B7BE677BA85ECACF15A2CFBF39 /* PBXTargetDependency */ = { + 6AC69FDF5B1BBE96DE58CF1B798F08D9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = LightweightObservable; - target = 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */; - targetProxy = 6DB68D8BBE9AA7A465BC6B50BCCB356C /* PBXContainerItemProxy */; + name = "Pods-Example"; + target = 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */; + targetProxy = 5BDC45EA5ACD2669BE0B4AE72B21F022 /* PBXContainerItemProxy */; }; - 9921E89B03B39ABAD5B3BA70E5FB0EE2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SnapshotTesting; - target = ADEAE7CDD604DE4F3072E6021A314487 /* SnapshotTesting */; - targetProxy = 37EF13960F5FE5AD371518E3EF2264CA /* PBXContainerItemProxy */; - }; - C315266E4E3798F74C693541CDB649B8 /* PBXTargetDependency */ = { + 84388114D304783852682711DD5A1710 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftConfigurationFiles; target = B951B6FCD3E55AF969FBA9F7B476B877 /* SwiftConfigurationFiles */; - targetProxy = CF7FA9373A539F47E9FE2D6437617BC3 /* PBXContainerItemProxy */; + targetProxy = 120C38BF58AF5D82B47527BEEC5B144E /* PBXContainerItemProxy */; + }; + 9852D6A97E1D68B7D4EF91BF2B43A037 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LightweightObservable; + target = 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */; + targetProxy = 69525D79F4D5FA7862447A37147DCF61 /* PBXContainerItemProxy */; + }; + A49C0FD2FBEA9AE91915E5A0063E5D83 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-Example"; + target = 0AEE99A309977BD12A049FF48AF9BA4B /* Pods-Example */; + targetProxy = 7242656DEF78C5AAE010E3BF4AA3A63F /* PBXContainerItemProxy */; + }; + B5B38FD817222BA72630FECB6DA0F258 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LightweightObservable; + target = 086F937CFC9099EB74E4B66BE7CBCB93 /* LightweightObservable */; + targetProxy = 7D378D58859933A991581EF02E1EA517 /* PBXContainerItemProxy */; + }; + E7D2D236C0E01977BB01033F4729FACE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SnapshotTesting; + target = ADEAE7CDD604DE4F3072E6021A314487 /* SnapshotTesting */; + targetProxy = 6E2F9A971893F3799C755AF9FA10C1E5 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0F3B8A774B78361FA3BAD889FAFFB738 /* Release */ = { + 0B78A0A38F97AF94F94B3EFA423B9396 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D9EECF497600BB53CEDDACB2CE8A2B9D /* LightweightObservable.release.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/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"; - 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; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 1A1C696B9BE01F6EA26B3621C28EA9AF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 69838A921E83418B945E72EB342809F5 /* Pods-GradientLoadingBar_SnapshotTests.debug.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*]" = ""; @@ -1121,12 +1127,16 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests-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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1140,11 +1150,10 @@ }; name = Debug; }; - 2302134C9C885DAFA48D259D064C8887 /* Release */ = { + 13C571D3C0CB6613FF7CCCFEED29CB23 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 412F23BDA9646A7744AC81F4006F0817 /* GradientLoadingBar.release.xcconfig */; + baseConfigurationReference = C731711056A77F92D85D953818CE446A /* GradientLoadingBar.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1157,103 +1166,29 @@ INFOPLIST_FILE = "Target Support Files/GradientLoadingBar/GradientLoadingBar-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/GradientLoadingBar/GradientLoadingBar.modulemap"; PRODUCT_MODULE_NAME = GradientLoadingBar; PRODUCT_NAME = GradientLoadingBar; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 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 */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 283322DA7A49E2E4D67B814963BECFB3 /* SwiftLint.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"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 3EE73820F12EDD6E8FE533391DA8C70E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 72E1E31C3B08F491DD072C74B13669AB /* GradientLoadingBar.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/GradientLoadingBar/GradientLoadingBar-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/GradientLoadingBar/GradientLoadingBar-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/GradientLoadingBar/GradientLoadingBar.modulemap"; - PRODUCT_MODULE_NAME = GradientLoadingBar; - PRODUCT_NAME = GradientLoadingBar; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; + SWIFT_VERSION = 5.5; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 4D23A2E978BA72DC562C20ADE8F7F09C /* Release */ = { + 23413D20AA7494F4CB1D008106E68A7A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D2F1D5D4FE8EB1B511317314725F9D54 /* SwiftConfigurationFiles.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; - }; - 4F70CC855B68C75F68D41BEA61947783 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A95E7032DE35DF972EF7FEC8A884303B /* Pods-GradientLoadingBar_Example.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*]" = ""; @@ -1263,12 +1198,54 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-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-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.modulemap"; + 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; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 2FE57ACED72D87CA1A52E88BE8C90CF1 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DD8356187265018957F8E0C8B7EA0A44 /* Pods-ExampleTests.debug.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-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", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1282,45 +1259,10 @@ }; name = Debug; }; - 5DE69BEEF4237E7695FF53FC24F3E656 /* Debug */ = { + 38054F06D12494D19A4C008BB03C6C4F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FBAEAE91BB9B77006558E537894C33C5 /* Pods-GradientLoadingBar_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*]" = ""; - "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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.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"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 7073071A95165FEAA0509F7B4524263A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 01195480F1DCEF69F5D9619C1B3C44E9 /* SnapshotTesting.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1334,7 +1276,11 @@ 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; @@ -1349,26 +1295,26 @@ }; name = Release; }; - 74A4367AFBA2BC72E9F0249101354BDA /* Debug */ = { + 4062373683B4E7F5C7166110E2F5B2A9 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 44FC5949DA58E53329E8837F44618093 /* SwiftLint.debug.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"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 85653DC562FC25D782BD10D3C128E844 /* Release */ = { + 8B2A9AB578F492EBA041FAA048620A24 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1B664F0A7F5E59140F761C16069995E9 /* Pods-GradientLoadingBar_Tests.release.xcconfig */; + baseConfigurationReference = 9D21619E3127A33326194FAC5E0241D7 /* SnapshotTesting.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*]" = ""; @@ -1378,60 +1324,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + 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"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; - }; - 859F08364B31DC4D4D9031E605D6E8CB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 108AACC96F7DBC089B0840E09F19C698 /* Pods-GradientLoadingBar_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*]" = ""; - "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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_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; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; + name = Debug; }; 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { isa = XCBuildConfiguration; @@ -1500,11 +1413,28 @@ }; name = Debug; }; - 8FE0B4025645967B73EE74B683185228 /* Debug */ = { + 8DEF60E8A61723230ABCDDDD8B05F224 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5A95E0EC64A130765609C642BEF951DC /* SnapshotTesting.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", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 976AE70244296486A314D80A301B9FE0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B149C0EB1C7CAA08D795C71076A689CF /* Pods-Example.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1514,38 +1444,29 @@ 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"; + INFOPLIST_FILE = "Target Support Files/Pods-Example/Pods-Example-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; + 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-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.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 9B37241A118549BC576074606BB93C76 /* Debug */ = { - 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; - }; 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1608,11 +1529,10 @@ }; name = Release; }; - A3FCDD2B3AA53C7B59A353AF2220EAED /* Debug */ = { + A04F357A5F0F0F417A6CF8C5C28A042B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6BA6CC273DB1F3DF8863CA959253A9E1 /* LightweightObservable.debug.xcconfig */; + baseConfigurationReference = 074CBA3DACEF2667EFED2C72D45A2403 /* LightweightObservable.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; @@ -1625,26 +1545,63 @@ 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 = Release; + }; + AD81E62ACCB0B7A923FC8AA288F9921E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 39724ABA4E40A364B25F01F3E3CE31EC /* SwiftLint.release.xcconfig */; + buildSettings = { + 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", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + B4D735C278D065C9DB708F250D0B915D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E43F95A56840098ECFFB3426EC236F54 /* SwiftFormat.debug.xcconfig */; + buildSettings = { + 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", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; name = Debug; }; - EEA067F7B0C6046396816A88A9219093 /* Release */ = { + C3C32413428D472DD4D67FE4F5215DE0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9DD32929B122D2561D1E99468EECDBF7 /* Pods-GradientLoadingBar_SnapshotTests.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*]" = ""; @@ -1654,12 +1611,16 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1674,46 +1635,172 @@ }; name = Release; }; - EEE49C51BEAF7FB68B4772A03D1DF160 /* Debug */ = { + C9CC561C7A88FE1390C688EFBD530440 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 00EBB6A2B0A117A761C58ED62B0D4C24 /* SwiftFormat.debug.xcconfig */; + baseConfigurationReference = FA4E48AA903E92EA5AB9E6CDB5C619D6 /* GradientLoadingBar.release.xcconfig */; + buildSettings = { + "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/GradientLoadingBar/GradientLoadingBar-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/GradientLoadingBar/GradientLoadingBar-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/GradientLoadingBar/GradientLoadingBar.modulemap"; + PRODUCT_MODULE_NAME = GradientLoadingBar; + PRODUCT_NAME = GradientLoadingBar; + 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; + }; + D2E2A385931B22FAADBBF66D4C5E591D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 04D67E1AC2B476618545A95A11B5B811 /* SwiftConfigurationFiles.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"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + EADD1F50ABC8096A0D6CB18822BB4EE4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 08E87DFECD69E46292154E099AB8D144 /* SwiftLint.debug.xcconfig */; + buildSettings = { + 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", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + EB56204BC0EFF103DE8AF14C43D430DF /* 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"; + 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-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; + }; + EFF297401DD13096B69A47E03707EF19 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8B75864FEFCDD0C986F965BC9B1D2A1B /* LightweightObservable.debug.xcconfig */; + buildSettings = { + "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/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", + ); + 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"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 19329349B606D7670FDFA26CDF174508 /* Build configuration list for PBXNativeTarget "LightweightObservable" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EFF297401DD13096B69A47E03707EF19 /* Debug */, + A04F357A5F0F0F417A6CF8C5C28A042B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2EC1FFFA0F1737E2574EBE19A95AC2B7 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13C571D3C0CB6613FF7CCCFEED29CB23 /* Debug */, + C9CC561C7A88FE1390C688EFBD530440 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 331A33CBF071F9C6C103AB492799B536 /* Build configuration list for PBXNativeTarget "SnapshotTesting" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8FE0B4025645967B73EE74B683185228 /* Debug */, - 7073071A95165FEAA0509F7B4524263A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 402EB0955AF7AE0C98C697B37C821B7E /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4F70CC855B68C75F68D41BEA61947783 /* Debug */, - 859F08364B31DC4D4D9031E605D6E8CB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 43BA60EDD2249290FB9F0AB390E37237 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3EE73820F12EDD6E8FE533391DA8C70E /* Debug */, - 2302134C9C885DAFA48D259D064C8887 /* Release */, + 8B2A9AB578F492EBA041FAA048620A24 /* Debug */, + 38054F06D12494D19A4C008BB03C6C4F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1727,29 +1814,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 65463214C51D389DB615B2FC4BEEBB9A /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Tests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5DE69BEEF4237E7695FF53FC24F3E656 /* Debug */, - 85653DC562FC25D782BD10D3C128E844 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 6B2B7DF197DF6A7CA487150557230A41 /* Build configuration list for PBXAggregateTarget "SwiftFormat" */ = { isa = XCConfigurationList; buildConfigurations = ( - EEE49C51BEAF7FB68B4772A03D1DF160 /* Debug */, - 2B9B4FFEC0599168AD4B3878672A2426 /* Release */, + B4D735C278D065C9DB708F250D0B915D /* Debug */, + 8DEF60E8A61723230ABCDDDD8B05F224 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A79C25C72298FC50BB18B7E3A9554F1D /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_SnapshotTests" */ = { + 84CDCDFA78FC721129F4BAEF33C05ABC /* Build configuration list for PBXNativeTarget "Pods-ExampleSnapshotTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1A1C696B9BE01F6EA26B3621C28EA9AF /* Debug */, - EEA067F7B0C6046396816A88A9219093 /* Release */, + 0B78A0A38F97AF94F94B3EFA423B9396 /* Debug */, + EB56204BC0EFF103DE8AF14C43D430DF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1757,8 +1835,8 @@ AE7B4FB01588B9E6DF09CB79FC7CE7BD /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { isa = XCConfigurationList; buildConfigurations = ( - 74A4367AFBA2BC72E9F0249101354BDA /* Debug */, - 39D0F8C0DF8A3DF1976A02725A047CFE /* Release */, + EADD1F50ABC8096A0D6CB18822BB4EE4 /* Debug */, + AD81E62ACCB0B7A923FC8AA288F9921E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1766,17 +1844,26 @@ C94370DDBAF2E85B239A19BD8F0908C6 /* Build configuration list for PBXAggregateTarget "SwiftConfigurationFiles" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9B37241A118549BC576074606BB93C76 /* Debug */, - 4D23A2E978BA72DC562C20ADE8F7F09C /* Release */, + 4062373683B4E7F5C7166110E2F5B2A9 /* Debug */, + D2E2A385931B22FAADBBF66D4C5E591D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E598EEF4D31D9D300FD68C581396B57A /* Build configuration list for PBXNativeTarget "LightweightObservable" */ = { + DEC8C7C6183C8CB28E37C671AF3EBB82 /* Build configuration list for PBXNativeTarget "Pods-Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - A3FCDD2B3AA53C7B59A353AF2220EAED /* Debug */, - 0F3B8A774B78361FA3BAD889FAFFB738 /* Release */, + 976AE70244296486A314D80A301B9FE0 /* Debug */, + 23413D20AA7494F4CB1D008106E68A7A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F0287A78E5A76A2A6A40287F0DDED66F /* Build configuration list for PBXNativeTarget "Pods-ExampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2FE57ACED72D87CA1A52E88BE8C90CF1 /* Debug */, + C3C32413428D472DD4D67FE4F5215DE0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar.xcscheme deleted file mode 100644 index 0fa8a63..0000000 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/GradientLoadingBar.xcscheme +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/Pods/SwiftFormat/CommandLineTool/swiftformat b/Example/Pods/SwiftFormat/CommandLineTool/swiftformat index 77234c1..d3b9ef9 100755 Binary files a/Example/Pods/SwiftFormat/CommandLineTool/swiftformat and b/Example/Pods/SwiftFormat/CommandLineTool/swiftformat differ diff --git a/Example/Pods/SwiftFormat/README.md b/Example/Pods/SwiftFormat/README.md index 1f12e8a..81e6ddb 100644 --- a/Example/Pods/SwiftFormat/README.md +++ b/Example/Pods/SwiftFormat/README.md @@ -97,7 +97,7 @@ And then run it using: $ mint run swiftformat ``` -Or if you prefer, you can check out and build SwiftFormat manually on macOS or Linux as follows: +Or if you prefer, you can check out and build SwiftFormat manually on macOS, Linux or Windows as follows: ```bash $ git clone https://github.com/nicklockwood/SwiftFormat @@ -211,7 +211,7 @@ Alternatively, if you prefer not to use Homebrew, you'll find the latest version **Usage:** -Once you have launched the app and restarted Xcode, you'll find a SwiftFormat option under Xcode's Editor menu. +Once you have launched the app and restarted Xcode, you'll find a SwiftFormat option under Xcode's Editor menu. If the SwiftFormat menu does not appear [this thread](https://github.com/nicklockwood/SwiftFormat/issues/494) may help. You can configure the formatting [rules](#rules) and [options](#options) using the SwiftFormat for Xcode host application. There is currently no way to override these per-project, however, you can import and export different configurations using the File menu. You will need to do this again each time you switch projects. @@ -446,7 +446,13 @@ Alternatively, you can use the line continuation character `\` to wrap a single redundantSelf ``` -To avoid automatically opting-in to new rules when SwiftFormat is updated, use the`--rules` argument to *only* enable the rules you specify: +To avoid automatically opting-in to new rules when SwiftFormat is updated, you can disable all rules using: + +```bash +--disable all +``` + +And then individually enable just the rules you want. Alternatively, use the`--rules` argument to *only* enable the rules you specify: ```bash --rules indent,linebreaks @@ -623,6 +629,13 @@ By default, `--lint` will only report lines that require formatting, but you can If you would prefer not to see a warning for each and every formatting change, you can use the `--quiet` flag to suppress all output except errors. +Sometimes you may wish to autoformat some rules, but only lint others. To do that, use the `--lintonly` option in your config file to specify rules that should only be applied in `--lint` mode: + +``` +--rules braces,indent +--lintonly trailingClosures,unusedArguments +``` + Error codes ----------- @@ -709,7 +722,7 @@ FAQ *Q. What platforms does SwiftFormat support?* -> A. SwiftFormat works on macOS 10.13 (High Sierra) and above, and also runs on Ubuntu Linux. +> A. SwiftFormat works on macOS 10.13 (High Sierra) and above, and also runs on Ubuntu Linux and Windows. *Q. What versions of Swift are supported?* @@ -766,6 +779,8 @@ Q. I don't want to be surprised by new rules added when I upgrade SwiftFormat. H Known issues --------------- +* When using the Xcode Source Editor Extension, the SwiftFormat menu sometimes disappears from Xcode. If this happens, try moving or renaming Xcode temporarily and then changing it back. Failing that, the suggestions in [this thread](https://github.com/nicklockwood/SwiftFormat/issues/494) may help. + * The `redundantType` rule can introduce ambiguous code in certain cases when using the default mode of `--redundanttype inferred`. This can be worked around by by using `--redundanttype explicit`, or by manually removing the redundant type reference on the affected line, or by using the `// swiftformat:disable:next redundantType` comment directive to disable the rule at the call site (or just disable the `redundantType` rule completely). * If a type initializer or factory method returns an implicitly unwrapped optional value then the `redundantType` rule may remove the explicit type in a situation where it's actually required. To work around this you can either use `--redundanttype explicit`, or use the `// swiftformat:disable:next redundantType` comment directive to disable the rule at the call site (or just disable the `redundantType` rule completely). diff --git a/Example/Pods/SwiftLint/swiftlint b/Example/Pods/SwiftLint/swiftlint index ec405d5..072f804 100755 Binary files a/Example/Pods/SwiftLint/swiftlint and b/Example/Pods/SwiftLint/swiftlint differ diff --git a/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig b/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig deleted file mode 100644 index a5bd8bb..0000000 --- a/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar -FRAMEWORK_SEARCH_PATHS = $(inherited) "${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}/../.. -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/GradientLoadingBar/Info.plist b/Example/Pods/Target Support Files/GradientLoadingBar/Info.plist deleted file mode 100644 index 40923e4..0000000 --- a/Example/Pods/Target Support Files/GradientLoadingBar/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.1.15 - 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-GradientLoadingBar_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-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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..46eafcd --- /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}/GradientLoadingBar/GradientLoadingBar.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..8ee89fd --- /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}/GradientLoadingBar.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..46eafcd --- /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}/GradientLoadingBar/GradientLoadingBar.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..8ee89fd --- /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}/GradientLoadingBar.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LightweightObservable.framework \ No newline at end of file diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-umbrella.h b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h similarity index 56% rename from Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-umbrella.h rename to Example/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h index df297a1..ecf498e 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-umbrella.h +++ b/Example/Pods/Target Support Files/Pods-Example/Pods-Example-umbrella.h @@ -11,6 +11,6 @@ #endif -FOUNDATION_EXPORT double Pods_GradientLoadingBar_TestsVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_GradientLoadingBar_TestsVersionString[]; +FOUNDATION_EXPORT double Pods_ExampleVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_ExampleVersionString[]; diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-umbrella.h rename to Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-umbrella.h index cad7e6f..3aab667 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-umbrella.h +++ b/Example/Pods/Target Support Files/Pods-ExampleSnapshotTests/Pods-ExampleSnapshotTests-umbrella.h @@ -11,6 +11,6 @@ #endif -FOUNDATION_EXPORT double Pods_GradientLoadingBar_ExampleVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_GradientLoadingBar_ExampleVersionString[]; +FOUNDATION_EXPORT double Pods_ExampleSnapshotTestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_ExampleSnapshotTestsVersionString[]; diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_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-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests-umbrella.h rename to Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-umbrella.h index fccac2a..b12f2ef 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests-umbrella.h +++ b/Example/Pods/Target Support Files/Pods-ExampleTests/Pods-ExampleTests-umbrella.h @@ -11,6 +11,6 @@ #endif -FOUNDATION_EXPORT double Pods_GradientLoadingBar_SnapshotTestsVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_GradientLoadingBar_SnapshotTestsVersionString[]; +FOUNDATION_EXPORT double Pods_ExampleTestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_ExampleTestsVersionString[]; diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-dummy.m b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-dummy.m deleted file mode 100644 index 3dde865..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_GradientLoadingBar_Example : NSObject -@end -@implementation PodsDummy_Pods_GradientLoadingBar_Example -@end diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-resources.sh b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-resources.sh deleted file mode 100755 index 345301f..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_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-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.modulemap b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.modulemap deleted file mode 100644 index 21cc459..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_GradientLoadingBar_Example { - umbrella header "Pods-GradientLoadingBar_Example-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests-dummy.m b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests-dummy.m deleted file mode 100644 index ee6ee32..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_GradientLoadingBar_SnapshotTests : NSObject -@end -@implementation PodsDummy_Pods_GradientLoadingBar_SnapshotTests -@end diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.modulemap b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.modulemap deleted file mode 100644 index 7dae8bd..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_SnapshotTests/Pods-GradientLoadingBar_SnapshotTests.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_GradientLoadingBar_SnapshotTests { - umbrella header "Pods-GradientLoadingBar_SnapshotTests-umbrella.h" - - export * - module * { export * } -} diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Info.plist b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-Info.plist b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-Info.plist deleted file mode 100644 index 2243fe6..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-dummy.m b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-dummy.m deleted file mode 100644 index 9902074..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_GradientLoadingBar_Tests : NSObject -@end -@implementation PodsDummy_Pods_GradientLoadingBar_Tests -@end diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-frameworks.sh b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-frameworks.sh deleted file mode 100755 index 08e3eaa..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-resources.sh b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests-resources.sh deleted file mode 100755 index 345301f..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_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-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.modulemap b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.modulemap deleted file mode 100644 index 0f9dc0a..0000000 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_GradientLoadingBar_Tests { - umbrella header "Pods-GradientLoadingBar_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/GradientActivityIndicatorView/CustomColorSnapshotTestCase.swift b/Example/SnapshotTests/GradientActivityIndicatorView/CustomColorSnapshotTestCase.swift deleted file mode 100644 index 659ce95..0000000 --- a/Example/SnapshotTests/GradientActivityIndicatorView/CustomColorSnapshotTestCase.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// CustomColorSnapshotTestCase.swift -// GradientLoadingBar_SnapshotTests -// -// Created by Felix Mau on 09.11.19. -// Copyright © 2019 CocoaPods. All rights reserved. -// - -import XCTest -import SnapshotTesting - -@testable import GradientLoadingBar - -class CustomColorSnapshotTestCase: XCTestCase { - // MARK: - Config - - /// The frame we use for rendering the `GradientLoadingBar`. This will also be the image size for our snapshot. - private static let frame = CGRect(origin: .zero, size: CGSize(width: 375, height: 4)) - - /// 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 testGradientProgressIndicatorViewShouldContainCorrectColorsInitially() { - // Given - let gradientActivityIndicatorView = GradientActivityIndicatorView(frame: Self.frame) - - // We're only interested in the initial state containing the correct gradient-colors. - // Therefore we're gonna remove the progress animation. - gradientActivityIndicatorView.layer.removeAllAnimations() - - // When - gradientActivityIndicatorView.gradientColors = Self.gradientColors - - // Then - assertSnapshot(matching: gradientActivityIndicatorView, as: .image) - } -} diff --git a/Example/SnapshotTests/GradientActivityIndicatorView/DefaultColorSnapshotTestCase.swift b/Example/SnapshotTests/GradientActivityIndicatorView/DefaultColorSnapshotTestCase.swift deleted file mode 100644 index 124f7f3..0000000 --- a/Example/SnapshotTests/GradientActivityIndicatorView/DefaultColorSnapshotTestCase.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// DefaultColorSnapshotTestCase.swift -// GradientLoadingBar_SnapshotTests -// -// Created by Felix Mau on 09.11.19. -// Copyright © 2019 CocoaPods. All rights reserved. -// - -import XCTest -import SnapshotTesting - -@testable import GradientLoadingBar - -class DefaultColorSnapshotTestCase: XCTestCase { - // MARK: - Config - - /// The frame we use for rendering the `GradientLoadingBar`. This will also be the image size for our snapshot. - private static let frame = CGRect(origin: .zero, size: CGSize(width: 375, height: 4)) - - // MARK: - Test cases - - func testGradientProgressIndicatorViewShouldContainCorrectColorsInitially() { - // When - let gradientActivityIndicatorView = GradientActivityIndicatorView(frame: Self.frame) - - // We're only interested in the initial state containing the correct gradient-colors. - // Therefore we're gonna remove the progress animation. - gradientActivityIndicatorView.layer.removeAllAnimations() - - // Then - assertSnapshot(matching: gradientActivityIndicatorView, as: .image) - } -} diff --git a/Example/SnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift b/Example/SnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift deleted file mode 100644 index f82c055..0000000 --- a/Example/SnapshotTests/GradientLoadingBarController/GradientLoadingBarControllerTestCase.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// GradientLoadingBarControllerTestCase.swift -// GradientLoadingBar_SnapshotTests -// -// Created by Felix Mau on 14.06.20. -// Copyright © 2020 CocoaPods. All rights reserved. -// - -import XCTest -import SnapshotTesting - -@testable import GradientLoadingBar - -class GradientLoadingBarControllerTestCase: XCTestCase { - // MARK: - Private properties - - private var gradientLoadingBarController: GradientLoadingBarController! - - // MARK: - Public methods - - override func setUpWithError() throws { - try super.setUpWithError() - - gradientLoadingBarController = GradientLoadingBarController() - gradientLoadingBarController.fadeIn(duration: 0) - } - - override func tearDownWithError() throws { - gradientLoadingBarController = nil - - try super.tearDownWithError() - } - - // MARK: - Tests - - func testGradientLoadingBarController() { - // Given - let rootViewController = UIViewController() - - let expectation = self.expectation(description: "Waiting for view to appear.") - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - expectation.fulfill() - } - - // Then - wait(for: [expectation], timeout: 1) - assertSnapshot(matching: rootViewController, as: .windowedImage) - } -} diff --git a/Example/SnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift b/Example/SnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift deleted file mode 100644 index 4149955..0000000 --- a/Example/SnapshotTests/GradientLoadingBarController/NotchGradientLoadingBarControllerTestCase.swift +++ /dev/null @@ -1,51 +0,0 @@ -// -// NotchGradientLoadingBarControllerTestCase.swift -// GradientLoadingBar_SnapshotTests -// -// Created by Felix Mau on 14.06.20. -// Copyright © 2020 CocoaPods. All rights reserved. -// - -import XCTest -import SnapshotTesting - -@testable import GradientLoadingBar - -class NotchGradientLoadingBarControllerTestCase: XCTestCase { - // swiftlint:disable:previous type_name - - // MARK: - Private properties - - private var notchGradientLoadingBarController: NotchGradientLoadingBarController! - - // MARK: - Public methods - - override func setUpWithError() throws { - try super.setUpWithError() - - notchGradientLoadingBarController = NotchGradientLoadingBarController() - notchGradientLoadingBarController.fadeIn(duration: 0) - } - - override func tearDownWithError() throws { - notchGradientLoadingBarController = nil - - try super.tearDownWithError() - } - - // MARK: - Tests - - func testNotchGradientLoadingBarController() { - // Given - let rootViewController = UIViewController() - - let expectation = self.expectation(description: "Waiting for view to appear.") - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - expectation.fulfill() - } - - // Then - wait(for: [expectation], timeout: 1) - assertSnapshot(matching: rootViewController, as: .windowedImage) - } -} diff --git a/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/testGradientLoadingBarController.1.png b/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/testGradientLoadingBarController.1.png deleted file mode 100644 index 19f9e55..0000000 Binary files a/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/GradientLoadingBarControllerTestCase/testGradientLoadingBarController.1.png and /dev/null differ diff --git a/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/testNotchGradientLoadingBarController.1.png b/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/testNotchGradientLoadingBarController.1.png deleted file mode 100644 index b24cf3f..0000000 Binary files a/Example/SnapshotTests/GradientLoadingBarController/__Snapshots__/NotchGradientLoadingBarControllerTestCase/testNotchGradientLoadingBarController.1.png and /dev/null differ 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/_Helper/Snapshotting+WindowedImage.swift b/Example/SnapshotTests/_Helper/Snapshotting+WindowedImage.swift deleted file mode 100644 index 96965b9..0000000 --- a/Example/SnapshotTests/_Helper/Snapshotting+WindowedImage.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// Snapshotting+WindowedImage.swift -// GradientLoadingBar_SnapshotTests -// -// Created by Felix Mau on 14.06.20. -// Copyright © 2020 CocoaPods. All rights reserved. -// - -import SnapshotTesting - -// MARK: - Config - -private enum Config { - /// Allow for a 1% pixel difference. - static let precision: Float = 0.99 -} - -// MARK: - Public properties - -extension Snapshotting where Value: UIViewController, Format == UIImage { - /// Based on: - /// and - static var windowedImage: Snapshotting { - Snapshotting.image(precision: Config.precision, scale: nil).asyncPullback { viewController in - Async { callback in - UIView.setAnimationsEnabled(false) - - guard let keyWindow = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) else { - fatalError("⚠️ – Failed to get key window from application!") - } - keyWindow.rootViewController = viewController - - DispatchQueue.main.async { - let image = UIGraphicsImageRenderer(bounds: keyWindow.bounds).image { _ in - keyWindow.drawHierarchy(in: keyWindow.bounds, afterScreenUpdates: true) - } - callback(image) - - UIView.setAnimationsEnabled(true) - } - } - } - } -} 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 d42044b..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: "GradientLoadingBar.xcworkspace", - devices: ["iPhone 13"], - scheme: "GradientLoadingBar-Example") + run_tests( + workspace: "Example.xcworkspace", + devices: ["iPhone 13"], + scheme: "Example" + ) end desc "Execute validation of library." diff --git a/GradientLoadingBar.podspec b/GradientLoadingBar.podspec index 2bf6f0e..0b9e1d7 100644 --- a/GradientLoadingBar.podspec +++ b/GradientLoadingBar.podspec @@ -28,10 +28,10 @@ Inspired by https://codepen.io/marcobiedermann/pen/LExXWW s.author = { 'Felix Mau' => 'contact@felix.hamburg' } s.source = { :git => 'https://github.com/fxm90/GradientLoadingBar.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 = 'GradientLoadingBar/Classes/**/*' + s.source_files = 'GradientLoadingBar/**/*' # s.resource_bundles = { # 'GradientLoadingBar' => ['GradientLoadingBar/Assets/*.png'] diff --git a/GradientLoadingBar/Assets/.gitkeep b/GradientLoadingBar/Assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/GradientLoadingBar/Classes/.gitkeep b/GradientLoadingBar/Classes/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/GradientLoadingBar/Classes/Views/GradientActivityIndicatorView+AnimateIsHidden.swift b/GradientLoadingBar/Feature/GradientActivityIndicatorView/GradientActivityIndicatorView+AnimateIsHidden.swift similarity index 99% rename from GradientLoadingBar/Classes/Views/GradientActivityIndicatorView+AnimateIsHidden.swift rename to GradientLoadingBar/Feature/GradientActivityIndicatorView/GradientActivityIndicatorView+AnimateIsHidden.swift index e321def..0a5ce3f 100644 --- a/GradientLoadingBar/Classes/Views/GradientActivityIndicatorView+AnimateIsHidden.swift +++ b/GradientLoadingBar/Feature/GradientActivityIndicatorView/GradientActivityIndicatorView+AnimateIsHidden.swift @@ -52,7 +52,7 @@ public extension GradientActivityIndicatorView { }, completion: { isFinished in // Update `isHidden` flag accordingly: - // - set to `true` in case animation was completly finished. + // - set to `true` in case animation was completely finished. // - set to `false` in case animation was interrupted, e.g. due to starting of another animation. self.isHidden = isFinished diff --git a/GradientLoadingBar/Classes/Views/GradientActivityIndicatorView.swift b/GradientLoadingBar/Feature/GradientActivityIndicatorView/GradientActivityIndicatorView.swift similarity index 100% rename from GradientLoadingBar/Classes/Views/GradientActivityIndicatorView.swift rename to GradientLoadingBar/Feature/GradientActivityIndicatorView/GradientActivityIndicatorView.swift diff --git a/GradientLoadingBar/Classes/ViewModel/GradientActivityIndicatorViewModel.swift b/GradientLoadingBar/Feature/GradientActivityIndicatorView/GradientActivityIndicatorViewModel.swift similarity index 100% rename from GradientLoadingBar/Classes/ViewModel/GradientActivityIndicatorViewModel.swift rename to GradientLoadingBar/Feature/GradientActivityIndicatorView/GradientActivityIndicatorViewModel.swift diff --git a/GradientLoadingBar/Classes/GradientLoadingBarController.swift b/GradientLoadingBar/Feature/GradientLoadingBar/GradientLoadingBarController.swift similarity index 89% rename from GradientLoadingBar/Classes/GradientLoadingBarController.swift rename to GradientLoadingBar/Feature/GradientLoadingBar/GradientLoadingBarController.swift index 01c67c3..6e1b1e8 100644 --- a/GradientLoadingBar/Classes/GradientLoadingBarController.swift +++ b/GradientLoadingBar/Feature/GradientLoadingBar/GradientLoadingBarController.swift @@ -31,22 +31,20 @@ open class GradientLoadingBarController { /// Colors used for the gradient. public var gradientColors: [UIColor] { - get { - gradientActivityIndicatorView.gradientColors - } - set { - gradientActivityIndicatorView.gradientColors = newValue - } + get { gradientActivityIndicatorView.gradientColors } + set { gradientActivityIndicatorView.gradientColors = newValue } } /// Duration for the progress animation. public var progressAnimationDuration: TimeInterval { - get { - gradientActivityIndicatorView.progressAnimationDuration - } - set { - gradientActivityIndicatorView.progressAnimationDuration = newValue - } + get { gradientActivityIndicatorView.progressAnimationDuration } + set { gradientActivityIndicatorView.progressAnimationDuration = newValue } + } + + /// Boolean flag, whether the view is currently hidden. + public var isHidden: Bool { + get { gradientActivityIndicatorView.isHidden } + set { gradientActivityIndicatorView.isHidden = newValue } } /// Singleton instance. diff --git a/GradientLoadingBar/Classes/ViewModel/GradientLoadingBarViewModel.swift b/GradientLoadingBar/Feature/GradientLoadingBar/GradientLoadingBarViewModel.swift similarity index 72% rename from GradientLoadingBar/Classes/ViewModel/GradientLoadingBarViewModel.swift rename to GradientLoadingBar/Feature/GradientLoadingBar/GradientLoadingBarViewModel.swift index 71c74c2..5d4e740 100644 --- a/GradientLoadingBar/Classes/ViewModel/GradientLoadingBarViewModel.swift +++ b/GradientLoadingBar/Feature/GradientLoadingBar/GradientLoadingBarViewModel.swift @@ -34,7 +34,7 @@ final class GradientLoadingBarViewModel { self.sharedApplication = sharedApplication self.notificationCenter = notificationCenter - if let keyWindow = sharedApplication.windows.first(where: { $0.isKeyWindow }) { + if let keyWindow = sharedApplication.keyWindowInConnectedScenes { superviewSubject.value = keyWindow } @@ -56,7 +56,7 @@ final class GradientLoadingBarViewModel { // MARK: - Private methods @objc private func didReceiveUIWindowDidBecomeKeyNotification(_: Notification) { - guard let keyWindow = sharedApplication.windows.first(where: { $0.isKeyWindow }) else { return } + guard let keyWindow = sharedApplication.keyWindowInConnectedScenes else { return } superviewSubject.value = keyWindow } @@ -66,7 +66,21 @@ final class GradientLoadingBarViewModel { /// This allows mocking `UIApplication` in tests. protocol UIApplicationProtocol: AnyObject { - var windows: [UIWindow] { get } + var keyWindowInConnectedScenes: UIWindow? { get } } -extension UIApplication: UIApplicationProtocol {} +extension UIApplication: UIApplicationProtocol { + /// Returns the current key window across multiple iOS versions. + var keyWindowInConnectedScenes: UIWindow? { + guard #available(iOS 15.0, *) else { + return windows.first { $0.isKeyWindow } + } + + // Starting from iOS 15.0 we need to use `UIWindowScene.windows` on a relevant window scene instead. + // Source: https://stackoverflow.com/a/58031897 + return connectedScenes + .compactMap { $0 as? UIWindowScene } + .flatMap(\.windows) + .first { $0.isKeyWindow } + } +} diff --git a/GradientLoadingBar/Feature/GradientLoadingBarView/GradientLoadingBarView+ViewModel.swift b/GradientLoadingBar/Feature/GradientLoadingBarView/GradientLoadingBarView+ViewModel.swift new file mode 100644 index 0000000..6af3187 --- /dev/null +++ b/GradientLoadingBar/Feature/GradientLoadingBarView/GradientLoadingBarView+ViewModel.swift @@ -0,0 +1,74 @@ +// +// GradientLoadingBarView+ViewModel.swift +// GradientLoadingBar +// +// Created by Felix Mau on 21.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import Combine +import SwiftUI + +@available(iOS 15.0, *) +extension GradientLoadingBarView { + /// This view model contains all logic related to the `GradientLoadingBarView` + /// and the corresponding progress animation. + final class ViewModel: ObservableObject { + // MARK: - Public properties + + /// The gradient colors used for the progress animation (including the reversed colors). + let gradientColors: [Color] + + /// The horizontal offset of the `LinearGradient` used to simulate the progress animation. + @Published + private(set) var horizontalOffset: CGFloat = 0 + + /// The current size of the `GradientLoadingBarView`. + @Published + var size: CGSize = .zero { + didSet { + // This will stop any ongoing animation. + // Source: https://stackoverflow.com/a/59150940 + withAnimation(.linear(duration: 0)) { + horizontalOffset = -size.width + } + + let progressAnimation: Animation = .linear(duration: progressDuration).repeatForever(autoreverses: false) + withAnimation(progressAnimation) { + horizontalOffset = size.width + } + } + } + + /// The width of the `LinearGradient`. + var gradientWidth: CGFloat { + // To fit `gradientColors + reversedGradientColors + gradientColors` in our view, + // we have to apply three times the width of our parent view. + size.width * 3 + } + + // MARK: - Private properties + + private var progressDuration: TimeInterval + + // MARK: - Public methods + + init(gradientColors: [Color], progressDuration: TimeInterval) { + // Simulate infinite animation - Therefore we'll reverse the colors and remove the first and last item + // to prevent duplicate values at the "inner edges" destroying the infinite look. + // + // E.g. for array of [.red, .yellow, .green] + // we will create [.red, .yellow, .green, .yellow, .red, .yellow, .green] + // + // E.g. for array of [.red, .yellow, .green, .blue] + // we will create [.red, .yellow, .green, .blue, .green, .yellow, .red, .yellow, .green, .blue] + let reversedGradientColors = gradientColors + .reversed() + .dropFirst() + .dropLast() + + self.gradientColors = gradientColors + reversedGradientColors + gradientColors + self.progressDuration = progressDuration + } + } +} diff --git a/GradientLoadingBar/Feature/GradientLoadingBarView/GradientLoadingBarView.swift b/GradientLoadingBar/Feature/GradientLoadingBarView/GradientLoadingBarView.swift new file mode 100644 index 0000000..6a68342 --- /dev/null +++ b/GradientLoadingBar/Feature/GradientLoadingBarView/GradientLoadingBarView.swift @@ -0,0 +1,79 @@ +// +// GradientLoadingBarView.swift +// GradientLoadingBar +// +// Created by Felix Mau on 08.03.22. +// Copyright © 2022 Felix Mau. All rights reserved. +// + +import SwiftUI + +// For some reason the animation looks broken on iOS versions <= 15.0. +@available(iOS 15.0, *) +public struct GradientLoadingBarView: View { + // MARK: - Config + + public enum Config { + /// The default color palette for the gradient colors. + public static let gradientColors = UIColor.GradientLoadingBar.gradientColors.map(Color.init) + + /// The default duration for the progress animation, measured in seconds. + public static let progressDuration = TimeInterval.GradientLoadingBar.progressDuration + } + + // MARK: - Private properties + + @StateObject + private var viewModel: ViewModel + + // MARK: - Initializer + + public init(gradientColors: [Color] = Config.gradientColors, + progressDuration: TimeInterval = Config.progressDuration) { + // Even though the docs mention that "You don’t call this initializer directly", this seems to be the correct way to set-up a + // `StateObject` with parameters according to "Lessons from the SwiftUI Digital Lounge". + // https://swiftui-lab.com/random-lessons/#data-10 + _viewModel = StateObject( + wrappedValue: ViewModel(gradientColors: gradientColors, progressDuration: progressDuration) + ) + } + + // MARK: - Render + + public var body: some View { + Color.clear + // We explicitly have to use a `PreferenceKey` here and store the size on a property in order to restart the animation whenever + // the size changes. Using a `GeometryReader` together with the `onAppear(_:)` view-modifier doesn't reflect any size changes. + .modifier(SizeModifier()) + .onPreferenceChange(SizePreferenceKey.self) { + viewModel.size = $0 + } + // Using an `overlay` here makes sure that the parent view won't change it's frame. + .overlay(// + LinearGradient(colors: viewModel.gradientColors, startPoint: .leading, endPoint: .trailing) + .frame(width: viewModel.gradientWidth) + .offset(x: viewModel.horizontalOffset, y: 0)) + } +} + +// MARK: - Helper + +private struct SizePreferenceKey: PreferenceKey { + static var defaultValue: CGSize = .zero + + static func reduce(value: inout CGSize, nextValue: () -> CGSize) { + value = nextValue() + } +} + +@available(iOS 15.0, *) +private struct SizeModifier: ViewModifier { + func body(content: Content) -> some View { + content.background( + GeometryReader { geometry in + Color.clear.preference(key: SizePreferenceKey.self, + value: geometry.size) + } + ) + } +} diff --git a/GradientLoadingBar/Classes/NotchGradientLoadingBarController.swift b/GradientLoadingBar/Feature/NotchGradientLoadingBar/NotchGradientLoadingBarController.swift similarity index 96% rename from GradientLoadingBar/Classes/NotchGradientLoadingBarController.swift rename to GradientLoadingBar/Feature/NotchGradientLoadingBar/NotchGradientLoadingBarController.swift index 143b2f2..41bf674 100644 --- a/GradientLoadingBar/Classes/NotchGradientLoadingBarController.swift +++ b/GradientLoadingBar/Feature/NotchGradientLoadingBar/NotchGradientLoadingBarController.swift @@ -51,11 +51,9 @@ open class NotchGradientLoadingBarController: GradientLoadingBarController { // As we currently only support portrait mode (and no device rotation), we can safely use `bounds.size.width` here. let screenWidth = superview.bounds.size.width - let notchBezierPath = self.notchBezierPath(for: screenWidth, notchConfig: notchConfig) + let notchBezierPath = notchBezierPath(for: screenWidth, notchConfig: notchConfig) - // Setting the `lineWidth` draws a line, where the actual path is exactly in the middle of the drawn line. - // To get the correct height (including the path) we have to add the `height` here to the given bounds (half height for top, half for bottom). - let viewHeight = notchBezierPath.bounds.height + height + let viewHeight = notchBezierPath.bounds.height + 1 NSLayoutConstraint.activate([ gradientActivityIndicatorView.topAnchor.constraint(equalTo: superview.topAnchor), gradientActivityIndicatorView.heightAnchor.constraint(equalToConstant: viewHeight), @@ -81,7 +79,7 @@ open class NotchGradientLoadingBarController: GradientLoadingBarController { let smallCircleDiameter: CGFloat = 2 * notchConfig.smallCircleRadius // Reducing the height here a little in order to match the "basic" gradient loading bar. - let height = self.height - 0.5 + let height = height - 0.5 let bezierPath = UIBezierPath() bezierPath.move(to: .zero) diff --git a/GradientLoadingBar/Classes/ViewModel/NotchGradientLoadingBarViewModel.swift b/GradientLoadingBar/Feature/NotchGradientLoadingBar/NotchGradientLoadingBarViewModel.swift similarity index 100% rename from GradientLoadingBar/Classes/ViewModel/NotchGradientLoadingBarViewModel.swift rename to GradientLoadingBar/Feature/NotchGradientLoadingBar/NotchGradientLoadingBarViewModel.swift diff --git a/GradientLoadingBar/Classes/Misc/Constants.swift b/GradientLoadingBar/Helper/Constants.swift similarity index 100% rename from GradientLoadingBar/Classes/Misc/Constants.swift rename to GradientLoadingBar/Helper/Constants.swift diff --git a/readme.md b/readme.md index 54f0550..f49f71b 100644 --- a/readme.md +++ b/readme.md @@ -11,8 +11,8 @@ A customizable animated gradient loading bar. Inspired by [iOS 7 Progress Bar fr To run the example project, clone the repo, and open the workspace from the Example directory. ### Requirements -- Swift 5.0 -- Xcode 10.2+ +- Swift 5.5 +- Xcode 13.2+ - iOS 9.0+ ### Integration @@ -45,17 +45,18 @@ dependencies: [ ### How to use -This framework provides three classes: +This framework provides four classes: - **GradientLoadingBar**: A controller, managing the visibility of the `GradientActivityIndicatorView` on the current key window. -- **NotchGradientLoadingBar**: A subclass of `GradientLoadingBar`, wrapping the `GradientActivityIndicatorView` around the notch of the iPhone. + - **NotchGradientLoadingBar**: A subclass of `GradientLoadingBar`, wrapping the `GradientActivityIndicatorView` around the notch of the iPhone. - **GradientActivityIndicatorView**: A `UIView` containing the gradient with the animation. It can be added as a subview to another view either inside the interface builder or programmatically. Both ways are shown inside the example application. + - **GradientLoadingBarView**: A `View` for SwiftUI containing the gradient with the animation. The view can be added to any other SwiftUI view. The example application also contains same sample code for this use case. #### GradientLoadingBar To get started, import the module `GradientLoadingBar` into your file and save an instance of `GradientLoadingBar()` on a property of your view-controller. To show the loading bar, simply call the `fadeIn(duration:completion)` method and after your async operations have finished call the `fadeOut(duration:completion)` method. ```swift -class UserViewController: UIViewController { +final class UserViewController: UIViewController { private let gradientLoadingBar = GradientLoadingBar() @@ -76,7 +77,7 @@ class UserViewController: UIViewController { ``` ##### Configuration -You can overwrite the default configuration by calling the initializers with the optional parameters `height` and `isRelativeToSafeArea`: +You can override the default configuration by calling the initializers with the optional parameters `height` and `isRelativeToSafeArea`: ```swift let gradientLoadingBar = GradientLoadingBar( @@ -157,7 +158,7 @@ E.g. View added as a subview to a `UIButton`. [![Example][advanced-example--thumbnail]][advanced-example] ##### Note -The progress-animation starts and stops according to the `isHidden` flag. Setting this flag to `false` will start the animation, setting this to `true` will stop the animation. Often you don't want to directly show / hide the view and instead smoothly fade it in or out. Therefore the view provides the methods `fadeIn(duration:completion)` and `fadeOut(duration:completion)`. Based on my [gist](https://gist.github.com/fxm90/723b5def31b46035cd92a641e3b184f6), these methods adjust the `alpha` value of the view and update the `isHidden` flag accordingly. +The progress-animation starts and stops according to the `isHidden` flag. Setting this flag to `false` will start the animation, setting this to `true` will stop the animation. Often you don't want to directly show / hide the view and instead smoothly fade it in or out. Therefore the view provides the methods `fadeIn(duration:completion)` and `fadeOut(duration:completion)`. Based on the gist [`UIView+AnimateAlpha.swift`](https://gist.github.com/fxm90/723b5def31b46035cd92a641e3b184f6), these methods adjust the `alpha` value of the view and update the `isHidden` flag accordingly. ##### Properties ###### – `gradientColors: [UIColor]` @@ -169,9 +170,46 @@ This property adjusts the duration of the animation moving the gradient from lef *To see all these screenshots in a real app, please have a look at the **example application**. For further customization you can also subclass `GradientLoadingBar` and overwrite the method `setupConstraints()`.* +#### GradientLoadingBarView +This is the SwiftUI variant for the `GradientActivityIndicatorView`. The view can be configured via the two parameters `gradientColors: [Color]` and `progressAnimation: Animation` passed to the initializer. + +##### – `gradientColors: [Color]` : +This parameter adjusts the gradient colors shown on the loading bar. + +##### – `progressAnimation: Animation` : +This parameter adjusts the duration of the animation moving the gradient from left to right. + +The visibility of the view can be updated with the view modifier [`opacity()`](https://developer.apple.com/documentation/swiftui/view/opacity(_:)) or [`hidden()`](https://developer.apple.com/documentation/swiftui/view/hidden()). + +To animate the visibility changes you need to create a property with the `@State` property wrapper, and update the value from a [`withAnimation`](https://developer.apple.com/documentation/swiftui/withanimation(_:_:)) block, e.g. + +```swift +struct ExampleView: some View { + + @State + private var isVisible = false + + var body: some View { + VStack { + GradientLoadingBarView() + .frame(maxWidth: .infinity, maxHeight: 3) + .cornerRadius(1.5) + .opacity(isVisible ? 1 : 0) + + Button("Toggle visibility") { + withAnimation(.easeInOut) { + isVisible.toggle() + } + } + } + } +} +``` + + ### 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 `GradientLoadingBar` 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 `GradientLoadingBar` inside the Interface Builder :) ``` post_install do |installer|