Browse Source

去掉无用的颜色选择器

100Years 2 months ago
parent
commit
69b5aef952
60 changed files with 432 additions and 5764 deletions
  1. 1 1
      Girly/Business/Light/VC/View/TSLightSolidColorToolView.swift
  2. 0 1
      Podfile
  3. 1 9
      Podfile.lock
  4. 0 19
      Pods/IGColorPicker/IGColorPicker/Classes/DefaultValues.swift
  5. 0 50
      Pods/IGColorPicker/IGColorPicker/Classes/Extension/UIColor+Extension.swift
  6. 0 19
      Pods/IGColorPicker/IGColorPicker/Classes/Protocol/ColorPickerViewDelegate.swift
  7. 0 22
      Pods/IGColorPicker/IGColorPicker/Classes/Protocol/ColorPickerViewDelegateFlowLayout.swift
  8. 0 59
      Pods/IGColorPicker/IGColorPicker/Classes/View/ColorPickerCell.swift
  9. 0 240
      Pods/IGColorPicker/IGColorPicker/Classes/View/ColorPickerView.swift
  10. 0 19
      Pods/IGColorPicker/LICENSE
  11. 0 209
      Pods/IGColorPicker/README.md
  12. 0 21
      Pods/M13Checkbox/LICENSE
  13. 0 227
      Pods/M13Checkbox/Readme.md
  14. 0 25
      Pods/M13Checkbox/Sources/DefaultValues.swift
  15. 0 74
      Pods/M13Checkbox/Sources/M13Checkbox+IB.swift
  16. 0 520
      Pods/M13Checkbox/Sources/M13Checkbox.swift
  17. 0 191
      Pods/M13Checkbox/Sources/M13CheckboxAnimationGenerator.swift
  18. 0 158
      Pods/M13Checkbox/Sources/M13CheckboxController.swift
  19. 0 37
      Pods/M13Checkbox/Sources/M13CheckboxGestureRecognizer.swift
  20. 0 250
      Pods/M13Checkbox/Sources/Managers/M13CheckboxBounceController.swift
  21. 0 253
      Pods/M13Checkbox/Sources/Managers/M13CheckboxDotController.swift
  22. 0 243
      Pods/M13Checkbox/Sources/Managers/M13CheckboxExpandController.swift
  23. 0 240
      Pods/M13Checkbox/Sources/Managers/M13CheckboxFadeController.swift
  24. 0 210
      Pods/M13Checkbox/Sources/Managers/M13CheckboxFillController.swift
  25. 0 259
      Pods/M13Checkbox/Sources/Managers/M13CheckboxFlatController.swift
  26. 0 266
      Pods/M13Checkbox/Sources/Managers/M13CheckboxSpiralController.swift
  27. 0 213
      Pods/M13Checkbox/Sources/Managers/M13CheckboxStrokeController.swift
  28. 0 165
      Pods/M13Checkbox/Sources/Paths/M13CheckboxAddRemovePathGenerator.swift
  29. 0 323
      Pods/M13Checkbox/Sources/Paths/M13CheckboxCheckPathGenerator.swift
  30. 0 174
      Pods/M13Checkbox/Sources/Paths/M13CheckboxDisclosurePathGenerator.swift
  31. 0 252
      Pods/M13Checkbox/Sources/Paths/M13CheckboxPathGenerator.swift
  32. 0 51
      Pods/M13Checkbox/Sources/Paths/M13CheckboxRadioPathGenerator.swift
  33. 1 9
      Pods/Manifest.lock
  34. 419 533
      Pods/Pods.xcodeproj/project.pbxproj
  35. 0 58
      Pods/Pods.xcodeproj/xcuserdata/100years.xcuserdatad/xcschemes/IGColorPicker.xcscheme
  36. 0 58
      Pods/Pods.xcodeproj/xcuserdata/100years.xcuserdatad/xcschemes/M13Checkbox.xcscheme
  37. 0 10
      Pods/Pods.xcodeproj/xcuserdata/100years.xcuserdatad/xcschemes/xcschememanagement.plist
  38. 0 26
      Pods/Target Support Files/IGColorPicker/IGColorPicker-Info.plist
  39. 0 5
      Pods/Target Support Files/IGColorPicker/IGColorPicker-dummy.m
  40. 0 12
      Pods/Target Support Files/IGColorPicker/IGColorPicker-prefix.pch
  41. 0 16
      Pods/Target Support Files/IGColorPicker/IGColorPicker-umbrella.h
  42. 0 16
      Pods/Target Support Files/IGColorPicker/IGColorPicker.debug.xcconfig
  43. 0 6
      Pods/Target Support Files/IGColorPicker/IGColorPicker.modulemap
  44. 0 16
      Pods/Target Support Files/IGColorPicker/IGColorPicker.release.xcconfig
  45. 0 26
      Pods/Target Support Files/M13Checkbox/M13Checkbox-Info.plist
  46. 0 5
      Pods/Target Support Files/M13Checkbox/M13Checkbox-dummy.m
  47. 0 12
      Pods/Target Support Files/M13Checkbox/M13Checkbox-prefix.pch
  48. 0 16
      Pods/Target Support Files/M13Checkbox/M13Checkbox-umbrella.h
  49. 0 15
      Pods/Target Support Files/M13Checkbox/M13Checkbox.debug.xcconfig
  50. 0 6
      Pods/Target Support Files/M13Checkbox/M13Checkbox.modulemap
  51. 0 15
      Pods/Target Support Files/M13Checkbox/M13Checkbox.release.xcconfig
  52. 0 35
      Pods/Target Support Files/Pods-Girly/Pods-Girly-acknowledgements.markdown
  53. 0 47
      Pods/Target Support Files/Pods-Girly/Pods-Girly-acknowledgements.plist
  54. 0 2
      Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks-Debug-input-files.xcfilelist
  55. 0 2
      Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks-Debug-output-files.xcfilelist
  56. 0 2
      Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks-Release-input-files.xcfilelist
  57. 0 2
      Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks-Release-output-files.xcfilelist
  58. 0 4
      Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks.sh
  59. 5 5
      Pods/Target Support Files/Pods-Girly/Pods-Girly.debug.xcconfig
  60. 5 5
      Pods/Target Support Files/Pods-Girly/Pods-Girly.release.xcconfig

+ 1 - 1
Girly/Business/Light/VC/View/TSLightSolidColorToolView.swift

@@ -5,7 +5,7 @@
 //  Created by 100Years on 2025/1/7.
 //
 
-import IGColorPicker
+
 class TSLightSolidColorToolView: TSBaseView {
     
     lazy var colorSlider: ColorSlider = {

+ 0 - 1
Podfile

@@ -13,7 +13,6 @@ target 'Girly' do
   pod 'SnapKit'
   pod 'JXSegmentedView'
   pod 'MultiSlider'
-  pod 'IGColorPicker'
 end
 
 

+ 1 - 9
Podfile.lock

@@ -1,8 +1,5 @@
 PODS:
-  - IGColorPicker (0.4.3):
-    - M13Checkbox
   - JXSegmentedView (1.4.1)
-  - M13Checkbox (3.4.0)
   - MultiSlider (2.2.0):
     - SweeterSwift
   - ObjectMapper (4.2.0)
@@ -10,7 +7,6 @@ PODS:
   - SweeterSwift (1.2.6)
 
 DEPENDENCIES:
-  - IGColorPicker
   - JXSegmentedView
   - MultiSlider
   - ObjectMapper (= 4.2)
@@ -18,23 +14,19 @@ DEPENDENCIES:
 
 SPEC REPOS:
   trunk:
-    - IGColorPicker
     - JXSegmentedView
-    - M13Checkbox
     - MultiSlider
     - ObjectMapper
     - SnapKit
     - SweeterSwift
 
 SPEC CHECKSUMS:
-  IGColorPicker: f6034f8629aa90cce308a76ecc0fdf2afed0bf34
   JXSegmentedView: cd73555ce2134d1656db2cb383ba9c2f36fb5078
-  M13Checkbox: 6f59404540ac98ba83a3d1afac335895a40c6a5d
   MultiSlider: 9667217199a051fa729bf54986d68fb9b911554c
   ObjectMapper: 1eb41f610210777375fa806bf161dc39fb832b81
   SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
   SweeterSwift: 1eca266517c703d7376e723a21926f5cb2ba4d0f
 
-PODFILE CHECKSUM: 080865651d35ec54f360205b568ccfaff6d7dc29
+PODFILE CHECKSUM: 8578d703dcc5fa873c09da7ea2c738e16da0e2ca
 
 COCOAPODS: 1.16.2

+ 0 - 19
Pods/IGColorPicker/IGColorPicker/Classes/DefaultValues.swift

@@ -1,19 +0,0 @@
-//
-// Copyright (c) 2017 iGenius Srl
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-import Foundation
-
-struct DefaultValues {
-    
-    static let cellSize: CGSize = CGSize(width: 48, height: 48)
-    static let insets: UIEdgeInsets = UIEdgeInsets(top: 16, left: 16, bottom: 16, right: 16)
-    static let minimumLineSpacingForSectionAt: CGFloat = 0
-    static let minimumInteritemSpacingForSectionAt: CGFloat = 0
-}

+ 0 - 50
Pods/IGColorPicker/IGColorPicker/Classes/Extension/UIColor+Extension.swift

@@ -1,50 +0,0 @@
-//
-// Copyright (c) 2017 iGenius Srl
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-import Foundation
-
-
-/// https://gist.github.com/gotev/76df9006674762859626846cf171ff80
-extension UIColor {
-    
-    var redValue: CGFloat{
-        return cgColor.components! [0]
-    }
-    
-    var greenValue: CGFloat{
-        return cgColor.components! [1]
-    }
-    
-    var blueValue: CGFloat{
-        return cgColor.components! [2]
-    }
-    
-    var alphaValue: CGFloat{
-        return cgColor.components! [3]
-    }
-    
-    var isWhiteText: Bool {
-        
-        // non-RGB color
-        if cgColor.numberOfComponents == 2 {
-            return 0.0...0.5 ~= cgColor.components!.first! ? true : false
-        }
-        
-        let red = self.redValue * 255
-        let green = self.greenValue * 255
-        let blue = self.blueValue * 255
-        
-        // https://en.wikipedia.org/wiki/YIQ
-        // https://24ways.org/2010/calculating-color-contrast/
-        let yiq = ((red * 299) + (green * 587) + (blue * 114)) / 1000
-        return yiq < 192
-    }
-    
-}

+ 0 - 19
Pods/IGColorPicker/IGColorPicker/Classes/Protocol/ColorPickerViewDelegate.swift

@@ -1,19 +0,0 @@
-//
-// Copyright (c) 2017 iGenius Srl
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-import Foundation
-
-@objc public protocol ColorPickerViewDelegate: class {
-    
-    func colorPickerView(_ colorPickerView: ColorPickerView, didSelectItemAt indexPath: IndexPath)
-    
-    @objc optional func colorPickerView(_ colorPickerView: ColorPickerView, didDeselectItemAt indexPath: IndexPath)
-    
-}

+ 0 - 22
Pods/IGColorPicker/IGColorPicker/Classes/Protocol/ColorPickerViewDelegateFlowLayout.swift

@@ -1,22 +0,0 @@
-//
-// Copyright (c) 2017 iGenius Srl
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-import Foundation
-
-@objc public protocol ColorPickerViewDelegateFlowLayout: class {
-    
-    @objc optional func colorPickerView(_ colorPickerView: ColorPickerView, sizeForItemAt indexPath: IndexPath) -> CGSize
-    
-    @objc optional func colorPickerView(_ colorPickerView: ColorPickerView, minimumLineSpacingForSectionAt section: Int) -> CGFloat
-    
-    @objc optional func colorPickerView(_ colorPickerView: ColorPickerView, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat
-    
-    @objc optional func colorPickerView(_ colorPickerView: ColorPickerView, insetForSectionAt section: Int) -> UIEdgeInsets
-}

+ 0 - 59
Pods/IGColorPicker/IGColorPicker/Classes/View/ColorPickerCell.swift

@@ -1,59 +0,0 @@
-//
-// Copyright (c) 2017 iGenius Srl
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-import UIKit
-import M13Checkbox
-
-class ColorPickerCell: UICollectionViewCell {
-    
-    // MARK: - Properties
-    
-    /// The reuse identifier used to register the UICollectionViewCell to the UICollectionView
-    static let cellIdentifier = String(describing: ColorPickerCell.self)
-    /// The checkbox use to show the tip on the cell
-    var checkbox = M13Checkbox()
-    
-    //MARK: - Initializer
-    
-    init() {
-        super.init(frame: CGRect.zero)
-        commonInit()
-    }
-    
-    override init(frame: CGRect) {
-        super.init(frame: frame)
-        commonInit()
-    }
-    
-    required init?(coder aDecoder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-    
-    // MARK: - Private methods
-    
-    fileprivate func commonInit() {
-        
-        // Setup of checkbox
-        checkbox.isUserInteractionEnabled = false
-        checkbox.backgroundColor = .clear
-        checkbox.hideBox = true
-        checkbox.setCheckState(.unchecked, animated: false)
-        
-        self.addSubview(checkbox)
-        
-        // Setup constraints to checkbox
-        checkbox.translatesAutoresizingMaskIntoConstraints = false
-        self.addConstraint(NSLayoutConstraint(item: checkbox, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1.0, constant: 0))
-        self.addConstraint(NSLayoutConstraint(item: checkbox, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1.0, constant: 0))
-        self.addConstraint(NSLayoutConstraint(item: checkbox, attribute: .bottom, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1.0, constant: 0))
-        self.addConstraint(NSLayoutConstraint(item: checkbox, attribute: .trailing, relatedBy: .equal, toItem: self, attribute: .trailing, multiplier: 1.0, constant: 0))
-    }
-    
-}

+ 0 - 240
Pods/IGColorPicker/IGColorPicker/Classes/View/ColorPickerView.swift

@@ -1,240 +0,0 @@
-//
-// Copyright (c) 2017 iGenius Srl
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-import UIKit
-
-public enum ColorPickerViewStyle {
-    case square
-    case circle
-}
-
-public enum ColorPickerViewSelectStyle {
-    case check
-    case none
-}
-
-open class ColorPickerView: UIView, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
-    
-    // MARK: - Open properties
-    
-    /// Array of UIColor you want to show in the color picker
-    open var colors: [UIColor] = [#colorLiteral(red: 1, green: 0.5411764706, blue: 0.5019607843, alpha: 1), #colorLiteral(red: 1, green: 0.09019607843, blue: 0.2666666667, alpha: 1), #colorLiteral(red: 0.8352941176, green: 0, blue: 0, alpha: 1),
-                                  #colorLiteral(red: 0.7254901961, green: 0.9647058824, blue: 0.7921568627, alpha: 1), #colorLiteral(red: 0, green: 0.9019607843, blue: 0.462745098, alpha: 1), #colorLiteral(red: 0, green: 0.7843137255, blue: 0.3254901961, alpha: 1),
-                                  #colorLiteral(red: 0.9176470588, green: 0.5019607843, blue: 0.9882352941, alpha: 1), #colorLiteral(red: 0.8352941176, green: 0, blue: 0.9764705882, alpha: 1), #colorLiteral(red: 0.6666666667, green: 0, blue: 1, alpha: 1),
-                                  #colorLiteral(red: 1, green: 1, blue: 0.5529411765, alpha: 1), #colorLiteral(red: 1, green: 0.9176470588, blue: 0, alpha: 1), #colorLiteral(red: 1, green: 0.8392156863, blue: 0, alpha: 1),
-                                  #colorLiteral(red: 0.7019607843, green: 0.5333333333, blue: 1, alpha: 1), #colorLiteral(red: 0.3960784314, green: 0.1215686275, blue: 1, alpha: 1), #colorLiteral(red: 0.3843137255, green: 0, blue: 0.9176470588, alpha: 1),
-                                  #colorLiteral(red: 1, green: 0.8196078431, blue: 0.5019607843, alpha: 1), #colorLiteral(red: 1, green: 0.568627451, blue: 0, alpha: 1), #colorLiteral(red: 1, green: 0.4274509804, blue: 0, alpha: 1),
-                                  #colorLiteral(red: 0.5490196078, green: 0.6196078431, blue: 1, alpha: 1), #colorLiteral(red: 0, green: 0.6901960784, blue: 1, alpha: 1), #colorLiteral(red: 0, green: 0.568627451, blue: 0.9176470588, alpha: 1),
-                                  #colorLiteral(red: 1, green: 0.6196078431, blue: 0.5019607843, alpha: 1), #colorLiteral(red: 1, green: 0.2392156863, blue: 0, alpha: 1), #colorLiteral(red: 0.8666666667, green: 0.1725490196, blue: 0, alpha: 1),
-                                  #colorLiteral(red: 0.5019607843, green: 0.8470588235, blue: 1, alpha: 1), #colorLiteral(red: 0, green: 0.6901960784, blue: 1, alpha: 1), #colorLiteral(red: 0, green: 0.568627451, blue: 0.9176470588, alpha: 1),
-                                  #colorLiteral(red: 0.737254902, green: 0.6666666667, blue: 0.6431372549, alpha: 1), #colorLiteral(red: 0.4745098039, green: 0.3333333333, blue: 0.2823529412, alpha: 1), #colorLiteral(red: 0.3058823529, green: 0.2039215686, blue: 0.1803921569, alpha: 1),
-                                  #colorLiteral(red: 0.5176470588, green: 1, blue: 1, alpha: 1), #colorLiteral(red: 0, green: 0.8980392157, blue: 1, alpha: 1), #colorLiteral(red: 0, green: 0.7215686275, blue: 0.831372549, alpha: 1),
-                                  #colorLiteral(red: 0.7411764706, green: 0.7411764706, blue: 0.7411764706, alpha: 1), #colorLiteral(red: 0.3803921569, green: 0.3803921569, blue: 0.3803921569, alpha: 1), #colorLiteral(red: 0.1294117647, green: 0.1294117647, blue: 0.1294117647, alpha: 1)] {
-        didSet {
-            if colors.isEmpty {
-                fatalError("ERROR ColorPickerView - You must set at least 1 color!")
-            }
-        }
-    }
-    /// The object that acts as the layout delegate for the color picker
-    open weak var layoutDelegate: ColorPickerViewDelegateFlowLayout?
-    /// The object that acts as the delegate for the color picker
-    open weak var delegate: ColorPickerViewDelegate?
-    /// The index of the selected color in the color picker 
-    open var indexOfSelectedColor: Int? {
-        return _indexOfSelectedColor
-    }
-    /// The index of the preselected color in the color picker
-    open var preselectedIndex: Int? {
-        didSet {
-            if let index = preselectedIndex {
-                
-                guard index >= 0, colors.indices.contains(index) else {
-                    print("ERROR ColorPickerView - preselectedItem out of colors range")
-                    return
-                }
-                
-                _indexOfSelectedColor = index
-                
-                collectionView.selectItem(at: IndexPath(item: index, section: 0), animated: false, scrollPosition: .centeredHorizontally)
-            }
-        }
-    }
-    /// If true, the selected color can be deselected by a tap
-    open var isSelectedColorTappable: Bool = true
-    /// If true, the preselectedIndex is showed in the center of the color picker
-    open var scrollToPreselectedIndex: Bool = false
-    /// Style of the color picker cells
-    open var style: ColorPickerViewStyle = .circle
-    /// Style applied when a color is selected
-    open var selectionStyle: ColorPickerViewSelectStyle = .check
-    
-    // MARK: - Private properties
-    
-    fileprivate var _indexOfSelectedColor: Int?
-    fileprivate lazy var collectionView: UICollectionView = {
-        
-        let layout = UICollectionViewFlowLayout()
-        layout.scrollDirection = .horizontal
-        
-        let collectionView = UICollectionView(frame: self.frame, collectionViewLayout: layout)
-        collectionView.delegate = self
-        collectionView.dataSource = self
-        collectionView.register(ColorPickerCell.self, forCellWithReuseIdentifier: ColorPickerCell.cellIdentifier)
-        collectionView.showsVerticalScrollIndicator = false
-        collectionView.showsHorizontalScrollIndicator = false
-        collectionView.allowsMultipleSelection = false
-        collectionView.backgroundColor = .clear
-        return collectionView
-    }()
-    
-    // MARK: - View management
-    
-    open override func layoutSubviews() {
-        self.addSubview(collectionView)
-        collectionView.translatesAutoresizingMaskIntoConstraints = false
-        
-        self.addConstraint(NSLayoutConstraint(item: collectionView, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1.0, constant: 0))
-        self.addConstraint(NSLayoutConstraint(item: collectionView, attribute: .leading, relatedBy: .equal, toItem: self, attribute: .leading, multiplier: 1.0, constant: 0))
-        self.addConstraint(NSLayoutConstraint(item: collectionView, attribute: .bottom, relatedBy: .equal, toItem: self, attribute: .bottom, multiplier: 1.0, constant: 0))
-        self.addConstraint(NSLayoutConstraint(item: collectionView, attribute: .trailing, relatedBy: .equal, toItem: self, attribute: .trailing, multiplier: 1.0, constant: 0))
-        
-        // Check on scrollToPreselectedIndex
-        if preselectedIndex != nil, !scrollToPreselectedIndex {
-            // Scroll to the first color
-            collectionView.scrollToItem(at: IndexPath(item: 0, section: 0), at: .top, animated: false)
-        }
-    }
-    
-    // MARK: - Private Methods
-    
-    private func _selectColor(at indexPath: IndexPath, animated: Bool) {
-        
-        guard let colorPickerCell = collectionView.cellForItem(at: indexPath) as? ColorPickerCell else { return }
-        
-        if indexPath.item == _indexOfSelectedColor, !isSelectedColorTappable {
-            return
-        }
-        
-        if selectionStyle == .check {
-            
-            if indexPath.item == _indexOfSelectedColor {
-                if isSelectedColorTappable {
-                    _indexOfSelectedColor = nil
-                    colorPickerCell.checkbox.setCheckState(.unchecked, animated: animated)
-                }
-                return
-            }
-            
-            _indexOfSelectedColor = indexPath.item
-            
-            colorPickerCell.checkbox.tintColor = colors[indexPath.item].isWhiteText ? .white : .black
-            colorPickerCell.checkbox.setCheckState((colorPickerCell.checkbox.checkState == .checked) ? .unchecked : .checked, animated: animated)
-            
-        }
-        
-        delegate?.colorPickerView(self, didSelectItemAt: indexPath)
-    
-    }
-    
-    // MARK: - Public Methods
-    
-    public func selectColor(at index: Int, animated: Bool) {
-        self._selectColor(at: IndexPath(row: index, section: 0),
-                          animated: animated)
-        
-    }
-    
-    
-    // MARK: - UICollectionViewDataSource
-    
-    public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
-        return colors.count
-    }
-    
-    public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
-        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: ColorPickerCell.cellIdentifier, for: indexPath) as! ColorPickerCell
-        
-        cell.backgroundColor = colors[indexPath.item]
-        
-        if style == .circle {
-            cell.layer.cornerRadius = cell.bounds.width / 2
-        }
-        
-        return cell
-    }
-    
-    // MARK: - UICollectionViewDelegate
-    
-    public func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
-        
-        let colorPickerCell = cell as! ColorPickerCell
-        
-        guard selectionStyle == .check else { return }
-        
-        guard indexPath.item == _indexOfSelectedColor else {
-            colorPickerCell.checkbox.setCheckState(.unchecked, animated: false)
-            return
-        }
-        
-        colorPickerCell.checkbox.tintColor = colors[indexPath.item].isWhiteText ? .white : .black
-        colorPickerCell.checkbox.setCheckState(.checked, animated: false)
-    }
-    
-    public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
-        self._selectColor(at: indexPath, animated: true)
-    }
-    
-    public func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
-        
-        // Check if the old color cell is showed. If true, it deselects it
-        guard let oldColorCell = collectionView.cellForItem(at: indexPath) as? ColorPickerCell else {
-            return
-        }
-        
-        if selectionStyle == .check {
-            oldColorCell.checkbox.setCheckState(.unchecked, animated: true)
-        }
-        
-        delegate?.colorPickerView?(self, didDeselectItemAt: indexPath)
-    }
-    
-    // MARK: - UICollectionViewDelegateFlowLayout
-    
-    public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
-        if let layoutDelegate = layoutDelegate,
-            let sizeForItemAt = layoutDelegate.colorPickerView?(self, sizeForItemAt: indexPath) {
-            return sizeForItemAt
-        }
-        return DefaultValues.cellSize
-    }
-    
-    public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
-        if let layoutDelegate = layoutDelegate, let minimumLineSpacingForSectionAt = layoutDelegate.colorPickerView?(self, minimumLineSpacingForSectionAt: section) {
-            return minimumLineSpacingForSectionAt
-        }
-        return DefaultValues.minimumLineSpacingForSectionAt
-    }
-    
-    public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
-        if let layoutDelegate = layoutDelegate, let minimumInteritemSpacingForSectionAt = layoutDelegate.colorPickerView?(self, minimumInteritemSpacingForSectionAt: section) {
-            return minimumInteritemSpacingForSectionAt
-        }
-        return DefaultValues.minimumInteritemSpacingForSectionAt
-    }
-    
-    public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
-        if let layoutDelegate = layoutDelegate, let insetForSectionAt = layoutDelegate.colorPickerView?(self, insetForSectionAt: section) {
-            return insetForSectionAt
-        }
-        return DefaultValues.insets
-    }
-    
-}

