diff --git a/Example/GradientLoadingBar.xcodeproj/project.pbxproj b/Example/GradientLoadingBar.xcodeproj/project.pbxproj index 0e353c4..d365084 100644 --- a/Example/GradientLoadingBar.xcodeproj/project.pbxproj +++ b/Example/GradientLoadingBar.xcodeproj/project.pbxproj @@ -355,10 +355,12 @@ 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; diff --git a/Example/Podfile.lock b/Example/Podfile.lock index a85bbdc..fdf1726 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,7 @@ PODS: - - GradientLoadingBar (1.1.16) + - GradientLoadingBar (1.1.16): + - LightweightObservable (~> 1.0) + - LightweightObservable (1.0.0) - SwiftFormat/CLI (0.40.4) - SwiftLint (0.31.0) @@ -10,6 +12,7 @@ DEPENDENCIES: SPEC REPOS: https://github.com/cocoapods/specs.git: + - LightweightObservable - SwiftFormat - SwiftLint @@ -18,7 +21,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - GradientLoadingBar: 4f62a8302125a90f3e3eca4612f28d2928a8b693 + GradientLoadingBar: cd8ff33f9057a346e57b39a583efc36ac27bffd5 + LightweightObservable: 4d3baddc9949ce29327fab825e48fad8b41502e7 SwiftFormat: cc36377840cffa5d0634782875dccf34dc02ff39 SwiftLint: 7a0227733d786395817373b2d0ca799fd0093ff3 diff --git a/Example/Pods/LightweightObservable/LICENSE b/Example/Pods/LightweightObservable/LICENSE new file mode 100644 index 0000000..ca0a96d --- /dev/null +++ b/Example/Pods/LightweightObservable/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2019 Felix Mau + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Disposable.swift b/Example/Pods/LightweightObservable/LightweightObservable/Classes/Disposable.swift new file mode 100644 index 0000000..8d67ef1 --- /dev/null +++ b/Example/Pods/LightweightObservable/LightweightObservable/Classes/Disposable.swift @@ -0,0 +1,46 @@ +// +// Disposable.swift +// LightweightObservable +// +// Created by Felix Mau on 11/02/19. +// Copyright © 2019 Felix Mau. All rights reserved. +// + +import Foundation + +/// Helper to allow storing multiple disposables (and matching name from RxSwift). +public typealias DisposeBag = [Disposable] + +/// Executes a given closure on deallocation. +public final class Disposable { + // MARK: - Types + + /// Type for closure to be executed on deallocation. + public typealias Dispose = () -> Void + + // MARK: - Private properties + + /// Closure to be executed on deallocation. + private let dispose: Dispose + + // MARK: - Initializer + + /// Creates a new instance. + /// + /// - Parameter dispose: The closure that is executed on deallocation. + public init(_ dispose: @escaping Dispose) { + self.dispose = dispose + } + + /// Executes our closure. + deinit { + dispose() + } + + // MARK: - Public methods + + /// Adds the current disposable to an array of disposables. + public func disposed(by bag: inout DisposeBag) { + bag.append(self) + } +} diff --git a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable/Observable+Equatable.swift b/Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable/Observable+Equatable.swift new file mode 100644 index 0000000..13dac46 --- /dev/null +++ b/Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable/Observable+Equatable.swift @@ -0,0 +1,40 @@ +// +// Observable+Equatable.swift +// LightweightObservable +// +// Created by Felix Mau on 01/05/19. +// Copyright © 2019 Felix Mau. All rights reserved. +// + +import Foundation + +/// Additonal helper methods for an observable that can be compared for equality. +public extension Observable where T: Equatable { + // MARK: - Types + + /// The type for the filter closure. + typealias Filter = (NewValue, OldValue) -> Bool + + // MARK: - Public methods + + /// Informs the given observer on changes to our `value`, only if the given filter matches. + /// + /// - Parameters: + /// - filter: The filer-closure, that must return `true` in order for the observer to be notified. + /// - observer: The observer-closure that is notified on changes. + func subscribe(filter: @escaping Filter, observer: @escaping Observer) -> Disposable { + return subscribe { nextValue, prevValue in + guard filter(nextValue, prevValue) else { return } + + observer(nextValue, prevValue) + } + } + + /// Informs the given observer on **distinct** changes to our `value`. + /// + /// - Parameter observer: The observer-closure that is notified on changes. + func subscribeDistinct(_ observer: @escaping Observer) -> Disposable { + return subscribe(filter: { $0 != $1 }, + observer: observer) + } +} diff --git a/Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable/Observable.swift b/Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable/Observable.swift new file mode 100644 index 0000000..153d0a6 --- /dev/null +++ b/Example/Pods/LightweightObservable/LightweightObservable/Classes/Observable/Observable.swift @@ -0,0 +1,109 @@ +// +// Observable.swift +// LightweightObservable +// +// Created by Felix Mau on 11/02/19. +// Copyright © 2019 Felix Mau. All rights reserved. +// + +import Foundation + +/// An observable sequence that you can subscribe to. Any of the subscriber will receive the most +/// recent element and everything that is emitted by that sequence after the subscription happened. +/// +/// - Note: Implementation based on [roberthein/Observable](https://github.com/roberthein/Observable). +public class Observable { + // MARK: - Types + + /// The type for the new value of the observable. + public typealias NewValue = T + + /// The type for the previous value of the observable. + public typealias OldValue = T? + + /// The type for the closure to executed on change of the observable. + public typealias Observer = (NewValue, OldValue) -> Void + + /// We store all observers within a dictionary, for which this is the type of the key. + private typealias Index = UInt + + // MARK: - Public properties + + /// The current (readonly) value of the observable. + fileprivate(set) var value: T { + didSet { + for (_, observer) in observers { + observer(value, oldValue) + } + } + } + + // MARK: - Private properties + + /// The index of the last inserted observer. + private var lastIndex: Index = 0 + + /// Map with all active observers. + private var observers = [Index: Observer]() + + // MARK: - Initalizer + + /// Initializes a new observable with the given value. + /// + /// - Note: Declared `fileprivate` in order to prevent directly initializing an observable, which can not be updated. + fileprivate init(_ value: T) { + self.value = value + } + + // MARK: - Public methods + + /// Informs the given observer on changes to our `value`. + /// + /// - Parameter observer: The observer-closure that is notified on changes. + public func subscribe(_ observer: @escaping Observer) -> Disposable { + let currentIndex = lastIndex + 1 + observers[currentIndex] = observer + + lastIndex = currentIndex + + // Inform observer with initial value. + observer(value, nil) + + // Return a disposable, that removes the entry for this observer on it's deallocation. + return Disposable { [weak self] in + self?.observers[currentIndex] = nil + } + } +} + +/// A special form of an observable sequence, that you can subscribe to AND dynamically add elements. +/// +/// - Note: Has to be declared in the same file as `Observable`, to overwrite `fileprivate` setter for property `value`. +/// (Workaround for a "protected" property). +public final class Variable: Observable { + // MARK: - Public properties + + /// The current variable converted to an (readonly) `Observable`. + public var asObservable: Observable { + return self as Observable + } + + /// The current value of the observable. + public override var value: T { + get { + return super.value + } + set { + super.value = newValue + } + } + + // MARK: - Initializer + + /// Initializes a new variable with the given value. + /// + /// - Note: As we've made the initializer to the super class `Observable` fileprivate, we must override it here with public access. + public override init(_ value: T) { + super.init(value) + } +} diff --git a/Example/Pods/LightweightObservable/README.md b/Example/Pods/LightweightObservable/README.md new file mode 100644 index 0000000..2a310a3 --- /dev/null +++ b/Example/Pods/LightweightObservable/README.md @@ -0,0 +1,132 @@ +![Header](https://felix.hamburg/files/github/lightweight-observable/header.png) + +

+ Swift Version + CI Status + Version + License + Platform +

