├── App ├── App.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── ccermak.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ ├── ccermak.xcuserdatad │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── cyrilcermak.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── App.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── xcuserdata │ │ ├── ccermak.xcuserdatad │ │ └── UserInterfaceState.xcuserstate │ │ └── cyrilcermak.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ └── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist ├── App │ ├── AppDelegate.swift │ ├── AppFlow.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ └── LaunchScreen.storyboard │ ├── Info.plist │ ├── MainVC.swift │ └── MainView.swift ├── AppTests │ ├── AppTests.swift │ └── Info.plist ├── Podfile ├── Podfile.lock └── Pods │ ├── Alamofire │ ├── LICENSE │ ├── README.md │ └── Source │ │ ├── AFError.swift │ │ ├── Alamofire.swift │ │ ├── DispatchQueue+Alamofire.swift │ │ ├── MultipartFormData.swift │ │ ├── NetworkReachabilityManager.swift │ │ ├── Notifications.swift │ │ ├── ParameterEncoding.swift │ │ ├── Request.swift │ │ ├── Response.swift │ │ ├── ResponseSerialization.swift │ │ ├── Result.swift │ │ ├── ServerTrustPolicy.swift │ │ ├── SessionDelegate.swift │ │ ├── SessionManager.swift │ │ ├── TaskDelegate.swift │ │ ├── Timeline.swift │ │ └── Validation.swift │ ├── Manifest.lock │ ├── Pods.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ ├── ccermak.xcuserdatad │ │ └── xcschemes │ │ │ ├── Alamofire.xcscheme │ │ │ ├── Pods-App.xcscheme │ │ │ ├── Pods-AppTests.xcscheme │ │ │ ├── Pods-CCComponents.xcscheme │ │ │ ├── Pods-CCCore.xcscheme │ │ │ ├── Pods-CCFeature0.xcscheme │ │ │ ├── Pods-CCFeature1.xcscheme │ │ │ ├── Pods-CCFeature2.xcscheme │ │ │ ├── SkyFloatingLabelTextField.xcscheme │ │ │ ├── SnapKit.xcscheme │ │ │ └── xcschememanagement.plist │ │ └── cyrilcermak.xcuserdatad │ │ └── xcschemes │ │ ├── Alamofire.xcscheme │ │ ├── Pods-App.xcscheme │ │ ├── Pods-AppTests.xcscheme │ │ ├── Pods-CCComponents.xcscheme │ │ ├── Pods-CCCore.xcscheme │ │ ├── Pods-CCFeature0.xcscheme │ │ ├── Pods-CCFeature1.xcscheme │ │ ├── Pods-CCFeature2.xcscheme │ │ ├── SkyFloatingLabelTextField.xcscheme │ │ ├── SnapKit.xcscheme │ │ └── xcschememanagement.plist │ ├── SkyFloatingLabelTextField │ ├── LICENSE │ ├── README.md │ └── Sources │ │ ├── SkyFloatingLabelTextField.swift │ │ ├── SkyFloatingLabelTextFieldWithIcon.swift │ │ └── UITextField+fixCaretPosition.swift │ ├── SnapKit │ ├── LICENSE │ ├── README.md │ └── Source │ │ ├── Constraint.swift │ │ ├── ConstraintAttributes.swift │ │ ├── ConstraintConfig.swift │ │ ├── ConstraintConstantTarget.swift │ │ ├── ConstraintDSL.swift │ │ ├── ConstraintDescription.swift │ │ ├── ConstraintInsetTarget.swift │ │ ├── ConstraintInsets.swift │ │ ├── ConstraintItem.swift │ │ ├── ConstraintLayoutGuide+Extensions.swift │ │ ├── ConstraintLayoutGuide.swift │ │ ├── ConstraintLayoutGuideDSL.swift │ │ ├── ConstraintLayoutSupport.swift │ │ ├── ConstraintLayoutSupportDSL.swift │ │ ├── ConstraintMaker.swift │ │ ├── ConstraintMakerEditable.swift │ │ ├── ConstraintMakerExtendable.swift │ │ ├── ConstraintMakerFinalizable.swift │ │ ├── ConstraintMakerPriortizable.swift │ │ ├── ConstraintMakerRelatable.swift │ │ ├── ConstraintMultiplierTarget.swift │ │ ├── ConstraintOffsetTarget.swift │ │ ├── ConstraintPriority.swift │ │ ├── ConstraintPriorityTarget.swift │ │ ├── ConstraintRelatableTarget.swift │ │ ├── ConstraintRelation.swift │ │ ├── ConstraintView+Extensions.swift │ │ ├── ConstraintView.swift │ │ ├── ConstraintViewDSL.swift │ │ ├── Debugging.swift │ │ ├── LayoutConstraint.swift │ │ ├── LayoutConstraintItem.swift │ │ ├── Typealiases.swift │ │ └── UILayoutSupport+Extensions.swift │ └── Target Support Files │ ├── Alamofire │ ├── Alamofire-dummy.m │ ├── Alamofire-prefix.pch │ ├── Alamofire-umbrella.h │ ├── Alamofire.modulemap │ ├── Alamofire.xcconfig │ └── Info.plist │ ├── Pods-App │ ├── Info.plist │ ├── Pods-App-acknowledgements.markdown │ ├── Pods-App-acknowledgements.plist │ ├── Pods-App-dummy.m │ ├── Pods-App-frameworks.sh │ ├── Pods-App-resources.sh │ ├── Pods-App-umbrella.h │ ├── Pods-App.debug.xcconfig │ ├── Pods-App.modulemap │ └── Pods-App.release.xcconfig │ ├── Pods-AppTests │ ├── Info.plist │ ├── Pods-AppTests-acknowledgements.markdown │ ├── Pods-AppTests-acknowledgements.plist │ ├── Pods-AppTests-dummy.m │ ├── Pods-AppTests-frameworks.sh │ ├── Pods-AppTests-resources.sh │ ├── Pods-AppTests-umbrella.h │ ├── Pods-AppTests.debug.xcconfig │ ├── Pods-AppTests.modulemap │ └── Pods-AppTests.release.xcconfig │ ├── Pods-CCComponents │ ├── Info.plist │ ├── Pods-CCComponents-acknowledgements.markdown │ ├── Pods-CCComponents-acknowledgements.plist │ ├── Pods-CCComponents-dummy.m │ ├── Pods-CCComponents-resources.sh │ ├── Pods-CCComponents-umbrella.h │ ├── Pods-CCComponents.debug.xcconfig │ ├── Pods-CCComponents.modulemap │ └── Pods-CCComponents.release.xcconfig │ ├── Pods-CCCore │ ├── Info.plist │ ├── Pods-CCCore-acknowledgements.markdown │ ├── Pods-CCCore-acknowledgements.plist │ ├── Pods-CCCore-dummy.m │ ├── Pods-CCCore-resources.sh │ ├── Pods-CCCore-umbrella.h │ ├── Pods-CCCore.debug.xcconfig │ ├── Pods-CCCore.modulemap │ └── Pods-CCCore.release.xcconfig │ ├── Pods-CCFeature0 │ ├── Info.plist │ ├── Pods-CCFeature0-acknowledgements.markdown │ ├── Pods-CCFeature0-acknowledgements.plist │ ├── Pods-CCFeature0-dummy.m │ ├── Pods-CCFeature0-resources.sh │ ├── Pods-CCFeature0-umbrella.h │ ├── Pods-CCFeature0.debug.xcconfig │ ├── Pods-CCFeature0.modulemap │ └── Pods-CCFeature0.release.xcconfig │ ├── Pods-CCFeature1 │ ├── Info.plist │ ├── Pods-CCFeature1-acknowledgements.markdown │ ├── Pods-CCFeature1-acknowledgements.plist │ ├── Pods-CCFeature1-dummy.m │ ├── Pods-CCFeature1-resources.sh │ ├── Pods-CCFeature1-umbrella.h │ ├── Pods-CCFeature1.debug.xcconfig │ ├── Pods-CCFeature1.modulemap │ └── Pods-CCFeature1.release.xcconfig │ ├── Pods-CCFeature2 │ ├── Info.plist │ ├── Pods-CCFeature2-acknowledgements.markdown │ ├── Pods-CCFeature2-acknowledgements.plist │ ├── Pods-CCFeature2-dummy.m │ ├── Pods-CCFeature2-resources.sh │ ├── Pods-CCFeature2-umbrella.h │ ├── Pods-CCFeature2.debug.xcconfig │ ├── Pods-CCFeature2.modulemap │ └── Pods-CCFeature2.release.xcconfig │ ├── SkyFloatingLabelTextField │ ├── Info.plist │ ├── SkyFloatingLabelTextField-dummy.m │ ├── SkyFloatingLabelTextField-prefix.pch │ ├── SkyFloatingLabelTextField-umbrella.h │ ├── SkyFloatingLabelTextField.modulemap │ └── SkyFloatingLabelTextField.xcconfig │ └── SnapKit │ ├── Info.plist │ ├── SnapKit-dummy.m │ ├── SnapKit-prefix.pch │ ├── SnapKit-umbrella.h │ ├── SnapKit.modulemap │ └── SnapKit.xcconfig ├── CCComponents ├── CCComponents.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ ├── ccermak.xcuserdatad │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── cyrilcermak.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── CCComponents │ ├── Buttons │ │ └── CCBaseButton.swift │ ├── CCComponents.h │ └── Info.plist └── CCComponentsTests │ ├── CCComponentsTests.swift │ └── Info.plist ├── CCCore ├── CCCore.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ ├── ccermak.xcuserdatad │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── cyrilcermak.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── CCCore │ ├── Base │ │ └── CCBaseVC.swift │ ├── CCCore.h │ ├── Flow.swift │ ├── Info.plist │ ├── ProductsProvider.swift │ ├── Serivces.swift │ └── UsersProvider.swift └── CCCoreTests │ ├── CCCoreTests.swift │ └── Info.plist ├── CCFeature0 ├── CCFeature0.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ ├── ccermak.xcuserdatad │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── cyrilcermak.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── CCFeature0 │ ├── CCFeature0.h │ ├── CCFeature0Flow.swift │ ├── Info.plist │ └── MainF0VC.swift ├── CCFeature0Tests │ ├── CCFeature0Tests.swift │ └── Info.plist └── CCFeature1 │ ├── CCFeature1 │ ├── CCFeature1.h │ └── Info.plist │ └── CCFeature1Tests │ ├── CCFeature1Tests.swift │ └── Info.plist ├── CCFeature1 ├── CCFeature1.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ ├── ccermak.xcuserdatad │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── cyrilcermak.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── CCFeature1 │ ├── CCFeature1.h │ ├── CCFeature1Flow.swift │ ├── Info.plist │ └── MainFeature1.swift └── CCFeature1Tests │ ├── CCFeature1Tests.swift │ └── Info.plist ├── CCFeature2 ├── CCFeature2.xcodeproj │ ├── project.pbxproj │ └── xcuserdata │ │ ├── ccermak.xcuserdatad │ │ └── xcschemes │ │ │ └── xcschememanagement.plist │ │ └── cyrilcermak.xcuserdatad │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── CCFeature2 │ ├── CCFeature2.h │ ├── CCFeature2Flow.swift │ ├── Info.plist │ ├── MainFeature2.swift │ └── ModalFeature2VC.swift └── CCFeature2Tests │ ├── CCFeature2Tests.swift │ └── Info.plist ├── Carthage ├── Cartfile ├── Cartfile.resolved └── Carthage │ └── Build │ ├── .RxSwift.version │ └── iOS │ ├── RxCocoa.framework │ ├── Headers │ │ ├── RxCocoa-Swift.h │ │ ├── RxCocoa.h │ │ ├── _RX.h │ │ ├── _RXDelegateProxy.h │ │ ├── _RXKVOObserver.h │ │ └── _RXObjCRuntime.h │ ├── Info.plist │ ├── Modules │ │ ├── RxCocoa.swiftmodule │ │ │ ├── arm.swiftdoc │ │ │ ├── arm.swiftmodule │ │ │ ├── arm64.swiftdoc │ │ │ ├── arm64.swiftmodule │ │ │ ├── i386.swiftdoc │ │ │ ├── i386.swiftmodule │ │ │ ├── x86_64.swiftdoc │ │ │ └── x86_64.swiftmodule │ │ └── module.modulemap │ └── RxCocoa │ └── RxSwift.framework │ ├── Headers │ └── RxSwift-Swift.h │ ├── Info.plist │ ├── Modules │ ├── RxSwift.swiftmodule │ │ ├── arm.swiftdoc │ │ ├── arm.swiftmodule │ │ ├── arm64.swiftdoc │ │ ├── arm64.swiftmodule │ │ ├── i386.swiftdoc │ │ ├── i386.swiftmodule │ │ ├── x86_64.swiftdoc │ │ └── x86_64.swiftmodule │ └── module.modulemap │ └── RxSwift └── README.md /App/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /App/App.xcodeproj/project.xcworkspace/xcuserdata/ccermak.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/App/App.xcodeproj/project.xcworkspace/xcuserdata/ccermak.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /App/App.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | App.xcscheme 8 | 9 | orderHint 10 | 10 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /App/App.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | App.xcscheme 8 | 9 | orderHint 10 | 10 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /App/App.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 13 | 15 | 16 | 18 | 19 | 21 | 22 | 24 | 25 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /App/App.xcworkspace/xcuserdata/ccermak.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/App/App.xcworkspace/xcuserdata/ccermak.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /App/App.xcworkspace/xcuserdata/cyrilcermak.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/App/App.xcworkspace/xcuserdata/cyrilcermak.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /App/App.xcworkspace/xcuserdata/cyrilcermak.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /App/App/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // App 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import CCCore 11 | 12 | @UIApplicationMain 13 | class AppDelegate: UIResponder, UIApplicationDelegate { 14 | var flow: AppFlow! 15 | var window: UIWindow? 16 | 17 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 18 | initFlowAndServices() 19 | 20 | return true 21 | } 22 | 23 | //Creates a main flow for the app with services that are then passed to childFlows. 24 | private func initFlowAndServices() { 25 | let services = CCServices() 26 | self.flow = AppFlow(services: services) 27 | flow.start() 28 | self.window = UIWindow() 29 | self.window?.rootViewController = flow.navigation 30 | self.window?.makeKeyAndVisible() 31 | } 32 | 33 | } 34 | 35 | -------------------------------------------------------------------------------- /App/App/AppFlow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppFlow.swift 3 | // App 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | /** 12 | This is the order of how the frameworks are being compiled. 13 | It starts with CCCore but if CCCore contains other imported framework 14 | then the compiler jumps to that framework. 15 | */ 16 | import CCCore 17 | import CCFeature0 18 | import CCFeature1 19 | import CCFeature2 20 | /** 21 | Init of the flow takes two params: 22 | @param services: An object that contains reference to all the services that are used in the app 23 | @param navigationVC: Main UINavigationVC who is then passed to a childFlows 24 | */ 25 | class AppFlow: Flow { 26 | 27 | var services: Services 28 | var childFlows: [Flow] = [Flow]() 29 | var navigation: UINavigationController? 30 | var finish: (Flow) -> () = { _ in } 31 | 32 | required init(services: Services, navigationVC: UINavigationController? = nil) { 33 | self.services = services 34 | } 35 | 36 | public func start() { 37 | self.presentMainVC() 38 | } 39 | 40 | private func presentMainVC() { 41 | let mainVC = MainVC(services: self.services) 42 | mainVC.delegate = self 43 | self.navigation = UINavigationController(rootViewController: mainVC) 44 | } 45 | 46 | } 47 | 48 | extension AppFlow: MainVCDelegate { 49 | func presentCCFeature0() { 50 | let feature0Flow = CCFeature0Flow(services: self.services, navigationVC: self.navigation) 51 | feature0Flow.finish = { flow in 52 | _ = self.childFlows.popLast() 53 | print("poped CCFeature0Flow)") 54 | } 55 | startNew(flow: feature0Flow) 56 | } 57 | 58 | func pushCCFeature1() { 59 | let feature1Flow = CCFeature1Flow(services: self.services, navigationVC: self.navigation) 60 | feature1Flow.finish = { flow in 61 | _ = self.childFlows.popLast() 62 | print("poped CCFeature1Flow)") 63 | } 64 | startNew(flow: feature1Flow) 65 | } 66 | 67 | func pushCCFeature2() { 68 | let feature2Flow = CCFeature2Flow(services: self.services, navigationVC: self.navigation) 69 | feature2Flow.finish = { flow in 70 | _ = self.childFlows.popLast() 71 | print("poped CCFeature2Flow)") 72 | } 73 | startNew(flow: feature2Flow) 74 | } 75 | 76 | private func startNew(flow: Flow) { 77 | flow.start() 78 | self.childFlows.append(flow) 79 | } 80 | 81 | } 82 | -------------------------------------------------------------------------------- /App/App/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /App/App/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /App/App/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIRequiredDeviceCapabilities 26 | 27 | armv7 28 | 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /App/App/MainVC.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // App 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import CCComponents 11 | import CCCore 12 | import SnapKit 13 | import RxSwift 14 | import RxCocoa 15 | 16 | protocol MainVCDelegate: class { 17 | func presentCCFeature0() 18 | func pushCCFeature1() 19 | func pushCCFeature2() 20 | } 21 | 22 | class MainVC: CCBaseVC { 23 | 24 | weak var delegate: MainVCDelegate? 25 | let disposeBag = DisposeBag() 26 | let mainView = MainView(frame: CGRect.zero) 27 | 28 | override func viewDidLoad() { 29 | super.viewDidLoad() 30 | initView() 31 | setBtns() 32 | } 33 | 34 | override func loadView() { 35 | self.view = UIView(frame: UIScreen.main.bounds) 36 | } 37 | 38 | private func initView() { 39 | self.view.addSubview(mainView) 40 | mainView.snp.makeConstraints({ $0.edges.equalTo(self.view) }) 41 | } 42 | 43 | private func setBtns() { 44 | mainView.feature0Btn.rx.tap.subscribe(onNext: { self.delegate?.presentCCFeature0() }).disposed(by: disposeBag) 45 | mainView.feature1Btn.rx.tap.subscribe(onNext: { self.delegate?.pushCCFeature1() }).disposed(by: disposeBag) 46 | mainView.feature2Btn.rx.tap.subscribe(onNext: { self.delegate?.pushCCFeature2() }).disposed(by: disposeBag) 47 | } 48 | 49 | } 50 | 51 | -------------------------------------------------------------------------------- /App/App/MainView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainView.swift 3 | // App 4 | // 5 | // Created by Cyril Cermak on 6/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | import CCComponents 12 | 13 | class MainView: UIView { 14 | 15 | let feature0Btn = CCBaseButton(frame: CGRect.zero) 16 | let feature1Btn = CCBaseButton(frame: CGRect.zero) 17 | let feature2Btn = CCBaseButton(frame: CGRect.zero) 18 | 19 | override init(frame: CGRect) { 20 | super.init(frame: frame) 21 | initView() 22 | setButtons() 23 | } 24 | 25 | required init?(coder aDecoder: NSCoder) { 26 | super.init(coder: aDecoder) 27 | } 28 | 29 | private func initView() { 30 | let stackView = UIStackView() 31 | stackView.axis = .vertical 32 | stackView.alignment = .center 33 | stackView.distribution = .equalSpacing 34 | for btn in [feature0Btn, feature1Btn, feature2Btn] { 35 | btn.setTitleColor(.red, for: .normal) 36 | stackView.addArrangedSubview(btn) 37 | } 38 | 39 | self.addSubview(stackView) 40 | stackView.snp.makeConstraints { (make) in 41 | make.left.right.equalTo(self) 42 | make.center.equalTo(self) 43 | make.height.equalTo(150) 44 | } 45 | } 46 | 47 | private func setButtons() { 48 | feature0Btn.setTitle("present feature 0", for: .normal) 49 | feature1Btn.setTitle("push feature 1", for: .normal) 50 | feature2Btn.setTitle("push feature 2", for: .normal) 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /App/AppTests/AppTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppTests.swift 3 | // AppTests 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import App 11 | 12 | class AppTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /App/AppTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /App/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | workspace 'App.xcworkspace' 5 | project 'App.xcodeproj' 6 | platform :ios, '10.0' 7 | inhibit_all_warnings! 8 | use_frameworks! 9 | 10 | CCPod = Struct.new(:name, :version, :git, :branch) 11 | snapkit = CCPod.new('SnapKit', '~> 4.0.0') 12 | alamofire = CCPod.new('Alamofire', '~> 4.6') 13 | skyFloatingLabelTextField = CCPod.new('SkyFloatingLabelTextField', '~> 3.0') 14 | 15 | #Every pod that is used in the framework must be 16 | #included in the main app as framework does not copy pods to target, 17 | #so you would end up with dyld: library not loaded 18 | ["App", "AppTests"].each do |targetName| 19 | target targetName do 20 | inherit! :search_paths 21 | 22 | pod snapkit.name, snapkit.version 23 | pod skyFloatingLabelTextField.name, skyFloatingLabelTextField.version 24 | pod alamofire.name, alamofire.version 25 | end 26 | end 27 | 28 | def project_path(projectName) 29 | return "../#{projectName}/#{projectName}" 30 | end 31 | 32 | target 'CCCore' do 33 | project project_path("CCCore") 34 | 35 | pod alamofire.name, alamofire.version 36 | end 37 | 38 | target 'CCComponents' do 39 | project project_path("CCComponents") 40 | 41 | pod snapkit.name, snapkit.version 42 | end 43 | 44 | target 'CCFeature0' do 45 | project project_path("CCFeature0") 46 | 47 | pod skyFloatingLabelTextField.name, skyFloatingLabelTextField.version 48 | pod snapkit.name, snapkit.version 49 | end 50 | 51 | target 'CCFeature1' do 52 | project project_path("CCFeature1") 53 | 54 | pod skyFloatingLabelTextField.name, skyFloatingLabelTextField.version 55 | pod snapkit.name, snapkit.version 56 | end 57 | 58 | target 'CCFeature2' do 59 | project project_path("CCFeature2") 60 | 61 | pod snapkit.name, snapkit.version 62 | end 63 | -------------------------------------------------------------------------------- /App/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (4.6.0) 3 | - SkyFloatingLabelTextField (3.4.0) 4 | - SnapKit (4.0.0) 5 | 6 | DEPENDENCIES: 7 | - Alamofire (~> 4.6) 8 | - SkyFloatingLabelTextField (~> 3.0) 9 | - SnapKit (~> 4.0.0) 10 | 11 | SPEC REPOS: 12 | https://github.com/CocoaPods/Specs.git: 13 | - Alamofire 14 | - SkyFloatingLabelTextField 15 | - SnapKit 16 | 17 | SPEC CHECKSUMS: 18 | Alamofire: f41a599bd63041760b26d393ec1069d9d7b917f4 19 | SkyFloatingLabelTextField: 703aa1420b697392b1e7dba25571180dde018477 20 | SnapKit: a42d492c16e80209130a3379f73596c3454b7694 21 | 22 | PODFILE CHECKSUM: f0ca08ba407aeddf9c8bcb2ae293736be32f3786 23 | 24 | COCOAPODS: 1.5.0 25 | -------------------------------------------------------------------------------- /App/Pods/Alamofire/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /App/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Alamofire.swift 3 | // 4 | // Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import Dispatch 26 | import Foundation 27 | 28 | extension DispatchQueue { 29 | static var userInteractive: DispatchQueue { return DispatchQueue.global(qos: .userInteractive) } 30 | static var userInitiated: DispatchQueue { return DispatchQueue.global(qos: .userInitiated) } 31 | static var utility: DispatchQueue { return DispatchQueue.global(qos: .utility) } 32 | static var background: DispatchQueue { return DispatchQueue.global(qos: .background) } 33 | 34 | func after(_ delay: TimeInterval, execute closure: @escaping () -> Void) { 35 | asyncAfter(deadline: .now() + delay, execute: closure) 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /App/Pods/Alamofire/Source/Notifications.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Notifications.swift 3 | // 4 | // Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | import Foundation 26 | 27 | extension Notification.Name { 28 | /// Used as a namespace for all `URLSessionTask` related notifications. 29 | public struct Task { 30 | /// Posted when a `URLSessionTask` is resumed. The notification `object` contains the resumed `URLSessionTask`. 31 | public static let DidResume = Notification.Name(rawValue: "org.alamofire.notification.name.task.didResume") 32 | 33 | /// Posted when a `URLSessionTask` is suspended. The notification `object` contains the suspended `URLSessionTask`. 34 | public static let DidSuspend = Notification.Name(rawValue: "org.alamofire.notification.name.task.didSuspend") 35 | 36 | /// Posted when a `URLSessionTask` is cancelled. The notification `object` contains the cancelled `URLSessionTask`. 37 | public static let DidCancel = Notification.Name(rawValue: "org.alamofire.notification.name.task.didCancel") 38 | 39 | /// Posted when a `URLSessionTask` is completed. The notification `object` contains the completed `URLSessionTask`. 40 | public static let DidComplete = Notification.Name(rawValue: "org.alamofire.notification.name.task.didComplete") 41 | } 42 | } 43 | 44 | // MARK: - 45 | 46 | extension Notification { 47 | /// Used as a namespace for all `Notification` user info dictionary keys. 48 | public struct Key { 49 | /// User info dictionary key representing the `URLSessionTask` associated with the notification. 50 | public static let Task = "org.alamofire.notification.key.task" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /App/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (4.6.0) 3 | - SkyFloatingLabelTextField (3.4.0) 4 | - SnapKit (4.0.0) 5 | 6 | DEPENDENCIES: 7 | - Alamofire (~> 4.6) 8 | - SkyFloatingLabelTextField (~> 3.0) 9 | - SnapKit (~> 4.0.0) 10 | 11 | SPEC REPOS: 12 | https://github.com/CocoaPods/Specs.git: 13 | - Alamofire 14 | - SkyFloatingLabelTextField 15 | - SnapKit 16 | 17 | SPEC CHECKSUMS: 18 | Alamofire: f41a599bd63041760b26d393ec1069d9d7b917f4 19 | SkyFloatingLabelTextField: 703aa1420b697392b1e7dba25571180dde018477 20 | SnapKit: a42d492c16e80209130a3379f73596c3454b7694 21 | 22 | PODFILE CHECKSUM: f0ca08ba407aeddf9c8bcb2ae293736be32f3786 23 | 24 | COCOAPODS: 1.5.0 25 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/Alamofire.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/Pods-App.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/Pods-AppTests.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/Pods-CCCore.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/Pods-CCFeature0.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/Pods-CCFeature1.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/Pods-CCFeature2.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 45 | 46 | 52 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/SkyFloatingLabelTextField.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/SnapKit.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Alamofire.xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | Pods-App.xcscheme 15 | 16 | isShown 17 | 18 | orderHint 19 | 1 20 | 21 | Pods-AppTests.xcscheme 22 | 23 | isShown 24 | 25 | orderHint 26 | 2 27 | 28 | Pods-CCComponents.xcscheme 29 | 30 | isShown 31 | 32 | orderHint 33 | 3 34 | 35 | Pods-CCCore.xcscheme 36 | 37 | isShown 38 | 39 | orderHint 40 | 4 41 | 42 | Pods-CCFeature0.xcscheme 43 | 44 | isShown 45 | 46 | orderHint 47 | 5 48 | 49 | Pods-CCFeature1.xcscheme 50 | 51 | isShown 52 | 53 | orderHint 54 | 6 55 | 56 | Pods-CCFeature2.xcscheme 57 | 58 | isShown 59 | 60 | orderHint 61 | 7 62 | 63 | SkyFloatingLabelTextField.xcscheme 64 | 65 | isShown 66 | 67 | orderHint 68 | 8 69 | 70 | SnapKit.xcscheme 71 | 72 | isShown 73 | 74 | orderHint 75 | 9 76 | 77 | 78 | SuppressBuildableAutocreation 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/Alamofire.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/SkyFloatingLabelTextField.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/SnapKit.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 44 | 45 | 46 | 52 | 53 | 55 | 56 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /App/Pods/Pods.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Alamofire.xcscheme 8 | 9 | isShown 10 | 11 | orderHint 12 | 0 13 | 14 | Pods-App.xcscheme 15 | 16 | isShown 17 | 18 | orderHint 19 | 1 20 | 21 | Pods-AppTests.xcscheme 22 | 23 | isShown 24 | 25 | orderHint 26 | 2 27 | 28 | Pods-CCComponents.xcscheme 29 | 30 | isShown 31 | 32 | orderHint 33 | 3 34 | 35 | Pods-CCCore.xcscheme 36 | 37 | isShown 38 | 39 | orderHint 40 | 4 41 | 42 | Pods-CCFeature0.xcscheme 43 | 44 | isShown 45 | 46 | orderHint 47 | 5 48 | 49 | Pods-CCFeature1.xcscheme 50 | 51 | isShown 52 | 53 | orderHint 54 | 6 55 | 56 | Pods-CCFeature2.xcscheme 57 | 58 | isShown 59 | 60 | orderHint 61 | 7 62 | 63 | SkyFloatingLabelTextField.xcscheme 64 | 65 | isShown 66 | 67 | orderHint 68 | 8 69 | 70 | SnapKit.xcscheme 71 | 72 | isShown 73 | 74 | orderHint 75 | 9 76 | 77 | 78 | SuppressBuildableAutocreation 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /App/Pods/SkyFloatingLabelTextField/Sources/UITextField+fixCaretPosition.swift: -------------------------------------------------------------------------------- 1 | // Copyright 2016-2017 Skyscanner Ltd 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software distributed under the License is 9 | // distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 | // See the License for the specific language governing permissions and limitations under the License. 11 | 12 | // MARK: - UITextField extension 13 | 14 | import UIKit 15 | 16 | extension UITextField { 17 | /// Moves the caret to the correct position by removing the trailing whitespace 18 | func fixCaretPosition() { 19 | // Moving the caret to the correct position by removing the trailing whitespace 20 | // http://stackoverflow.com/questions/14220187/uitextfield-has-trailing-whitespace-after-securetextentry-toggle 21 | 22 | let beginning = beginningOfDocument 23 | selectedTextRange = textRange(from: beginning, to: beginning) 24 | let end = endOfDocument 25 | selectedTextRange = textRange(from: end, to: end) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintConfig.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | public typealias ConstraintInterfaceLayoutDirection = UIUserInterfaceLayoutDirection 27 | #else 28 | import AppKit 29 | public typealias ConstraintInterfaceLayoutDirection = NSUserInterfaceLayoutDirection 30 | #endif 31 | 32 | 33 | public struct ConstraintConfig { 34 | 35 | public static var interfaceLayoutDirection: ConstraintInterfaceLayoutDirection = .leftToRight 36 | 37 | } 38 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintInsets.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | public typealias ConstraintInsets = UIEdgeInsets 33 | #else 34 | public typealias ConstraintInsets = NSEdgeInsets 35 | #endif 36 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public final class ConstraintItem { 32 | 33 | internal weak var target: AnyObject? 34 | internal let attributes: ConstraintAttributes 35 | 36 | internal init(target: AnyObject?, attributes: ConstraintAttributes) { 37 | self.target = target 38 | self.attributes = attributes 39 | } 40 | 41 | internal var layoutConstraintItem: LayoutConstraintItem? { 42 | return self.target as? LayoutConstraintItem 43 | } 44 | 45 | } 46 | 47 | public func ==(lhs: ConstraintItem, rhs: ConstraintItem) -> Bool { 48 | // pointer equality 49 | guard lhs !== rhs else { 50 | return true 51 | } 52 | 53 | // must both have valid targets and identical attributes 54 | guard let target1 = lhs.target, 55 | let target2 = rhs.target, 56 | target1 === target2 && lhs.attributes == rhs.attributes else { 57 | return false 58 | } 59 | 60 | return true 61 | } 62 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #endif 27 | 28 | 29 | @available(iOS 9.0, OSX 10.11, *) 30 | public extension ConstraintLayoutGuide { 31 | 32 | public var snp: ConstraintLayoutGuideDSL { 33 | return ConstraintLayoutGuideDSL(guide: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintLayoutGuide.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | @available(iOS 9.0, *) 33 | public typealias ConstraintLayoutGuide = UILayoutGuide 34 | #else 35 | @available(OSX 10.11, *) 36 | public typealias ConstraintLayoutGuide = NSLayoutGuide 37 | #endif 38 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintLayoutGuideDSL.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | @available(iOS 9.0, OSX 10.11, *) 32 | public struct ConstraintLayoutGuideDSL: ConstraintAttributesDSL { 33 | 34 | @discardableResult 35 | public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { 36 | return ConstraintMaker.prepareConstraints(item: self.guide, closure: closure) 37 | } 38 | 39 | public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 40 | ConstraintMaker.makeConstraints(item: self.guide, closure: closure) 41 | } 42 | 43 | public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 44 | ConstraintMaker.remakeConstraints(item: self.guide, closure: closure) 45 | } 46 | 47 | public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 48 | ConstraintMaker.updateConstraints(item: self.guide, closure: closure) 49 | } 50 | 51 | public func removeConstraints() { 52 | ConstraintMaker.removeConstraints(item: self.guide) 53 | } 54 | 55 | public var target: AnyObject? { 56 | return self.guide 57 | } 58 | 59 | internal let guide: ConstraintLayoutGuide 60 | 61 | internal init(guide: ConstraintLayoutGuide) { 62 | self.guide = guide 63 | 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintLayoutSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | @available(iOS 8.0, *) 33 | public typealias ConstraintLayoutSupport = UILayoutSupport 34 | #else 35 | public class ConstraintLayoutSupport {} 36 | #endif 37 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintLayoutSupportDSL.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | @available(iOS 8.0, *) 32 | public struct ConstraintLayoutSupportDSL: ConstraintDSL { 33 | 34 | public var target: AnyObject? { 35 | return self.support 36 | } 37 | 38 | internal let support: ConstraintLayoutSupport 39 | 40 | internal init(support: ConstraintLayoutSupport) { 41 | self.support = support 42 | 43 | } 44 | 45 | public var top: ConstraintItem { 46 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) 47 | } 48 | 49 | public var bottom: ConstraintItem { 50 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) 51 | } 52 | 53 | public var height: ConstraintItem { 54 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintMakerEditable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerEditable: ConstraintMakerPriortizable { 32 | 33 | @discardableResult 34 | public func multipliedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable { 35 | self.description.multiplier = amount 36 | return self 37 | } 38 | 39 | @discardableResult 40 | public func dividedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable { 41 | return self.multipliedBy(1.0 / amount.constraintMultiplierTargetValue) 42 | } 43 | 44 | @discardableResult 45 | public func offset(_ amount: ConstraintOffsetTarget) -> ConstraintMakerEditable { 46 | self.description.constant = amount.constraintOffsetTargetValue 47 | return self 48 | } 49 | 50 | @discardableResult 51 | public func inset(_ amount: ConstraintInsetTarget) -> ConstraintMakerEditable { 52 | self.description.constant = amount.constraintInsetTargetValue 53 | return self 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintMakerFinalizable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerFinalizable { 32 | 33 | internal let description: ConstraintDescription 34 | 35 | internal init(_ description: ConstraintDescription) { 36 | self.description = description 37 | } 38 | 39 | @discardableResult 40 | public func labeled(_ label: String) -> ConstraintMakerFinalizable { 41 | self.description.label = label 42 | return self 43 | } 44 | 45 | public var constraint: Constraint { 46 | return self.description.constraint! 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerPriortizable: ConstraintMakerFinalizable { 32 | 33 | @discardableResult 34 | public func priority(_ amount: ConstraintPriority) -> ConstraintMakerFinalizable { 35 | self.description.priority = amount.value 36 | return self 37 | } 38 | 39 | @discardableResult 40 | public func priority(_ amount: ConstraintPriorityTarget) -> ConstraintMakerFinalizable { 41 | self.description.priority = amount 42 | return self 43 | } 44 | 45 | @available(*, deprecated:3.0, message:"Use priority(.required) instead.") 46 | @discardableResult 47 | public func priorityRequired() -> ConstraintMakerFinalizable { 48 | return self.priority(.required) 49 | } 50 | 51 | @available(*, deprecated:3.0, message:"Use priority(.high) instead.") 52 | @discardableResult 53 | public func priorityHigh() -> ConstraintMakerFinalizable { 54 | return self.priority(.high) 55 | } 56 | 57 | @available(*, deprecated:3.0, message:"Use priority(.medium) instead.") 58 | @discardableResult 59 | public func priorityMedium() -> ConstraintMakerFinalizable { 60 | return self.priority(.medium) 61 | } 62 | 63 | @available(*, deprecated:3.0, message:"Use priority(.low) instead.") 64 | @discardableResult 65 | public func priorityLow() -> ConstraintMakerFinalizable { 66 | return self.priority(.low) 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintMultiplierTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintMultiplierTarget { 32 | 33 | var constraintMultiplierTargetValue: CGFloat { get } 34 | 35 | } 36 | 37 | extension Int: ConstraintMultiplierTarget { 38 | 39 | public var constraintMultiplierTargetValue: CGFloat { 40 | return CGFloat(self) 41 | } 42 | 43 | } 44 | 45 | extension UInt: ConstraintMultiplierTarget { 46 | 47 | public var constraintMultiplierTargetValue: CGFloat { 48 | return CGFloat(self) 49 | } 50 | 51 | } 52 | 53 | extension Float: ConstraintMultiplierTarget { 54 | 55 | public var constraintMultiplierTargetValue: CGFloat { 56 | return CGFloat(self) 57 | } 58 | 59 | } 60 | 61 | extension Double: ConstraintMultiplierTarget { 62 | 63 | public var constraintMultiplierTargetValue: CGFloat { 64 | return CGFloat(self) 65 | } 66 | 67 | } 68 | 69 | extension CGFloat: ConstraintMultiplierTarget { 70 | 71 | public var constraintMultiplierTargetValue: CGFloat { 72 | return self 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintOffsetTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintOffsetTarget: ConstraintConstantTarget { 32 | } 33 | 34 | extension Int: ConstraintOffsetTarget { 35 | } 36 | 37 | extension UInt: ConstraintOffsetTarget { 38 | } 39 | 40 | extension Float: ConstraintOffsetTarget { 41 | } 42 | 43 | extension Double: ConstraintOffsetTarget { 44 | } 45 | 46 | extension CGFloat: ConstraintOffsetTarget { 47 | } 48 | 49 | extension ConstraintOffsetTarget { 50 | 51 | internal var constraintOffsetTargetValue: CGFloat { 52 | let offset: CGFloat 53 | if let amount = self as? Float { 54 | offset = CGFloat(amount) 55 | } else if let amount = self as? Double { 56 | offset = CGFloat(amount) 57 | } else if let amount = self as? CGFloat { 58 | offset = CGFloat(amount) 59 | } else if let amount = self as? Int { 60 | offset = CGFloat(amount) 61 | } else if let amount = self as? UInt { 62 | offset = CGFloat(amount) 63 | } else { 64 | offset = 0.0 65 | } 66 | return offset 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintPriority.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | public struct ConstraintPriority : ExpressibleByFloatLiteral, Equatable, Strideable { 31 | public typealias FloatLiteralType = Float 32 | 33 | public let value: Float 34 | 35 | public init(floatLiteral value: Float) { 36 | self.value = value 37 | } 38 | 39 | public init(_ value: Float) { 40 | self.value = value 41 | } 42 | 43 | public static var required: ConstraintPriority { 44 | return 1000.0 45 | } 46 | 47 | public static var high: ConstraintPriority { 48 | return 750.0 49 | } 50 | 51 | public static var medium: ConstraintPriority { 52 | #if os(OSX) 53 | return 501.0 54 | #else 55 | return 500.0 56 | #endif 57 | 58 | } 59 | 60 | public static var low: ConstraintPriority { 61 | return 250.0 62 | } 63 | 64 | public static func ==(lhs: ConstraintPriority, rhs: ConstraintPriority) -> Bool { 65 | return lhs.value == rhs.value 66 | } 67 | 68 | // MARK: Strideable 69 | 70 | public func advanced(by n: FloatLiteralType) -> ConstraintPriority { 71 | return ConstraintPriority(floatLiteral: value + n) 72 | } 73 | 74 | public func distance(to other: ConstraintPriority) -> FloatLiteralType { 75 | return other.value - value 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintPriorityTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintPriorityTarget { 32 | 33 | var constraintPriorityTargetValue: Float { get } 34 | 35 | } 36 | 37 | extension Int: ConstraintPriorityTarget { 38 | 39 | public var constraintPriorityTargetValue: Float { 40 | return Float(self) 41 | } 42 | 43 | } 44 | 45 | extension UInt: ConstraintPriorityTarget { 46 | 47 | public var constraintPriorityTargetValue: Float { 48 | return Float(self) 49 | } 50 | 51 | } 52 | 53 | extension Float: ConstraintPriorityTarget { 54 | 55 | public var constraintPriorityTargetValue: Float { 56 | return self 57 | } 58 | 59 | } 60 | 61 | extension Double: ConstraintPriorityTarget { 62 | 63 | public var constraintPriorityTargetValue: Float { 64 | return Float(self) 65 | } 66 | 67 | } 68 | 69 | extension CGFloat: ConstraintPriorityTarget { 70 | 71 | public var constraintPriorityTargetValue: Float { 72 | return Float(self) 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintRelatableTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintRelatableTarget { 32 | } 33 | 34 | extension Int: ConstraintRelatableTarget { 35 | } 36 | 37 | extension UInt: ConstraintRelatableTarget { 38 | } 39 | 40 | extension Float: ConstraintRelatableTarget { 41 | } 42 | 43 | extension Double: ConstraintRelatableTarget { 44 | } 45 | 46 | extension CGFloat: ConstraintRelatableTarget { 47 | } 48 | 49 | extension CGSize: ConstraintRelatableTarget { 50 | } 51 | 52 | extension CGPoint: ConstraintRelatableTarget { 53 | } 54 | 55 | extension ConstraintInsets: ConstraintRelatableTarget { 56 | } 57 | 58 | extension ConstraintItem: ConstraintRelatableTarget { 59 | } 60 | 61 | extension ConstraintView: ConstraintRelatableTarget { 62 | } 63 | 64 | @available(iOS 9.0, OSX 10.11, *) 65 | extension ConstraintLayoutGuide: ConstraintRelatableTarget { 66 | } 67 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintRelation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | internal enum ConstraintRelation : Int { 32 | case equal = 1 33 | case lessThanOrEqual 34 | case greaterThanOrEqual 35 | 36 | internal var layoutRelation: LayoutRelation { 37 | get { 38 | switch(self) { 39 | case .equal: 40 | return .equal 41 | case .lessThanOrEqual: 42 | return .lessThanOrEqual 43 | case .greaterThanOrEqual: 44 | return .greaterThanOrEqual 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/ConstraintView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | public typealias ConstraintView = UIView 33 | #else 34 | public typealias ConstraintView = NSView 35 | #endif 36 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/LayoutConstraint.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class LayoutConstraint : NSLayoutConstraint { 32 | 33 | public var label: String? { 34 | get { 35 | return self.identifier 36 | } 37 | set { 38 | self.identifier = newValue 39 | } 40 | } 41 | 42 | internal weak var constraint: Constraint? = nil 43 | 44 | } 45 | 46 | internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool { 47 | guard lhs.firstItem === rhs.firstItem && 48 | lhs.secondItem === rhs.secondItem && 49 | lhs.firstAttribute == rhs.firstAttribute && 50 | lhs.secondAttribute == rhs.secondAttribute && 51 | lhs.relation == rhs.relation && 52 | lhs.priority == rhs.priority && 53 | lhs.multiplier == rhs.multiplier else { 54 | return false 55 | } 56 | return true 57 | } 58 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/Typealiases.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | import Foundation 25 | 26 | #if os(iOS) || os(tvOS) 27 | import UIKit 28 | typealias LayoutRelation = NSLayoutRelation 29 | typealias LayoutAttribute = NSLayoutAttribute 30 | typealias LayoutPriority = UILayoutPriority 31 | #else 32 | import AppKit 33 | typealias LayoutRelation = NSLayoutConstraint.Relation 34 | typealias LayoutAttribute = NSLayoutConstraint.Attribute 35 | typealias LayoutPriority = NSLayoutConstraint.Priority 36 | #endif 37 | 38 | -------------------------------------------------------------------------------- /App/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #endif 27 | 28 | 29 | @available(iOS 8.0, *) 30 | public extension ConstraintLayoutSupport { 31 | 32 | public var snp: ConstraintLayoutSupportDSL { 33 | return ConstraintLayoutSupportDSL(support: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Alamofire/Alamofire-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Alamofire : NSObject 3 | @end 4 | @implementation PodsDummy_Alamofire 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double AlamofireVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Alamofire/Alamofire.modulemap: -------------------------------------------------------------------------------- 1 | framework module Alamofire { 2 | umbrella header "Alamofire-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Alamofire/Alamofire.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Alamofire/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.6.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-App/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-App/Pods-App-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_App : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_App 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-App/Pods-App-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_AppVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_AppVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-App/Pods-App.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField/SkyFloatingLabelTextField.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "SkyFloatingLabelTextField" -framework "SnapKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-App/Pods-App.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_App { 2 | umbrella header "Pods-App-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-App/Pods-App.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField/SkyFloatingLabelTextField.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "SkyFloatingLabelTextField" -framework "SnapKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-AppTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-AppTests/Pods-AppTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_AppTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_AppTests 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-AppTests/Pods-AppTests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_AppTestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_AppTestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-AppTests/Pods-AppTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField/SkyFloatingLabelTextField.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "SkyFloatingLabelTextField" -framework "SnapKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-AppTests/Pods-AppTests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_AppTests { 2 | umbrella header "Pods-AppTests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-AppTests/Pods-AppTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField/SkyFloatingLabelTextField.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "SkyFloatingLabelTextField" -framework "SnapKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCComponents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCComponents/Pods-CCComponents-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SnapKit 5 | 6 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCComponents/Pods-CCComponents-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | SnapKit 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCComponents/Pods-CCComponents-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CCComponents : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CCComponents 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCComponents/Pods-CCComponents-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CCComponentsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CCComponentsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCComponents/Pods-CCComponents.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "SnapKit" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCComponents/Pods-CCComponents.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CCComponents { 2 | umbrella header "Pods-CCComponents-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCComponents/Pods-CCComponents.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "SnapKit" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCCore/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCCore/Pods-CCCore-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## Alamofire 5 | 6 | Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/) 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCCore/Pods-CCCore-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2014-2017 Alamofire Software Foundation (http://alamofire.org/) 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | Alamofire 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCCore/Pods-CCCore-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CCCore : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CCCore 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCCore/Pods-CCCore-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CCCoreVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CCCoreVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCCore/Pods-CCCore.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCCore/Pods-CCCore.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CCCore { 2 | umbrella header "Pods-CCCore-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCCore/Pods-CCCore.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "Alamofire" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature0/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature0/Pods-CCFeature0-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CCFeature0 : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CCFeature0 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature0/Pods-CCFeature0-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CCFeature0VersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CCFeature0VersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature0/Pods-CCFeature0.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField/SkyFloatingLabelTextField.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "SkyFloatingLabelTextField" -framework "SnapKit" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature0/Pods-CCFeature0.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CCFeature0 { 2 | umbrella header "Pods-CCFeature0-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature0/Pods-CCFeature0.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField/SkyFloatingLabelTextField.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "SkyFloatingLabelTextField" -framework "SnapKit" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature1/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature1/Pods-CCFeature1-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CCFeature1 : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CCFeature1 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature1/Pods-CCFeature1-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CCFeature1VersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CCFeature1VersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature1/Pods-CCFeature1.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField/SkyFloatingLabelTextField.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "SkyFloatingLabelTextField" -framework "SnapKit" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature1/Pods-CCFeature1.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CCFeature1 { 2 | umbrella header "Pods-CCFeature1-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature1/Pods-CCFeature1.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField/SkyFloatingLabelTextField.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "SkyFloatingLabelTextField" -framework "SnapKit" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature2/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature2/Pods-CCFeature2-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SnapKit 5 | 6 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature2/Pods-CCFeature2-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | SnapKit 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature2/Pods-CCFeature2-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_CCFeature2 : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_CCFeature2 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature2/Pods-CCFeature2-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_CCFeature2VersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_CCFeature2VersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature2/Pods-CCFeature2.debug.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "SnapKit" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature2/Pods-CCFeature2.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_CCFeature2 { 2 | umbrella header "Pods-CCFeature2-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/Pods-CCFeature2/Pods-CCFeature2.release.xcconfig: -------------------------------------------------------------------------------- 1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' '@executable_path/../../Frameworks' 4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -framework "SnapKit" 6 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/../App 10 | PODS_ROOT = ${SRCROOT}/../App/Pods 11 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SkyFloatingLabelTextField/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.4.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SkyFloatingLabelTextField : NSObject 3 | @end 4 | @implementation PodsDummy_SkyFloatingLabelTextField 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double SkyFloatingLabelTextFieldVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SkyFloatingLabelTextFieldVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.modulemap: -------------------------------------------------------------------------------- 1 | framework module SkyFloatingLabelTextField { 2 | umbrella header "SkyFloatingLabelTextField-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SkyFloatingLabelTextField/SkyFloatingLabelTextField.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SkyFloatingLabelTextField 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SkyFloatingLabelTextField 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SnapKit/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SnapKit/SnapKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SnapKit : NSObject 3 | @end 4 | @implementation PodsDummy_SnapKit 5 | @end 6 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SnapKit/SnapKit-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SnapKit/SnapKit-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double SnapKitVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SnapKitVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SnapKit/SnapKit.modulemap: -------------------------------------------------------------------------------- 1 | framework module SnapKit { 2 | umbrella header "SnapKit-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /App/Pods/Target Support Files/SnapKit/SnapKit.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" "-suppress-warnings" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /CCComponents/CCComponents.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCComponents.xcscheme 8 | 9 | orderHint 10 | 11 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCComponents/CCComponents.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCComponents.xcscheme 8 | 9 | orderHint 10 | 11 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCComponents/CCComponents/Buttons/CCBaseButton.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCBaseButton.swift 3 | // CCComponents 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | public class CCBaseButton: UIButton { 13 | 14 | public init() { 15 | super.init(frame: CGRect.zero) 16 | self.setTitleColor(.red, for: .normal) 17 | } 18 | 19 | public override init(frame: CGRect) { 20 | super.init(frame: frame) 21 | } 22 | 23 | required public init?(coder aDecoder: NSCoder) { 24 | fatalError("init(coder:) has not been implemented") 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /CCComponents/CCComponents/CCComponents.h: -------------------------------------------------------------------------------- 1 | // 2 | // CCComponents.h 3 | // CCComponents 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for CCComponents. 12 | FOUNDATION_EXPORT double CCComponentsVersionNumber; 13 | 14 | //! Project version string for CCComponents. 15 | FOUNDATION_EXPORT const unsigned char CCComponentsVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /CCComponents/CCComponents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CCComponents/CCComponentsTests/CCComponentsTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCComponentsTests.swift 3 | // CCComponentsTests 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import CCComponents 11 | 12 | class CCComponentsTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /CCComponents/CCComponentsTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /CCCore/CCCore.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCCore.xcscheme 8 | 9 | orderHint 10 | 12 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCCore/CCCore.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCCore.xcscheme 8 | 9 | orderHint 10 | 12 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCCore/CCCore/Base/CCBaseVC.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCBaseVC.swift 3 | // CCComponents 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | open class CCBaseVC: UIViewController { 13 | 14 | var services: Services! 15 | 16 | public convenience init(services: Services) { 17 | self.init(nibName: nil, bundle: nil) 18 | self.services = services 19 | } 20 | 21 | override open func viewDidLoad() { 22 | super.viewDidLoad() 23 | print("Did load \(self.classForCoder)") 24 | } 25 | 26 | deinit { 27 | print("Did deinit \(self.classForCoder)") 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /CCCore/CCCore/CCCore.h: -------------------------------------------------------------------------------- 1 | // 2 | // CCCore.h 3 | // CCCore 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for CCCore. 12 | FOUNDATION_EXPORT double CCCoreVersionNumber; 13 | 14 | //! Project version string for CCCore. 15 | FOUNDATION_EXPORT const unsigned char CCCoreVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /CCCore/CCCore/Flow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Flow.swift 3 | // CCCore 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /** 12 | Every child flow must implement Flow protocol 13 | - func start: Starts the flow process, it usually decides what is going to be presented 14 | - var services: Property that contains all the services that are being used in the app 15 | - var finish: Is a closure that notifies parent Flow that the child flow is finished. 16 | - var currentVC: Returns view controller that is currently being displayed 17 | */ 18 | public protocol Flow { 19 | init(services: Services, navigationVC: UINavigationController?) 20 | func start() 21 | var services: Services { get } 22 | var finish: (_ flow: Flow) -> () { get set } 23 | var navigation: UINavigationController? { get set } 24 | var currentVC: UIViewController? { get } 25 | } 26 | 27 | extension Flow { 28 | public var currentVC: UIViewController? { 29 | return navigation?.viewControllers.last 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /CCCore/CCCore/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CCCore/CCCore/ProductsProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ProductsProvider.swift 3 | // CCCore 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol ProductsProvider { 12 | func getProducts() 13 | func getProduct(with id: Int) 14 | } 15 | 16 | public struct CCProductsProvider: ProductsProvider { 17 | public func getProducts() { 18 | //Implement the functionality 19 | } 20 | 21 | public func getProduct(with id: Int) { 22 | //Implement the functionality 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /CCCore/CCCore/Serivces.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Serivces.swift 3 | // App 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol Services { 12 | var projectsProvider: ProductsProvider! { get } 13 | var usersProvider: UsersProvider! { get } 14 | } 15 | 16 | public struct CCServices: Services { 17 | public var projectsProvider: ProductsProvider! 18 | public var usersProvider: UsersProvider! 19 | 20 | public init() { 21 | self.projectsProvider = CCProductsProvider() 22 | self.usersProvider = CCUsersProvider() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /CCCore/CCCore/UsersProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UsersProvider.swift 3 | // CCCore 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public protocol UsersProvider { 12 | func getUsers() 13 | func getUser(with id: Int) 14 | } 15 | 16 | public struct CCUsersProvider: UsersProvider { 17 | public func getUsers() { 18 | //Implement the functionality 19 | } 20 | public func getUser(with id: Int) { 21 | //Implement the functionality 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /CCCore/CCCoreTests/CCCoreTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCCoreTests.swift 3 | // CCCoreTests 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import CCCore 11 | 12 | class CCCoreTests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /CCCore/CCCoreTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature0.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCFeature0.xcscheme 8 | 9 | orderHint 10 | 13 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature0.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCFeature0.xcscheme 8 | 9 | orderHint 10 | 13 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature0/CCFeature0.h: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature0.h 3 | // CCFeature0 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for CCFeature0. 12 | FOUNDATION_EXPORT double CCFeature0VersionNumber; 13 | 14 | //! Project version string for CCFeature0. 15 | FOUNDATION_EXPORT const unsigned char CCFeature0VersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature0/CCFeature0Flow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature0Flow.swift 3 | // CCFeature0 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import CCCore 11 | 12 | public class CCFeature0Flow: Flow, MainF0VCDelegate { 13 | 14 | public var finish: (Flow) -> () = { _ in } 15 | public var services: Services 16 | public var navigation: UINavigationController? 17 | 18 | public required init(services: Services, navigationVC: UINavigationController?) { 19 | self.services = services 20 | self.navigation = navigationVC 21 | } 22 | 23 | public func start() { 24 | presentFeature0() 25 | } 26 | 27 | private func presentFeature0() { 28 | let vc = MainF0VC(services: self.services) 29 | vc.delegate = self 30 | let vcNav = UINavigationController(rootViewController: vc) 31 | self.navigation?.present(vcNav, animated: true, completion: nil) 32 | } 33 | 34 | func wantsToClose(at vc: MainF0VC) { 35 | vc.dismiss(animated: true, completion: nil) 36 | finish(self) 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature0/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature0/MainF0VC.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainF0VC.swift 3 | // CCFeature0 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import SnapKit 11 | import CCCore 12 | 13 | protocol MainF0VCDelegate: class { 14 | func wantsToClose(at vc: MainF0VC) 15 | } 16 | 17 | class MainF0VC: CCBaseVC { 18 | 19 | weak var delegate: MainF0VCDelegate? 20 | 21 | override func viewDidLoad() { 22 | super.viewDidLoad() 23 | initView() 24 | } 25 | 26 | override func loadView() { 27 | self.view = UIView() 28 | self.view.backgroundColor = .red 29 | } 30 | 31 | private func initView() { 32 | let label = UILabel() 33 | label.text = "CCFeature0" 34 | label.textAlignment = .center 35 | self.view.addSubview(label) 36 | label.snp.makeConstraints { (make) in 37 | make.width.equalTo(150) 38 | make.height.equalTo(30) 39 | make.center.equalTo(self.view) 40 | } 41 | let rightBarButton = UIBarButtonItem(title: "Close", style: .done, target: self, action: #selector(self.didClickClose)) 42 | self.navigationItem.rightBarButtonItem = rightBarButton 43 | } 44 | 45 | @objc func didClickClose() { 46 | delegate?.wantsToClose(at: self) 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature0Tests/CCFeature0Tests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature0Tests.swift 3 | // CCFeature0Tests 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import CCFeature0 11 | 12 | class CCFeature0Tests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature0Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature1/CCFeature1/CCFeature1.h: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature1.h 3 | // CCFeature1 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for CCFeature1. 12 | FOUNDATION_EXPORT double CCFeature1VersionNumber; 13 | 14 | //! Project version string for CCFeature1. 15 | FOUNDATION_EXPORT const unsigned char CCFeature1VersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature1/CCFeature1/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature1/CCFeature1Tests/CCFeature1Tests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature1Tests.swift 3 | // CCFeature1Tests 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import CCFeature1 11 | 12 | class CCFeature1Tests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /CCFeature0/CCFeature1/CCFeature1Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /CCFeature1/CCFeature1.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCFeature1.xcscheme 8 | 9 | orderHint 10 | 14 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCFeature1/CCFeature1.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCFeature1.xcscheme 8 | 9 | orderHint 10 | 14 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCFeature1/CCFeature1/CCFeature1.h: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature1.h 3 | // CCFeature1 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for CCFeature1. 12 | FOUNDATION_EXPORT double CCFeature1VersionNumber; 13 | 14 | //! Project version string for CCFeature1. 15 | FOUNDATION_EXPORT const unsigned char CCFeature1VersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /CCFeature1/CCFeature1/CCFeature1Flow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature1Flow.swift 3 | // CCFeature1 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import CCCore 11 | 12 | public class CCFeature1Flow: Flow, MainF1VCDelegate { 13 | 14 | public var finish: (Flow) -> () = { _ in } 15 | public var services: Services 16 | public var navigation: UINavigationController? 17 | 18 | public required init(services: Services, navigationVC: UINavigationController?) { 19 | self.services = services 20 | self.navigation = navigationVC 21 | } 22 | 23 | public func start() { 24 | presentFeature1() 25 | } 26 | 27 | private func presentFeature1() { 28 | let vc = MainF1VC(services: self.services) 29 | vc.delegate = self 30 | self.navigation?.pushViewController(vc, animated: true) 31 | } 32 | 33 | func wantsToGoBack(at vc: MainF1VC) { 34 | vc.dismiss(animated: true, completion: nil) 35 | finish(self) 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /CCFeature1/CCFeature1/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CCFeature1/CCFeature1/MainFeature1.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainFeature1.swift 3 | // CCFeature1 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import SnapKit 11 | import SkyFloatingLabelTextField 12 | import CCCore 13 | 14 | protocol MainF1VCDelegate: class { 15 | func wantsToGoBack(at vc: MainF1VC) 16 | } 17 | 18 | class MainF1VC: CCBaseVC { 19 | 20 | weak var delegate: MainF1VCDelegate? 21 | let textfield = SkyFloatingLabelTextField() 22 | let label = UILabel() 23 | 24 | override func viewDidLoad() { 25 | super.viewDidLoad() 26 | initView() 27 | } 28 | 29 | override func loadView() { 30 | self.view = UIView() 31 | self.view.backgroundColor = .blue 32 | } 33 | 34 | private func initView() { 35 | let label = UILabel() 36 | label.text = "CCFeature1" 37 | label.textAlignment = .left 38 | self.view.addSubview(label) 39 | label.snp.makeConstraints { (make) in 40 | make.width.equalTo(150) 41 | make.height.equalTo(30) 42 | make.center.equalTo(self.view) 43 | } 44 | 45 | self.view.addSubview(textfield) 46 | textfield.snp.makeConstraints { (make) in 47 | make.width.height.equalTo(label) 48 | make.top.equalTo(label.snp.bottom).offset(10) 49 | make.centerX.equalTo(label) 50 | } 51 | } 52 | 53 | @objc func didClickClose() { 54 | delegate?.wantsToGoBack(at: self) 55 | } 56 | 57 | override func didMove(toParentViewController parent: UIViewController?) { 58 | if parent == nil { 59 | self.delegate?.wantsToGoBack(at: self) 60 | } 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /CCFeature1/CCFeature1Tests/CCFeature1Tests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature1Tests.swift 3 | // CCFeature1Tests 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import CCFeature1 11 | 12 | class CCFeature1Tests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /CCFeature1/CCFeature1Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2.xcodeproj/xcuserdata/ccermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCFeature2.xcscheme 8 | 9 | orderHint 10 | 15 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2.xcodeproj/xcuserdata/cyrilcermak.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | CCFeature2.xcscheme 8 | 9 | orderHint 10 | 15 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2/CCFeature2.h: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature2.h 3 | // CCFeature2 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for CCFeature2. 12 | FOUNDATION_EXPORT double CCFeature2VersionNumber; 13 | 14 | //! Project version string for CCFeature2. 15 | FOUNDATION_EXPORT const unsigned char CCFeature2VersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2/CCFeature2Flow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature1Flow.swift 3 | // CCFeature1 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import CCCore 11 | 12 | public class CCFeature2Flow: Flow { 13 | 14 | public var finish: (Flow) -> () = { _ in } 15 | public var services: Services 16 | public var navigation: UINavigationController? 17 | 18 | public required init(services: Services, navigationVC: UINavigationController?) { 19 | self.services = services 20 | self.navigation = navigationVC 21 | } 22 | 23 | public func start() { 24 | presentFeature2() 25 | } 26 | 27 | private func presentFeature2() { 28 | let vc = MainF2VC(services: self.services) 29 | vc.delegate = self 30 | self.navigation?.pushViewController(vc, animated: true) 31 | } 32 | } 33 | 34 | extension CCFeature2Flow: MainF2VCDelegate { 35 | func wantsToGoBack(at vc: MainF2VC) { 36 | finish(self) 37 | } 38 | 39 | func wantsToPresent(at vc: MainF2VC) { 40 | let modalVC = ModalFeatureVC(services: self.services) 41 | modalVC.delegate = self 42 | self.navigation?.present(UINavigationController(rootViewController: modalVC), animated: true, completion: nil) 43 | } 44 | } 45 | 46 | extension CCFeature2Flow: ModalFeatureVCDelegate { 47 | func wantsToClose(at vc: ModalFeatureVC) { 48 | vc.dismiss(animated: true, completion: nil) 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2/MainFeature2.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainFeature1.swift 3 | // CCFeature1 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import SnapKit 11 | import RxSwift 12 | import RxCocoa 13 | import CCComponents 14 | import CCCore 15 | 16 | protocol MainF2VCDelegate: class { 17 | func wantsToGoBack(at vc: MainF2VC) 18 | func wantsToPresent(at vc: MainF2VC) 19 | } 20 | 21 | class MainF2VC: CCBaseVC { 22 | 23 | weak var delegate: MainF2VCDelegate? 24 | 25 | let disposeBag = DisposeBag() 26 | let presentMeBtn = CCBaseButton() 27 | let label = UILabel() 28 | 29 | override func viewDidLoad() { 30 | super.viewDidLoad() 31 | initView() 32 | } 33 | 34 | override func loadView() { 35 | self.view = UIView() 36 | self.view.backgroundColor = .yellow 37 | } 38 | 39 | private func initView() { 40 | label.text = "CCFeature2" 41 | label.textAlignment = .center 42 | self.view.addSubview(label) 43 | label.snp.makeConstraints { (make) in 44 | make.width.equalTo(150) 45 | make.height.equalTo(30) 46 | make.center.equalTo(self.view) 47 | } 48 | 49 | self.view.addSubview(presentMeBtn) 50 | presentMeBtn.setTitle("Present Me!", for: .normal) 51 | presentMeBtn.rx.tap.subscribe(onNext: { [weak self] _ in 52 | guard let `self` = self else { return } 53 | self.delegate?.wantsToPresent(at: self) 54 | 55 | } ).disposed(by: disposeBag) 56 | presentMeBtn.snp.makeConstraints { (make) in 57 | make.width.height.equalTo(label) 58 | make.centerX.equalTo(label) 59 | make.top.equalTo(label.snp.bottom).offset(10) 60 | } 61 | 62 | } 63 | 64 | override func didMove(toParentViewController parent: UIViewController?) { 65 | if parent == nil { 66 | self.delegate?.wantsToGoBack(at: self) 67 | } 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2/ModalFeature2VC.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MainF0VC.swift 3 | // CCFeature0 4 | // 5 | // Created by Cyril Cermak on 5/3/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import CCCore 11 | import SnapKit 12 | 13 | protocol ModalFeatureVCDelegate: class { 14 | func wantsToClose(at vc: ModalFeatureVC) 15 | } 16 | 17 | class ModalFeatureVC: CCBaseVC { 18 | 19 | weak var delegate: ModalFeatureVCDelegate? 20 | 21 | override func viewDidLoad() { 22 | super.viewDidLoad() 23 | initView() 24 | } 25 | 26 | override func loadView() { 27 | self.view = UIView() 28 | self.view.backgroundColor = .red 29 | } 30 | 31 | private func initView() { 32 | let label = UILabel() 33 | label.text = "Modal" 34 | label.textAlignment = .center 35 | self.view.addSubview(label) 36 | label.snp.makeConstraints { (make) in 37 | make.width.equalTo(150) 38 | make.height.equalTo(30) 39 | make.center.equalTo(self.view) 40 | } 41 | let rightBarButton = UIBarButtonItem(title: "Close", style: .done, target: self, action: #selector(self.didClickClose)) 42 | self.navigationItem.rightBarButtonItem = rightBarButton 43 | } 44 | 45 | @objc func didClickClose() { 46 | delegate?.wantsToClose(at: self) 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2Tests/CCFeature2Tests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CCFeature2Tests.swift 3 | // CCFeature2Tests 4 | // 5 | // Created by Cyril Cermak on 20/2/18. 6 | // Copyright © 2018 CyrilCermak. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | @testable import CCFeature2 11 | 12 | class CCFeature2Tests: XCTestCase { 13 | 14 | override func setUp() { 15 | super.setUp() 16 | // Put setup code here. This method is called before the invocation of each test method in the class. 17 | } 18 | 19 | override func tearDown() { 20 | // Put teardown code here. This method is called after the invocation of each test method in the class. 21 | super.tearDown() 22 | } 23 | 24 | func testExample() { 25 | // This is an example of a functional test case. 26 | // Use XCTAssert and related functions to verify your tests produce the correct results. 27 | } 28 | 29 | func testPerformanceExample() { 30 | // This is an example of a performance test case. 31 | self.measure { 32 | // Put the code you want to measure the time of here. 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /CCFeature2/CCFeature2Tests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Carthage/Cartfile: -------------------------------------------------------------------------------- 1 | github "ReactiveX/RxSwift" ~> 4.0 2 | -------------------------------------------------------------------------------- /Carthage/Cartfile.resolved: -------------------------------------------------------------------------------- 1 | github "ReactiveX/RxSwift" "4.1.2" 2 | -------------------------------------------------------------------------------- /Carthage/Carthage/Build/.RxSwift.version: -------------------------------------------------------------------------------- 1 | { 2 | "Mac" : [ 3 | { 4 | "name" : "RxTest", 5 | "hash" : "d7f1f44220136d57a3f56c758e337b886e3ea5bf70d77598d06c6ce8f0aa3098" 6 | }, 7 | { 8 | "name" : "RxCocoa", 9 | "hash" : "7b3d467d794a18f262c47edac5f108f18b3cebf3b9fca8ba64bded6c21e31a33" 10 | }, 11 | { 12 | "name" : "RxBlocking", 13 | "hash" : "bdfe7f4aad5aa092ce541a8aedfb49d29fb7b6f2e62ab18ee2368880be1e278a" 14 | }, 15 | { 16 | "name" : "RxSwift", 17 | "hash" : "9dd5bad22e9f39acc8f8f8f19491c34c126a4a96595f938f4148b288318024af" 18 | } 19 | ], 20 | "watchOS" : [ 21 | { 22 | "name" : "RxBlocking", 23 | "hash" : "ef81c1d1c02e913a92f22dc929ba9d6f8f3831e105834ca938d7a43ff91f96f6" 24 | }, 25 | { 26 | "name" : "RxCocoa", 27 | "hash" : "50c27e49ef3383c4121651fe567cb0148b02ba38e60d5da08ec7c5d8fa9a5c28" 28 | }, 29 | { 30 | "name" : "RxSwift", 31 | "hash" : "60ea8dbb1609e804712cad3f00ac6a7ad11bea2cbfab4433ecee8093e99c1961" 32 | } 33 | ], 34 | "tvOS" : [ 35 | { 36 | "name" : "RxBlocking", 37 | "hash" : "41f5c65c058f618189c9138af97b318d8a9be1cef57dc95dc76d35691fb3adfd" 38 | }, 39 | { 40 | "name" : "RxTest", 41 | "hash" : "72e18213d9f5be35cf0617802e7ca5649e135147e724493d5eab1fa467777fbe" 42 | }, 43 | { 44 | "name" : "RxCocoa", 45 | "hash" : "314e7df9d6768ab4ecb9f88e2af5ec31b1674808ebb0fb87b8475f2c4ef5a7f6" 46 | }, 47 | { 48 | "name" : "RxSwift", 49 | "hash" : "cca56bd95474ed99eb90eadc4db2cba5df9031a66c9e0e87839c48f5e38cca63" 50 | } 51 | ], 52 | "commitish" : "4.1.2", 53 | "iOS" : [ 54 | { 55 | "name" : "RxTest", 56 | "hash" : "40a38ccfd978e4c8986847f5c484780304250e06300cf939dc3f47721aa5eafa" 57 | }, 58 | { 59 | "name" : "RxBlocking", 60 | "hash" : "83a0819fdb3780ad519ca4a5b809a045056bbe7e1389e18261efecc85f71cff5" 61 | }, 62 | { 63 | "name" : "RxCocoa", 64 | "hash" : "d00789b943e390fb64e1ca6651545ee55cdf9fc49fac97668003b03c07851e6d" 65 | }, 66 | { 67 | "name" : "RxSwift", 68 | "hash" : "b18004c878d64cc36b2e64f3895b35eaf67fd1b82cfff47d81731afd76532341" 69 | } 70 | ] 71 | } -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Headers/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Headers/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface _RXDelegateProxy : NSObject 14 | 15 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 16 | 17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ; 18 | 19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 20 | -(BOOL)voidDelegateMethodsContain:(SEL)selector; 21 | 22 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments; 23 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Headers/_RXKVOObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | ################################################################################ 13 | This file is part of RX private API 14 | ################################################################################ 15 | */ 16 | 17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process 18 | @interface _RXKVOObserver : NSObject 19 | 20 | -(instancetype)initWithTarget:(id)target 21 | retainTarget:(BOOL)retainTarget 22 | keyPath:(NSString*)keyPath 23 | options:(NSKeyValueObservingOptions)options 24 | callback:(void (^)(id))callback; 25 | 26 | -(void)dispose; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Info.plist -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/arm.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/arm.swiftdoc -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/arm.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/arm.swiftmodule -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/arm64.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/arm64.swiftdoc -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/arm64.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/arm64.swiftmodule -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/i386.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/i386.swiftdoc -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/i386.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/i386.swiftmodule -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/x86_64.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/x86_64.swiftdoc -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/x86_64.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/RxCocoa.swiftmodule/x86_64.swiftmodule -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | 8 | module RxCocoa.Swift { 9 | header "RxCocoa-Swift.h" 10 | requires objc 11 | } 12 | -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxCocoa.framework/RxCocoa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxCocoa.framework/RxCocoa -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Info.plist -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm.swiftdoc -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm.swiftmodule -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm64.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm64.swiftdoc -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm64.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/arm64.swiftmodule -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/i386.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/i386.swiftdoc -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/i386.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/i386.swiftmodule -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/x86_64.swiftdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/x86_64.swiftdoc -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/x86_64.swiftmodule: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/RxSwift.swiftmodule/x86_64.swiftmodule -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/Modules/module.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | header "RxSwift-Swift.h" 3 | requires objc 4 | } 5 | -------------------------------------------------------------------------------- /Carthage/Carthage/Build/iOS/RxSwift.framework/RxSwift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/freelancer/ios-modular-architecture/4d0591e2258c4d7fa88518f0ca63a85bd1816063/Carthage/Carthage/Build/iOS/RxSwift.framework/RxSwift -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # iOS Modular Architecture 2 | 3 | This repo is an example of a modular iOS architecture. It shows how to use Cocoa Touch Framework as a separate app module and how to use CocoaPods for multiple targets from different frameworks. 4 | 5 | The demo app uses CocoaPods and Carthage to link 3rd party dependencies. The repo has two already built libraries by Carthage so you do not have to run the Carthage command to install those libraries. However, it might be necessary to update them if you are running a different version of Swift. The app was created with Swift 4.1 and Xcode 9.4. 6 | 7 | This project was created as a demonstration of the modular architecture for this article: 8 | 9 | https://medium.com/freelancer-engineering/modular-architecture-on-ios-and-how-i-decreased-build-time-by-50-23c7666c6d2f 10 | --------------------------------------------------------------------------------