+ 0 - 19
Pods/IGColorPicker/LICENSE

@@ -1,19 +0,0 @@
-Copyright (c) 2017 iGenius Srl
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 209
Pods/IGColorPicker/README.md

@@ -1,209 +0,0 @@
-![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Logo.png "IGColorPicker")
-
-<p align="center">
-<img src="https://img.shields.io/badge/language-swift%205-orange.svg" alt="Language: Swift 5">
-<img src="https://img.shields.io/badge/license-MIT-000000.svg" alt="License: MIT">
-<img src="https://img.shields.io/badge/platform-iOS-blue.svg" alt="Platform: iOS">
-</p>
-
-IGColorPicker is a fantastic color picker 🎨 written in Swift. 
-
-![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/wall-examples.png "Examples")
-
-## Table of Contents
-* [**Documentation**](#documentation)
-  * [Colors](#colors)
-  * [Style](#style)
-  * [Other features](#other-features)
-* [**Installation**](#installation)
-  * [Example](#example)
-* [**Getting Started**](#getting-started)
-  * [ColorPickerView](#colorpickerview)
-  * [Delegate](#delegate)
-  * [Layout](#layout)
-* [**Project Details**](#project-details)
-  * [Requirements](#requirements)
-  * [Contributing](#contributing)
-  * [Author](#author)
-  * [License](#license)
-
-## Documentation
-### Colors
-The color picker comes with our set of colors:
-
-![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Palette.png "Color Palette")
-
-But if you don't like them, you are free to use your own colors 🖍:
-```swift
-
-colorPickerView.colors = [UIColor.red, UIColor.yellow, UIColor.green, UIColor.black]
-
-```
-
-### Style
-* **style** ```enum```: look and feel of color picker cells
-  * **circle**
-
-    ![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Circle.png "Circle style")
-
-  * **square**
-
-    ![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Square.png "Square style")
-
-* **selectionStyle** ```enum```: style applied when a color is selected
-  * **check**
-
-    ![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/Check.png "Check selection style")
-
-  * **none**
-
-    ![alt text](https://github.com/iGenius-Srl/IGColorPicker/blob/master/Resources/None.png "None selection style")
-
-### Other features
-* **preselectedIndex** ```Int?```: the index of the preselected color in the color picker
-
-* **isSelectedColorTappable** ```Bool```: if true, the selected color can be deselected by a tap
-
-* **scrollToPreselectedIndex** ```Bool```: if true, the preselectedIndex is showed in the center of the color picker
-
-
-## Installation
-
-IGColorPicker is available through [CocoaPods](http://cocoapods.org). To install
-it, simply add the following line to your `Podfile`:
-
-```ruby
-pod 'IGColorPicker'
-```
-### Example
-
-To run the example project, clone the repo, and run `pod install` from the Example directory first.
-
-## Getting Started
-### ColorPickerView
-
-`ColorPickerView` is just a class that inheritance from `UIView`, so you can both use a storyboard or you can create the color picker programmatically:
-
-#### Storyboard
-* Add a `UIView` to the storyboard. Go to the **Identity inspector** and in set its class to `ColorPickerView`.
-* Just drag and drop the view in the correct class  🤙🏻
-
-#### Programmatically
-Just initialize the color picker like one would initialize a `UIView`, and add it as a subview to your view hierarchy.
-
-```swift
-import IGColorPicker
-
-class ViewController {
-  var colorPickerView: ColorPickerView!
-
-  override func viewDidLoad() {
-    super.viewDidLoad()
-
-    colorPickerView = ColorPickerView(frame: CGRect(x: 0.0, y: 0.0, width: widthSize, height: heightSize))
-    view.addSubview(colorPickerView)
-  }
-
-}
-
-```
-
-### Delegate
-`ColorPickerViewDelegate` is the delegate protocol that recognizes the tap gesture on a color. This is an option delegate, but if you need to know when the user selects a color you should implement it.
-
-```swift
-
-// Set the delegate 🙋🏻‍♂️
-colorPickerView.delegate = self
-
-// MARK: - ColorPickerViewDelegate
-extension ViewController: ColorPickerViewDelegate {
-
-  func colorPickerView(_ colorPickerView: ColorPickerView, didSelectItemAt indexPath: IndexPath) {
-    // A color has been selected
-  }
-
-  // This is an optional method
-  func colorPickerView(_ colorPickerView: ColorPickerView, didDeselectItemAt indexPath: IndexPath) {
-    // A color has been deselected
-  }
-
-}
-
-```
-
-### Layout
-
-Every developer can customize the color picker layout in the way to fit with their design. To do that you have to implement our layout delegate `ColorPickerViewDelegateFlowLayout`
-
-```swift
-// Set the delegate 🙋🏻‍♂️
-colorPickerView.layoutDelegate = self
-
-// MARK: - ColorPickerViewDelegateFlowLayout
-extension ViewController: ColorPickerViewDelegateFlowLayout {
-
-  // ------------------------------------------------------------------
-  // All these methods are optionals, your are not to implement them 🖖🏻
-  // ------------------------------------------------------------------
-
-  func colorPickerView(_ colorPickerView: ColorPickerView, sizeForItemAt indexPath: IndexPath) -> CGSize {
-    // The size for each cell
-    // 👉🏻 WIDTH AND HEIGHT MUST BE EQUALS!
-  }
-
-  func colorPickerView(_ colorPickerView: ColorPickerView, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
-    // Space between cells
-  }
-
-  func colorPickerView(_ colorPickerView: ColorPickerView, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
-    // Space between rows
-  }
-
-  func colorPickerView(_ colorPickerView: ColorPickerView, insetForSectionAt section: Int) -> UIEdgeInsets {
-    // Inset used aroud the view
-  }
-
-}
-
-```
-
-## Project Details
-
-### Requirements
-* Swift 4.1
-* Xcode 9.0+
-* iOS 8.3+
-
-### Contributing
-Feel free to collaborate with ideas 💭 , issues ⁉️ and/or pull requests 🔃.
-
-Here is a list of ToDo about bug fix and new features you can work on:
-* Custom check size
-* Support to custom view in `ColorPickerViewSelectStyle`
-* Support custom style in `ColorPickerViewStyle`
-* Substitute `M13Checkbox` with another framework. Or just create a custom checkbox with animation
-
-**P.S.** If you use IGColorPicker in your app we would love to hear about it! 😉
-
-### License
-
-> Copyright (c) 2018 iGenius Srl
-
-> Permission is hereby granted, free of charge, to any person obtaining a copy
-> of this software and associated documentation files (the "Software"), to deal
-> in the Software without restriction, including without limitation the rights
-> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-> copies of the Software, and to permit persons to whom the Software is
-> furnished to do so, subject to the following conditions:
-
-> The above copyright notice and this permission notice shall be included in
-> all copies or substantial portions of the Software.
-
-> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-> THE SOFTWARE.

+ 0 - 21
Pods/M13Checkbox/LICENSE

@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 Brandon McQuilkin
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.

+ 0 - 227
Pods/M13Checkbox/Readme.md

@@ -1,227 +0,0 @@
-<br>
-
-![Banner](Resources/Banner.png)
-
-<br>
-
-Create beautiful, customizable, extendable, animated checkboxes on iOS. Completely configurable through interface builder. It has several built in animations, custom value support, a mixed state, checkmark and radio styles, circular and rounded rectangle box shapes, as well as full color customization. See the demo app to play with all the features. 
-
-## Table of Contents
-
-* [**Documentation**](#documentation) 
-    * [Animations](#animations)
-    * [Values](#values)
-    * [State](#state)
-    * [Appearance](#appearance)
-* [**Getting Started**](#getting-started)
-    * [Demo](#demo)
-        * [Playground](#playground)
-        * [App](#app)
-    * [Installation](#installation)
-    * [Use](#use)
-* [**Project Structure**](project-structure)
-* [**Project Details**](project-details)
-    * [Requirements](requirements)
-    * [Support](support)
-    * [Todo](todo)
-    * [License](license)
-
-## Documentation
-
-Check out the demo app to change the properties of the checkbox and see the changes in real time.
-
-### Animations
-
-- **Animation `enum`:** The possible animations for switching to and from the unchecked state.
-
-    - **Stroke:**
-    
-        ![Stroke Sample](Resources/Samples/Stroke%20Sample.gif)
-    - **Fill:**
-    
-        ![Fill Sample](Resources/Samples/Fill%20Sample.gif)
-    - **Bounce (Stroke):**
-    
-        ![Bounce Stroke Sample](Resources/Samples/Bounce%20Stroke%20Sample.gif)
-    - **Bounce (Fill):**
-    
-        ![Bounce Fill Sample](Resources/Samples/Bounce%20Fill%20Sample.gif)
-    - **Expand (Stroke):**
-    
-        ![Expand Stroke Sample](Resources/Samples/Expand%20Stroke%20Sample.gif)
-    - **Expand (Fill):**
-    
-        ![Expand Fill Sample](Resources/Samples/Expand%20Fill%20Sample.gif)
-    - **Flat (Stroke):**
-    
-        ![Flat Stroke Sample](Resources/Samples/Flat%20Stroke%20Sample.gif)
-    - **Flat (Fill):**
-    
-        ![Flat Fill Sample](Resources/Samples/Flat%20Fill%20Sample.gif)
-    - **Spiral:**
-    
-        ![Spiral Sample](Resources/Samples/Spiral%20Sample.gif)
-    - **Fade (Stroke):**
-    
-        ![Fade Stroke Sample](Resources/Samples/Fade%20Stroke%20Sample.gif)
-    - **Fade (Fill):**
-    
-        ![Fade Fill Sample](Resources/Samples/Fade%20Fill%20Sample.gif)
-    - **Dot (Stroke):**
-    
-        ![Dot Stroke Sample](Resources/Samples/Dot%20Stroke%20Sample.gif)
-    - **Dot (Fill):**
-    
-        ![Dot Fill Sample](Resources/Samples/Dot%20Fill%20Sample.gif)
-        
-- **stateChangeAnimation `Animation`:** The type of animation to preform when changing from the unchecked state to any other state.
-- **animationDuration `NSTimeInterval`:** The duration of the animation that occurs when the checkbox switches states. The default is 0.3 seconds.
-
-### Values
-    
-- **value `(Any)`:** Returns either the `checkedValue`, `uncheckedValue`, or `mixedValue` depending on the checkbox's state.
-- **checkedValue `Any`:** The object to return from `value` when the checkbox is checked.
-- **uncheckedValue `Any`:** The object to return from `value` when the checkbox is unchecked.
-- **mixedValue `Any`:** The object to return from `value` when the checkbox is mixed.
-
-### State
-
-- **CheckState `enum`:** The possible states the check can be in.
-    - `unchecked` — No check is shown.
-    - `checked` — A checkmark is shown.
-    - `mixed` — A dash is shown.
-- **checkState `CheckState`:** The current state of the checkbox.
-- **setCheckState(newState: `CheckState`, animated: `Bool`):** Change the check state with the option of animating the change.
-- **toggleCheckState(animated: `Bool` = false):** Toggle the check state between `Unchecked` and `Checked` states.
-
-### Appearance
-
-- **MarkType:** The possible shapes of the mark.
-    - `checkmark` — The mark is a standard checkmark.
-    - `radio` — The mark is a radio style fill.
-- **BoxType:** The possible shapes of the box.
-    - `circle` — The box is a circle.
-    - `square` — The box is square with optional rounded corners.
-- **tintColor:** The main color of the `Selected` and `Mixed` states for certain animations. 
-- **secondaryTintColor `UIColor`:** The color of the box in the unselected state.
-- **secondaryCheckmarkTintColor `UIColor`:** The color of the checkmark or radio for certain animations. (Mostly animations with a fill style.)
-- **checkmarkLineWidth `CGFloat`:** The line width of the checkmark.
-- **markType `MarkType`:** The type of mark to display.
-- **boxLineWidth `CGFloat`:** The line width of the box.
-- **cornerRadius `CGFloat`:** The corner radius of the box if the box type is `Square`.
-- **boxType `BoxType`:** The shape of the checkbox.
-- **hideBox `Bool`:** Wether or not to hide the box.
-
-<br>
-
-## Getting Started
-
-### Demo
-
-#### Playground
-
-To see a working playground in action, run the workspace located at path `M13Checkbox Demo Playground/LaunchMe.xcworkspace`. You may need to run the framework scheme and wait for Xcode to process the files, before the playground begins. Open the assistant editor for a live preview of the UI. 
-
-This is a great way to work on customizing the checkbox in code to suit your needs.
-
-#### App
-
-To see the checkbox working on a device, run the demo app included in `M13Checkbox.xcodeproj`. The demo app walks through all the available features. You will need to run a `pod install` in order to build the demo app.
-
-### Installation
-
-#### Cocoapods
-
-The easiest way to install M13Checkbox is through CocoaPods. Simplify add the following to your podfile.
-
-```
-pod 'M13Checkbox'
-```
-
-#### Carthage
-
-To install via Carthage, add the following to your cartfile:
-
-```
-github "Marxon13/M13Checkbox"
-```
-
-#### Swift Package Manager
-
-To install via Swift Package Manager, add the following as a dependency to your Package.swift file:
-
-```
-.Package(url: "git@github.com:Marxon13/M13Checkbox.git", versions: Version(2,2,0)..<Version(2,2,3)),
-```
-
-#### Manual
-
-Another option is to copy the files in the "Sources" folder to your project.
-
-### Use
-
-#### Storyboard
-
-Add a custom view to the storyboard and set its class to "M13Checkbox". Customize the available parameters in the attributes inspector as needed.
-
-**Note:** A shim was added to add support for setting enum properties through interface builder. Just retrieve the integer value corresponding to the enum value needed, and enter that into the property in the attributes inspector.
-
-#### Programmatically 
-
-Just initialize the checkbox like one would initialize a UIView, and add it as a subview to your view hierarchy. 
-
-```
-let checkbox = M13Checkbox(frame: CGRect(x: 0.0, y: 0.0, width: 40.0, height: 40.0))
-view.addSubview(checkbox)
-```
-
-<br>
-
-## Project Structure
-
-**M13Checkbox**
-The main interface for M13Checkbox is the `M13Checkbox` class. It is a subclass of `UIControl` and handles the configurable properties, as well as touch events. 
-
-**M13CheckboxController**
-Each `M13Checkbox` references an instance of `M13CheckboxController`, which controls the appearance and animations of its layers. The controller passes a set of layers to the `M13Checkbox`, which adds the layers to its layer hierarchy. The checkbox then asks the controller to perform the necessary animations on the layers to animate between states. Each animation type has its own subclass of `M13CheckboxController`. To add an animation, subclass `M13CheckboxController`, and add the animation type to the `Animation` enum, supporting `AnimationStyle` if applicable. Take a look at the existing controllers to see what variables and functions to override.
-
-**M13CheckboxAnimationGenerator**
-Each `M13CheckboxController` references an instance of `M13CheckboxAnimationGenerator`, which generates the animations that will be applied to layers during state transitions. The base class contains animations that are shared between multiple animation styles. An animation can subclass `M13CheckboxAnimationGenerator` to generate new animations specific to the animation type.
-
-**M13CheckboxPathGenerator**
-Each `M13CheckboxManager` references an instance of `M13CheckboxPathGenerator`, which generates the paths that will be displayed by the layers. The base class contains paths that are shared between multiple animation styles, as well as some boilerplate code to determine which path to use. Some animations have a subclass of `M13CheckboxPathGenerator` to add new paths specific to the animation type, or override existing paths to customize the look.
-
-`M13CheckboxPathGenerator` calculates the positions of the points of the checkmark with more than just a basic scaled offset. This allows the checkmark to always look the same, not matter what size the checkbox is. The math contained in the `checkmarkLongArmBoxIntersectionPoint` and `checkmarkLongArmEndPoint` are a simplified version of a human readable solution. To see the math that went into creating these equations, check out the "Math.nb" or the "Math.pdf" in the "Other" folder.
-
-**M13Checkbox+IB**
-A shim that gives the ability to set the enum values of `M13Checkbox` in Interface Builder.
-
-<br>
-
-## Project Details
-
-### Requirements
-
-- iOS 8+
-- Xcode 10.2+
-- Swift 5
-
-### Todo
-
-- Fix the animations between the checked and mixed states when the mark is a radio. When the circle is close to being flat, the left and right edges are not rounded, as well as render some artifacts. 
-- Add visual feedback for UIControl's selected state. So that when the checkbox is touched, it animates slightly towards the new state.
-- Add support for interrupting animations mid-animation. So that if the checkbox is tapped multiple times in quick succession, it animates from the current values, instead of resetting the checkbox and restarting the animations. This might involve replacing CAAnimations with manually done animations using a CADisplayLink. Or the new UIViewPropertyAnimator.
-- tvOS support.
-- watchOS support.
-- macOS support.
-- Checkbox cells (Re-add label support)
-- Checkbox groups (single / multiple selection)
-
-### License
-
-`M13Checkbox` is avaiable under [MIT Licence](https://github.com/Marxon13/M13Checkbox/blob/master/LICENSE).
-
-
-
-
-

+ 0 - 25
Pods/M13Checkbox/Sources/DefaultValues.swift

@@ -1,25 +0,0 @@
-//
-//  ConstantValues.swift
-//  M13Checkbox
-//
-//  Created by Andrea Antonioni on 30/07/17.
-//  Copyright © 2017 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import Foundation
-
-// A set of default values used to initialize the object
-struct DefaultValues {
-    
-    static let animation: M13Checkbox.Animation = .stroke
-    static let markType: M13Checkbox.MarkType = .checkmark
-    static let boxType: M13Checkbox.BoxType = .circle
-    static let checkState: M13Checkbox.CheckState = .unchecked
-    static let controller: M13CheckboxController = M13CheckboxStrokeController()
-    
-}

+ 0 - 74
Pods/M13Checkbox/Sources/M13Checkbox+IB.swift

@@ -1,74 +0,0 @@
-//
-//  M13Checkbox+IB.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 2/24/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-public extension M13Checkbox {
-    
-    /// A proxy to set the box type compatible with interface builder.
-    @IBInspectable var _IBStateChangeAnimation: String {
-        get {
-            return stateChangeAnimation.rawValue
-        }
-        set {
-            if let type = Animation(rawValue: newValue) {
-                stateChangeAnimation = type
-            } else {
-                stateChangeAnimation = DefaultValues.animation
-            }
-        }
-    }
-    
-    /// A proxy to set the mark type compatible with interface builder.
-    @IBInspectable var _IBMarkType: String {
-        get {
-            return markType.rawValue
-        }
-        set {
-            if let type = MarkType(rawValue: newValue) {
-                markType = type
-            } else {
-                markType = DefaultValues.markType
-            }
-        }
-    }
-    
-    /// A proxy to set the box type compatible with interface builder.
-    @IBInspectable var _IBBoxType: String {
-        get {
-            return boxType.rawValue
-        }
-        set {
-            if let type = BoxType(rawValue: newValue) {
-                boxType = type
-            } else {
-                boxType = DefaultValues.boxType
-            }
-        }
-    }
-    
-    /// A proxy to set the check state compatible with interface builder.
-    @IBInspectable var _IBCheckState: String {
-        get {
-            return checkState.rawValue
-        }
-        set {
-            if let temp = CheckState(rawValue: newValue) {
-                checkState = temp
-            } else {
-                checkState = DefaultValues.checkState
-            }
-        }
-    }
-    
-}

+ 0 - 520
Pods/M13Checkbox/Sources/M13Checkbox.swift

@@ -1,520 +0,0 @@
-//
-//  M13Checkbox.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 2/23/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-/// A customizable checkbox control for iOS.
-@IBDesignable
-open class M13Checkbox: UIControl {
-    
-    //----------------------------
-    // MARK: - Constants
-    //----------------------------
-    
-    /**
-    The possible states the check can be in.
-    
-    - Unchecked: No check is shown.
-    - Checked: A checkmark is shown.
-    - Mixed: A dash is shown.
-    */
-    public enum CheckState: String {
-        /// No check is shown.
-        case unchecked = "Unchecked"
-        /// A checkmark is shown.
-        case checked = "Checked"
-        /// A dash is shown.
-        case mixed = "Mixed"
-    }
-    
-    /**
-     The possible shapes of the box.
-     
-     - Square: The box is square with optional rounded corners.
-     - Circle: The box is a circle.
-     */
-    public enum BoxType: String {
-        /// The box is a circle.
-        case circle = "Circle"
-        /// The box is square with optional rounded corners.
-        case square = "Square"
-    }
-    
-    /**
-     The possible shapes of the mark.
-     
-     - Checkmark: The mark is a standard checkmark.
-     - Radio: The mark is a radio style fill.
-     */
-    public enum MarkType: String {
-        /// The mark is a standard checkmark.
-        case checkmark = "Checkmark"
-        /// The mark is a radio style fill.
-        case radio = "Radio"
-        /// The mark is an add/remove icon set.
-        case addRemove = "AddRemove"
-        /// The mark is a disclosure indicator.
-        case disclosure = "Disclosure"
-    }
-    
-    /**
-     The possible animations for switching to and from the unchecked state.
-     */
-    public enum Animation: RawRepresentable, Hashable {
-        /// Animates the stroke of the box and the check as if they were drawn.
-        case stroke
-        /// Animates the checkbox with a bouncey fill effect.
-        case fill
-        /// Animates the check mark with a bouncy effect.
-        case bounce(AnimationStyle)
-        /// Animates the checkmark and fills the box with a bouncy effect.
-        case expand(AnimationStyle)
-        /// Morphs the checkmark from a line.
-        case flat(AnimationStyle)
-        /// Animates the box and check as if they were drawn in one continuous line.
-        case spiral
-        /// Fades checkmark in or out. (opacity).
-        case fade(AnimationStyle)
-        /// Start the box as a dot, and expand the box.
-        case dot(AnimationStyle)
-        
-        public init?(rawValue: String) {
-            // Map the integer values to the animation types.
-            // This is only for interface builder support. I would like this to be removed eventually.
-            switch rawValue {
-            case "Stroke":
-                self = .stroke
-            case "Fill":
-                self = .fill
-            case "BounceStroke":
-                self = .bounce(.stroke)
-            case "BounceFill":
-                self = .bounce(.fill)
-            case "ExpandStroke":
-                self = .expand(.stroke)
-            case "ExpandFill":
-                self = .expand(.fill)
-            case "FlatStroke":
-                self = .flat(.stroke)
-            case "FlatFill":
-                self = .flat(.fill)
-            case "Spiral":
-                self = .spiral
-            case "FadeStroke":
-                self = .fade(.stroke)
-            case "FadeFill":
-                self = .fade(.fill)
-            case "DotStroke":
-                self = .dot(.stroke)
-            case "DotFill":
-                self = .dot(.fill)
-            default:
-                return nil
-            }
-        }
-        
-        public var rawValue: String {
-            // Map the animation types to integer values.
-            // This is only for interface builder support. I would like this to be removed eventually.
-            switch self {
-            case .stroke:
-                return "Stroke"
-            case .fill:
-                return "Fill"
-            case let .bounce(style):
-                switch style {
-                case .stroke:
-                    return "BounceStroke"
-                case .fill:
-                    return "BounceFill"
-                }
-            case let .expand(style):
-                switch style {
-                case .stroke:
-                    return "ExpandStroke"
-                case .fill:
-                    return "ExpandFill"
-                }
-            case let .flat(style):
-                switch style {
-                case .stroke:
-                    return "FlatStroke"
-                case .fill:
-                    return "FlatFill"
-                }
-            case .spiral:
-                return "Spiral"
-            case let .fade(style):
-                switch style {
-                case .stroke:
-                    return "FadeStroke"
-                case .fill:
-                    return "FadeFill"
-                }
-            case let .dot(style):
-                switch style {
-                case .stroke:
-                    return "DotStroke"
-                case .fill:
-                    return "DotFill"
-                }
-            }
-        }
-        
-        /// The manager for the specific animation type.
-        fileprivate var manager: M13CheckboxController {
-            switch self {
-            case .stroke:
-                return M13CheckboxStrokeController()
-            case .fill:
-                return M13CheckboxFillController()
-            case let .bounce(style):
-                return M13CheckboxBounceController(style: style)
-            case let .expand(style):
-                return M13CheckboxExpandController(style: style)
-            case let .flat(style):
-                return M13CheckboxFlatController(style: style)
-            case .spiral:
-                return M13CheckboxSpiralController()
-            case let .fade(style):
-                return M13CheckboxFadeController(style: style)
-            case let .dot(style):
-                return M13CheckboxDotController(style: style)
-            }
-        }
-        
-        public var hashValue: Int {
-            return self.rawValue.hashValue
-        }
-    }
-    
-    /**
-     The possible animation styles.
-     - Note: Not all animations support all styles.
-     */
-    public enum AnimationStyle: String {
-        // The animation will focus on the stroke.
-        case stroke = "Stroke"
-        // The animation will focus on the fill.
-        case fill = "Fill"
-    }
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    /// The manager that manages display and animations of the checkbox.
-    /// The default animation is a stroke.
-    fileprivate var controller: M13CheckboxController = M13CheckboxStrokeController()
-    
-    //----------------------------
-    // MARK: - Initalization
-    //----------------------------
-    
-    override public init(frame: CGRect) {
-        super.init(frame: frame)
-        sharedSetup()
-    }
-    
-    required public init?(coder aDecoder: NSCoder) {
-        super.init(coder: aDecoder)
-        sharedSetup()
-    }
-    
-    /// The setup shared between initalizers.
-    fileprivate func sharedSetup() {
-        // Set up the inital state.
-        for aLayer in controller.layersToDisplay {
-            layer.addSublayer(aLayer)
-        }
-        controller.tintColor = tintColor
-        controller.resetLayersForState(DefaultValues.checkState)
-        
-        let longPressGesture = M13CheckboxGestureRecognizer(target: self, action: #selector(M13Checkbox.handleLongPress(_:)))
-        addGestureRecognizer(longPressGesture)
-    }
-    
-    //----------------------------
-    // MARK: - Values
-    //----------------------------
-    
-    /// The object to return from `value` when the checkbox is checked.
-    open var checkedValue: Any?
-    
-    /// The object to return from `value` when the checkbox is unchecked.
-    open var uncheckedValue: Any?
-    
-    /// The object to return from `value` when the checkbox is mixed.
-    open var mixedValue: Any?
-    
-    /**
-     Returns one of the three "value" properties depending on the checkbox state.
-     - returns: The value coresponding to the checkbox state.
-     - note: This is a convenience method so that if one has a large group of checkboxes, it is not necessary to write: if (someCheckbox == thatCheckbox) { if (someCheckbox.checkState == ...
-     */
-    open var value: Any? {
-        switch checkState {
-        case .unchecked:
-            return uncheckedValue
-        case .checked:
-            return checkedValue
-        case .mixed:
-            return mixedValue
-        }
-    }
-    
-    //----------------------------
-    // MARK: - State
-    //----------------------------
-    
-    /// The current state of the checkbox.
-    open var checkState: CheckState {
-        get {
-            return controller.state
-        }
-        set {
-            setCheckState(newValue, animated: false)
-        }
-    }
-    
-    /**
-     Change the check state.
-     - parameter checkState: The new state of the checkbox.
-     - parameter animated: Whether or not to animate the change.
-     */
-    open func setCheckState(_ newState: CheckState, animated: Bool) {
-        if checkState == newState {
-            return
-        }
-        
-        if animated {
-            if enableMorphing {
-                controller.animate(checkState, toState: newState)
-            } else {
-                controller.animate(checkState, toState: nil, completion: { [weak self] in
-                    self?.controller.resetLayersForState(newState)
-                    self?.controller.animate(nil, toState: newState)
-                    })
-            }
-        } else {
-            controller.resetLayersForState(newState)
-        }
-    }
-    
-    /**
-     Toggle the check state between unchecked and checked.
-     - parameter animated: Whether or not to animate the change. Defaults to false.
-     - note: If the checkbox is mixed, it will return to the unchecked state.
-     */
-    open func toggleCheckState(_ animated: Bool = false) {
-        switch checkState {
-        case .checked:
-            setCheckState(.unchecked, animated: animated)
-            break
-        case .unchecked:
-            setCheckState(.checked, animated: animated)
-            break
-        case .mixed:
-            setCheckState(.unchecked, animated: animated)
-            break
-        }
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    /// The duration of the animation that occurs when the checkbox switches states. The default is 0.3 seconds.
-    @IBInspectable open var animationDuration: TimeInterval {
-        get {
-            return controller.animationGenerator.animationDuration
-        }
-        set {
-            controller.animationGenerator.animationDuration = newValue
-        }
-    }
-    
-    /// The type of animation to preform when changing from the unchecked state to any other state.
-    open var stateChangeAnimation: Animation = DefaultValues.animation {
-        didSet {
-            
-            // Remove the sublayers
-            if let layers = layer.sublayers {
-                for sublayer in layers {
-                    sublayer.removeAllAnimations()
-                    sublayer.removeFromSuperlayer()
-                }
-            }
-            
-            // Set the manager
-            let newManager = stateChangeAnimation.manager
-            
-            newManager.tintColor = tintColor
-            newManager.secondaryTintColor = secondaryTintColor
-            newManager.secondaryCheckmarkTintColor = secondaryCheckmarkTintColor
-            newManager.hideBox = hideBox
-            newManager.pathGenerator = controller.pathGenerator
-            newManager.animationGenerator.animationDuration = controller.animationGenerator.animationDuration
-            newManager.state = controller.state
-            newManager.enableMorphing = controller.enableMorphing
-            newManager.setMarkType(type: controller.markType, animated: false)
-            
-            // Set up the inital state.
-            for aLayer in newManager.layersToDisplay {
-                layer.addSublayer(aLayer)
-            }
-            
-            // Layout and reset
-            newManager.resetLayersForState(checkState)
-            controller = newManager
-
-        }
-    }
-    
-    /// Whether or not to enable morphing between states.
-    @IBInspectable open var enableMorphing: Bool {
-        get {
-            return controller.enableMorphing
-        }
-        set {
-            controller.enableMorphing = newValue
-        }
-    }
-    
-    //----------------------------
-    // MARK: - UIControl
-    //----------------------------
-    
-    @objc func handleLongPress(_ sender: UILongPressGestureRecognizer) {
-        if sender.state == .began || sender.state == .changed {
-            isSelected = true
-        } else {
-            isSelected = false
-            if sender.state == .ended {
-                toggleCheckState(true)
-                sendActions(for: .valueChanged)
-            }
-        }
-    }
-    
-    //----------------------------
-    // MARK: - Appearance
-    //----------------------------
-    
-    /// The color of the checkbox's tint color when not in the unselected state. The tint color is is the main color used when not in the unselected state.
-    @IBInspectable open var secondaryTintColor: UIColor? {
-        get {
-            return controller.secondaryTintColor
-        }
-        set {
-            controller.secondaryTintColor = newValue
-        }
-    }
-    
-    /// The color of the checkmark when it is displayed against a filled background.
-    @IBInspectable open var secondaryCheckmarkTintColor: UIColor? {
-        get {
-            return controller.secondaryCheckmarkTintColor
-        }
-        set {
-            controller.secondaryCheckmarkTintColor = newValue
-        }
-    }
-    
-    /// The stroke width of the checkmark.
-    @IBInspectable open var checkmarkLineWidth: CGFloat {
-        get {
-            return controller.pathGenerator.checkmarkLineWidth
-        }
-        set {
-            controller.pathGenerator.checkmarkLineWidth = newValue
-            controller.resetLayersForState(checkState)
-        }
-    }
-    
-    /// The type of mark to display.
-    open var markType: MarkType {
-        get {
-            return controller.markType
-        }
-        set {
-            controller.markType = newValue
-            setNeedsLayout()
-        }
-    }
-    
-    /// Set the mark type with the option of animating the change.
-    open func setMarkType(markType: MarkType, animated: Bool) {
-        controller.setMarkType(type: markType, animated: animated)
-    }
-    
-    /// The stroke width of the box.
-    @IBInspectable open var boxLineWidth: CGFloat {
-        get {
-            return controller.pathGenerator.boxLineWidth
-        }
-        set {
-            controller.pathGenerator.boxLineWidth = newValue
-            controller.resetLayersForState(checkState)
-        }
-    }
-    
-    /// The corner radius of the box if the box type is square.
-    @IBInspectable open var cornerRadius: CGFloat {
-        get {
-            return controller.pathGenerator.cornerRadius
-        }
-        set {
-            controller.pathGenerator.cornerRadius = newValue
-            setNeedsLayout()
-        }
-    }
-    
-    /// The shape of the checkbox.
-    open var boxType: BoxType {
-        get {
-            return controller.pathGenerator.boxType
-        }
-        set {
-            controller.pathGenerator.boxType = newValue
-            setNeedsLayout()
-        }
-    }
-    
-    /// Wether or not to hide the checkbox.
-    @IBInspectable open var hideBox: Bool {
-        get {
-            return controller.hideBox
-        }
-        set {
-            controller.hideBox = newValue
-        }
-    }
-    
-    open override func tintColorDidChange() {
-        super.tintColorDidChange()
-        controller.tintColor = tintColor
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    open override func layoutSubviews() {
-        super.layoutSubviews()
-        // Update size
-        controller.pathGenerator.size = min(frame.size.width, frame.size.height)
-        // Layout
-        controller.layoutLayers()
-    }
-}

+ 0 - 191
Pods/M13Checkbox/Sources/M13CheckboxAnimationGenerator.swift

@@ -1,191 +0,0 @@
-//
-//  M13CheckboxAnimationGenerator.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 3/27/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxAnimationGenerator {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    // The duration of animations that are generated by the animation manager.
-    var animationDuration: TimeInterval = 0.3
-    
-    // The frame rate for certian keyframe animations.
-    fileprivate var frameRate: CGFloat = 60.0
-    
-    //----------------------------
-    // MARK: - Quick Animations
-    //----------------------------
-    
-    final func quickAnimation(_ key: String, reverse: Bool) -> CABasicAnimation {
-        let animation = CABasicAnimation(keyPath: key)
-        // Set the start and end.
-        if !reverse {
-            animation.fromValue = 0.0
-            animation.toValue = 1.0
-            animation.timingFunction = CAMediaTimingFunction(name: .easeIn)
-        } else {
-            animation.fromValue = 1.0
-            animation.toValue = 0.0
-            animation.beginTime = CACurrentMediaTime() + (animationDuration * 0.9)
-            animation.timingFunction = CAMediaTimingFunction(name: .easeOut)
-        }
-        // Set animation properties.
-        animation.duration = animationDuration / 10.0
-        animation.isRemovedOnCompletion = false
-        animation.fillMode = CAMediaTimingFillMode.forwards
-        
-        return animation
-    }
-    
-    /**
-     Creates an animation that either quickly fades a layer in or out.
-     - note: Mainly used to smooth out the start and end of various animations.
-     - parameter reverse: The direction of the animation.
-     - returns: A `CABasicAnimation` that animates the opacity property.
-     */
-    final func quickOpacityAnimation(_ reverse: Bool) -> CABasicAnimation {
-        return quickAnimation("opacity", reverse: reverse)
-    }
-    
-    /**
-     Creates an animation that either quickly changes the line width of a layer from 0% to 100%.
-     - note: Mainly used to smooth out the start and end of various animations.
-     - parameter reverse: The direction of the animation.
-     - returns: A `CABasicAnimation` that animates the opacity property.
-     */
-    final func quickLineWidthAnimation(_ width: CGFloat, reverse: Bool) -> CABasicAnimation {
-        let animation = quickAnimation("lineWidth", reverse: reverse)
-        // Set the start and end.
-        if !reverse {
-            animation.toValue = width
-        } else {
-            animation.fromValue = width
-        }
-        return animation
-    }
-
-    //----------------------------
-    // MARK: - Animation Component Generation
-    //----------------------------
-    
-    final func animation(_ key: String, reverse: Bool) -> CABasicAnimation {
-        let animation = CABasicAnimation(keyPath: key)
-        // Set the start and end.
-        if !reverse {
-            animation.fromValue = 0.0
-            animation.toValue = 1.0
-        } else {
-            animation.fromValue = 1.0
-            animation.toValue = 0.0
-        }
-        // Set animation properties.
-        animation.duration = animationDuration
-        animation.isRemovedOnCompletion = false
-        animation.fillMode = CAMediaTimingFillMode.forwards
-        animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
-        
-        return animation
-    }
-    
-    /**
-     Creates an animation that animates the stroke property.
-     - parameter reverse: The direction of the animation.
-     - returns: A `CABasicAnimation` that animates the stroke property.
-     */
-    final func strokeAnimation(_ reverse: Bool) -> CABasicAnimation {
-        return animation("strokeEnd", reverse: reverse)
-    }
-    
-    /**
-     Creates an animation that animates the opacity property.
-     - parameter reverse: The direction of the animation.
-     - returns: A `CABasicAnimation` that animates the opacity property.
-     */
-    final func opacityAnimation(_ reverse: Bool) -> CABasicAnimation {
-        return animation("opacity", reverse: reverse)
-    }
-    
-    /**
-     Creates an animation that animates between two `UIBezierPath`s.
-     - parameter fromPath: The start path.
-     - parameter toPath: The end path.
-     - returns: A `CABasicAnimation` that animates a path between the `fromPath` and `toPath`.
-     */
-    final func morphAnimation(_ fromPath: UIBezierPath?, toPath: UIBezierPath?) -> CABasicAnimation {
-        let animation = CABasicAnimation(keyPath: "path")
-        // Set the start and end.
-        animation.fromValue = fromPath?.cgPath
-        animation.toValue = toPath?.cgPath
-        // Set animation properties.
-        animation.duration = animationDuration
-        animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
-        animation.fillMode = CAMediaTimingFillMode.forwards
-        animation.isRemovedOnCompletion = false
-        
-        return animation
-    }
-    
-    /**
-     Creates an animation that animates between a filled an unfilled box.
-     - parameter numberOfBounces: The number of bounces in the animation.
-     - parameter amplitude: The distance of the bounce.
-     - parameter reverse: The direction of the animation.
-     - returns: A `CAKeyframeAnimation` that animates a change in fill.
-     */
-    final func fillAnimation(_ numberOfBounces: Int, amplitude: CGFloat, reverse: Bool) -> CAKeyframeAnimation {
-        var values = [CATransform3D]()
-        var keyTimes = [Float]()
-        
-        // Add the start scale
-        if !reverse {
-            values.append(CATransform3DMakeScale(0.0, 0.0, 0.0))
-        } else {
-            values.append(CATransform3DMakeScale(1.0, 1.0, 1.0))
-        }
-        keyTimes.append(0.0)
-        
-        // Add the bounces.
-        if numberOfBounces > 0 {
-            for i in 1...numberOfBounces {
-                let scale = i % 2 == 1 ? (1.0 + (amplitude / CGFloat(i))) : (1.0 - (amplitude / CGFloat(i)))
-                let time = (Float(i) * 1.0) / Float(numberOfBounces + 1)
-                
-                values.append(CATransform3DMakeScale(scale, scale, scale))
-                keyTimes.append(time)
-            }
-        }
-        
-        // Add the end scale.
-        if !reverse {
-            values.append(CATransform3DMakeScale(1.0, 1.0, 1.0))
-        } else {
-            values.append(CATransform3DMakeScale(0.0001, 0.0001, 0.0001))
-        }
-        keyTimes.append(1.0)
-        
-        // Create the animation.
-        let animation = CAKeyframeAnimation(keyPath: "transform")
-        animation.values = values.map({ NSValue(caTransform3D: $0) })
-        animation.keyTimes = keyTimes.map({ NSNumber(value: $0 as Float) })
-        animation.isRemovedOnCompletion = false
-        animation.fillMode = CAMediaTimingFillMode.forwards
-        animation.duration = animationDuration
-        animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
-        
-        return animation
-    }
-}
-

+ 0 - 158
Pods/M13Checkbox/Sources/M13CheckboxController.swift

@@ -1,158 +0,0 @@
-//
-//  M13CheckboxController.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 3/18/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    /// The path presets for the manager.
-    var pathGenerator: M13CheckboxPathGenerator = M13CheckboxCheckPathGenerator()
-    
-    /// The animation presets for the manager.
-    var animationGenerator: M13CheckboxAnimationGenerator = M13CheckboxAnimationGenerator()
-    
-    /// The current state of the checkbox.
-    var state: M13Checkbox.CheckState = DefaultValues.checkState
-    
-    /// The current tint color.
-    /// - Note: Subclasses should override didSet to update the layers when this value changes.
-    var tintColor: UIColor = UIColor.black
-    
-    /// The secondary tint color.
-    /// - Note: Subclasses should override didSet to update the layers when this value changes.
-    var secondaryTintColor: UIColor? = UIColor.lightGray
-    
-    /// The secondary color of the mark.
-    /// - Note: Subclasses should override didSet to update the layers when this value changes.
-    var secondaryCheckmarkTintColor: UIColor? = UIColor.white
-    
-    /// Whether or not to hide the box.
-    /// - Note: Subclasses should override didSet to update the layers when this value changes.
-    var hideBox: Bool = false
-    
-    /// Whether or not to allow morphong between states.
-    var enableMorphing: Bool = true
-    
-    // The type of mark to display.
-    var markType: M13Checkbox.MarkType {
-        get {
-            return _markType
-        }
-        set {
-            setMarkType(type: newValue, animated: false)
-        }
-    }
-    
-    private var _markType: M13Checkbox.MarkType = DefaultValues.markType
-    
-    func setMarkType(type: M13Checkbox.MarkType, animated: Bool) {
-        guard type != _markType else {
-            return
-        }
-        _setMarkType(type: type, animated: animated)
-        _markType = type
-    }
-    
-    private func _setMarkType(type: M13Checkbox.MarkType, animated: Bool) {
-        var newPathGenerator: M13CheckboxPathGenerator
-        switch type {
-        case .checkmark:
-            newPathGenerator = M13CheckboxCheckPathGenerator()
-        case .radio:
-            newPathGenerator = M13CheckboxRadioPathGenerator()
-        case .addRemove:
-            newPathGenerator = M13CheckboxAddRemovePathGenerator()
-        case .disclosure:
-            newPathGenerator = M13CheckboxDisclosurePathGenerator()
-        }
-        
-        newPathGenerator.boxLineWidth = pathGenerator.boxLineWidth
-        newPathGenerator.boxType = pathGenerator.boxType
-        newPathGenerator.checkmarkLineWidth = pathGenerator.checkmarkLineWidth
-        newPathGenerator.cornerRadius = pathGenerator.cornerRadius
-        newPathGenerator.size = pathGenerator.size
-        
-        // Animate the change.
-        if pathGenerator.pathForMark(state) != nil && animated {
-            let previousState = state
-            animate(state, toState: nil, completion: { [weak self] in
-                self?.pathGenerator = newPathGenerator
-                self?.resetLayersForState(previousState)
-                if self?.pathGenerator.pathForMark(previousState) != nil {
-                    self?.animate(nil, toState: previousState)
-                }
-            })
-        } else if newPathGenerator.pathForMark(state) != nil && animated {
-            let previousState = state
-            pathGenerator = newPathGenerator
-            resetLayersForState(nil)
-            animate(nil, toState: previousState)
-        } else {
-            pathGenerator = newPathGenerator
-            resetLayersForState(state)
-        }
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    /// The layers to display in the checkbox. The top layer is the last layer in the array.
-    var layersToDisplay: [CALayer] {
-        return []
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    /**
-     Animates the layers between the two states.
-     - parameter fromState: The previous state of the checkbox.
-     - parameter toState: The new state of the checkbox.
-     */
-    func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)? = nil) {
-        if let toState = toState {
-            state = toState
-        }
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    /// Layout the layers.
-    func layoutLayers() {
-        
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    /**
-     Reset the layers to be in the given state.
-     - parameter state: The new state of the checkbox.
-     */
-    func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        if let state = state {
-            self.state = state
-        }
-        layoutLayers()
-    }
-    
-}

+ 0 - 37
Pods/M13Checkbox/Sources/M13CheckboxGestureRecognizer.swift

@@ -1,37 +0,0 @@
-//
-//  M13CheckboxGestureRecognizer.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 4/12/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-import UIKit.UIGestureRecognizerSubclass
-
-internal class M13CheckboxGestureRecognizer: UILongPressGestureRecognizer {
-    
-    override init(target: Any?, action: Selector?) {
-        super.init(target: target, action: action)
-        // Set the minimium press duration to 0.0 to allow for basic taps.
-        minimumPressDuration = 0.0
-    }
-    
-    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent) {
-        // Check whether the touch is outside of the M13Checkbox's bounds, and fail to recognize if so.
-        if let anyTouch = touches.first, let view = view {
-            let touchPoint = anyTouch.location(in: view)
-            if !view.bounds.contains(touchPoint) {
-                state = .failed
-            }
-        }
-        
-        // If `self.state` is not yet set, the superclass implementation of this method will set it as it sees fit.
-        super.touchesEnded(touches, with: event)
-    }
-}

+ 0 - 250
Pods/M13Checkbox/Sources/Managers/M13CheckboxBounceController.swift

@@ -1,250 +0,0 @@
-//
-//  M13CheckboxBounceController.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 3/30/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxBounceController: M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    override var tintColor: UIColor {
-        didSet {
-            selectedBoxLayer.strokeColor = tintColor.cgColor
-            if style == .stroke {
-                markLayer.strokeColor = tintColor.cgColor
-                if markType == .radio {
-                    markLayer.fillColor = tintColor.cgColor
-                }
-            } else {
-                selectedBoxLayer.fillColor = tintColor.cgColor
-            }
-        }
-    }
-    
-    override var secondaryTintColor: UIColor? {
-        didSet {
-            unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        }
-    }
-    
-    override var secondaryCheckmarkTintColor: UIColor? {
-        didSet {
-            if style == .fill {
-                markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-            }
-        }
-    }
-    
-    override var hideBox: Bool {
-        didSet {
-            selectedBoxLayer.isHidden = hideBox
-            unselectedBoxLayer.isHidden = hideBox
-        }
-    }
-    
-    fileprivate var style: M13Checkbox.AnimationStyle = .stroke
-    
-    init(style: M13Checkbox.AnimationStyle) {
-        self.style = style
-        super.init()
-        sharedSetup()
-    }
-    
-    override init() {
-        super.init()
-        sharedSetup()
-    }
-    
-    fileprivate func sharedSetup() {
-        // Disable som implicit animations.
-        let newActions = [
-            "opacity": NSNull(),
-            "strokeEnd": NSNull(),
-            "transform": NSNull(),
-            "fillColor": NSNull(),
-            "path": NSNull(),
-            "lineWidth": NSNull()
-        ]
-        
-        // Setup the unselected box layer
-        unselectedBoxLayer.lineCap = .round
-        unselectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        unselectedBoxLayer.shouldRasterize = true
-        unselectedBoxLayer.actions = newActions
-        
-        unselectedBoxLayer.opacity = 1.0
-        unselectedBoxLayer.strokeEnd = 1.0
-        unselectedBoxLayer.transform = CATransform3DIdentity
-        unselectedBoxLayer.fillColor = nil
-        
-        // Setup the selected box layer.
-        selectedBoxLayer.lineCap = .round
-        selectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        selectedBoxLayer.shouldRasterize = true
-        selectedBoxLayer.actions = newActions
-        
-        selectedBoxLayer.fillColor = nil
-        selectedBoxLayer.transform = CATransform3DIdentity
-        
-        // Setup the checkmark layer.
-        markLayer.lineCap = .round
-        markLayer.lineJoin = .round
-        markLayer.rasterizationScale = UIScreen.main.scale
-        markLayer.shouldRasterize = true
-        markLayer.actions = newActions
-        
-        markLayer.transform = CATransform3DIdentity
-        markLayer.fillColor = nil
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    let markLayer = CAShapeLayer()
-    let selectedBoxLayer = CAShapeLayer()
-    let unselectedBoxLayer = CAShapeLayer()
-    
-    override var layersToDisplay: [CALayer] {
-        return [unselectedBoxLayer, selectedBoxLayer, markLayer]
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    override func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)?) {
-        super.animate(fromState, toState: toState)
-        
-        if pathGenerator.pathForMark(toState) == nil && pathGenerator.pathForMark(fromState) != nil {
-            let amplitude: CGFloat = pathGenerator.boxType == .square ? 0.20 : 0.35
-            let wiggleAnimation = animationGenerator.fillAnimation(1, amplitude: amplitude, reverse: true)
-            let opacityAnimation = animationGenerator.opacityAnimation(true)
-            opacityAnimation.duration = opacityAnimation.duration / 1.5
-            opacityAnimation.beginTime = CACurrentMediaTime() + animationGenerator.animationDuration - opacityAnimation.duration
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(opacityAnimation, forKey: "opacity")
-            markLayer.add(wiggleAnimation, forKey: "transform")
-            
-            CATransaction.commit()
-        } else if pathGenerator.pathForMark(toState) != nil && pathGenerator.pathForMark(fromState) == nil {
-            markLayer.path = pathGenerator.pathForMark(toState)?.cgPath
-            
-            let amplitude: CGFloat = pathGenerator.boxType == .square ? 0.20 : 0.35
-            let wiggleAnimation = animationGenerator.fillAnimation(1, amplitude: amplitude, reverse: false)
-            
-            let opacityAnimation = animationGenerator.opacityAnimation(false)
-            opacityAnimation.duration = opacityAnimation.duration / 1.5
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(opacityAnimation, forKey: "opacity")
-            markLayer.add(wiggleAnimation, forKey: "transform")
-            
-            CATransaction.commit()
-        } else {
-            let fromPath = pathGenerator.pathForMark(fromState)
-            let toPath = pathGenerator.pathForMark(toState)
-            
-            let morphAnimation = animationGenerator.morphAnimation(fromPath, toPath: toPath)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(morphAnimation, forKey: "path")
-            
-            CATransaction.commit()
-        }
-        
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    override func layoutLayers() {
-        // Frames
-        unselectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        selectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        markLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    override func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        super.resetLayersForState(state)
-        // Remove all remnant animations. They will interfere with each other if they are not removed before a new round of animations start.
-        unselectedBoxLayer.removeAllAnimations()
-        selectedBoxLayer.removeAllAnimations()
-        markLayer.removeAllAnimations()
-        
-        // Set the properties for the final states of each necessary property of each layer.
-        unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        unselectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        selectedBoxLayer.strokeColor = tintColor.cgColor
-        selectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        if style == .stroke {
-            selectedBoxLayer.fillColor = nil
-            markLayer.strokeColor = tintColor.cgColor
-            if markType != .radio {
-                markLayer.fillColor = nil
-            } else {
-                markLayer.fillColor = tintColor.cgColor
-            }
-        } else {
-            selectedBoxLayer.fillColor = tintColor.cgColor
-            markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-        }
-        
-        markLayer.lineWidth = pathGenerator.checkmarkLineWidth
-        
-        if pathGenerator.pathForMark(state) != nil {
-            markLayer.transform = CATransform3DIdentity
-            selectedBoxLayer.opacity = 1.0
-        } else {
-            selectedBoxLayer.opacity = 0.0
-            markLayer.transform = CATransform3DMakeScale(0.0, 0.0, 0.0)
-        }
-        
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-}
-
-

+ 0 - 253
Pods/M13Checkbox/Sources/Managers/M13CheckboxDotController.swift

@@ -1,253 +0,0 @@
-//
-//  M13CheckboxDotController.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 4/1/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxDotController: M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    override var tintColor: UIColor {
-        didSet {
-            selectedBoxLayer.strokeColor = tintColor.cgColor
-            if style == .stroke {
-                markLayer.strokeColor = tintColor.cgColor
-                if markType == .radio {
-                    markLayer.fillColor = tintColor.cgColor
-                }
-            } else {
-                selectedBoxLayer.fillColor = tintColor.cgColor
-            }
-        }
-    }
-    
-    override var secondaryTintColor: UIColor? {
-        didSet {
-            unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        }
-    }
-    
-    override var secondaryCheckmarkTintColor: UIColor? {
-        didSet {
-            if style == .fill {
-                markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-            }
-        }
-    }
-    
-    override var hideBox: Bool {
-        didSet {
-            selectedBoxLayer.isHidden = hideBox
-            unselectedBoxLayer.isHidden = hideBox
-        }
-    }
-    
-    fileprivate var style: M13Checkbox.AnimationStyle = .stroke
-    
-    init(style: M13Checkbox.AnimationStyle) {
-        self.style = style
-        super.init()
-        sharedSetup()
-    }
-    
-    override init() {
-        super.init()
-        sharedSetup()
-    }
-    
-    fileprivate func sharedSetup() {
-        // Disable som implicit animations.
-        let newActions = [
-            "opacity": NSNull(),
-            "strokeEnd": NSNull(),
-            "transform": NSNull(),
-            "fillColor": NSNull(),
-            "path": NSNull(),
-            "lineWidth": NSNull()
-        ]
-        
-        // Setup the unselected box layer
-        unselectedBoxLayer.lineCap = .round
-        unselectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        unselectedBoxLayer.shouldRasterize = true
-        unselectedBoxLayer.actions = newActions
-        
-        unselectedBoxLayer.transform = CATransform3DIdentity
-        unselectedBoxLayer.fillColor = nil
-        
-        // Setup the selected box layer.
-        selectedBoxLayer.lineCap = .round
-        selectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        selectedBoxLayer.shouldRasterize = true
-        selectedBoxLayer.actions = newActions
-        
-        selectedBoxLayer.fillColor = nil
-        selectedBoxLayer.transform = CATransform3DIdentity
-        
-        // Setup the checkmark layer.
-        markLayer.lineCap = .round
-        markLayer.lineJoin = .round
-        markLayer.rasterizationScale = UIScreen.main.scale
-        markLayer.shouldRasterize = true
-        markLayer.actions = newActions
-        
-        markLayer.transform = CATransform3DIdentity
-        markLayer.fillColor = nil
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    let markLayer = CAShapeLayer()
-    let selectedBoxLayer = CAShapeLayer()
-    let unselectedBoxLayer = CAShapeLayer()
-    
-    override var layersToDisplay: [CALayer] {
-        return [unselectedBoxLayer, selectedBoxLayer, markLayer]
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    override func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)?) {
-        super.animate(fromState, toState: toState)
-        
-        if pathGenerator.pathForMark(toState) == nil && pathGenerator.pathForMark(fromState) != nil {
-            let scaleAnimation = animationGenerator.fillAnimation(1, amplitude: 0.18, reverse: true)
-            let opacityAnimation = animationGenerator.opacityAnimation(true)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(toState)
-                completion?()
-            })
-            
-            if style == .stroke {
-                unselectedBoxLayer.opacity = 0.0
-                let quickOpacityAnimation = animationGenerator.quickOpacityAnimation(false)
-                quickOpacityAnimation.beginTime = CACurrentMediaTime() + scaleAnimation.duration - quickOpacityAnimation.duration
-                unselectedBoxLayer.add(quickOpacityAnimation, forKey: "opacity")
-            }
-            selectedBoxLayer.add(scaleAnimation, forKey: "transform")
-            markLayer.add(opacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else if pathGenerator.pathForMark(toState) != nil && pathGenerator.pathForMark(fromState) == nil {
-            markLayer.path = pathGenerator.pathForMark(toState)?.cgPath
-            
-            let scaleAnimation = animationGenerator.fillAnimation(1, amplitude: 0.18, reverse: false)
-            let opacityAnimation = animationGenerator.opacityAnimation(false)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(toState)
-                completion?()
-            })
-            
-            if style == .stroke {
-                let quickOpacityAnimation = animationGenerator.quickOpacityAnimation(true)
-                quickOpacityAnimation.beginTime = CACurrentMediaTime()
-                unselectedBoxLayer.add(quickOpacityAnimation, forKey: "opacity")
-            }
-            selectedBoxLayer.add(scaleAnimation, forKey: "transform")
-            markLayer.add(opacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else {
-            let fromPath = pathGenerator.pathForMark(fromState)
-            let toPath = pathGenerator.pathForMark(toState)
-            
-            let morphAnimation = animationGenerator.morphAnimation(fromPath, toPath: toPath)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(morphAnimation, forKey: "path")
-            
-            CATransaction.commit()
-        }
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    override func layoutLayers() {
-        // Frames
-        unselectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        selectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        markLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForDot()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    override func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        super.resetLayersForState(state)
-        // Remove all remnant animations. They will interfere with each other if they are not removed before a new round of animations start.
-        unselectedBoxLayer.removeAllAnimations()
-        selectedBoxLayer.removeAllAnimations()
-        markLayer.removeAllAnimations()
-        
-        // Set the properties for the final states of each necessary property of each layer.
-        unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        unselectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        selectedBoxLayer.strokeColor = tintColor.cgColor
-        selectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        if style == .stroke {
-            selectedBoxLayer.fillColor = nil
-            markLayer.strokeColor = tintColor.cgColor
-            if markType != .radio {
-                markLayer.fillColor = nil
-            } else {
-                markLayer.fillColor = tintColor.cgColor
-            }
-        } else {
-            selectedBoxLayer.fillColor = tintColor.cgColor
-            markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-        }
-        
-        markLayer.lineWidth = pathGenerator.checkmarkLineWidth
-        
-        if pathGenerator.pathForMark(state) != nil {
-            unselectedBoxLayer.opacity = 0.0
-            selectedBoxLayer.transform = CATransform3DIdentity
-            markLayer.opacity = 1.0
-        } else {
-            unselectedBoxLayer.opacity = 1.0
-            selectedBoxLayer.transform = CATransform3DMakeScale(0.0, 0.0, 0.0)
-            markLayer.opacity = 0.0
-        }
-        
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForDot()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-}
-

+ 0 - 243
Pods/M13Checkbox/Sources/Managers/M13CheckboxExpandController.swift

@@ -1,243 +0,0 @@
-//
-//  M13CheckboxExpandManager.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 4/1/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxExpandController: M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    override var tintColor: UIColor {
-        didSet {
-            selectedBoxLayer.strokeColor = tintColor.cgColor
-            if style == .stroke {
-                markLayer.strokeColor = tintColor.cgColor
-                if markType == .radio {
-                    markLayer.fillColor = tintColor.cgColor
-                }
-            } else {
-                selectedBoxLayer.fillColor = tintColor.cgColor
-            }
-        }
-    }
-    
-    override var secondaryTintColor: UIColor? {
-        didSet {
-            unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        }
-    }
-    
-    override var secondaryCheckmarkTintColor: UIColor? {
-        didSet {
-            if style == .fill {
-                markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-            }
-        }
-    }
-    
-    override var hideBox: Bool {
-        didSet {
-            selectedBoxLayer.isHidden = hideBox
-            unselectedBoxLayer.isHidden = hideBox
-        }
-    }
-    
-    fileprivate var style: M13Checkbox.AnimationStyle = .stroke
-    
-    init(style: M13Checkbox.AnimationStyle) {
-        self.style = style
-        super.init()
-        sharedSetup()
-    }
-    
-    override init() {
-        super.init()
-        sharedSetup()
-    }
-    
-    fileprivate func sharedSetup() {
-        // Disable som implicit animations.
-        let newActions = [
-            "opacity": NSNull(),
-            "strokeEnd": NSNull(),
-            "transform": NSNull(),
-            "fillColor": NSNull(),
-            "path": NSNull(),
-            "lineWidth": NSNull()
-        ]
-        
-        // Setup the unselected box layer
-        unselectedBoxLayer.lineCap = .round
-        unselectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        unselectedBoxLayer.shouldRasterize = true
-        unselectedBoxLayer.actions = newActions
-        
-        unselectedBoxLayer.transform = CATransform3DIdentity
-        unselectedBoxLayer.fillColor = nil
-        
-        // Setup the selected box layer.
-        selectedBoxLayer.lineCap = .round
-        selectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        selectedBoxLayer.shouldRasterize = true
-        selectedBoxLayer.actions = newActions
-        
-        selectedBoxLayer.fillColor = nil
-        selectedBoxLayer.transform = CATransform3DIdentity
-        
-        // Setup the checkmark layer.
-        markLayer.lineCap = .round
-        markLayer.lineJoin = .round
-        markLayer.rasterizationScale = UIScreen.main.scale
-        markLayer.shouldRasterize = true
-        markLayer.actions = newActions
-        
-        markLayer.transform = CATransform3DIdentity
-        markLayer.fillColor = nil
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    let markLayer = CAShapeLayer()
-    let selectedBoxLayer = CAShapeLayer()
-    let unselectedBoxLayer = CAShapeLayer()
-    
-    override var layersToDisplay: [CALayer] {
-        return [unselectedBoxLayer, selectedBoxLayer, markLayer]
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    override func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)?) {
-        super.animate(fromState, toState: toState)
-        
-        if pathGenerator.pathForMark(toState) == nil && pathGenerator.pathForMark(fromState) != nil {
-            let amplitude: CGFloat = pathGenerator.boxType == .square ? 0.20 : 0.35
-            let wiggleAnimation = animationGenerator.fillAnimation(1, amplitude: amplitude, reverse: true)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(wiggleAnimation, forKey: "transform")
-            markLayer.add(wiggleAnimation, forKey: "transform")
-            
-            CATransaction.commit()
-        } else if pathGenerator.pathForMark(toState) != nil && pathGenerator.pathForMark(fromState) == nil {
-            markLayer.path = pathGenerator.pathForMark(toState)?.cgPath
-            
-            let amplitude: CGFloat = pathGenerator.boxType == .square ? 0.20 : 0.35
-            let wiggleAnimation = animationGenerator.fillAnimation(1, amplitude: amplitude, reverse: false)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(wiggleAnimation, forKey: "transform")
-            markLayer.add(wiggleAnimation, forKey: "transform")
-            
-            CATransaction.commit()
-        } else {
-            let fromPath = pathGenerator.pathForMark(fromState)
-            let toPath = pathGenerator.pathForMark(toState)
-            
-            let morphAnimation = animationGenerator.morphAnimation(fromPath, toPath: toPath)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(morphAnimation, forKey: "path")
-            
-            CATransaction.commit()
-        }
-        
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    override func layoutLayers() {
-        // Frames
-        unselectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        selectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        markLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    override func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        super.resetLayersForState(state)
-        // Remove all remnant animations. They will interfere with each other if they are not removed before a new round of animations start.
-        unselectedBoxLayer.removeAllAnimations()
-        selectedBoxLayer.removeAllAnimations()
-        markLayer.removeAllAnimations()
-        
-        // Set the properties for the final states of each necessary property of each layer.
-        unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        unselectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        selectedBoxLayer.strokeColor = tintColor.cgColor
-        selectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        if style == .stroke {
-            selectedBoxLayer.fillColor = nil
-            markLayer.strokeColor = tintColor.cgColor
-            if markType != .radio {
-                markLayer.fillColor = nil
-            } else {
-                markLayer.fillColor = tintColor.cgColor
-            }
-        } else {
-            selectedBoxLayer.fillColor = tintColor.cgColor
-            markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-        }
-        
-        markLayer.lineWidth = pathGenerator.checkmarkLineWidth
-        
-        if pathGenerator.pathForMark(state) != nil {
-            markLayer.transform = CATransform3DIdentity
-            selectedBoxLayer.transform = CATransform3DIdentity
-        } else {
-            markLayer.transform = CATransform3DMakeScale(0.0, 0.0, 0.0)
-            selectedBoxLayer.transform = CATransform3DMakeScale(0.0, 0.0, 0.0)
-        }
-        
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-}
-
-
-

+ 0 - 240
Pods/M13Checkbox/Sources/Managers/M13CheckboxFadeController.swift

@@ -1,240 +0,0 @@
-//
-//  M13CheckboxFadeController.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 4/1/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxFadeController: M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    override var tintColor: UIColor {
-        didSet {
-            selectedBoxLayer.strokeColor = tintColor.cgColor
-            if style == .stroke {
-                markLayer.strokeColor = tintColor.cgColor
-                if markType == .radio {
-                    markLayer.fillColor = tintColor.cgColor
-                }
-            } else {
-                selectedBoxLayer.fillColor = tintColor.cgColor
-            }
-        }
-    }
-    
-    override var secondaryTintColor: UIColor? {
-        didSet {
-            unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        }
-    }
-    
-    override var secondaryCheckmarkTintColor: UIColor? {
-        didSet {
-            if style == .fill {
-                markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-            }
-        }
-    }
-    
-    override var hideBox: Bool {
-        didSet {
-            selectedBoxLayer.isHidden = hideBox
-            unselectedBoxLayer.isHidden = hideBox
-        }
-    }
-    
-    fileprivate var style: M13Checkbox.AnimationStyle = .stroke
-    
-    init(style: M13Checkbox.AnimationStyle) {
-        self.style = style
-        super.init()
-        sharedSetup()
-    }
-    
-    override init() {
-        super.init()
-        sharedSetup()
-    }
-    
-    fileprivate func sharedSetup() {
-        // Disable som implicit animations.
-        let newActions = [
-            "opacity": NSNull(),
-            "strokeEnd": NSNull(),
-            "transform": NSNull(),
-            "fillColor": NSNull(),
-            "path": NSNull(),
-            "lineWidth": NSNull()
-        ]
-        
-        // Setup the unselected box layer
-        unselectedBoxLayer.lineCap = .round
-        unselectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        unselectedBoxLayer.shouldRasterize = true
-        unselectedBoxLayer.actions = newActions
-        
-        unselectedBoxLayer.opacity = 1.0
-        unselectedBoxLayer.strokeEnd = 1.0
-        unselectedBoxLayer.transform = CATransform3DIdentity
-        unselectedBoxLayer.fillColor = nil
-        
-        // Setup the selected box layer.
-        selectedBoxLayer.lineCap = .round
-        selectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        selectedBoxLayer.shouldRasterize = true
-        selectedBoxLayer.actions = newActions
-        
-        selectedBoxLayer.fillColor = nil
-        selectedBoxLayer.transform = CATransform3DIdentity
-        
-        // Setup the checkmark layer.
-        markLayer.lineCap = .round
-        markLayer.lineJoin = .round
-        markLayer.rasterizationScale = UIScreen.main.scale
-        markLayer.shouldRasterize = true
-        markLayer.actions = newActions
-        
-        markLayer.transform = CATransform3DIdentity
-        markLayer.fillColor = nil
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    let markLayer = CAShapeLayer()
-    let selectedBoxLayer = CAShapeLayer()
-    let unselectedBoxLayer = CAShapeLayer()
-    
-    override var layersToDisplay: [CALayer] {
-        return [unselectedBoxLayer, selectedBoxLayer, markLayer]
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    override func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)?) {
-        super.animate(fromState, toState: toState)
-        
-        if pathGenerator.pathForMark(toState) == nil && pathGenerator.pathForMark(fromState) != nil {
-            let opacityAnimation = animationGenerator.opacityAnimation(true)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(opacityAnimation, forKey: "opacity")
-            markLayer.add(opacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else if pathGenerator.pathForMark(toState) != nil && pathGenerator.pathForMark(fromState) == nil {
-            markLayer.path = pathGenerator.pathForMark(toState)?.cgPath
-            
-            let opacityAnimation = animationGenerator.opacityAnimation(false)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(opacityAnimation, forKey: "opacity")
-            markLayer.add(opacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else {
-            let fromPath = pathGenerator.pathForMark(fromState)
-            let toPath = pathGenerator.pathForMark(toState)
-            
-            let morphAnimation = animationGenerator.morphAnimation(fromPath, toPath: toPath)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(morphAnimation, forKey: "path")
-            
-            CATransaction.commit()
-        }
-        
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    override func layoutLayers() {
-        // Frames
-        unselectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        selectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        markLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    override func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        super.resetLayersForState(state)
-        // Remove all remnant animations. They will interfere with each other if they are not removed before a new round of animations start.
-        unselectedBoxLayer.removeAllAnimations()
-        selectedBoxLayer.removeAllAnimations()
-        markLayer.removeAllAnimations()
-        
-        // Set the properties for the final states of each necessary property of each layer.
-        unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        unselectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        selectedBoxLayer.strokeColor = tintColor.cgColor
-        selectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        if style == .stroke {
-            selectedBoxLayer.fillColor = nil
-            markLayer.strokeColor = tintColor.cgColor
-            if markType != .radio {
-                markLayer.fillColor = nil
-            } else {
-                markLayer.fillColor = tintColor.cgColor
-            }
-        } else {
-            selectedBoxLayer.fillColor = tintColor.cgColor
-            markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-        }
-        
-        markLayer.lineWidth = pathGenerator.checkmarkLineWidth
-        
-        if pathGenerator.pathForMark(state) != nil {
-            markLayer.opacity = 1.0
-            selectedBoxLayer.opacity = 1.0
-        } else {
-            selectedBoxLayer.opacity = 0.0
-            markLayer.opacity = 0.0
-        }
-        
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-}

+ 0 - 210
Pods/M13Checkbox/Sources/Managers/M13CheckboxFillController.swift

@@ -1,210 +0,0 @@
-//
-//  M13CheckboxFillController.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 3/30/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxFillController: M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    override var tintColor: UIColor {
-        didSet {
-            selectedBoxLayer.strokeColor = tintColor.cgColor
-            selectedBoxLayer.fillColor = tintColor.cgColor
-        }
-    }
-    
-    override var secondaryTintColor: UIColor? {
-        didSet {
-            unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        }
-    }
-    
-    override var secondaryCheckmarkTintColor: UIColor? {
-        didSet {
-            markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-        }
-    }
-    
-    override var hideBox: Bool {
-        didSet {
-            selectedBoxLayer.isHidden = hideBox
-            unselectedBoxLayer.isHidden = hideBox
-        }
-    }
-    
-    override init() {
-        // Disable som implicit animations.
-        let newActions = [
-            "opacity": NSNull(),
-            "strokeEnd": NSNull(),
-            "transform": NSNull(),
-            "fillColor": NSNull(),
-            "path": NSNull(),
-            "lineWidth": NSNull()
-        ]
-        
-        // Setup the unselected box layer
-        unselectedBoxLayer.lineCap = .round
-        unselectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        unselectedBoxLayer.shouldRasterize = true
-        unselectedBoxLayer.actions = newActions
-        
-        unselectedBoxLayer.opacity = 1.0
-        unselectedBoxLayer.strokeEnd = 1.0
-        unselectedBoxLayer.transform = CATransform3DIdentity
-        unselectedBoxLayer.fillColor = nil
-        
-        // Setup the selected box layer.
-        selectedBoxLayer.lineCap = .round
-        selectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        selectedBoxLayer.shouldRasterize = true
-        selectedBoxLayer.actions = newActions
-        
-        selectedBoxLayer.transform = CATransform3DIdentity
-        
-        // Setup the checkmark layer.
-        markLayer.lineCap = .round
-        markLayer.lineJoin = .round
-        markLayer.rasterizationScale = UIScreen.main.scale
-        markLayer.shouldRasterize = true
-        markLayer.actions = newActions
-        
-        markLayer.transform = CATransform3DIdentity
-        markLayer.fillColor = nil
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    let markLayer = CAShapeLayer()
-    let selectedBoxLayer = CAShapeLayer()
-    let unselectedBoxLayer = CAShapeLayer()
-    
-    override var layersToDisplay: [CALayer] {
-        return [unselectedBoxLayer, selectedBoxLayer, markLayer]
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    override func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)?) {
-        super.animate(fromState, toState: toState)
-        
-        if pathGenerator.pathForMark(toState) == nil && pathGenerator.pathForMark(fromState) != nil {
-            let wiggleAnimation = animationGenerator.fillAnimation(1, amplitude: 0.18, reverse: true)
-            let opacityAnimation = animationGenerator.opacityAnimation(true)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(toState)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(wiggleAnimation, forKey: "transform")
-            markLayer.add(opacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else if pathGenerator.pathForMark(toState) != nil && pathGenerator.pathForMark(fromState) == nil {
-            markLayer.path = pathGenerator.pathForMark(toState)?.cgPath
-            
-            let wiggleAnimation = animationGenerator.fillAnimation(1, amplitude: 0.18, reverse: false)
-            let opacityAnimation = animationGenerator.opacityAnimation(false)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(toState)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(wiggleAnimation, forKey: "transform")
-            markLayer.add(opacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else {
-            let fromPath = pathGenerator.pathForMark(fromState)
-            let toPath = pathGenerator.pathForMark(toState)
-            
-            let morphAnimation = animationGenerator.morphAnimation(fromPath, toPath: toPath)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(morphAnimation, forKey: "path")
-            
-            CATransaction.commit()
-        }
-        
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    override func layoutLayers() {
-        // Frames
-        unselectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        selectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        markLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    override func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        super.resetLayersForState(state)
-        // Remove all remnant animations. They will interfere with each other if they are not removed before a new round of animations start.
-        unselectedBoxLayer.removeAllAnimations()
-        selectedBoxLayer.removeAllAnimations()
-        markLayer.removeAllAnimations()
-        
-        // Set the properties for the final states of each necessary property of each layer.
-        unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        unselectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        selectedBoxLayer.strokeColor = tintColor.cgColor
-        selectedBoxLayer.fillColor = tintColor.cgColor
-        selectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-        markLayer.lineWidth = pathGenerator.checkmarkLineWidth
-        markLayer.fillColor = nil
-        
-        if pathGenerator.pathForMark(state) != nil {
-            selectedBoxLayer.transform = CATransform3DMakeScale(1.0, 1.0, 1.0)
-            markLayer.opacity = 1.0
-        } else {
-            selectedBoxLayer.transform = CATransform3DMakeScale(0.0, 0.0, 0.0)
-            markLayer.opacity = 0.0
-        }
-        
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-}
-

+ 0 - 259
Pods/M13Checkbox/Sources/Managers/M13CheckboxFlatController.swift

@@ -1,259 +0,0 @@
-//
-//  M13CheckboxFlatController.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 4/1/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxFlatController: M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    override var tintColor: UIColor {
-        didSet {
-            selectedBoxLayer.strokeColor = tintColor.cgColor
-            if style == .stroke {
-                markLayer.strokeColor = tintColor.cgColor
-                if markType == .radio {
-                    markLayer.fillColor = tintColor.cgColor
-                }
-            } else {
-                selectedBoxLayer.fillColor = tintColor.cgColor
-            }
-        }
-    }
-    
-    override var secondaryTintColor: UIColor? {
-        didSet {
-            unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        }
-    }
-    
-    override var secondaryCheckmarkTintColor: UIColor? {
-        didSet {
-            if style == .fill {
-                markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-            }
-        }
-    }
-    
-    override var hideBox: Bool {
-        didSet {
-            selectedBoxLayer.isHidden = hideBox
-            unselectedBoxLayer.isHidden = hideBox
-        }
-    }
-    
-    fileprivate var style: M13Checkbox.AnimationStyle = .stroke
-    
-    init(style: M13Checkbox.AnimationStyle) {
-        self.style = style
-        super.init()
-        sharedSetup()
-    }
-    
-    override init() {
-        super.init()
-        sharedSetup()
-    }
-    
-    fileprivate func sharedSetup() {
-        // Disable som implicit animations.
-        let newActions = [
-            "opacity": NSNull(),
-            "strokeEnd": NSNull(),
-            "transform": NSNull(),
-            "fillColor": NSNull(),
-            "path": NSNull(),
-            "lineWidth": NSNull()
-        ]
-        
-        // Setup the unselected box layer
-        unselectedBoxLayer.lineCap = .round
-        unselectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        unselectedBoxLayer.shouldRasterize = true
-        unselectedBoxLayer.actions = newActions
-        
-        unselectedBoxLayer.transform = CATransform3DIdentity
-        unselectedBoxLayer.fillColor = nil
-        
-        // Setup the selected box layer.
-        selectedBoxLayer.lineCap = .round
-        selectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        selectedBoxLayer.shouldRasterize = true
-        selectedBoxLayer.actions = newActions
-        
-        selectedBoxLayer.fillColor = nil
-        selectedBoxLayer.transform = CATransform3DIdentity
-        
-        // Setup the checkmark layer.
-        markLayer.lineCap = .round
-        markLayer.lineJoin = .round
-        markLayer.rasterizationScale = UIScreen.main.scale
-        markLayer.shouldRasterize = true
-        markLayer.actions = newActions
-        
-        markLayer.transform = CATransform3DIdentity
-        markLayer.fillColor = nil
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    let markLayer = CAShapeLayer()
-    let selectedBoxLayer = CAShapeLayer()
-    let unselectedBoxLayer = CAShapeLayer()
-    
-    override var layersToDisplay: [CALayer] {
-        return [unselectedBoxLayer, selectedBoxLayer, markLayer]
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    override func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)?) {
-        super.animate(fromState, toState: toState)
-        
-        if pathGenerator.pathForMark(toState) == nil && pathGenerator.pathForMark(fromState) != nil {
-            let morphAnimation = animationGenerator.morphAnimation(pathGenerator.pathForMark(), toPath: pathGenerator.pathForMixedMark())
-            morphAnimation.timingFunction = CAMediaTimingFunction(name: .easeIn)
-            let opacityAnimation = animationGenerator.opacityAnimation(true)
-            
-            let quickOpacityAnimation = animationGenerator.quickOpacityAnimation(true)
-            quickOpacityAnimation.duration = quickOpacityAnimation.duration * 4.0
-            morphAnimation.duration = morphAnimation.duration - quickOpacityAnimation.duration
-            quickOpacityAnimation.beginTime = CACurrentMediaTime() + morphAnimation.duration
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(toState)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(opacityAnimation, forKey: "opacity")
-            if fromState != .mixed {
-                markLayer.add(morphAnimation, forKey: "path")
-            }
-            markLayer.add(quickOpacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else if pathGenerator.pathForMark(toState) != nil && pathGenerator.pathForMark(fromState) == nil {
-            markLayer.path = pathGenerator.pathForMixedMark()?.cgPath
-            
-            let morphAnimation = animationGenerator.morphAnimation(pathGenerator.pathForMixedMark(), toPath: pathGenerator.pathForMark())
-            morphAnimation.timingFunction = CAMediaTimingFunction(name: .easeOut)
-            let opacityAnimation = animationGenerator.opacityAnimation(false)
-            
-            let quickOpacityAnimation = animationGenerator.quickOpacityAnimation(false)
-            quickOpacityAnimation.duration = quickOpacityAnimation.duration * 4.0
-            morphAnimation.beginTime = CACurrentMediaTime() + quickOpacityAnimation.duration
-            morphAnimation.duration = morphAnimation.duration - quickOpacityAnimation.duration
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(toState)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(opacityAnimation, forKey: "opacity")
-            if toState != .mixed {
-                markLayer.add(morphAnimation, forKey: "path")
-            }
-            markLayer.add(quickOpacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else {
-            let fromPath = pathGenerator.pathForMark(fromState)
-            let toPath = pathGenerator.pathForMark(toState)
-            
-            let morphAnimation = animationGenerator.morphAnimation(fromPath, toPath: toPath)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(morphAnimation, forKey: "path")
-            
-            CATransaction.commit()
-        }
-        
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    override func layoutLayers() {
-        // Frames
-        unselectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        selectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        markLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    override func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        super.resetLayersForState(state)
-        // Remove all remnant animations. They will interfere with each other if they are not removed before a new round of animations start.
-        unselectedBoxLayer.removeAllAnimations()
-        selectedBoxLayer.removeAllAnimations()
-        markLayer.removeAllAnimations()
-        
-        // Set the properties for the final states of each necessary property of each layer.
-        unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        unselectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        selectedBoxLayer.strokeColor = tintColor.cgColor
-        selectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        if style == .stroke {
-            selectedBoxLayer.fillColor = nil
-            markLayer.strokeColor = tintColor.cgColor
-            if markType != .radio {
-                markLayer.fillColor = nil
-            } else {
-                markLayer.fillColor = tintColor.cgColor
-            }
-        } else {
-            selectedBoxLayer.fillColor = tintColor.cgColor
-            markLayer.strokeColor = secondaryCheckmarkTintColor?.cgColor
-        }
-        
-        markLayer.lineWidth = pathGenerator.checkmarkLineWidth
-        
-        if pathGenerator.pathForMark(state) != nil {
-            selectedBoxLayer.opacity = 1.0
-            markLayer.opacity = 1.0
-        } else {
-            selectedBoxLayer.opacity = 0.0
-            markLayer.opacity = 0.0
-        }
-        
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-}
-

+ 0 - 266
Pods/M13Checkbox/Sources/Managers/M13CheckboxSpiralController.swift

@@ -1,266 +0,0 @@
-//
-//  M13CheckboxSpiralController.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 4/1/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxSpiralController: M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    override var tintColor: UIColor {
-        didSet {
-            selectedBoxLayer.strokeColor = tintColor.cgColor
-            markLayer.strokeColor = tintColor.cgColor
-        }
-    }
-    
-    override var secondaryTintColor: UIColor? {
-        didSet {
-            unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        }
-    }
-    
-    override var hideBox: Bool {
-        didSet {
-            selectedBoxLayer.isHidden = hideBox
-            unselectedBoxLayer.isHidden = hideBox
-        }
-    }
-    
-    override init() {
-        super.init()
-        
-        // Disable som implicit animations.
-        let newActions = [
-            "opacity": NSNull(),
-            "strokeEnd": NSNull(),
-            "transform": NSNull(),
-            "fillColor": NSNull(),
-            "path": NSNull(),
-            "lineWidth": NSNull()
-        ]
-        
-        // Setup the unselected box layer
-        unselectedBoxLayer.lineCap = .round
-        unselectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        unselectedBoxLayer.shouldRasterize = true
-        unselectedBoxLayer.actions = newActions
-        
-        unselectedBoxLayer.opacity = 1.0
-        unselectedBoxLayer.strokeEnd = 1.0
-        unselectedBoxLayer.transform = CATransform3DIdentity
-        unselectedBoxLayer.fillColor = nil
-        
-        // Setup the selected box layer.
-        selectedBoxLayer.lineCap = .round
-        selectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        selectedBoxLayer.shouldRasterize = true
-        selectedBoxLayer.actions = newActions
-        
-        selectedBoxLayer.transform = CATransform3DIdentity
-        selectedBoxLayer.fillColor = nil
-        
-        // Setup the checkmark layer.
-        markLayer.lineCap = .round
-        markLayer.lineJoin = .round
-        markLayer.rasterizationScale = UIScreen.main.scale
-        markLayer.shouldRasterize = true
-        markLayer.actions = newActions
-        
-        markLayer.transform = CATransform3DIdentity
-        markLayer.fillColor = nil
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    let markLayer = CAShapeLayer()
-    let selectedBoxLayer = CAShapeLayer()
-    let unselectedBoxLayer = CAShapeLayer()
-    
-    override var layersToDisplay: [CALayer] {
-        return [unselectedBoxLayer, selectedBoxLayer, markLayer]
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    override func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)?) {
-        super.animate(fromState, toState: toState)
-        
-        if pathGenerator.pathForMark(toState) == nil && pathGenerator.pathForMark(fromState) != nil {
-            // Temporarily set the path of the checkmark to the long checkmark
-            markLayer.path = pathGenerator.pathForLongMark(fromState)?.reversing().cgPath
-            
-            let checkMorphAnimation = animationGenerator.morphAnimation(pathGenerator.pathForMark(fromState)?.reversing(), toPath: pathGenerator.pathForLongMark(fromState)?.reversing())
-            checkMorphAnimation.fillMode = .backwards
-            checkMorphAnimation.duration = checkMorphAnimation.duration / 4.0
-            checkMorphAnimation.timingFunction = CAMediaTimingFunction(name: .easeIn)
-            
-            let checkStrokeAnimation = animationGenerator.strokeAnimation(true)
-            checkStrokeAnimation.beginTime = CACurrentMediaTime() + checkMorphAnimation.duration
-            checkStrokeAnimation.duration = checkStrokeAnimation.duration / 4.0
-            checkStrokeAnimation.timingFunction = CAMediaTimingFunction(name: .linear)
-            
-            let boxStrokeAnimation = animationGenerator.strokeAnimation(true)
-            boxStrokeAnimation.beginTime = CACurrentMediaTime() + checkMorphAnimation.duration + checkStrokeAnimation.duration
-            boxStrokeAnimation.duration = boxStrokeAnimation.duration / 2.0
-            boxStrokeAnimation.timingFunction = CAMediaTimingFunction(name: .easeOut)
-            
-            let quickOpacityAnimation = animationGenerator.quickOpacityAnimation(true)
-            
-            let checkQuickOpacityAnimation = animationGenerator.quickOpacityAnimation(true)
-            checkQuickOpacityAnimation.duration = 0.001
-            checkQuickOpacityAnimation.beginTime = CACurrentMediaTime() + checkMorphAnimation.duration + checkStrokeAnimation.duration
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(toState)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(quickOpacityAnimation, forKey: "opacity")
-            markLayer.add(checkMorphAnimation, forKey: "path")
-            markLayer.add(checkStrokeAnimation, forKey: "strokeEnd")
-            markLayer.add(checkQuickOpacityAnimation, forKey: "opacity")
-            selectedBoxLayer.add(boxStrokeAnimation, forKey: "strokeEnd")
-            
-            markLayer.strokeEnd = CGFloat((checkStrokeAnimation.fromValue as! NSNumber).floatValue)
-            markLayer.opacity = (checkQuickOpacityAnimation.fromValue as! NSNumber).floatValue
-            selectedBoxLayer.strokeEnd = CGFloat((checkStrokeAnimation.fromValue as! NSNumber).floatValue)
-            
-            CATransaction.commit()
-        } else if pathGenerator.pathForMark(toState) != nil && pathGenerator.pathForMark(fromState) == nil {
-            // Temporarly set to the long mark.
-            markLayer.path = pathGenerator.pathForLongMark(toState)?.reversing().cgPath
-            
-            let quickOpacityAnimation = animationGenerator.quickOpacityAnimation(false)
-            
-            let boxStrokeAnimation = animationGenerator.strokeAnimation(false)
-            boxStrokeAnimation.duration = boxStrokeAnimation.duration / 2.0
-            boxStrokeAnimation.timingFunction = CAMediaTimingFunction(name: .easeIn)
-            
-            let checkQuickOpacityAnimation = animationGenerator.quickOpacityAnimation(false)
-            checkQuickOpacityAnimation.duration = 0.001
-            checkQuickOpacityAnimation.beginTime = CACurrentMediaTime() + boxStrokeAnimation.duration
-            
-            let checkStrokeAnimation = animationGenerator.strokeAnimation(false)
-            checkStrokeAnimation.duration = checkStrokeAnimation.duration / 4.0
-            checkStrokeAnimation.timingFunction = CAMediaTimingFunction(name: .linear)
-            checkStrokeAnimation.fillMode = .forwards
-            checkStrokeAnimation.beginTime = CACurrentMediaTime() + boxStrokeAnimation.duration
-            
-            let checkMorphAnimation = animationGenerator.morphAnimation(pathGenerator.pathForLongMark(toState)?.reversing(), toPath: pathGenerator.pathForMark(toState)?.reversing())
-            checkMorphAnimation.duration = checkMorphAnimation.duration / 4.0
-            checkMorphAnimation.timingFunction = CAMediaTimingFunction(name: .easeOut)
-            checkMorphAnimation.beginTime = CACurrentMediaTime() + boxStrokeAnimation.duration + checkStrokeAnimation.duration
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ () -> Void in
-                self.resetLayersForState(toState)
-                completion?()
-            })
-            
-            selectedBoxLayer.add(quickOpacityAnimation, forKey: "opacity")
-            selectedBoxLayer.add(boxStrokeAnimation, forKey: "strokeEnd")
-            markLayer.add(checkQuickOpacityAnimation, forKey: "opacity")
-            markLayer.add(checkStrokeAnimation, forKey: "strokeEnd")
-            markLayer.add(checkMorphAnimation, forKey: "path")
-
-            markLayer.strokeEnd = CGFloat((checkStrokeAnimation.fromValue as! NSNumber).floatValue)
-            markLayer.opacity = (checkQuickOpacityAnimation.fromValue as! NSNumber).floatValue
-            markLayer.path = pathGenerator.pathForLongMark(toState)?.reversing().cgPath
-            
-            CATransaction.commit()
-        } else {
-            let fromPath = pathGenerator.pathForMark(fromState)
-            let toPath = pathGenerator.pathForMark(toState)
-            
-            let morphAnimation = animationGenerator.morphAnimation(fromPath, toPath: toPath)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(morphAnimation, forKey: "path")
-            
-            CATransaction.commit()
-        }
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    override func layoutLayers() {
-        // Frames
-        unselectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        selectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        markLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    override func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        super.resetLayersForState(state)
-        // Remove all remnant animations. They will interfere with each other if they are not removed before a new round of animations start.
-        unselectedBoxLayer.removeAllAnimations()
-        selectedBoxLayer.removeAllAnimations()
-        markLayer.removeAllAnimations()
-        
-        // Set the properties for the final states of each necessary property of each layer.
-        unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        unselectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        unselectedBoxLayer.fillColor = nil
-        
-        selectedBoxLayer.strokeColor = tintColor.cgColor
-        selectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        markLayer.strokeColor = tintColor.cgColor
-        markLayer.lineWidth = pathGenerator.checkmarkLineWidth
-        markLayer.fillColor = nil
-        
-        if pathGenerator.pathForMark(state) != nil {
-            selectedBoxLayer.opacity = 1.0
-            selectedBoxLayer.strokeEnd = 1.0
-            
-            markLayer.opacity = 1.0
-            markLayer.strokeEnd = 1.0
-        } else {
-            selectedBoxLayer.opacity = 0.0
-            selectedBoxLayer.strokeEnd = 0.0
-            
-            markLayer.opacity = 0.0
-            markLayer.strokeEnd = 0.0
-        }
-        
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-}
-

+ 0 - 213
Pods/M13Checkbox/Sources/Managers/M13CheckboxStrokeController.swift

@@ -1,213 +0,0 @@
-//
-//  M13CheckboxStrokeController.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 3/27/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxStrokeController: M13CheckboxController {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    override var tintColor: UIColor {
-        didSet {
-            selectedBoxLayer.strokeColor = tintColor.cgColor
-            markLayer.strokeColor = tintColor.cgColor
-        }
-    }
-    
-    override var secondaryTintColor: UIColor? {
-        didSet {
-            unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        }
-    }
-    
-    override var hideBox: Bool {
-        didSet {
-            selectedBoxLayer.isHidden = hideBox
-            unselectedBoxLayer.isHidden = hideBox
-        }
-    }
-    
-    override init() {
-        // Disable som implicit animations.
-        let newActions = [
-            "opacity": NSNull(),
-            "strokeEnd": NSNull(),
-            "transform": NSNull(),
-            "fillColor": NSNull(),
-            "path": NSNull(),
-            "lineWidth": NSNull()
-        ]
-        
-        // Setup the unselected box layer
-        unselectedBoxLayer.lineCap = .round
-        unselectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        unselectedBoxLayer.shouldRasterize = true
-        unselectedBoxLayer.actions = newActions
-        
-        unselectedBoxLayer.opacity = 1.0
-        unselectedBoxLayer.strokeEnd = 1.0
-        unselectedBoxLayer.transform = CATransform3DIdentity
-        unselectedBoxLayer.fillColor = nil
-        
-        // Setup the selected box layer.
-        selectedBoxLayer.lineCap = .round
-        selectedBoxLayer.rasterizationScale = UIScreen.main.scale
-        selectedBoxLayer.shouldRasterize = true
-        selectedBoxLayer.actions = newActions
-        
-        selectedBoxLayer.transform = CATransform3DIdentity
-        selectedBoxLayer.fillColor = nil
-        
-        // Setup the checkmark layer.
-        markLayer.lineCap = .round
-        markLayer.lineJoin = .round
-        markLayer.rasterizationScale = UIScreen.main.scale
-        markLayer.shouldRasterize = true
-        markLayer.actions = newActions
-        
-        markLayer.transform = CATransform3DIdentity
-        markLayer.fillColor = nil
-    }
-    
-    //----------------------------
-    // MARK: - Layers
-    //----------------------------
-    
-    let markLayer = CAShapeLayer()
-    let selectedBoxLayer = CAShapeLayer()
-    let unselectedBoxLayer = CAShapeLayer()
-    
-    override var layersToDisplay: [CALayer] {
-        return [unselectedBoxLayer, selectedBoxLayer, markLayer]
-    }
-    
-    //----------------------------
-    // MARK: - Animations
-    //----------------------------
-    
-    override func animate(_ fromState: M13Checkbox.CheckState?, toState: M13Checkbox.CheckState?, completion: (() -> Void)?) {
-        super.animate(fromState, toState: toState, completion: completion)
-        
-        if pathGenerator.pathForMark(toState) == nil && pathGenerator.pathForMark(fromState) != nil {
-            let strokeAnimation = animationGenerator.strokeAnimation(true)
-            let quickOpacityAnimation = animationGenerator.quickOpacityAnimation(true)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(strokeAnimation, forKey: "strokeEnd")
-            markLayer.add(quickOpacityAnimation, forKey: "opacity")
-            selectedBoxLayer.add(strokeAnimation, forKey: "strokeEnd")
-            selectedBoxLayer.add(quickOpacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else if pathGenerator.pathForMark(toState) != nil && pathGenerator.pathForMark(fromState) == nil {
-            markLayer.path = pathGenerator.pathForMark(toState)?.cgPath
-            
-            let strokeAnimation = animationGenerator.strokeAnimation(false)
-            let quickOpacityAnimation = animationGenerator.quickOpacityAnimation(false)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [weak self] () -> Void in
-                self?.resetLayersForState(self?.state)
-                completion?()
-                })
-            
-            markLayer.add(strokeAnimation, forKey: "strokeEnd")
-            markLayer.add(quickOpacityAnimation, forKey: "opacity")
-            selectedBoxLayer.add(strokeAnimation, forKey: "strokeEnd")
-            selectedBoxLayer.add(quickOpacityAnimation, forKey: "opacity")
-            
-            CATransaction.commit()
-        } else {
-            let fromPath = pathGenerator.pathForMark(fromState)
-            let toPath = pathGenerator.pathForMark(toState)
-            
-            let morphAnimation = animationGenerator.morphAnimation(fromPath, toPath: toPath)
-            
-            CATransaction.begin()
-            CATransaction.setCompletionBlock({ [unowned self] () -> Void in
-                self.resetLayersForState(self.state)
-                completion?()
-                })
-            
-            markLayer.add(morphAnimation, forKey: "path")
-            
-            CATransaction.commit()
-        }
-    }
-    
-    //----------------------------
-    // MARK: - Layout
-    //----------------------------
-    
-    override func layoutLayers() {
-        // Frames
-        unselectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        selectedBoxLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        markLayer.frame = CGRect(x: 0.0, y: 0.0, width: pathGenerator.size, height: pathGenerator.size)
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-    //----------------------------
-    // MARK: - Display
-    //----------------------------
-    
-    override func resetLayersForState(_ state: M13Checkbox.CheckState?) {
-        super.resetLayersForState(state)
-        // Remove all remnant animations. They will interfere with each other if they are not removed before a new round of animations start.
-        unselectedBoxLayer.removeAllAnimations()
-        selectedBoxLayer.removeAllAnimations()
-        markLayer.removeAllAnimations()
-        
-        // Set the properties for the final states of each necessary property of each layer.
-        unselectedBoxLayer.strokeColor = secondaryTintColor?.cgColor
-        unselectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        
-        selectedBoxLayer.strokeColor = tintColor.cgColor
-        selectedBoxLayer.lineWidth = pathGenerator.boxLineWidth
-        selectedBoxLayer.fillColor = nil
-        
-        markLayer.strokeColor = tintColor.cgColor
-        markLayer.lineWidth = pathGenerator.checkmarkLineWidth
-        markLayer.fillColor = nil
-        
-        if pathGenerator.pathForMark(state) != nil {
-            selectedBoxLayer.opacity = 1.0
-            selectedBoxLayer.strokeEnd = 1.0
-            
-            markLayer.opacity = 1.0
-            markLayer.strokeEnd = 1.0
-        } else {
-            selectedBoxLayer.opacity = 0.0
-            selectedBoxLayer.strokeEnd = 0.0
-            
-            markLayer.opacity = 0.0
-            markLayer.strokeEnd = 0.0
-        }
-        
-        // Paths
-        unselectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        selectedBoxLayer.path = pathGenerator.pathForBox()?.cgPath
-        markLayer.path = pathGenerator.pathForMark(state)?.cgPath
-    }
-    
-}

+ 0 - 165
Pods/M13Checkbox/Sources/Paths/M13CheckboxAddRemovePathGenerator.swift

@@ -1,165 +0,0 @@
-//
-//  M13CheckboxAddRemovePathGenerator.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 10/7/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxAddRemovePathGenerator: M13CheckboxPathGenerator {
-    
-    //----------------------------
-    // MARK: - Box Paths
-    //----------------------------
-    
-    override func pathForCircle() -> UIBezierPath? {
-        let radius = (size - boxLineWidth) / 2.0
-        // Create a circle that starts in the middle left.
-        return UIBezierPath(arcCenter: CGPoint(x: size / 2.0, y: size / 2.0),
-                            radius: radius,
-                            startAngle: -CGFloat.pi,
-                            endAngle: CGFloat((2 * Double.pi) - Double.pi),
-                            clockwise: true)
-    }
-    
-    override func pathForRoundedRect() -> UIBezierPath? {
-        let path = UIBezierPath()
-        let lineOffset: CGFloat = boxLineWidth / 2.0
-        
-        let trX: CGFloat = size - lineOffset - cornerRadius
-        let trY: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tr = CGPoint(x: trX, y: trY)
-        
-        let brX: CGFloat = size - lineOffset - cornerRadius
-        let brY: CGFloat = size - lineOffset - cornerRadius
-        let br = CGPoint(x: brX, y: brY)
-        
-        let blX: CGFloat = 0.0 + lineOffset + cornerRadius
-        let blY: CGFloat = size - lineOffset - cornerRadius
-        let bl = CGPoint(x: blX, y: blY)
-        
-        let tlX: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tlY: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tl = CGPoint(x: tlX, y: tlY)
-        
-        path.move(to: CGPoint(x: ((tl.x + bl.x) / 2.0) - cornerRadius, y: (tl.y + bl.y) / 2.0))
-        
-        // Left side.
-        let tlXCr: CGFloat = tl.x - cornerRadius
-        path.addLine(to: CGPoint(x: tlXCr, y: tl.y))
-        // Top left arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tl,
-                        radius: cornerRadius,
-                        startAngle: CGFloat.pi,
-                        endAngle: CGFloat(Double.pi + (Double.pi / 2)),
-                        clockwise: true)
-        }
-        
-        // Top side.
-        let trYCr: CGFloat = tr.y - cornerRadius
-        path.addLine(to: CGPoint(x: tr.x, y: trYCr))
-        // Right arc
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tr,
-                        radius: cornerRadius,
-                        startAngle: -(CGFloat.pi / 2),
-                        endAngle: 0.0,
-                        clockwise: true)
-        }
-        // Right side.
-        let brXCr: CGFloat = br.x + cornerRadius
-        path.addLine(to: CGPoint(x: brXCr, y: br.y))
-        
-        // Bottom right arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: br,
-                        radius: cornerRadius,
-                        startAngle: 0.0,
-                        endAngle: CGFloat.pi / 2,
-                        clockwise: true)
-        }
-        // Bottom side.
-        let blYCr: CGFloat = bl.y + cornerRadius
-        path.addLine(to: CGPoint(x: bl.x , y: blYCr))
-        // Bottom left arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: bl,
-                        radius: cornerRadius,
-                        startAngle: CGFloat.pi / 2,
-                        endAngle: CGFloat.pi,
-                        clockwise: true)
-        }
-        
-        path.close()
-        return path
-    }
-    
-    //----------------------------
-    // MARK: - Mark Generation
-    //----------------------------
-    
-    override func pathForMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.5))
-        
-        path.move(to: CGPoint(x: size / 2.0, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size / 2.0, y: size * 0.5))
-        
-        return path
-    }
-    
-    override func pathForLongMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.5))
-        
-        path.move(to: CGPoint(x: size / 2.0, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size / 2.0, y: size * 0.5))
-        
-        return path
-    }
-    
-    override func pathForMixedMark() -> UIBezierPath? {
-        return pathForUnselectedMark()
-    }
-    
-    override func pathForLongMixedMark() -> UIBezierPath? {
-        return pathForLongUnselectedMark()
-    }
-    
-    override func pathForUnselectedMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.5))
-        
-        path.move(to: CGPoint(x: size / 2.0, y: size * 0.25))
-        path.addLine(to: CGPoint(x: size / 2.0, y: size * 0.75))
-        
-        return path
-    }
-    
-    override func pathForLongUnselectedMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.5))
-        path.addLine(to: CGPoint(x: boxLineWidth, y: size * 0.5))
-        
-        path.move(to: CGPoint(x: size / 2.0, y: size * 0.25))
-        path.addLine(to: CGPoint(x: size / 2.0, y: size * 0.75))
-        
-        return path
-    }
-}
-

+ 0 - 323
Pods/M13Checkbox/Sources/Paths/M13CheckboxCheckPathGenerator.swift

@@ -1,323 +0,0 @@
-//
-//  M13CheckboxCheckPathGenerator.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 10/6/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxCheckPathGenerator: M13CheckboxPathGenerator {
-    
-    //----------------------------
-    // MARK: - Structures
-    //----------------------------
-    
-    /// Contains the geometry information needed to generate the checkmark, as well as generates the locations of the feature points.
-    struct CheckmarkProperties {
-        
-        /// The angle between the x-axis, and the line created between the origin, and the location where the extended long arm of the checkmark meets the box. (Diagram: Θ)
-        var longArmBoxIntersectionAngle: CGFloat = 45.0 * CGFloat(Double.pi / 180.0)
-        
-        /// The distance from the center the long arm of the checkmark draws to, as a percentage of size. (Diagram: S)
-        var longArmRadius: (circle: CGFloat, box: CGFloat) = (circle: 0.22, box: 0.33)
-        
-        /// The distance from the center of the middle/bottom point of the checkbox, as a percentage of size. (Diagram: T)
-        var middlePointRadius: (circle: CGFloat, box: CGFloat) = (circle: 0.133, box: 0.1995)
-        
-        /// The distance between the horizontal center and the middle point of the checkbox.
-        var middlePointOffset: (circle: CGFloat, box: CGFloat) = (circle: -0.04, box: -0.06)
-        
-        /// The distance from the center of the left most point of the checkmark, as a percentage of size.
-        var shortArmRadius: (circle: CGFloat, box: CGFloat) = (circle: 0.17, box: 0.255)
-        
-        /// The distance between the vertical center and the left most point of the checkmark, as a percentage of size.
-        var shortArmOffset: (circle: CGFloat, box: CGFloat) = (circle: 0.02, box: 0.03)
-    }
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    /// The parameters that define the checkmark.
-    var checkmarkProperties: CheckmarkProperties = CheckmarkProperties()
-
-    //----------------------------
-    // MARK: - Points of Intrest
-    //----------------------------
-    
-    /// The intersection point between the extended long checkmark arm, and the box.
-    var checkmarkLongArmBoxIntersectionPoint: CGPoint {
-        
-        let cornerRadius: CGFloat = self.cornerRadius
-        let boxLineWidth: CGFloat = self.boxLineWidth
-        let size: CGFloat = self.size
-        
-        let radius: CGFloat = (size - boxLineWidth) / 2.0
-        let theta:CGFloat = checkmarkProperties.longArmBoxIntersectionAngle
-        
-        if boxType == .circle {
-            // Basic trig to get the location of the point on the circle.
-            let x: CGFloat = (size / 2.0) + (radius * cos(theta))
-            let y: CGFloat = (size / 2.0) - (radius * sin(theta))
-            return CGPoint(x: x, y: y)
-        } else {
-            // We need to differentiate between the box edges and the rounded corner.
-            let lineOffset: CGFloat = boxLineWidth / 2.0
-            let circleX: CGFloat = size - lineOffset - cornerRadius
-            let circleY: CGFloat = 0.0 + lineOffset + cornerRadius
-            let edgeX: CGFloat = (size / 2.0) + (0.5 * (size - boxLineWidth) * (1.0 / tan(theta)))
-            let edgeY: CGFloat = (size / 2.0) - (0.5 * (size - boxLineWidth) * tan(theta));
-            
-            if edgeX <= circleX {
-                // On the top edge.
-                return CGPoint(x: edgeX, y: lineOffset)
-            } else if edgeY >= circleY {
-                // On the right edge.
-                let x: CGFloat = size - lineOffset
-                return CGPoint(x: x, y: edgeY)
-            } else {
-                // On the corner
-                let cos2Theta: CGFloat = cos(2.0 * theta)
-                let sin2Theta: CGFloat = sin(2.0 * theta)
-                let powC: CGFloat = pow((-2.0 * cornerRadius) + size, 2.0)
-                
-                let a: CGFloat = size * (3.0 + cos2Theta + sin2Theta)
-                let b: CGFloat = -2.0 * cornerRadius * (cos(theta) + sin(theta))
-                let c: CGFloat = (((4.0 * cornerRadius) - size) * size) + (powC * sin2Theta)
-                let d: CGFloat = size * cos(theta) * (cos(theta) - sin(theta))
-                let e: CGFloat = 2.0 * cornerRadius * sin(theta) * (cos(theta) + sin(theta))
-                
-                let x: CGFloat = 0.25 * (a + (2.0 * (b + sqrt(c)) * cos(theta))) - boxLineWidth
-                let y: CGFloat = 0.50 * (d + e - (sqrt(c) * sin(theta))) + boxLineWidth
-                
-                
-                return CGPoint(x: x, y: y)
-            }
-        }
-    }
-    
-    var checkmarkLongArmEndPoint: CGPoint {
-        let size: CGFloat = self.size
-        let boxLineWidth: CGFloat = self.boxLineWidth
-        
-        // Known variables
-        let boxEndPoint: CGPoint = checkmarkLongArmBoxIntersectionPoint
-        let x2: CGFloat = boxEndPoint.x
-        let y2: CGFloat = boxEndPoint.y
-        let midPoint: CGPoint = checkmarkMiddlePoint
-        let x1: CGFloat = midPoint.x
-        let y1: CGFloat = midPoint.y
-        let r: CGFloat = boxType == .circle ? size * checkmarkProperties.longArmRadius.circle : size * checkmarkProperties.longArmRadius.box
-        
-        let a1: CGFloat = (size * pow(x1, 2.0)) - (2.0 * size * x1 * x2) + (size * pow(x2, 2.0)) + (size * x1 * y1) - (size * x2 * y1)
-        let a2: CGFloat = (2.0 * x2 * pow(y1, 2.0)) - (size * x1 * y2) + (size * x2 * y2) - (2.0 * x1 * y1 * y2) - (2.0 * x2 * y1 * y2) + (2.0 * x1 * pow(y2, 2.0))
-        
-        let b: CGFloat = -16.0 * (pow(x1, 2.0) - (2.0 * x1 * x2) + pow(x2, 2.0) + pow(y1, 2.0) - (2.0 * y1 * y2) + pow(y2, 2.0))
-        
-        let c1: CGFloat = pow(r, 2.0) * ((-pow(x1, 2.0)) + (2.0 * x1 * x2) - pow(x2, 2.0))
-        let c2: CGFloat = pow(size, 2.0) * ((0.5 * pow(x1, 2.0)) - (x1 * x2) + (0.5 * pow(x2, 2.0)))
-        
-        let d1: CGFloat = (pow(x2, 2.0) * pow(y1, 2.0)) - (2.0 * x1 * x2 * y1 * y2) + (pow(x1, 2.0) * pow(y2, 2.0))
-        let d2: CGFloat = size * ((x1 * x2 * y1) - (pow(x2, 2.0) * y1) - (pow(x1, 2.0) * y2) + (x1 * x2 * y2))
-        
-        let cd: CGFloat = c1 + c2 + d1 + d2
-        
-        let e1: CGFloat = (x1 * ((4.0 * y1) - (4.0 * y2)) * y2) + (x2 * y1 * ((-4.0 * y1) + (4.0 * y2)))
-        let e2: CGFloat = size * ((-2.0 * pow(x1, 2.0)) + (x2 * ((-2.0 * x2) + (2.0 * y1) - (2.0 * y2))) + (x1 * (4.0 * x2 - (2.0 * y1) + (2.0 * y2))))
-        
-        let f: CGFloat = pow(x1, 2.0) - (2.0 * x1 * x2) + pow(x2, 2.0) + pow(y1, 2.0) - (2.0 * y1 * y2) + pow(y2, 2)
-        
-        let g1: CGFloat = (0.5 * size * x1 * y1) - (0.5 * size * x2 * y1) - (x1 * x2 * y1) + (pow(x2, 2.0) * y1) + (0.5 * size * pow(y1, 2.0))
-        let g2: CGFloat = (-0.5 * size * x1 * y2) + (pow(x1, 2.0) * y2) + (0.5 * size * x2 * y2) - (x1 * x2 * y2) - (size * y1 * y2) + (0.5 * size * pow(y2, 2.0))
-        
-        let h1: CGFloat = (-4.0 * pow(x2, 2.0) * y1) - (4.0 * pow(x1, 2.0) * y2) + (x1 * x2 * ((4.0 * y1) + (4.0 * y2)))
-        let h2: CGFloat = size * ((-2.0 * x1 * y1) + (2.0 * x2 * y1) - (2.0 * pow(y1, 2.0)) + (2.0 * x1 * y2) - (2.0 * x2 * y2) + (4.0 * y1 * y2) - (2.0 * pow(y2, 2.0)))
-        
-        let i: CGFloat = (pow(r, 2.0) * (-pow(y1, 2.0) + (2.0 * y1 * y2) - pow(y2, 2.0))) + (pow(size, 2.0) * ((0.5 * pow(y1, 2.0)) - (y1 * y2) + (0.5 * pow(y2, 2.0))))
-        let j: CGFloat = size * ((x1 * (y1 - y2) * y2) + (x2 * y1 * (-y1 + y2)))
-        
-        let powE1E2: CGFloat = pow(e1 + e2, 2.0)
-        let subX1: CGFloat = (b * cd) + powE1E2
-        let subX2: CGFloat = (a1 + a2 + (0.5 * sqrt(subX1)))
-        
-        let powH1H2: CGFloat = pow(h1 + h2, 2.0)
-        let subY1: CGFloat = powH1H2 + (b * (d1 + i + j))
-        let subY2: CGFloat = (0.25 * sqrt(subY1))
-        
-        let x: CGFloat = (0.5 * subX2 + (boxLineWidth / 2.0)) / f
-        let y: CGFloat = (g1 + g2 - subY2 + (boxLineWidth / 2.0)) / f
-        
-        return CGPoint(x: x, y: y)
-    }
-    
-    var checkmarkMiddlePoint: CGPoint {
-        let r: CGFloat = boxType == .circle ? checkmarkProperties.middlePointRadius.circle : checkmarkProperties.middlePointRadius.box
-        let o: CGFloat = boxType == .circle ? checkmarkProperties.middlePointOffset.circle : checkmarkProperties.middlePointOffset.box
-        let x: CGFloat = (size / 2.0) + (size * o)
-        let y: CGFloat = (size / 2.0 ) + (size * r)
-        return CGPoint(x: x, y: y)
-    }
-    
-    var checkmarkShortArmEndPoint: CGPoint {
-        let r: CGFloat = boxType == .circle ? checkmarkProperties.shortArmRadius.circle : checkmarkProperties.shortArmRadius.box
-        let o: CGFloat = boxType == .circle ? checkmarkProperties.shortArmOffset.circle : checkmarkProperties.shortArmOffset.box
-        let x: CGFloat = (size / 2.0) - (size * r)
-        let y: CGFloat = (size / 2.0) + (size * o)
-        return CGPoint(x: x, y: y)
-    }
-    
-    //----------------------------
-    // MARK: - Box Paths
-    //----------------------------
-    
-    override func pathForCircle() -> UIBezierPath? {
-        let radius = (size - boxLineWidth) / 2.0
-        // Create a circle that starts in the top right hand corner.
-        return UIBezierPath(arcCenter: CGPoint(x: size / 2.0, y: size / 2.0),
-                            radius: radius,
-                            startAngle: -checkmarkProperties.longArmBoxIntersectionAngle,
-                            endAngle: CGFloat(2 * Double.pi) - checkmarkProperties.longArmBoxIntersectionAngle,
-                            clockwise: true)
-    }
-    
-    override func pathForRoundedRect() -> UIBezierPath? {
-        let path = UIBezierPath()
-        let lineOffset: CGFloat = boxLineWidth / 2.0
-        
-        let trX: CGFloat = size - lineOffset - cornerRadius
-        let trY: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tr = CGPoint(x: trX, y: trY)
-        
-        let brX: CGFloat = size - lineOffset - cornerRadius
-        let brY: CGFloat = size - lineOffset - cornerRadius
-        let br = CGPoint(x: brX, y: brY)
-        
-        let blX: CGFloat = 0.0 + lineOffset + cornerRadius
-        let blY: CGFloat = size - lineOffset - cornerRadius
-        let bl = CGPoint(x: blX, y: blY)
-        
-        let tlX: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tlY: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tl = CGPoint(x: tlX, y: tlY)
-        
-        // Start in the top right corner.
-        let offset: CGFloat = ((cornerRadius * sqrt(2)) / 2.0)
-        let trXOffset: CGFloat = tr.x + offset
-        let trYOffset: CGFloat = tr.y - offset
-        path.move(to: CGPoint(x: trXOffset, y: trYOffset))
-        // Bottom of top right arc.12124
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tr,
-                        radius: cornerRadius,
-                        startAngle: -(CGFloat.pi / 4),
-                        endAngle: 0.0,
-                        clockwise: true)
-        }
-        // Right side.
-        let brXCr: CGFloat = br.x + cornerRadius
-        path.addLine(to: CGPoint(x: brXCr, y: br.y))
-        
-        // Bottom right arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: br,
-                        radius: cornerRadius,
-                        startAngle: 0.0,
-                        endAngle: CGFloat.pi / 2,
-                        clockwise: true)
-        }
-        // Bottom side.
-        let blYCr: CGFloat = bl.y + cornerRadius
-        path.addLine(to: CGPoint(x: bl.x , y: blYCr))
-        // Bottom left arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: bl,
-                        radius: cornerRadius,
-                        startAngle: CGFloat.pi / 2,
-                        endAngle: CGFloat.pi,
-                        clockwise: true)
-        }
-        // Left side.
-        let tlXCr: CGFloat = tl.x - cornerRadius
-        path.addLine(to: CGPoint(x: tlXCr, y: tl.y))
-        // Top left arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tl,
-                        radius: cornerRadius,
-                        startAngle: CGFloat.pi,
-                        endAngle: CGFloat(CGFloat.pi + (CGFloat.pi / 2)),
-                        clockwise: true)
-        }
-        // Top side.
-        let trYCr: CGFloat = tr.y - cornerRadius
-        path.addLine(to: CGPoint(x: tr.x, y: trYCr))
-        // Top of top right arc
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tr,
-                        radius: cornerRadius,
-                        startAngle: CGFloat(CGFloat.pi + (CGFloat.pi / 2)),
-                        endAngle: CGFloat(CGFloat.pi + (CGFloat.pi / 2) + (CGFloat.pi / 4)),
-                        clockwise: true)
-        }
-        path.close()
-        return path
-    }
-    
-    //----------------------------
-    // MARK: - Mark Generation
-    //----------------------------
-    
-    override func pathForMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: checkmarkShortArmEndPoint)
-        path.addLine(to: checkmarkMiddlePoint)
-        path.addLine(to: checkmarkLongArmEndPoint)
-        
-        return path
-    }
-    
-    override func pathForLongMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: checkmarkShortArmEndPoint)
-        path.addLine(to: checkmarkMiddlePoint)
-        path.addLine(to: checkmarkLongArmBoxIntersectionPoint)
-        
-        return path
-    }
-    
-    override func pathForMixedMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.25, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.75, y: size * 0.5))
-        
-        return path
-    }
-    
-    override func pathForLongMixedMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.25, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size - boxLineWidth, y: size * 0.5))
-        
-        return path
-    }
-
-    override func pathForUnselectedMark() -> UIBezierPath? {
-        return nil
-    }
-
-    override func pathForLongUnselectedMark() -> UIBezierPath? {
-        return nil
-    }
-}