+ +## Features + +Lightweight Obserservable is a simple implementation of an observable sequence that you can subscribe to. The framework is designed to be minimal meanwhile convenient. The entire code is only ~80 lines (excluding comments). With Lightweight Observable you can easily set up UI-Bindings in an MVVM application, handle asynchronous network calls and a lot more. + +**Credits:** The code was heavily influenced by [roberthein/observable](https://github.com/roberthein/Observable). However I needed something that was syntactically closer to [RxSwift](https://github.com/ReactiveX/RxSwift), which is why I came up with this code, and for reusability reasons afterwards moved it into a CocoaPod. + +### Example +To run the example project, clone the repo, and open the workspace from the Example directory. + +### Integration +##### CocoaPods +LightweightObservable can be added to your project using [CocoaPods](https://cocoapods.org/) by adding the following line to your Podfile: +``` +pod 'LightweightObservable', '~> 1.0' +``` + +##### Carthage +To integrate LightweightObservable into your Xcode project using [Carthage](https://github.com/Carthage/Carthage), specify it in your Cartfile: +``` +github "fxm90/LightweightObservable" ~> 1.0 +``` +Run carthage update to build the framework and drag the built `LightweightObservable.framework` into your Xcode project. + +### How to use +The framework provides two classes `Observable` and `Variable`: + - `Observable`: Contains an immutable value, you only can subscribe to. This is useful in order to avoid side-effects on an internal API. + - `Variable`: Subclass of `Observable`, where you can modify the value as well. + +Feel free to check out the example application for a better understanding of this approach. + +#### – Create a variable +```swift +let formattedTimeSubject = Variable("") + +// ... + +formattedTimeSubject.value = "4:20 PM" +``` + +#### – Create an observable +Initializing an observable directly is not possible, as this would lead to a sequence that will never change. Instead, use the computed property `asObservable` from `Variable` to cast the instance to an observable. +```swift +var formattedTime: Observable { + return formattedTimeSubject.asObservable +} +``` + +#### – Subscribe to changes +Every subscriber gets initialized with the current value and updated on all further changes to the observable value. + +```swift +formattedTime.subscribe { [weak self] newFormattedTime, oldFormattedTime in + self?.timeLabel.text = newFormattedTime +} +``` + +Please notice that the old value (`oldFormattedTime`) is an optional of the underlying type, as we don't have this value on the initial call to the subscriber. + +**Important:** To avoid retain cycles and/or crashes, **always** use `[weak self]` when self is needed by an observer. + +#### – Memory Management (`Disposable` / `DisposeBag`) + +When you subscribe to an `Observable` the method returns a `Disposable`, which is basically a reference to the new subscription. + +We need to maintain it, in order to properly control the lifecycle of that subscription. + +Let me explain you why in a little example: + +> Imagine having a MVVM application using a service layer for network calls. A service is used as a singleton across the entire app. +> +> The view-model has a reference to a service and subscribes to an observable property. The subscription-closure is now saved inside the observable property on the service. +> +> If the view-model gets deallocated (e.g. due to a dismissed view-controller), without noticing the observable property somehow, the subscription-closure would continue to be alive. +> +> As a workaround, we store the returned disposable from the subscription on the view-model. On deallocation of the disposable, it automatically informs the observable property to remove the referenced subscription closure. + +In case you only use a single subscriber you can store the returned `Disposable` to a variable: +```swift +let disposable = formattedTime.subscribe { [weak self] newFormattedTime, oldFormattedTime in + // ... +} +``` + +In case you're having multiple observers, you can store all returned `Disposable` in an array of `Disposable`. (To match the syntax from [RxSwift](https://github.com/ReactiveX/RxSwift), this pod contains a typealias called `DisposeBag`, which is an array of `Disposable`). +```swift +var disposeBag = DisposeBag() + +formattedTime.subscribe { [weak self] newFormattedTime, oldFormattedTime in + // ... +}.disposed(by: &disposeBag) + +formattedDate.subscribe { [weak self] newFormattedDate, oldFormattedDate in + // ... +}.disposed(by: &disposeBag) +``` + +A `DisposeBag` is exactly what it says it is, a bag (or array) of disposables. + +#### – Observing `Equatable` values +If you create an Observable which underlying type conforms to `Equtable` you can subscribe to changes using a specific filter. Therefore this pod contains the method: +```swift +typealias Filter = (NewValue, OldValue) -> Bool + +func subscribe(filter: @escaping Filter, observer: @escaping Observer) -> Disposable {} +``` + +Using this method, the observer will only be notified on changes if the corresponding filter matches. + +This pod comes with one predefined filter method, called `subscribeDistinct`. Subscribing to an observable using this method, will only notify the observer if the new value is different from the old value. This is useful to prevent unnecessary UI-Updates. + +Feel free to add more filters, by extending the `Observable` like this: +```swift +extension Observable where T: Equatable {} +``` + +### Author + +Felix Mau, me@felix.hamburg + +### License + +LightweightObservable is available under the MIT license. See the LICENSE file for more info. diff --git a/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json b/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json index 4b23a61..77aae5a 100644 --- a/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json +++ b/Example/Pods/Local Podspecs/GradientLoadingBar.podspec.json @@ -4,7 +4,7 @@ "summary": "A customizable animated gradient loading bar.", "description": "A customizable animated gradient loading bar.\nInspired by https://codepen.io/marcobiedermann/pen/LExXWW", "homepage": "https://github.com/fxm90/GradientLoadingBar", - "screenshots": "http://felix.hamburg/files/github/gradient-loading-bar/screen.gif", + "screenshots": "https://felix.hamburg/files/github/gradient-loading-bar/screen.gif", "license": { "type": "MIT", "file": "LICENSE" @@ -20,5 +20,10 @@ "platforms": { "ios": "9.0" }, - "source_files": "GradientLoadingBar/Classes/**/*" + "source_files": "GradientLoadingBar/Classes/**/*", + "dependencies": { + "LightweightObservable": [ + "~> 1.0" + ] + } } diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index a85bbdc..fdf1726 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,5 +1,7 @@ PODS: - - GradientLoadingBar (1.1.16) + - GradientLoadingBar (1.1.16): + - LightweightObservable (~> 1.0) + - LightweightObservable (1.0.0) - SwiftFormat/CLI (0.40.4) - SwiftLint (0.31.0) @@ -10,6 +12,7 @@ DEPENDENCIES: SPEC REPOS: https://github.com/cocoapods/specs.git: + - LightweightObservable - SwiftFormat - SwiftLint @@ -18,7 +21,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - GradientLoadingBar: 4f62a8302125a90f3e3eca4612f28d2928a8b693 + GradientLoadingBar: cd8ff33f9057a346e57b39a583efc36ac27bffd5 + LightweightObservable: 4d3baddc9949ce29327fab825e48fad8b41502e7 SwiftFormat: cc36377840cffa5d0634782875dccf34dc02ff39 SwiftLint: 7a0227733d786395817373b2d0ca799fd0093ff3 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index 026f7be..25cdee7 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,119 +7,151 @@ objects = { /* Begin PBXAggregateTarget section */ - EC44FEBE6DF117A61C3B651262F79770 /* SwiftLint */ = { + C9138DE13FF2A0FEEFDB1F6686F85C6A /* SwiftFormat */ = { isa = PBXAggregateTarget; - buildConfigurationList = 969E4116207CAC35206D4F36B7467530 /* Build configuration list for PBXAggregateTarget "SwiftLint" */; - buildPhases = ( - ); - dependencies = ( - ); - name = SwiftLint; - }; - ED23EC411B49F391D6955751F56D3E11 /* SwiftFormat */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 83C415027DECD32633EACDC3F86FA764 /* Build configuration list for PBXAggregateTarget "SwiftFormat" */; + buildConfigurationList = 238432E8C68B0275EF5A04B5F44471AC /* Build configuration list for PBXAggregateTarget "SwiftFormat" */; buildPhases = ( ); dependencies = ( ); name = SwiftFormat; }; + F40CA0216C90A76EEE32F7C25565C0D5 /* SwiftLint */ = { + isa = PBXAggregateTarget; + buildConfigurationList = DE0A51C923CF4F04E21FDC4AD988B99D /* Build configuration list for PBXAggregateTarget "SwiftLint" */; + buildPhases = ( + ); + dependencies = ( + ); + name = SwiftLint; + }; /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 0A0FFB8885A0904AD90A2FAD87C26B12 /* UIView+AnimateIsHidden.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4538483088F4844FB0F10A96586FB8A9 /* UIView+AnimateIsHidden.swift */; }; - 1917031154DDDFB4D738D69750F32C50 /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 13CDF08BD921D579623895BA96539BCE /* Pods-GradientLoadingBar_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1ADF9BF9E149214C8622227668BD4856 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB4607EFCA7C5F75397649E792E2AFCB /* Foundation.framework */; }; - 22A974E386497FB10F7B61CC09AA41BA /* BottomGradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 936A0597BA17B55F59A346D331306B5F /* BottomGradientLoadingBarController.swift */; }; - 43F4441A6EAF1F6B05A08CEC72C3557E /* UIColor+DefaultValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71239BEF34D3EF1C8CA98006CEEAFE38 /* UIColor+DefaultValues.swift */; }; - 4E89B9D0D02E6C7EC95CA117982C1A69 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB4607EFCA7C5F75397649E792E2AFCB /* Foundation.framework */; }; + 0B61E36AA6C58C2088CE75B088228D24 /* LightweightObservable.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA560EE447F3A7C6E598FE3F43C8666E /* LightweightObservable.framework */; }; + 0B75956FC410AB5939DCE7DD37FF4E60 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0DB0084C5FD0BFC8785550E7F61F815 /* Foundation.framework */; }; + 1AD7D49AFCB722E38C20BADB5E78FBA4 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011D7697512BC073D570D65912E05FE6 /* GradientView.swift */; }; + 1ADF9BF9E149214C8622227668BD4856 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0DB0084C5FD0BFC8785550E7F61F815 /* Foundation.framework */; }; + 360D1B066AC4CA12CB138A9A772A987A /* GradientLoadingBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD4EB35937102EAFA6B9091548537DC /* GradientLoadingBar-dummy.m */; }; + 3C1E0F37429ABCFB6696B597AC32409F /* LightweightObservable-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3717A0C2307C679A319FB78F9AF72963 /* LightweightObservable-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4609ECB7A1E367688E2E10C84A038030 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82FEBF300C18E8DEDC03B5E12D6E85A5 /* Disposable.swift */; }; + 4C0D3A63B9DC0C8F9392A2B3584C0C91 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9355E756FF7002A283DFC6C0029564B6 /* Observable.swift */; }; + 4E60DD2293BBDB5908A44CAD852E7009 /* Pods-GradientLoadingBar_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ECA371741105B3DF85A5C4ABAFAF4435 /* Pods-GradientLoadingBar_Example-dummy.m */; }; + 501C177FFA848D777CAD832A6A3E349D /* GradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00A1D3951B2127985CDF98E59E9C4249 /* GradientLoadingBarController.swift */; }; + 5FEC5A06D9091E64329E8AFFCB50BA78 /* LightweightObservable-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C9503A92D75F057290500525EA8329E /* LightweightObservable-dummy.m */; }; + 6BBBF8801FEB616524544B37C890D748 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CAA017B1769B508492A30175B3B3267 /* Observable.swift */; }; + 73F1E5FD9CB5BD31F122FA4BBE1BD31D /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71CD0D37F86BED1B0F9C734FA9A5C426 /* Disposable.swift */; }; + 741F4B9310320B343E90DC2BBC6F73A7 /* GradientLoadingBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A91D41367DB29791E5EBDEE0357C605E /* GradientLoadingBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 89D736E7200BAA9A053BC6DACB5271CC /* GradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD7474DAFACDB8CAABDE74687B2B2FB /* GradientLoadingBarViewModel.swift */; }; 919C0362E0DE3DEC2840F5EA1FF63E39 /* Pods-GradientLoadingBar_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 130BB2A239D210382E59A64538F9B359 /* Pods-GradientLoadingBar_Tests-dummy.m */; }; + 93D6F56A7F21CBAEACD2C1FA4A5F71C3 /* UIColor+DefaultValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71239BEF34D3EF1C8CA98006CEEAFE38 /* UIColor+DefaultValues.swift */; }; + 9E8434FF9DC64B7EC54E9B18754BD34A /* Observable+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A905AC0A36502ED362745E3D73467B01 /* Observable+Equatable.swift */; }; + A3C312F5EBB36C08BBEBE528702F0771 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0DB0084C5FD0BFC8785550E7F61F815 /* Foundation.framework */; }; A5A3D51FAB4160A5A61AFC18E75FFD3C /* Pods-GradientLoadingBar_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 884681EFBBB3C36C126C72381E290899 /* Pods-GradientLoadingBar_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6516BE4EC4810C15072BFB6B1858D45 /* GradientLoadingBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD7474DAFACDB8CAABDE74687B2B2FB /* GradientLoadingBarViewModel.swift */; }; - A817EADE7BC5C8AE9BA7B5F096073388 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 011D7697512BC073D570D65912E05FE6 /* GradientView.swift */; }; - BB3DDB86F8C9E8B3AF3659505A8210AA /* Durations.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73E699F3F9F1EE84B5F23BF03FDC2D8 /* Durations.swift */; }; - BCB924A31619FB4271C3A2A22362FFBB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB4607EFCA7C5F75397649E792E2AFCB /* Foundation.framework */; }; - C87401EDD4A322E10D3BEECE3CB3F048 /* GradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00A1D3951B2127985CDF98E59E9C4249 /* GradientLoadingBarController.swift */; }; - D325C22AB84F5AE5C23D7821170FDBC8 /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82FEBF300C18E8DEDC03B5E12D6E85A5 /* Disposable.swift */; }; - D815257C73DA571996A94F34D9993928 /* GradientLoadingBar-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A91D41367DB29791E5EBDEE0357C605E /* GradientLoadingBar-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD9719F91D8FBA4FCF77D2CC07897443 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9355E756FF7002A283DFC6C0029564B6 /* Observable.swift */; }; - E72DC6E7FF1EA1B8B17C378E31B4FADD /* UIColor+CustomColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F283E5444407F5E73EF6B43999A1BC0 /* UIColor+CustomColors.swift */; }; - F5F00CECFD1DA7E963E04BC1E479B485 /* Pods-GradientLoadingBar_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ECA371741105B3DF85A5C4ABAFAF4435 /* Pods-GradientLoadingBar_Example-dummy.m */; }; - F90C0CAE0C8B7FF6BE4E19A4B61A4C66 /* GradientLoadingBar-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BD4EB35937102EAFA6B9091548537DC /* GradientLoadingBar-dummy.m */; }; + A867BB75AA50B9A5CE2CF21BDAEA04EB /* Durations.swift in Sources */ = {isa = PBXBuildFile; fileRef = D73E699F3F9F1EE84B5F23BF03FDC2D8 /* Durations.swift */; }; + CDC489EB80754DD1952CB8302ADC63C1 /* UIColor+CustomColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F283E5444407F5E73EF6B43999A1BC0 /* UIColor+CustomColors.swift */; }; + DE9B7001071F9ADA761DD1D86C5C4E23 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F0DB0084C5FD0BFC8785550E7F61F815 /* Foundation.framework */; }; + DFA66F2EA78BC547EDBD940AD11A6B7F /* UIView+AnimateIsHidden.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4538483088F4844FB0F10A96586FB8A9 /* UIView+AnimateIsHidden.swift */; }; + E95EA602E8206A562C21A5E3FCC381F5 /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 13CDF08BD921D579623895BA96539BCE /* Pods-GradientLoadingBar_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E9F30527419039B0BAE29D3EDB33591A /* BottomGradientLoadingBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 936A0597BA17B55F59A346D331306B5F /* BottomGradientLoadingBarController.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 598488FC79A49FF551DD9722F7F8FD4E /* PBXContainerItemProxy */ = { + 1C70055774CAB1F497916C72AC7D7CAB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EC44FEBE6DF117A61C3B651262F79770; - remoteInfo = SwiftLint; - }; - 59C98F4CC4CD22A16C080B7FFF9FFAF1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A29550F398D14038E3DD88D91573885C; + remoteGlobalIDString = 3A3F4BABBC4A54A001E1E2244A0D51F5; remoteInfo = GradientLoadingBar; }; - A376887CE129489DBCC71F27420D2D75 /* PBXContainerItemProxy */ = { + 4FE73E9BFC7034C61660E11B37DF3024 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = ED23EC411B49F391D6955751F56D3E11; + remoteGlobalIDString = 05FE0B0D7636DC569EF898428828DCDB; + remoteInfo = LightweightObservable; + }; + 51D73CAB9A1EF69B3BBE4D029411E0FD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C9138DE13FF2A0FEEFDB1F6686F85C6A; remoteInfo = SwiftFormat; }; + 8D79094802E38F4A55E8CAFBB495E0F0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 05FE0B0D7636DC569EF898428828DCDB; + remoteInfo = LightweightObservable; + }; D6B90FB1908A1A901CE97E8601DED604 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 92F6D08047ABC56B2CC52A6C163C367C; + remoteGlobalIDString = E64642D25DA8DB549B33B2D626AF22AC; remoteInfo = "Pods-GradientLoadingBar_Example"; }; + D786022A96BEDAE126FE4A8687A9C1FF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F40CA0216C90A76EEE32F7C25565C0D5; + remoteInfo = SwiftLint; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 00A1D3951B2127985CDF98E59E9C4249 /* GradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarController.swift; sourceTree = ""; }; 011D7697512BC073D570D65912E05FE6 /* GradientView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientView.swift; sourceTree = ""; }; - 06B70D97160FECA378C9DABFBBDC0B14 /* SwiftLint.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.xcconfig; sourceTree = ""; }; 07370A8F5694F979E74A06170272FEE8 /* Pods-GradientLoadingBar_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-GradientLoadingBar_Example-frameworks.sh"; sourceTree = ""; }; 130BB2A239D210382E59A64538F9B359 /* Pods-GradientLoadingBar_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_Tests-dummy.m"; sourceTree = ""; }; - 13A0978484E9427F883FD4E47648ED6D /* Pods_GradientLoadingBar_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_GradientLoadingBar_Tests.framework; path = "Pods-GradientLoadingBar_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 13CDF08BD921D579623895BA96539BCE /* Pods-GradientLoadingBar_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_Example-umbrella.h"; sourceTree = ""; }; + 187D523BA78748FBB701C5EA6E9BCDE7 /* LightweightObservable.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LightweightObservable.xcconfig; sourceTree = ""; }; + 2C9503A92D75F057290500525EA8329E /* LightweightObservable-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LightweightObservable-dummy.m"; sourceTree = ""; }; + 3717A0C2307C679A319FB78F9AF72963 /* LightweightObservable-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-umbrella.h"; sourceTree = ""; }; 3E54BC52F5C7076999D36343A60C7100 /* Pods-GradientLoadingBar_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Example.debug.xcconfig"; sourceTree = ""; }; - 440C17CC5EB92C5B8D76AC20929E9642 /* Pods_GradientLoadingBar_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_GradientLoadingBar_Example.framework; path = "Pods-GradientLoadingBar_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 4538483088F4844FB0F10A96586FB8A9 /* UIView+AnimateIsHidden.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIView+AnimateIsHidden.swift"; sourceTree = ""; }; 49794D1BDE47A0E99D52332216BC65E9 /* Pods-GradientLoadingBar_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_Tests-acknowledgements.markdown"; sourceTree = ""; }; 4F283E5444407F5E73EF6B43999A1BC0 /* UIColor+CustomColors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+CustomColors.swift"; sourceTree = ""; }; - 549ECE3D4A5A2BA1051A53148D21494E /* SwiftFormat.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.xcconfig; sourceTree = ""; }; + 59019813B7B7C20236A6AA1D2846F2E5 /* Pods_GradientLoadingBar_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_GradientLoadingBar_Example.framework; path = "Pods-GradientLoadingBar_Example.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 5BD7474DAFACDB8CAABDE74687B2B2FB /* GradientLoadingBarViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GradientLoadingBarViewModel.swift; sourceTree = ""; }; + 670D1598351BCDDA2ACA6F3ECB0434BB /* SwiftFormat.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftFormat.xcconfig; sourceTree = ""; }; + 67825F7600B8C1C05F1A3AF6CBF0145A /* LightweightObservable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LightweightObservable.framework; path = LightweightObservable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 71239BEF34D3EF1C8CA98006CEEAFE38 /* UIColor+DefaultValues.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+DefaultValues.swift"; sourceTree = ""; }; + 71CD0D37F86BED1B0F9C734FA9A5C426 /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Disposable.swift; path = LightweightObservable/Classes/Disposable.swift; sourceTree = ""; }; 71CF5971041D02929C8C1F6EC220C89B /* GradientLoadingBar.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GradientLoadingBar.xcconfig; sourceTree = ""; }; 7A9B6229649B0A1BAF9A95B2ED86470E /* Pods-GradientLoadingBar_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientLoadingBar_Tests.modulemap"; sourceTree = ""; }; + 7B12423F4DBB8DF2A1FA43453E5D2897 /* Pods_GradientLoadingBar_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_GradientLoadingBar_Tests.framework; path = "Pods-GradientLoadingBar_Tests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 803963C181096CF6990AE4FD5D149497 /* GradientLoadingBar-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "GradientLoadingBar-Info.plist"; sourceTree = ""; }; 82FEBF300C18E8DEDC03B5E12D6E85A5 /* Disposable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Disposable.swift; sourceTree = ""; }; 8629223D3BAF7EC8616AE093F171C3FD /* GradientLoadingBar.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GradientLoadingBar.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 884681EFBBB3C36C126C72381E290899 /* Pods-GradientLoadingBar_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-GradientLoadingBar_Tests-umbrella.h"; sourceTree = ""; }; 8BD4EB35937102EAFA6B9091548537DC /* GradientLoadingBar-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GradientLoadingBar-dummy.m"; sourceTree = ""; }; + 8BFC221633B8EEC479EE5CBC733737A0 /* LightweightObservable.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LightweightObservable.modulemap; sourceTree = ""; }; + 8F250286A5229A56B46FC13B1262852B /* SwiftLint.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftLint.xcconfig; sourceTree = ""; }; 9355E756FF7002A283DFC6C0029564B6 /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; }; - 9359707AC54C4A1278FC9C8BB40C592F /* GradientLoadingBar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GradientLoadingBar.framework; path = GradientLoadingBar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 936A0597BA17B55F59A346D331306B5F /* BottomGradientLoadingBarController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BottomGradientLoadingBarController.swift; sourceTree = ""; }; + 9CAA017B1769B508492A30175B3B3267 /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Observable.swift; path = LightweightObservable/Classes/Observable/Observable.swift; 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; }; + A905AC0A36502ED362745E3D73467B01 /* Observable+Equatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Observable+Equatable.swift"; path = "LightweightObservable/Classes/Observable/Observable+Equatable.swift"; sourceTree = ""; }; A91D41367DB29791E5EBDEE0357C605E /* GradientLoadingBar-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-umbrella.h"; sourceTree = ""; }; AA595FD47218C87012335E8C73E53199 /* Pods-GradientLoadingBar_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Tests.release.xcconfig"; sourceTree = ""; }; B4BAB5AD5983771499462BBE1F238F29 /* GradientLoadingBar-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GradientLoadingBar-prefix.pch"; sourceTree = ""; }; B7110D1E070583E64F9E9A6B741851EB /* Pods-GradientLoadingBar_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-GradientLoadingBar_Example.release.xcconfig"; sourceTree = ""; }; + BFE723A0C5579F6C005375100ABF5F14 /* GradientLoadingBar.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = GradientLoadingBar.framework; path = GradientLoadingBar.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C146990211AC0E37378C96105C834611 /* Pods-GradientLoadingBar_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Tests-Info.plist"; sourceTree = ""; }; C80083841EFE765A5D0AD2D5538A7BF1 /* Pods-GradientLoadingBar_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Example-Info.plist"; sourceTree = ""; }; - CB4607EFCA7C5F75397649E792E2AFCB /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + CE0D98C8EAB658D7185CDEFA1FF71C9A /* LightweightObservable-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LightweightObservable-prefix.pch"; sourceTree = ""; }; D73E699F3F9F1EE84B5F23BF03FDC2D8 /* Durations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Durations.swift; sourceTree = ""; }; D83AD160BCDC2F3E1A0648CB9A8C25F9 /* readme.md */ = {isa = PBXFileReference; includeInIndex = 1; path = readme.md; sourceTree = ""; }; + DA560EE447F3A7C6E598FE3F43C8666E /* LightweightObservable.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LightweightObservable.framework; sourceTree = BUILT_PRODUCTS_DIR; }; E01C418F97C14B0483B5AFFB79046F56 /* GradientLoadingBar.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GradientLoadingBar.modulemap; sourceTree = ""; }; EA9E55EC3CE832503856FF3A375CB805 /* Pods-GradientLoadingBar_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Example-acknowledgements.plist"; sourceTree = ""; }; EC63268436ECFE51E613C434A0972AE1 /* Pods-GradientLoadingBar_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-GradientLoadingBar_Tests-acknowledgements.plist"; sourceTree = ""; }; ECA371741105B3DF85A5C4ABAFAF4435 /* Pods-GradientLoadingBar_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-GradientLoadingBar_Example-dummy.m"; sourceTree = ""; }; + F0AC3E41A31439D7062CB197FB5DF77F /* LightweightObservable-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LightweightObservable-Info.plist"; sourceTree = ""; }; + F0DB0084C5FD0BFC8785550E7F61F815 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; F314842C21CEE21917919A7F13907086 /* Pods-GradientLoadingBar_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-GradientLoadingBar_Example-acknowledgements.markdown"; sourceTree = ""; }; F47C9DA0C744E86330DFFAFA12DAB6EC /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; F68118DF2CFF8BC6DA8503B6DF614A72 /* Pods-GradientLoadingBar_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-GradientLoadingBar_Example.modulemap"; sourceTree = ""; }; @@ -127,19 +159,19 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 68E4534088DAED5806B7741BF4C291B3 /* Frameworks */ = { + 3A732E975DE6D04220733A04CE6AC421 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BCB924A31619FB4271C3A2A22362FFBB /* Foundation.framework in Frameworks */, + 0B75956FC410AB5939DCE7DD37FF4E60 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9F915E386D7129414434A01880AFCACA /* Frameworks */ = { + 9F1EB75D6F98B0A456F38121D8404D40 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4E89B9D0D02E6C7EC95CA117982C1A69 /* Foundation.framework in Frameworks */, + DE9B7001071F9ADA761DD1D86C5C4E23 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -151,9 +183,37 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FEF7C3045B0C58ED32435AFD227FEF0A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A3C312F5EBB36C08BBEBE528702F0771 /* Foundation.framework in Frameworks */, + 0B61E36AA6C58C2088CE75B088228D24 /* LightweightObservable.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 2522EA1CD73983B85B5446CF7A5FC545 /* SwiftLint */ = { + isa = PBXGroup; + children = ( + 2B1C5D8984DE17B536E3AA18AD9A36AD /* Support Files */, + ); + name = SwiftLint; + path = SwiftLint; + sourceTree = ""; + }; + 28CF81584746F1CC16C59537D24B2CE1 /* Pods */ = { + isa = PBXGroup; + children = ( + 69DA07010C03AD4CACF2B14086E7627D /* LightweightObservable */, + 77EF0692EA53DAF89BA695C6D440A85B /* SwiftFormat */, + 2522EA1CD73983B85B5446CF7A5FC545 /* SwiftLint */, + ); + name = Pods; + sourceTree = ""; + }; 2AB8A2C77590433DD0173989DD7C37BE /* Features */ = { isa = PBXGroup; children = ( @@ -164,6 +224,15 @@ path = GradientLoadingBar/Classes/Features; sourceTree = ""; }; + 2B1C5D8984DE17B536E3AA18AD9A36AD /* Support Files */ = { + isa = PBXGroup; + children = ( + 8F250286A5229A56B46FC13B1262852B /* SwiftLint.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SwiftLint"; + sourceTree = ""; + }; 34C528DC56BB3D7E2CDAF5D306731873 /* GradientLoadingBar */ = { isa = PBXGroup; children = ( @@ -177,6 +246,14 @@ path = GradientLoadingBar; sourceTree = ""; }; + 3B11D9F003ABD8E4F3203BA403955DB9 /* iOS */ = { + isa = PBXGroup; + children = ( + F0DB0084C5FD0BFC8785550E7F61F815 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; 431E98257DFD585D6ABB3ADAF0352A6A /* Observable */ = { isa = PBXGroup; children = ( @@ -197,15 +274,6 @@ path = GradientLoadingBar/Classes/Extensions; sourceTree = ""; }; - 4A93726AF8E11A1BEB3E6F8D5D6D533B /* Support Files */ = { - isa = PBXGroup; - children = ( - 06B70D97160FECA378C9DABFBBDC0B14 /* SwiftLint.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SwiftLint"; - sourceTree = ""; - }; 4BBD4568EAA1AC652CB734708C884896 /* UIColor */ = { isa = PBXGroup; children = ( @@ -246,13 +314,15 @@ path = ../..; sourceTree = ""; }; - 53D3A49A001BFD9799D1B53C33F841A7 /* SwiftLint */ = { + 5FE43A7F74F448F1CEF2F26095BB08C4 /* Products */ = { isa = PBXGroup; children = ( - 4A93726AF8E11A1BEB3E6F8D5D6D533B /* Support Files */, + BFE723A0C5579F6C005375100ABF5F14 /* GradientLoadingBar.framework */, + 67825F7600B8C1C05F1A3AF6CBF0145A /* LightweightObservable.framework */, + 59019813B7B7C20236A6AA1D2846F2E5 /* Pods_GradientLoadingBar_Example.framework */, + 7B12423F4DBB8DF2A1FA43453E5D2897 /* Pods_GradientLoadingBar_Tests.framework */, ); - name = SwiftLint; - path = SwiftLint; + name = Products; sourceTree = ""; }; 69187FC97A876CF597FB79B20F4DB066 /* Support Files */ = { @@ -269,32 +339,34 @@ path = "Example/Pods/Target Support Files/GradientLoadingBar"; sourceTree = ""; }; - 73EB6B3ECAD04C39D0F07B433A3B33D4 /* Products */ = { + 69DA07010C03AD4CACF2B14086E7627D /* LightweightObservable */ = { isa = PBXGroup; children = ( - 9359707AC54C4A1278FC9C8BB40C592F /* GradientLoadingBar.framework */, - 440C17CC5EB92C5B8D76AC20929E9642 /* Pods_GradientLoadingBar_Example.framework */, - 13A0978484E9427F883FD4E47648ED6D /* Pods_GradientLoadingBar_Tests.framework */, + 71CD0D37F86BED1B0F9C734FA9A5C426 /* Disposable.swift */, + 9CAA017B1769B508492A30175B3B3267 /* Observable.swift */, + A905AC0A36502ED362745E3D73467B01 /* Observable+Equatable.swift */, + CA369EB846547AE3200999F324A20EF1 /* Support Files */, ); - name = Products; + name = LightweightObservable; + path = LightweightObservable; sourceTree = ""; }; - 8930EC6D1973325C6724E7FC84A890A0 /* Support Files */ = { + 775F5C36BCCE0834417CBA33C2FD4FC2 /* Frameworks */ = { isa = PBXGroup; children = ( - 549ECE3D4A5A2BA1051A53148D21494E /* SwiftFormat.xcconfig */, + DA560EE447F3A7C6E598FE3F43C8666E /* LightweightObservable.framework */, + 3B11D9F003ABD8E4F3203BA403955DB9 /* iOS */, ); - name = "Support Files"; - path = "../Target Support Files/SwiftFormat"; + name = Frameworks; sourceTree = ""; }; - 8A0BDFAE11F73EFB936005F32975AE64 /* Pods */ = { + 77EF0692EA53DAF89BA695C6D440A85B /* SwiftFormat */ = { isa = PBXGroup; children = ( - AC8FE65366E8473C7B590383973D989F /* SwiftFormat */, - 53D3A49A001BFD9799D1B53C33F841A7 /* SwiftLint */, + DD0982CE766FEDDC6A9FF49DFB59184D /* Support Files */, ); - name = Pods; + name = SwiftFormat; + path = SwiftFormat; sourceTree = ""; }; 958CD27BD4F076BFB9C7A7F5D0E1A223 /* UIView */ = { @@ -306,23 +378,6 @@ path = UIView; sourceTree = ""; }; - 9B055D0CFEA43187E72B03DED11F5662 /* iOS */ = { - isa = PBXGroup; - children = ( - CB4607EFCA7C5F75397649E792E2AFCB /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; - AC8FE65366E8473C7B590383973D989F /* SwiftFormat */ = { - isa = PBXGroup; - children = ( - 8930EC6D1973325C6724E7FC84A890A0 /* Support Files */, - ); - name = SwiftFormat; - path = SwiftFormat; - sourceTree = ""; - }; B13B23C8711CFA35D8942786C89AAD6A /* Pods-GradientLoadingBar_Tests */ = { isa = PBXGroup; children = ( @@ -347,6 +402,20 @@ name = "Development Pods"; sourceTree = ""; }; + CA369EB846547AE3200999F324A20EF1 /* Support Files */ = { + isa = PBXGroup; + children = ( + 8BFC221633B8EEC479EE5CBC733737A0 /* LightweightObservable.modulemap */, + 187D523BA78748FBB701C5EA6E9BCDE7 /* LightweightObservable.xcconfig */, + 2C9503A92D75F057290500525EA8329E /* LightweightObservable-dummy.m */, + F0AC3E41A31439D7062CB197FB5DF77F /* LightweightObservable-Info.plist */, + CE0D98C8EAB658D7185CDEFA1FF71C9A /* LightweightObservable-prefix.pch */, + 3717A0C2307C679A319FB78F9AF72963 /* LightweightObservable-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/LightweightObservable"; + sourceTree = ""; + }; CAAFE859B2D26939B79587764568697C /* Helpers */ = { isa = PBXGroup; children = ( @@ -361,19 +430,20 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, B2665421823061B3284ED62A6FADD254 /* Development Pods */, - D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, - 8A0BDFAE11F73EFB936005F32975AE64 /* Pods */, - 73EB6B3ECAD04C39D0F07B433A3B33D4 /* Products */, + 775F5C36BCCE0834417CBA33C2FD4FC2 /* Frameworks */, + 28CF81584746F1CC16C59537D24B2CE1 /* Pods */, + 5FE43A7F74F448F1CEF2F26095BB08C4 /* Products */, 4EF7559B4421807D74D5C555511FBC1D /* Targets Support Files */, ); sourceTree = ""; }; - D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { + DD0982CE766FEDDC6A9FF49DFB59184D /* Support Files */ = { isa = PBXGroup; children = ( - 9B055D0CFEA43187E72B03DED11F5662 /* iOS */, + 670D1598351BCDDA2ACA6F3ECB0434BB /* SwiftFormat.xcconfig */, ); - name = Frameworks; + name = "Support Files"; + path = "../Target Support Files/SwiftFormat"; sourceTree = ""; }; E277A29DE5354A44B588A6638083AD37 /* ViewModel */ = { @@ -415,11 +485,19 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 895FC23651AA4981EF0D9EB7193E2060 /* Headers */ = { + 50403AFD7CD1BE3FF660896D708FB519 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - D815257C73DA571996A94F34D9993928 /* GradientLoadingBar-umbrella.h in Headers */, + E95EA602E8206A562C21A5E3FCC381F5 /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7EE4DE9B8A3AB569BF67AECA92BD7D71 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 741F4B9310320B343E90DC2BBC6F73A7 /* GradientLoadingBar-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -431,54 +509,52 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - ACC166A31E37E5B145767AC25C145BE3 /* Headers */ = { + C035FE413B5CF0347B6E083CAF225000 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 1917031154DDDFB4D738D69750F32C50 /* Pods-GradientLoadingBar_Example-umbrella.h in Headers */, + 3C1E0F37429ABCFB6696B597AC32409F /* LightweightObservable-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 92F6D08047ABC56B2CC52A6C163C367C /* Pods-GradientLoadingBar_Example */ = { + 05FE0B0D7636DC569EF898428828DCDB /* LightweightObservable */ = { isa = PBXNativeTarget; - buildConfigurationList = C56E52938C02DC0CE36980CFBC14A8E4 /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */; + buildConfigurationList = 8A0D9E8138D8162227C99A391D8CF29F /* Build configuration list for PBXNativeTarget "LightweightObservable" */; buildPhases = ( - ACC166A31E37E5B145767AC25C145BE3 /* Headers */, - BBECA2309F2B480CADDCE2BAAD2F52D7 /* Sources */, - 9F915E386D7129414434A01880AFCACA /* Frameworks */, - FC9DB62F34810997032823456EB8588C /* Resources */, + C035FE413B5CF0347B6E083CAF225000 /* Headers */, + 415C2D9C886747E66B38075DDA3A3836 /* Sources */, + 3A732E975DE6D04220733A04CE6AC421 /* Frameworks */, + 6F50A7B74FCADDDB4E2920FF71F38230 /* Resources */, ); buildRules = ( ); dependencies = ( - 6027B71EE14B04A01031585014FCB9F0 /* PBXTargetDependency */, - 294A588F402ADD8F07073A47D5A8820B /* PBXTargetDependency */, - CC42BDCE9367208FCB83256BF6835C91 /* PBXTargetDependency */, ); - name = "Pods-GradientLoadingBar_Example"; - productName = "Pods-GradientLoadingBar_Example"; - productReference = 440C17CC5EB92C5B8D76AC20929E9642 /* Pods_GradientLoadingBar_Example.framework */; + name = LightweightObservable; + productName = LightweightObservable; + productReference = 67825F7600B8C1C05F1A3AF6CBF0145A /* LightweightObservable.framework */; productType = "com.apple.product-type.framework"; }; - A29550F398D14038E3DD88D91573885C /* GradientLoadingBar */ = { + 3A3F4BABBC4A54A001E1E2244A0D51F5 /* GradientLoadingBar */ = { isa = PBXNativeTarget; - buildConfigurationList = 67C5507D23E34C16180C9985CCA427D7 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */; + buildConfigurationList = 3A0B17E137704BE7A728FEBE2D1517C0 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */; buildPhases = ( - 895FC23651AA4981EF0D9EB7193E2060 /* Headers */, - 511B894C7EA6C8159BBD2205C2A7C704 /* Sources */, - 68E4534088DAED5806B7741BF4C291B3 /* Frameworks */, - AB21501A4B004EFF61180D7EFD033C51 /* Resources */, + 7EE4DE9B8A3AB569BF67AECA92BD7D71 /* Headers */, + A4B1C4086CD63C4AF070A8F81A533936 /* Sources */, + FEF7C3045B0C58ED32435AFD227FEF0A /* Frameworks */, + D026F754ECFD4C8C5DBD73F90E148E04 /* Resources */, ); buildRules = ( ); dependencies = ( + 3DD73882A5C284D058DCF0BC9852D602 /* PBXTargetDependency */, ); name = GradientLoadingBar; productName = GradientLoadingBar; - productReference = 9359707AC54C4A1278FC9C8BB40C592F /* GradientLoadingBar.framework */; + productReference = BFE723A0C5579F6C005375100ABF5F14 /* GradientLoadingBar.framework */; productType = "com.apple.product-type.framework"; }; BBF152C3CE2BE6FD94EEA1CCA49FB453 /* Pods-GradientLoadingBar_Tests */ = { @@ -497,7 +573,29 @@ ); name = "Pods-GradientLoadingBar_Tests"; productName = "Pods-GradientLoadingBar_Tests"; - productReference = 13A0978484E9427F883FD4E47648ED6D /* Pods_GradientLoadingBar_Tests.framework */; + productReference = 7B12423F4DBB8DF2A1FA43453E5D2897 /* Pods_GradientLoadingBar_Tests.framework */; + productType = "com.apple.product-type.framework"; + }; + E64642D25DA8DB549B33B2D626AF22AC /* Pods-GradientLoadingBar_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = CE680B902427914F23DBEE7AB373965B /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */; + buildPhases = ( + 50403AFD7CD1BE3FF660896D708FB519 /* Headers */, + EDD1B77793BECD42DE9049BED39A6265 /* Sources */, + 9F1EB75D6F98B0A456F38121D8404D40 /* Frameworks */, + 08176C227A3EBB4474E29260B8B1FAEA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ED730AFAA39F00873B38C3BAD9E191A3 /* PBXTargetDependency */, + F0EC47F04D4173E17E72ECD812A07912 /* PBXTargetDependency */, + 8D095B2F81A769DE549DED35F14F3344 /* PBXTargetDependency */, + EAE9CD7FF0B2DA424BB1493D7B7AC577 /* PBXTargetDependency */, + ); + name = "Pods-GradientLoadingBar_Example"; + productName = "Pods-GradientLoadingBar_Example"; + productReference = 59019813B7B7C20236A6AA1D2846F2E5 /* Pods_GradientLoadingBar_Example.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -517,20 +615,35 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 73EB6B3ECAD04C39D0F07B433A3B33D4 /* Products */; + productRefGroup = 5FE43A7F74F448F1CEF2F26095BB08C4 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - A29550F398D14038E3DD88D91573885C /* GradientLoadingBar */, - 92F6D08047ABC56B2CC52A6C163C367C /* Pods-GradientLoadingBar_Example */, + 3A3F4BABBC4A54A001E1E2244A0D51F5 /* GradientLoadingBar */, + 05FE0B0D7636DC569EF898428828DCDB /* LightweightObservable */, + E64642D25DA8DB549B33B2D626AF22AC /* Pods-GradientLoadingBar_Example */, BBF152C3CE2BE6FD94EEA1CCA49FB453 /* Pods-GradientLoadingBar_Tests */, - ED23EC411B49F391D6955751F56D3E11 /* SwiftFormat */, - EC44FEBE6DF117A61C3B651262F79770 /* SwiftLint */, + C9138DE13FF2A0FEEFDB1F6686F85C6A /* SwiftFormat */, + F40CA0216C90A76EEE32F7C25565C0D5 /* SwiftLint */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 08176C227A3EBB4474E29260B8B1FAEA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6F50A7B74FCADDDB4E2920FF71F38230 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7C72956013C948EB6ACA098E9D09100E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -538,14 +651,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - AB21501A4B004EFF61180D7EFD033C51 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FC9DB62F34810997032823456EB8588C /* Resources */ = { + D026F754ECFD4C8C5DBD73F90E148E04 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -563,93 +669,85 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 511B894C7EA6C8159BBD2205C2A7C704 /* Sources */ = { + 415C2D9C886747E66B38075DDA3A3836 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 22A974E386497FB10F7B61CC09AA41BA /* BottomGradientLoadingBarController.swift in Sources */, - D325C22AB84F5AE5C23D7821170FDBC8 /* Disposable.swift in Sources */, - BB3DDB86F8C9E8B3AF3659505A8210AA /* Durations.swift in Sources */, - F90C0CAE0C8B7FF6BE4E19A4B61A4C66 /* GradientLoadingBar-dummy.m in Sources */, - C87401EDD4A322E10D3BEECE3CB3F048 /* GradientLoadingBarController.swift in Sources */, - A6516BE4EC4810C15072BFB6B1858D45 /* GradientLoadingBarViewModel.swift in Sources */, - A817EADE7BC5C8AE9BA7B5F096073388 /* GradientView.swift in Sources */, - DD9719F91D8FBA4FCF77D2CC07897443 /* Observable.swift in Sources */, - E72DC6E7FF1EA1B8B17C378E31B4FADD /* UIColor+CustomColors.swift in Sources */, - 43F4441A6EAF1F6B05A08CEC72C3557E /* UIColor+DefaultValues.swift in Sources */, - 0A0FFB8885A0904AD90A2FAD87C26B12 /* UIView+AnimateIsHidden.swift in Sources */, + 73F1E5FD9CB5BD31F122FA4BBE1BD31D /* Disposable.swift in Sources */, + 5FEC5A06D9091E64329E8AFFCB50BA78 /* LightweightObservable-dummy.m in Sources */, + 9E8434FF9DC64B7EC54E9B18754BD34A /* Observable+Equatable.swift in Sources */, + 6BBBF8801FEB616524544B37C890D748 /* Observable.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - BBECA2309F2B480CADDCE2BAAD2F52D7 /* Sources */ = { + A4B1C4086CD63C4AF070A8F81A533936 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F5F00CECFD1DA7E963E04BC1E479B485 /* Pods-GradientLoadingBar_Example-dummy.m in Sources */, + E9F30527419039B0BAE29D3EDB33591A /* BottomGradientLoadingBarController.swift in Sources */, + 4609ECB7A1E367688E2E10C84A038030 /* Disposable.swift in Sources */, + A867BB75AA50B9A5CE2CF21BDAEA04EB /* Durations.swift in Sources */, + 360D1B066AC4CA12CB138A9A772A987A /* GradientLoadingBar-dummy.m in Sources */, + 501C177FFA848D777CAD832A6A3E349D /* GradientLoadingBarController.swift in Sources */, + 89D736E7200BAA9A053BC6DACB5271CC /* GradientLoadingBarViewModel.swift in Sources */, + 1AD7D49AFCB722E38C20BADB5E78FBA4 /* GradientView.swift in Sources */, + 4C0D3A63B9DC0C8F9392A2B3584C0C91 /* Observable.swift in Sources */, + CDC489EB80754DD1952CB8302ADC63C1 /* UIColor+CustomColors.swift in Sources */, + 93D6F56A7F21CBAEACD2C1FA4A5F71C3 /* UIColor+DefaultValues.swift in Sources */, + DFA66F2EA78BC547EDBD940AD11A6B7F /* UIView+AnimateIsHidden.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EDD1B77793BECD42DE9049BED39A6265 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4E60DD2293BBDB5908A44CAD852E7009 /* Pods-GradientLoadingBar_Example-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 294A588F402ADD8F07073A47D5A8820B /* PBXTargetDependency */ = { + 3DD73882A5C284D058DCF0BC9852D602 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = SwiftFormat; - target = ED23EC411B49F391D6955751F56D3E11 /* SwiftFormat */; - targetProxy = A376887CE129489DBCC71F27420D2D75 /* PBXContainerItemProxy */; + name = LightweightObservable; + target = 05FE0B0D7636DC569EF898428828DCDB /* LightweightObservable */; + targetProxy = 8D79094802E38F4A55E8CAFBB495E0F0 /* PBXContainerItemProxy */; }; 4E6C269097F74FC5EF75FF4BE323C504 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-GradientLoadingBar_Example"; - target = 92F6D08047ABC56B2CC52A6C163C367C /* Pods-GradientLoadingBar_Example */; + target = E64642D25DA8DB549B33B2D626AF22AC /* Pods-GradientLoadingBar_Example */; targetProxy = D6B90FB1908A1A901CE97E8601DED604 /* PBXContainerItemProxy */; }; - 6027B71EE14B04A01031585014FCB9F0 /* PBXTargetDependency */ = { + 8D095B2F81A769DE549DED35F14F3344 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GradientLoadingBar; - target = A29550F398D14038E3DD88D91573885C /* GradientLoadingBar */; - targetProxy = 59C98F4CC4CD22A16C080B7FFF9FFAF1 /* PBXContainerItemProxy */; + name = SwiftFormat; + target = C9138DE13FF2A0FEEFDB1F6686F85C6A /* SwiftFormat */; + targetProxy = 51D73CAB9A1EF69B3BBE4D029411E0FD /* PBXContainerItemProxy */; }; - CC42BDCE9367208FCB83256BF6835C91 /* PBXTargetDependency */ = { + EAE9CD7FF0B2DA424BB1493D7B7AC577 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftLint; - target = EC44FEBE6DF117A61C3B651262F79770 /* SwiftLint */; - targetProxy = 598488FC79A49FF551DD9722F7F8FD4E /* PBXContainerItemProxy */; + target = F40CA0216C90A76EEE32F7C25565C0D5 /* SwiftLint */; + targetProxy = D786022A96BEDAE126FE4A8687A9C1FF /* PBXContainerItemProxy */; + }; + ED730AFAA39F00873B38C3BAD9E191A3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GradientLoadingBar; + target = 3A3F4BABBC4A54A001E1E2244A0D51F5 /* GradientLoadingBar */; + targetProxy = 1C70055774CAB1F497916C72AC7D7CAB /* PBXContainerItemProxy */; + }; + F0EC47F04D4173E17E72ECD812A07912 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LightweightObservable; + target = 05FE0B0D7636DC569EF898428828DCDB /* LightweightObservable */; + targetProxy = 4FE73E9BFC7034C61660E11B37DF3024 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 007435B47F46A1BB06BBF9F53D82DBF3 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 71CF5971041D02929C8C1F6EC220C89B /* GradientLoadingBar.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "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.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 07488D4657FB0A78086563621D425F8A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -714,9 +812,73 @@ }; name = Debug; }; - 169B547CBE7ED2F040E951C575B5FAF1 /* Release */ = { + 0E47B9B0901E7AC0800A590E4909BD7B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 06B70D97160FECA378C9DABFBBDC0B14 /* SwiftLint.xcconfig */; + baseConfigurationReference = 71CF5971041D02929C8C1F6EC220C89B /* GradientLoadingBar.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "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.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 19AFADFAEF2EF418D704D4D8F7EFD1FB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 187D523BA78748FBB701C5EA6E9BCDE7 /* LightweightObservable.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "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.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 202EF87A1A4FAFEDD6C80FFC4BCFDE18 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8F250286A5229A56B46FC13B1262852B /* SwiftLint.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -724,9 +886,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; 255BCBEEF005A3DB7C9E658D64F79991 /* Debug */ = { isa = XCBuildConfiguration; @@ -761,20 +922,7 @@ }; name = Debug; }; - 32869BFE37FB55486B22094717B767EB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 06B70D97160FECA378C9DABFBBDC0B14 /* SwiftLint.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 6EF5489253FDAF0AC66738FF32105A79 /* Release */ = { + 3ACD558DAEA7F348EFE13F536FE1E483 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = B7110D1E070583E64F9E9A6B741851EB /* Pods-GradientLoadingBar_Example.release.xcconfig */; buildSettings = { @@ -808,20 +956,7 @@ }; name = Release; }; - 6F3030DEF4300F2FB3BA19321C852A30 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 549ECE3D4A5A2BA1051A53148D21494E /* SwiftFormat.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 774B3A80E3F22196A07D5785122907A4 /* Debug */ = { + 47086A71F3DFA123D8151E071FF5BD57 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 3E54BC52F5C7076999D36343A60C7100 /* Pods-GradientLoadingBar_Example.debug.xcconfig */; buildSettings = { @@ -854,6 +989,64 @@ }; name = Debug; }; + 74565F67EA034272E1A2E7F9D0C7B1A8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 71CF5971041D02929C8C1F6EC220C89B /* GradientLoadingBar.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "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.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 9112FA068B85A00231C56A08747B9411 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 670D1598351BCDDA2ACA6F3ECB0434BB /* SwiftFormat.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + 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; + }; + 91572EECEDD00A59DC4B28AA7EEBAD67 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 670D1598351BCDDA2ACA6F3ECB0434BB /* SwiftFormat.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 9276430B46B0C6050051D2CD9F709B30 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = AA595FD47218C87012335E8C73E53199 /* Pods-GradientLoadingBar_Tests.release.xcconfig */; @@ -888,38 +1081,6 @@ }; name = Release; }; - A153EE920AE1DAFF9DC67E1E0325A52E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 71CF5971041D02929C8C1F6EC220C89B /* GradientLoadingBar.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "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.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; A1962E6FF39BBAC201A2E5DDF99557DF /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -980,9 +1141,9 @@ }; name = Release; }; - A5CD5A125FC1310863712B05798A4815 /* Release */ = { + A1EECCC1B285083283487A4128ACECB5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 549ECE3D4A5A2BA1051A53148D21494E /* SwiftFormat.xcconfig */; + baseConfigurationReference = 8F250286A5229A56B46FC13B1262852B /* SwiftLint.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -994,9 +1155,49 @@ }; name = Release; }; + E73FC37C5357FB7F5072D2AD8E63F046 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 187D523BA78748FBB701C5EA6E9BCDE7 /* LightweightObservable.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "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.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 238432E8C68B0275EF5A04B5F44471AC /* Build configuration list for PBXAggregateTarget "SwiftFormat" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 91572EECEDD00A59DC4B28AA7EEBAD67 /* Debug */, + 9112FA068B85A00231C56A08747B9411 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 2F471858F17D7D37C90ABF253EC2C300 /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1006,6 +1207,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 3A0B17E137704BE7A728FEBE2D1517C0 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 74565F67EA034272E1A2E7F9D0C7B1A8 /* Debug */, + 0E47B9B0901E7AC0800A590E4909BD7B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1015,38 +1225,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 67C5507D23E34C16180C9985CCA427D7 /* Build configuration list for PBXNativeTarget "GradientLoadingBar" */ = { + 8A0D9E8138D8162227C99A391D8CF29F /* Build configuration list for PBXNativeTarget "LightweightObservable" */ = { isa = XCConfigurationList; buildConfigurations = ( - 007435B47F46A1BB06BBF9F53D82DBF3 /* Debug */, - A153EE920AE1DAFF9DC67E1E0325A52E /* Release */, + E73FC37C5357FB7F5072D2AD8E63F046 /* Debug */, + 19AFADFAEF2EF418D704D4D8F7EFD1FB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83C415027DECD32633EACDC3F86FA764 /* Build configuration list for PBXAggregateTarget "SwiftFormat" */ = { + CE680B902427914F23DBEE7AB373965B /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6F3030DEF4300F2FB3BA19321C852A30 /* Debug */, - A5CD5A125FC1310863712B05798A4815 /* Release */, + 47086A71F3DFA123D8151E071FF5BD57 /* Debug */, + 3ACD558DAEA7F348EFE13F536FE1E483 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 969E4116207CAC35206D4F36B7467530 /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { + DE0A51C923CF4F04E21FDC4AD988B99D /* Build configuration list for PBXAggregateTarget "SwiftLint" */ = { isa = XCConfigurationList; buildConfigurations = ( - 32869BFE37FB55486B22094717B767EB /* Debug */, - 169B547CBE7ED2F040E951C575B5FAF1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C56E52938C02DC0CE36980CFBC14A8E4 /* Build configuration list for PBXNativeTarget "Pods-GradientLoadingBar_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 774B3A80E3F22196A07D5785122907A4 /* Debug */, - 6EF5489253FDAF0AC66738FF32105A79 /* Release */, + 202EF87A1A4FAFEDD6C80FFC4BCFDE18 /* Debug */, + A1EECCC1B285083283487A4128ACECB5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig b/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig index e778715..71cf3fb 100644 --- a/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig +++ b/Example/Pods/Target Support Files/GradientLoadingBar/GradientLoadingBar.xcconfig @@ -1,4 +1,5 @@ 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} diff --git a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-Info.plist b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-Info.plist @@ -0,0 +1,26 @@ + + + + + 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/LightweightObservable/LightweightObservable-dummy.m b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-dummy.m new file mode 100644 index 0000000..c76ead0 --- /dev/null +++ b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_LightweightObservable : NSObject +@end +@implementation PodsDummy_LightweightObservable +@end diff --git a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-prefix.pch b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-umbrella.h b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-umbrella.h new file mode 100644 index 0000000..0b07b61 --- /dev/null +++ b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double LightweightObservableVersionNumber; +FOUNDATION_EXPORT const unsigned char LightweightObservableVersionString[]; + diff --git a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.modulemap b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.modulemap new file mode 100644 index 0000000..b7aea24 --- /dev/null +++ b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.modulemap @@ -0,0 +1,6 @@ +framework module LightweightObservable { + umbrella header "LightweightObservable-umbrella.h" + + export * + module * { export * } +} diff --git a/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.xcconfig b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.xcconfig new file mode 100644 index 0000000..2067957 --- /dev/null +++ b/Example/Pods/Target Support Files/LightweightObservable/LightweightObservable.xcconfig @@ -0,0 +1,9 @@ +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 diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.markdown b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.markdown index cfbd4b5..c637135 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.markdown +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.markdown @@ -24,6 +24,29 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## LightweightObservable + +Copyright (c) 2019 Felix Mau + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ## SwiftFormat MIT License diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.plist b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.plist index 4892f3b..1617a6d 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.plist +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-acknowledgements.plist @@ -41,6 +41,35 @@ THE SOFTWARE. Type PSGroupSpecifier + + FooterText + Copyright (c) 2019 Felix Mau <me@felix.hamburg> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + LightweightObservable + Type + PSGroupSpecifier + FooterText MIT License diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh index cbac25f..99444da 100755 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example-frameworks.sh @@ -154,9 +154,11 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/GradientLoadingBar/GradientLoadingBar.framework" + install_framework "${BUILT_PRODUCTS_DIR}/LightweightObservable/LightweightObservable.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/GradientLoadingBar/GradientLoadingBar.framework" + install_framework "${BUILT_PRODUCTS_DIR}/LightweightObservable/LightweightObservable.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig index e368c7d..5aa5eaf 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.debug.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable/LightweightObservable.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" +OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" -framework "LightweightObservable" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig index e368c7d..5aa5eaf 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Example/Pods-GradientLoadingBar_Example.release.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable/LightweightObservable.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" +OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" -framework "LightweightObservable" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig index 0860d6d..c24eee4 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable/LightweightObservable.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" +OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" -framework "LightweightObservable" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig index 0860d6d..c24eee4 100644 --- a/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig +++ b/Example/Pods/Target Support Files/Pods-GradientLoadingBar_Tests/Pods-GradientLoadingBar_Tests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/GradientLoadingBar/GradientLoadingBar.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LightweightObservable/LightweightObservable.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" +OTHER_LDFLAGS = $(inherited) -framework "GradientLoadingBar" -framework "LightweightObservable" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/GradientLoadingBar.podspec b/GradientLoadingBar.podspec index f387c59..69568cf 100644 --- a/GradientLoadingBar.podspec +++ b/GradientLoadingBar.podspec @@ -39,6 +39,6 @@ Inspired by https://codepen.io/marcobiedermann/pen/LExXWW # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' - # s.dependency 'AFNetworking', '~> 2.3' +s.dependency 'LightweightObservable', '~> 1.0' end