+ 0 - 174
Pods/M13Checkbox/Sources/Paths/M13CheckboxDisclosurePathGenerator.swift

@@ -1,174 +0,0 @@
-//
-//  M13CheckboxDisclosurePathGenerator.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 10/10/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxDisclosurePathGenerator: M13CheckboxPathGenerator {
-    
-    //----------------------------
-    // MARK: - Box Paths
-    //----------------------------
-    
-    override func pathForCircle() -> UIBezierPath? {
-        let radius = (size - boxLineWidth) / 2.0
-        // Create a circle that starts in the middle left.
-        return UIBezierPath(arcCenter: CGPoint(x: size / 2.0, y: size / 2.0),
-                            radius: radius,
-                            startAngle: -CGFloat.pi,
-                            endAngle: CGFloat((2 * Double.pi) - Double.pi),
-                            clockwise: true)
-    }
-    
-    override func pathForRoundedRect() -> UIBezierPath? {
-        let path = UIBezierPath()
-        let lineOffset: CGFloat = boxLineWidth / 2.0
-        
-        let trX: CGFloat = size - lineOffset - cornerRadius
-        let trY: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tr = CGPoint(x: trX, y: trY)
-        
-        let brX: CGFloat = size - lineOffset - cornerRadius
-        let brY: CGFloat = size - lineOffset - cornerRadius
-        let br = CGPoint(x: brX, y: brY)
-        
-        let blX: CGFloat = 0.0 + lineOffset + cornerRadius
-        let blY: CGFloat = size - lineOffset - cornerRadius
-        let bl = CGPoint(x: blX, y: blY)
-        
-        let tlX: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tlY: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tl = CGPoint(x: tlX, y: tlY)
-        
-        path.move(to: CGPoint(x: ((tl.x + bl.x) / 2.0) - cornerRadius, y: (tl.y + bl.y) / 2.0))
-        
-        // Left side.
-        let tlXCr: CGFloat = tl.x - cornerRadius
-        path.addLine(to: CGPoint(x: tlXCr, y: tl.y))
-        // Top left arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tl,
-                        radius: cornerRadius,
-                        startAngle: CGFloat.pi,
-                        endAngle: CGFloat(Double.pi + (Double.pi / 2)),
-                        clockwise: true)
-        }
-        
-        // Top side.
-        let trYCr: CGFloat = tr.y - cornerRadius
-        path.addLine(to: CGPoint(x: tr.x, y: trYCr))
-        // Right arc
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tr,
-                        radius: cornerRadius,
-                        startAngle: -(CGFloat.pi / 2),
-                        endAngle: 0.0,
-                        clockwise: true)
-        }
-        // Right side.
-        let brXCr: CGFloat = br.x + cornerRadius
-        path.addLine(to: CGPoint(x: brXCr, y: br.y))
-        
-        // Bottom right arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: br,
-                        radius: cornerRadius,
-                        startAngle: 0.0,
-                        endAngle: CGFloat.pi / 2,
-                        clockwise: true)
-        }
-        // Bottom side.
-        let blYCr: CGFloat = bl.y + cornerRadius
-        path.addLine(to: CGPoint(x: bl.x , y: blYCr))
-        // Bottom left arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: bl,
-                        radius: cornerRadius,
-                        startAngle: CGFloat.pi / 2,
-                        endAngle: CGFloat.pi,
-                        clockwise: true)
-        }
-        
-        path.close()
-        return path
-    }
-    
-    //----------------------------
-    // MARK: - Mark Generation
-    //----------------------------
-    
-    override func pathForMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.6))
-        path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.35))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.6))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.6))
-        
-        return path
-    }
-    
-    override func pathForLongMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.6))
-        path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.35))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.6))
-        path.addLine(to: CGPoint(x: boxLineWidth, y: size * 0.6))
-        
-        return path
-    }
-    
-    override func pathForMixedMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.5))
-        
-        return path
-    }
-    
-    override func pathForLongMixedMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.5))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.5))
-        path.addLine(to: CGPoint(x: boxLineWidth, y: size * 0.5))
-        
-        return path
-    }
-    
-    override func pathForUnselectedMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.4))
-        path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.65))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.4))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.4))
-        
-        return path
-    }
-    
-    override func pathForLongUnselectedMark() -> UIBezierPath? {
-        let path = UIBezierPath()
-        
-        path.move(to: CGPoint(x: size * 0.75, y: size * 0.4))
-        path.addLine(to: CGPoint(x: size * 0.5, y: size * 0.65))
-        path.addLine(to: CGPoint(x: size * 0.25, y: size * 0.4))
-        path.addLine(to: CGPoint(x: boxLineWidth, y: size * 0.4))
-        
-        return path
-    }
-}

+ 0 - 252
Pods/M13Checkbox/Sources/Paths/M13CheckboxPathGenerator.swift

@@ -1,252 +0,0 @@
-//
-//  M13CheckboxPathGenerator.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 10/6/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-/// The base class that generates the paths for the different mark types.
-internal class M13CheckboxPathGenerator {
-    
-    //----------------------------
-    // MARK: - Properties
-    //----------------------------
-    
-    /// The maximum width or height the path will be generated with.
-    var size: CGFloat = 0.0
-    
-    /// The line width of the created checkmark.
-    var checkmarkLineWidth: CGFloat = 1.0
-    
-    /// The line width of the created box.
-    var boxLineWidth: CGFloat = 1.0
-    
-    /// The corner radius of the box.
-    var cornerRadius: CGFloat = 3.0
-    
-    /// The box type to create.
-    var boxType: M13Checkbox.BoxType = DefaultValues.boxType
-    
-    //----------------------------
-    // MARK: - Box Paths
-    //----------------------------
-    
-    /**
-     Creates a path object for the box.
-     - returns: A `UIBezierPath` representing the box.
-     */
-    final func pathForBox() -> UIBezierPath? {
-        switch boxType {
-        case .circle:
-            return pathForCircle()
-        case .square:
-            return pathForRoundedRect()
-        }
-    }
-    
-    /**
-     Creates a circular path for the box. The path starts at the top center point of the box.
-     - returns: A `UIBezierPath` representing the box.
-    */
-    func pathForCircle() -> UIBezierPath? {
-        let radius = (size - boxLineWidth) / 2.0
-        // Create a circle that starts in the top right hand corner.
-        return UIBezierPath(arcCenter: CGPoint(x: size / 2.0, y: size / 2.0),
-                            radius: radius,
-                            startAngle: -(CGFloat.pi / 2),
-                            endAngle: CGFloat((2 * Double.pi) - (Double.pi / 2)),
-                            clockwise: true)
-    }
-    
-    /**
-     Creates a rounded rect path for the box. The path starts at the top center point of the box.
-     - returns: A `UIBezierPath` representing the box.
-     */
-    func pathForRoundedRect() -> UIBezierPath? {
-        let path = UIBezierPath()
-        let lineOffset: CGFloat = boxLineWidth / 2.0
-        
-        let trX: CGFloat = size - lineOffset - cornerRadius
-        let trY: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tr = CGPoint(x: trX, y: trY)
-        
-        let brX: CGFloat = size - lineOffset - cornerRadius
-        let brY: CGFloat = size - lineOffset - cornerRadius
-        let br = CGPoint(x: brX, y: brY)
-        
-        let blX: CGFloat = 0.0 + lineOffset + cornerRadius
-        let blY: CGFloat = size - lineOffset - cornerRadius
-        let bl = CGPoint(x: blX, y: blY)
-        
-        let tlX: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tlY: CGFloat = 0.0 + lineOffset + cornerRadius
-        let tl = CGPoint(x: tlX, y: tlY)
-        
-        path.move(to: CGPoint(x: (tl.x + tr.x) / 2.0, y: ((tl.y + tr.y) / 2.0) - cornerRadius))
-        
-        // Top side.
-        let trYCr: CGFloat = tr.y - cornerRadius
-        path.addLine(to: CGPoint(x: tr.x, y: trYCr))
-        
-        // Right arc
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tr,
-                        radius: cornerRadius,
-                        startAngle: -(CGFloat.pi / 2),
-                        endAngle: 0.0,
-                        clockwise: true)
-        }
-        // Right side.
-        let brXCr: CGFloat = br.x + cornerRadius
-        path.addLine(to: CGPoint(x: brXCr, y: br.y))
-        
-        // Bottom right arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: br,
-                        radius: cornerRadius,
-                        startAngle: 0.0,
-                        endAngle: CGFloat.pi / 2,
-                        clockwise: true)
-        }
-        // Bottom side.
-        let blYCr: CGFloat = bl.y + cornerRadius
-        path.addLine(to: CGPoint(x: bl.x , y: blYCr))
-        // Bottom left arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: bl,
-                        radius: cornerRadius,
-                        startAngle: CGFloat.pi / 2,
-                        endAngle: CGFloat.pi,
-                        clockwise: true)
-        }
-        
-        // Left side.
-        let tlXCr: CGFloat = tl.x - cornerRadius
-        path.addLine(to: CGPoint(x: tlXCr, y: tl.y))
-        // Top left arc.
-        if cornerRadius != 0 {
-            path.addArc(withCenter: tl,
-                        radius: cornerRadius,
-                        startAngle: CGFloat.pi,
-                        endAngle: CGFloat(Double.pi + (Double.pi / 2)),
-                        clockwise: true)
-        }
-        path.close()
-        return path
-    }
-    
-    /**
-     Creates a small dot for the box.
-     - returns: A `UIBezierPath` representing the dot.
-     */
-    func pathForDot() -> UIBezierPath? {
-        let boxPath = pathForBox()
-        let scale: CGFloat = 1.0 / 20.0
-        boxPath?.apply(CGAffineTransform(scaleX: scale, y: scale))
-        boxPath?.apply(CGAffineTransform(translationX: (size - (size * scale)) / 2.0, y: (size - (size * scale)) / 2.0))
-        return boxPath
-    }
-    
-    //----------------------------
-    // MARK: - Check Generation
-    //----------------------------
-    
-    /**
-     Generates the path for the mark for the given state.
-     - parameter state: The state to generate the mark path for.
-     - returns: A `UIBezierPath` representing the mark.
-    */
-    final func pathForMark(_ state: M13Checkbox.CheckState?) -> UIBezierPath? {
-        
-        guard let state = state else {
-            return nil
-        }
-        
-        switch state {
-        case .unchecked:
-            return pathForUnselectedMark()
-        case .checked:
-            return pathForMark()
-        case .mixed:
-            return pathForMixedMark()
-        }
-    }
-    
-    /**
-     Generates the path for the long mark for the given state used in the spiral animation.
-     - parameter state: The state to generate the long mark path for.
-     - returns: A `UIBezierPath` representing the long mark.
-    */
-    final func pathForLongMark(_ state: M13Checkbox.CheckState?) -> UIBezierPath? {
-        
-        guard let state = state else {
-            return nil
-        }
-        
-        switch state {
-        case .unchecked:
-            return pathForLongUnselectedMark()
-        case .checked:
-            return pathForLongMark()
-        case .mixed:
-            return pathForLongMixedMark()
-        }
-    }
-    
-    /**
-     Creates a path object for the mark.
-     - returns: A `UIBezierPath` representing the mark.
-     */
-    func pathForMark() -> UIBezierPath? {
-        return nil
-    }
-    
-    /**
-     Creates a path object for the long mark.
-     - returns: A `UIBezierPath` representing the long mark.
-     */
-    func pathForLongMark() -> UIBezierPath? {
-        return nil
-    }
-    
-    /**
-     Creates a path object for the mixed mark.
-     - returns: A `UIBezierPath` representing the mixed mark.
-     */
-    func pathForMixedMark() -> UIBezierPath? {
-        return nil
-    }
-    
-    /**
-     Creates a path object for the long mixed mark.
-     - returns: A `UIBezierPath` representing the long mixed mark.
-     */
-    func pathForLongMixedMark() -> UIBezierPath? {
-        return nil
-    }
-    
-    /**
-     Creates a path object for the unselected mark.
-     - returns: A `UIBezierPath` representing the unselected mark.
-     */
-    func pathForUnselectedMark() -> UIBezierPath? {
-        return nil
-    }
-    
-    /**
-     Creates a path object for the long unselected mark.
-     - returns: A `UIBezierPath` representing the long unselected mark.
-     */
-    func pathForLongUnselectedMark() -> UIBezierPath? {
-        return nil
-    }
-    
-}

+ 0 - 51
Pods/M13Checkbox/Sources/Paths/M13CheckboxRadioPathGenerator.swift

@@ -1,51 +0,0 @@
-//
-//  M13CheckboxRadioPathGenerator.swift
-//  M13Checkbox
-//
-//  Created by McQuilkin, Brandon on 10/6/16.
-//  Copyright © 2016 Brandon McQuilkin. All rights reserved.
-//
-//  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-//
-//  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-//
-//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-import UIKit
-
-internal class M13CheckboxRadioPathGenerator: M13CheckboxPathGenerator {
-    
-    //----------------------------
-    // MARK: - Mark Generation
-    //----------------------------
-    
-    override func pathForMark() -> UIBezierPath? {
-        let transform = CGAffineTransform(scaleX: 0.665, y: 0.665)
-        let translate = CGAffineTransform(translationX: size * 0.1675, y: size * 0.1675)
-        let path = pathForBox()
-        path?.apply(transform)
-        path?.apply(translate)
-        return path
-    }
-    
-    override func pathForLongMark() -> UIBezierPath? {
-        return pathForBox()
-    }
-
-    override func pathForMixedMark() -> UIBezierPath? {
-        return pathForMark()
-    }
-    
-    override func pathForLongMixedMark() -> UIBezierPath? {
-        return pathForBox()
-    }
-
-    override func pathForUnselectedMark() -> UIBezierPath? {
-        return nil
-    }
-    
-    override func pathForLongUnselectedMark() -> UIBezierPath? {
-        return nil
-    }
-}
-

+ 1 - 9
Pods/Manifest.lock

@@ -1,8 +1,5 @@
 PODS:
-  - IGColorPicker (0.4.3):
-    - M13Checkbox
   - JXSegmentedView (1.4.1)
-  - M13Checkbox (3.4.0)
   - MultiSlider (2.2.0):
     - SweeterSwift
   - ObjectMapper (4.2.0)
@@ -10,7 +7,6 @@ PODS:
   - SweeterSwift (1.2.6)
 
 DEPENDENCIES:
-  - IGColorPicker
   - JXSegmentedView
   - MultiSlider
   - ObjectMapper (= 4.2)
@@ -18,23 +14,19 @@ DEPENDENCIES:
 
 SPEC REPOS:
   trunk:
-    - IGColorPicker
     - JXSegmentedView
-    - M13Checkbox
     - MultiSlider
     - ObjectMapper
     - SnapKit
     - SweeterSwift
 
 SPEC CHECKSUMS:
-  IGColorPicker: f6034f8629aa90cce308a76ecc0fdf2afed0bf34
   JXSegmentedView: cd73555ce2134d1656db2cb383ba9c2f36fb5078
-  M13Checkbox: 6f59404540ac98ba83a3d1afac335895a40c6a5d
   MultiSlider: 9667217199a051fa729bf54986d68fb9b911554c
   ObjectMapper: 1eb41f610210777375fa806bf161dc39fb832b81
   SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
   SweeterSwift: 1eca266517c703d7376e723a21926f5cb2ba4d0f
 
-PODFILE CHECKSUM: 080865651d35ec54f360205b568ccfaff6d7dc29
+PODFILE CHECKSUM: 8578d703dcc5fa873c09da7ea2c738e16da0e2ca
 
 COCOAPODS: 1.16.2

File diff suppressed because it is too large
+ 419 - 533
Pods/Pods.xcodeproj/project.pbxproj


+ 0 - 58
Pods/Pods.xcodeproj/xcuserdata/100years.xcuserdatad/xcschemes/IGColorPicker.xcscheme

@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1600"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "6D8D2751C5F0C2E845398BA4D7969D44"
-               BuildableName = "IGColorPicker.framework"
-               BlueprintName = "IGColorPicker"
-               ReferencedContainer = "container:Pods.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

+ 0 - 58
Pods/Pods.xcodeproj/xcuserdata/100years.xcuserdatad/xcschemes/M13Checkbox.xcscheme

@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1600"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "7111E54EAE43E89F451A75076C3525ED"
-               BuildableName = "M13Checkbox.framework"
-               BlueprintName = "M13Checkbox"
-               ReferencedContainer = "container:Pods.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

+ 0 - 10
Pods/Pods.xcodeproj/xcuserdata/100years.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -4,11 +4,6 @@
 <dict>
 	<key>SchemeUserState</key>
 	<dict>
-		<key>IGColorPicker.xcscheme</key>
-		<dict>
-			<key>isShown</key>
-			<false/>
-		</dict>
 		<key>JXSegmentedView-JXSegmentedView.xcscheme</key>
 		<dict>
 			<key>isShown</key>
@@ -19,11 +14,6 @@
 			<key>isShown</key>
 			<false/>
 		</dict>
-		<key>M13Checkbox.xcscheme</key>
-		<dict>
-			<key>isShown</key>
-			<false/>
-		</dict>
 		<key>MultiSlider-MultiSlider.xcscheme</key>
 		<dict>
 			<key>isShown</key>

+ 0 - 26
Pods/Target Support Files/IGColorPicker/IGColorPicker-Info.plist

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-  <key>CFBundleDevelopmentRegion</key>
-  <string>${PODS_DEVELOPMENT_LANGUAGE}</string>
-  <key>CFBundleExecutable</key>
-  <string>${EXECUTABLE_NAME}</string>
-  <key>CFBundleIdentifier</key>
-  <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
-  <key>CFBundleInfoDictionaryVersion</key>
-  <string>6.0</string>
-  <key>CFBundleName</key>
-  <string>${PRODUCT_NAME}</string>
-  <key>CFBundlePackageType</key>
-  <string>FMWK</string>
-  <key>CFBundleShortVersionString</key>
-  <string>0.4.3</string>
-  <key>CFBundleSignature</key>
-  <string>????</string>
-  <key>CFBundleVersion</key>
-  <string>${CURRENT_PROJECT_VERSION}</string>
-  <key>NSPrincipalClass</key>
-  <string></string>
-</dict>
-</plist>

+ 0 - 5
Pods/Target Support Files/IGColorPicker/IGColorPicker-dummy.m

@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-@interface PodsDummy_IGColorPicker : NSObject
-@end
-@implementation PodsDummy_IGColorPicker
-@end

+ 0 - 12
Pods/Target Support Files/IGColorPicker/IGColorPicker-prefix.pch

@@ -1,12 +0,0 @@
-#ifdef __OBJC__
-#import <UIKit/UIKit.h>
-#else
-#ifndef FOUNDATION_EXPORT
-#if defined(__cplusplus)
-#define FOUNDATION_EXPORT extern "C"
-#else
-#define FOUNDATION_EXPORT extern
-#endif
-#endif
-#endif
-

+ 0 - 16
Pods/Target Support Files/IGColorPicker/IGColorPicker-umbrella.h

@@ -1,16 +0,0 @@
-#ifdef __OBJC__
-#import <UIKit/UIKit.h>
-#else
-#ifndef FOUNDATION_EXPORT
-#if defined(__cplusplus)
-#define FOUNDATION_EXPORT extern "C"
-#else
-#define FOUNDATION_EXPORT extern
-#endif
-#endif
-#endif
-
-
-FOUNDATION_EXPORT double IGColorPickerVersionNumber;
-FOUNDATION_EXPORT const unsigned char IGColorPickerVersionString[];
-

+ 0 - 16
Pods/Target Support Files/IGColorPicker/IGColorPicker.debug.xcconfig

@@ -1,16 +0,0 @@
-CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox"
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
-OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "Foundation" -framework "M13Checkbox" -framework "UIKit"
-OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
-PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/IGColorPicker
-PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
-PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
-SKIP_INSTALL = YES
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 0 - 6
Pods/Target Support Files/IGColorPicker/IGColorPicker.modulemap

@@ -1,6 +0,0 @@
-framework module IGColorPicker {
-  umbrella header "IGColorPicker-umbrella.h"
-
-  export *
-  module * { export * }
-}

+ 0 - 16
Pods/Target Support Files/IGColorPicker/IGColorPicker.release.xcconfig

@@ -1,16 +0,0 @@
-CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox"
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
-OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "Foundation" -framework "M13Checkbox" -framework "UIKit"
-OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
-PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/IGColorPicker
-PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
-PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
-SKIP_INSTALL = YES
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 0 - 26
Pods/Target Support Files/M13Checkbox/M13Checkbox-Info.plist

@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-  <key>CFBundleDevelopmentRegion</key>
-  <string>${PODS_DEVELOPMENT_LANGUAGE}</string>
-  <key>CFBundleExecutable</key>
-  <string>${EXECUTABLE_NAME}</string>
-  <key>CFBundleIdentifier</key>
-  <string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
-  <key>CFBundleInfoDictionaryVersion</key>
-  <string>6.0</string>
-  <key>CFBundleName</key>
-  <string>${PRODUCT_NAME}</string>
-  <key>CFBundlePackageType</key>
-  <string>FMWK</string>
-  <key>CFBundleShortVersionString</key>
-  <string>3.4.0</string>
-  <key>CFBundleSignature</key>
-  <string>????</string>
-  <key>CFBundleVersion</key>
-  <string>${CURRENT_PROJECT_VERSION}</string>
-  <key>NSPrincipalClass</key>
-  <string></string>
-</dict>
-</plist>

+ 0 - 5
Pods/Target Support Files/M13Checkbox/M13Checkbox-dummy.m

@@ -1,5 +0,0 @@
-#import <Foundation/Foundation.h>
-@interface PodsDummy_M13Checkbox : NSObject
-@end
-@implementation PodsDummy_M13Checkbox
-@end

+ 0 - 12
Pods/Target Support Files/M13Checkbox/M13Checkbox-prefix.pch

@@ -1,12 +0,0 @@
-#ifdef __OBJC__
-#import <UIKit/UIKit.h>
-#else
-#ifndef FOUNDATION_EXPORT
-#if defined(__cplusplus)
-#define FOUNDATION_EXPORT extern "C"
-#else
-#define FOUNDATION_EXPORT extern
-#endif
-#endif
-#endif
-

+ 0 - 16
Pods/Target Support Files/M13Checkbox/M13Checkbox-umbrella.h

@@ -1,16 +0,0 @@
-#ifdef __OBJC__
-#import <UIKit/UIKit.h>
-#else
-#ifndef FOUNDATION_EXPORT
-#if defined(__cplusplus)
-#define FOUNDATION_EXPORT extern "C"
-#else
-#define FOUNDATION_EXPORT extern
-#endif
-#endif
-#endif
-
-
-FOUNDATION_EXPORT double M13CheckboxVersionNumber;
-FOUNDATION_EXPORT const unsigned char M13CheckboxVersionString[];
-

+ 0 - 15
Pods/Target Support Files/M13Checkbox/M13Checkbox.debug.xcconfig

@@ -1,15 +0,0 @@
-CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
-OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "Foundation" -framework "UIKit"
-OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
-PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/M13Checkbox
-PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
-PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
-SKIP_INSTALL = YES
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 0 - 6
Pods/Target Support Files/M13Checkbox/M13Checkbox.modulemap

@@ -1,6 +0,0 @@
-framework module M13Checkbox {
-  umbrella header "M13Checkbox-umbrella.h"
-
-  export *
-  module * { export * }
-}

+ 0 - 15
Pods/Target Support Files/M13Checkbox/M13Checkbox.release.xcconfig

@@ -1,15 +0,0 @@
-CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox
-GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift
-OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "Foundation" -framework "UIKit"
-OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings
-PODS_BUILD_DIR = ${BUILD_DIR}
-PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
-PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
-PODS_ROOT = ${SRCROOT}
-PODS_TARGET_SRCROOT = ${PODS_ROOT}/M13Checkbox
-PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
-PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
-SKIP_INSTALL = YES
-USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES

+ 0 - 35
Pods/Target Support Files/Pods-Girly/Pods-Girly-acknowledgements.markdown

@@ -1,29 +1,6 @@
 # Acknowledgements
 This application makes use of the following third party libraries:
 
-## IGColorPicker
-
-Copyright (c) 2017 iGenius Srl
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
 ## JXSegmentedView
 
 MIT License
@@ -49,18 +26,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 
 
-## M13Checkbox
-
-Copyright (c) 2016 Brandon McQuilkin
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-
 ## MultiSlider
 
 The MIT License (MIT)

+ 0 - 47
Pods/Target Support Files/Pods-Girly/Pods-Girly-acknowledgements.plist

@@ -12,35 +12,6 @@
 			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 		</dict>
-		<dict>
-			<key>FooterText</key>
-			<string>Copyright (c) 2017 iGenius Srl
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-</string>
-			<key>License</key>
-			<string>MIT</string>
-			<key>Title</key>
-			<string>IGColorPicker</string>
-			<key>Type</key>
-			<string>PSGroupSpecifier</string>
-		</dict>
 		<dict>
 			<key>FooterText</key>
 			<string>MIT License
@@ -72,24 +43,6 @@ SOFTWARE.
 			<key>Type</key>
 			<string>PSGroupSpecifier</string>
 		</dict>
-		<dict>
-			<key>FooterText</key>
-			<string>Copyright (c) 2016 Brandon McQuilkin
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-</string>
-			<key>License</key>
-			<string>MIT</string>
-			<key>Title</key>
-			<string>M13Checkbox</string>
-			<key>Type</key>
-			<string>PSGroupSpecifier</string>
-		</dict>
 		<dict>
 			<key>FooterText</key>
 			<string>The MIT License (MIT)

+ 0 - 2
Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks-Debug-input-files.xcfilelist

@@ -1,7 +1,5 @@
 ${PODS_ROOT}/Target Support Files/Pods-Girly/Pods-Girly-frameworks.sh
-${BUILT_PRODUCTS_DIR}/IGColorPicker/IGColorPicker.framework
 ${BUILT_PRODUCTS_DIR}/JXSegmentedView/JXSegmentedView.framework
-${BUILT_PRODUCTS_DIR}/M13Checkbox/M13Checkbox.framework
 ${BUILT_PRODUCTS_DIR}/MultiSlider/MultiSlider.framework
 ${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework
 ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework

+ 0 - 2
Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks-Debug-output-files.xcfilelist

@@ -1,6 +1,4 @@
-${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IGColorPicker.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXSegmentedView.framework
-${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/M13Checkbox.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MultiSlider.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework

+ 0 - 2
Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks-Release-input-files.xcfilelist

@@ -1,7 +1,5 @@
 ${PODS_ROOT}/Target Support Files/Pods-Girly/Pods-Girly-frameworks.sh
-${BUILT_PRODUCTS_DIR}/IGColorPicker/IGColorPicker.framework
 ${BUILT_PRODUCTS_DIR}/JXSegmentedView/JXSegmentedView.framework
-${BUILT_PRODUCTS_DIR}/M13Checkbox/M13Checkbox.framework
 ${BUILT_PRODUCTS_DIR}/MultiSlider/MultiSlider.framework
 ${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework
 ${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework

+ 0 - 2
Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks-Release-output-files.xcfilelist

@@ -1,6 +1,4 @@
-${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IGColorPicker.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXSegmentedView.framework
-${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/M13Checkbox.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MultiSlider.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ObjectMapper.framework
 ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework

+ 0 - 4
Pods/Target Support Files/Pods-Girly/Pods-Girly-frameworks.sh

@@ -176,18 +176,14 @@ code_sign_if_enabled() {
 }
 
 if [[ "$CONFIGURATION" == "Debug" ]]; then
-  install_framework "${BUILT_PRODUCTS_DIR}/IGColorPicker/IGColorPicker.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/JXSegmentedView/JXSegmentedView.framework"
-  install_framework "${BUILT_PRODUCTS_DIR}/M13Checkbox/M13Checkbox.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/MultiSlider/MultiSlider.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/SweeterSwift/SweeterSwift.framework"
 fi
 if [[ "$CONFIGURATION" == "Release" ]]; then
-  install_framework "${BUILT_PRODUCTS_DIR}/IGColorPicker/IGColorPicker.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/JXSegmentedView/JXSegmentedView.framework"
-  install_framework "${BUILT_PRODUCTS_DIR}/M13Checkbox/M13Checkbox.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/MultiSlider/MultiSlider.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/ObjectMapper/ObjectMapper.framework"
   install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework"

+ 5 - 5
Pods/Target Support Files/Pods-Girly/Pods-Girly.debug.xcconfig

@@ -1,13 +1,13 @@
 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker" "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox" "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker/IGColorPicker.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView/JXSegmentedView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox/M13Checkbox.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider/MultiSlider.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift/SweeterSwift.framework/Headers"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView/JXSegmentedView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider/MultiSlider.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift/SweeterSwift.framework/Headers"
 LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
 LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift
-OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker/IGColorPicker.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView/JXSegmentedView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox/M13Checkbox.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider/MultiSlider.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift/SweeterSwift.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
-OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "Foundation" -framework "IGColorPicker" -framework "JXSegmentedView" -framework "M13Checkbox" -framework "MultiSlider" -framework "ObjectMapper" -framework "SnapKit" -framework "SweeterSwift" -framework "UIKit" -weak_framework "SwiftUI"
-OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" "-F${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox" "-F${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" "-F${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "-F${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
+OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView/JXSegmentedView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider/MultiSlider.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift/SweeterSwift.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
+OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "JXSegmentedView" -framework "MultiSlider" -framework "ObjectMapper" -framework "SnapKit" -framework "SweeterSwift" -framework "UIKit" -weak_framework "SwiftUI"
+OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" "-F${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" "-F${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "-F${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

+ 5 - 5
Pods/Target Support Files/Pods-Girly/Pods-Girly.release.xcconfig

@@ -1,13 +1,13 @@
 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
 CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
-FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker" "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox" "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
+FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
-HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker/IGColorPicker.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView/JXSegmentedView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox/M13Checkbox.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider/MultiSlider.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift/SweeterSwift.framework/Headers"
+HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView/JXSegmentedView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider/MultiSlider.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift/SweeterSwift.framework/Headers"
 LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks'
 LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift
-OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker/IGColorPicker.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView/JXSegmentedView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox/M13Checkbox.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider/MultiSlider.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift/SweeterSwift.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
-OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "Foundation" -framework "IGColorPicker" -framework "JXSegmentedView" -framework "M13Checkbox" -framework "MultiSlider" -framework "ObjectMapper" -framework "SnapKit" -framework "SweeterSwift" -framework "UIKit" -weak_framework "SwiftUI"
-OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/IGColorPicker" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" "-F${PODS_CONFIGURATION_BUILD_DIR}/M13Checkbox" "-F${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" "-F${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "-F${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
+OTHER_CFLAGS = $(inherited) -isystem "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView/JXSegmentedView.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider/MultiSlider.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper/ObjectMapper.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" -isystem "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift/SweeterSwift.framework/Headers" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" -iframework "${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
+OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "JXSegmentedView" -framework "MultiSlider" -framework "ObjectMapper" -framework "SnapKit" -framework "SweeterSwift" -framework "UIKit" -weak_framework "SwiftUI"
+OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/JXSegmentedView" "-F${PODS_CONFIGURATION_BUILD_DIR}/MultiSlider" "-F${PODS_CONFIGURATION_BUILD_DIR}/ObjectMapper" "-F${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" "-F${PODS_CONFIGURATION_BUILD_DIR}/SweeterSwift"
 OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
 PODS_BUILD_DIR = ${BUILD_DIR}
 PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

Some files were not shown because too many files changed in this diff