From 0479eb87f50272c9d5b8451685d681d098a2e3b9 Mon Sep 17 00:00:00 2001 From: Merrick Sapsford Date: Thu, 18 Oct 2018 20:18:01 +0200 Subject: [PATCH] Integrate Example dependencies via Carthage --- .gitignore | 2 +- Cartfile.private | 1 + Cartfile.resolved | 1 + .../Pageboy-Example.xcodeproj/project.pbxproj | 61 +- Example/Pageboy-Example/PageStepper.swift | 41 +- Pageboy.xcworkspace/contents.xcworkspacedata | 3 - Podfile | 25 - Podfile.lock | 20 - Pods/BulletinBoard/LICENSE | 22 - Pods/BulletinBoard/README.md | 300 ----- Pods/BulletinBoard/Resources/CloseGlyph.png | Bin 234 -> 0 bytes .../BulletinBoard/Resources/CloseGlyph@2x.png | Bin 414 -> 0 bytes .../BulletinBoard/Resources/CloseGlyph@3x.png | Bin 586 -> 0 bytes .../Strings/ar.lproj/Localizable.strings | 6 - .../Strings/ca.lproj/Localizable.strings | 6 - .../Strings/cs.lproj/Localizable.strings | 6 - .../Strings/da.lproj/Localizable.strings | 6 - .../Strings/de.lproj/Localizable.strings | 6 - .../Strings/el.lproj/Localizable.strings | 6 - .../Strings/en.lproj/Localizable.strings | 6 - .../Strings/es.lproj/Localizable.strings | 6 - .../Strings/fi.lproj/Localizable.strings | 6 - .../Strings/fr.lproj/Localizable.strings | 6 - .../Strings/he.lproj/Localizable.strings | 6 - .../Strings/hi.lproj/Localizable.strings | 6 - .../Strings/hr.lproj/Localizable.strings | 6 - .../Strings/hu.lproj/Localizable.strings | 6 - .../Strings/id.lproj/Localizable.strings | 6 - .../Strings/it.lproj/Localizable.strings | 6 - .../Strings/ja.lproj/Localizable.strings | 6 - .../Strings/ko.lproj/Localizable.strings | 6 - .../Strings/ms.lproj/Localizable.strings | 6 - .../Strings/nb.lproj/Localizable.strings | 6 - .../Strings/nl.lproj/Localizable.strings | 6 - .../Strings/pl.lproj/Localizable.strings | 6 - .../Strings/pt-BR.lproj/Localizable.strings | 6 - .../Strings/pt-PT.lproj/Localizable.strings | 6 - .../Strings/ro.lproj/Localizable.strings | 6 - .../Strings/ru.lproj/Localizable.strings | 6 - .../Strings/sk.lproj/Localizable.strings | 6 - .../Strings/sv.lproj/Localizable.strings | 6 - .../Strings/th.lproj/Localizable.strings | 6 - .../Strings/tr.lproj/Localizable.strings | 6 - .../Strings/uk.lproj/Localizable.strings | 6 - .../Strings/vi.lproj/Localizable.strings | 6 - .../Strings/zh-Hans.lproj/Localizable.strings | 6 - .../Strings/zh-Hant.lproj/Localizable.strings | 6 - .../Appearance/BLTNBackgroundViewStyle.swift | 87 -- .../Appearance/BLTNInterfaceBuilder.swift | 213 --- .../Appearance/BLTNItemAppearance.swift | 184 --- .../Sources/Appearance/BLTNSpacing.swift | 56 - .../Sources/Appearance/BLTNViewPosition.swift | 20 - Pods/BulletinBoard/Sources/BLTNBoard.h | 10 - .../Sources/BLTNItemManager.swift | 636 --------- Pods/BulletinBoard/Sources/Deprecations.swift | 30 - .../Sources/Models/BLTNActionItem.h | 288 ---- .../Sources/Models/BLTNActionItem.m | 170 --- Pods/BulletinBoard/Sources/Models/BLTNItem.h | 122 -- .../Sources/Models/BLTNPageItem.h | 140 -- .../Sources/Models/BLTNPageItem.m | 162 --- .../Support/Animations/AnimationChain.swift | 163 --- .../BulletinDismissAnimationController.swift | 86 -- ...letinPresentationAnimationController.swift | 74 -- .../BulletinSwipeInteractionController.swift | 260 ---- .../Support/BulletinViewController.swift | 636 --------- .../Helpers/UIButton+BackgroundColor.swift | 26 - .../Support/Helpers/UIColor+Luminance.swift | 25 - .../Support/Helpers/UIView+SafeAnchors.swift | 27 - .../Views/Internal/ActivityIndicator.swift | 70 - .../Internal/BulletinBackgroundView.swift | 134 -- .../Views/Internal/BulletinCloseButton.swift | 122 -- .../ContinuousMaskLayer.swift | 81 -- .../RoundedViewProtocol.swift | 45 - .../UIView+RoundedView.swift | 30 - .../Views/Internal/HighlightButton.swift | 71 - .../Support/Views/Internal/Highlighter.swift | 110 -- .../Views/Public/BLTNContainerView.swift | 47 - .../Public/BLTNHighlightButtonWrapper.swift | 42 - .../Public/BLTNTitleLabelContainer.swift | 45 - Pods/Manifest.lock | 20 - Pods/Pods.xcodeproj/project.pbxproj | 1172 ----------------- Pods/SnapKit/LICENSE | 19 - Pods/SnapKit/README.md | 129 -- Pods/SnapKit/Source/Constraint.swift | 289 ---- .../SnapKit/Source/ConstraintAttributes.swift | 190 --- Pods/SnapKit/Source/ConstraintConfig.swift | 37 - .../Source/ConstraintConstantTarget.swift | 147 --- Pods/SnapKit/Source/ConstraintDSL.swift | 185 --- .../Source/ConstraintDescription.swift | 69 - .../Source/ConstraintInsetTarget.swift | 72 - Pods/SnapKit/Source/ConstraintInsets.swift | 35 - Pods/SnapKit/Source/ConstraintItem.swift | 61 - .../ConstraintLayoutGuide+Extensions.swift | 36 - .../Source/ConstraintLayoutGuide.swift | 37 - .../Source/ConstraintLayoutGuideDSL.swift | 66 - .../Source/ConstraintLayoutSupport.swift | 36 - .../Source/ConstraintLayoutSupportDSL.swift | 56 - Pods/SnapKit/Source/ConstraintMaker.swift | 220 ---- .../Source/ConstraintMakerEditable.swift | 56 - .../Source/ConstraintMakerExtendable.swift | 169 --- .../Source/ConstraintMakerFinalizable.swift | 49 - .../Source/ConstraintMakerPriortizable.swift | 68 - .../Source/ConstraintMakerRelatable.swift | 113 -- .../Source/ConstraintMultiplierTarget.swift | 75 -- .../Source/ConstraintOffsetTarget.swift | 69 - Pods/SnapKit/Source/ConstraintPriority.swift | 77 -- .../Source/ConstraintPriorityTarget.swift | 75 -- .../Source/ConstraintRelatableTarget.swift | 66 - Pods/SnapKit/Source/ConstraintRelation.swift | 48 - .../Source/ConstraintView+Extensions.swift | 152 --- Pods/SnapKit/Source/ConstraintView.swift | 35 - Pods/SnapKit/Source/ConstraintViewDSL.swift | 101 -- Pods/SnapKit/Source/Debugging.swift | 160 --- Pods/SnapKit/Source/LayoutConstraint.swift | 57 - .../SnapKit/Source/LayoutConstraintItem.swift | 93 -- Pods/SnapKit/Source/Typealiases.swift | 37 - .../Source/UILayoutSupport+Extensions.swift | 36 - .../BulletinBoard/BulletinBoard-dummy.m | 5 - .../BulletinBoard/BulletinBoard-prefix.pch | 12 - .../BulletinBoard/BulletinBoard-umbrella.h | 20 - .../BulletinBoard/BulletinBoard.modulemap | 6 - .../BulletinBoard/BulletinBoard.xcconfig | 10 - .../BulletinBoard/Info.plist | 26 - .../Pods-Pageboy-Example/Info.plist | 26 - ...-Pageboy-Example-acknowledgements.markdown | 52 - ...ods-Pageboy-Example-acknowledgements.plist | 90 -- .../Pods-Pageboy-Example-dummy.m | 5 - .../Pods-Pageboy-Example-frameworks.sh | 155 --- .../Pods-Pageboy-Example-resources.sh | 118 -- .../Pods-Pageboy-Example-umbrella.h | 16 - .../Pods-Pageboy-Example.debug.xcconfig | 11 - .../Pods-Pageboy-Example.modulemap | 6 - .../Pods-Pageboy-Example.release.xcconfig | 11 - Pods/Target Support Files/SnapKit/Info.plist | 26 - .../SnapKit/SnapKit-dummy.m | 5 - .../SnapKit/SnapKit-prefix.pch | 12 - .../SnapKit/SnapKit-umbrella.h | 16 - .../SnapKit/SnapKit.modulemap | 6 - .../SnapKit/SnapKit.xcconfig | 9 - 139 files changed, 39 insertions(+), 9908 deletions(-) create mode 100644 Cartfile.private create mode 100644 Cartfile.resolved delete mode 100644 Podfile delete mode 100644 Podfile.lock delete mode 100644 Pods/BulletinBoard/LICENSE delete mode 100644 Pods/BulletinBoard/README.md delete mode 100644 Pods/BulletinBoard/Resources/CloseGlyph.png delete mode 100644 Pods/BulletinBoard/Resources/CloseGlyph@2x.png delete mode 100644 Pods/BulletinBoard/Resources/CloseGlyph@3x.png delete mode 100644 Pods/BulletinBoard/Resources/Strings/ar.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/ca.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/cs.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/da.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/de.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/el.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/en.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/es.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/fi.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/fr.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/he.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/hi.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/hr.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/hu.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/id.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/it.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/ja.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/ko.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/ms.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/nb.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/nl.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/pl.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/pt-BR.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/pt-PT.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/ro.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/ru.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/sk.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/sv.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/th.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/tr.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/uk.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/vi.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/zh-Hans.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Resources/Strings/zh-Hant.lproj/Localizable.strings delete mode 100644 Pods/BulletinBoard/Sources/Appearance/BLTNBackgroundViewStyle.swift delete mode 100644 Pods/BulletinBoard/Sources/Appearance/BLTNInterfaceBuilder.swift delete mode 100644 Pods/BulletinBoard/Sources/Appearance/BLTNItemAppearance.swift delete mode 100644 Pods/BulletinBoard/Sources/Appearance/BLTNSpacing.swift delete mode 100644 Pods/BulletinBoard/Sources/Appearance/BLTNViewPosition.swift delete mode 100644 Pods/BulletinBoard/Sources/BLTNBoard.h delete mode 100644 Pods/BulletinBoard/Sources/BLTNItemManager.swift delete mode 100644 Pods/BulletinBoard/Sources/Deprecations.swift delete mode 100644 Pods/BulletinBoard/Sources/Models/BLTNActionItem.h delete mode 100644 Pods/BulletinBoard/Sources/Models/BLTNActionItem.m delete mode 100644 Pods/BulletinBoard/Sources/Models/BLTNItem.h delete mode 100644 Pods/BulletinBoard/Sources/Models/BLTNPageItem.h delete mode 100644 Pods/BulletinBoard/Sources/Models/BLTNPageItem.m delete mode 100644 Pods/BulletinBoard/Sources/Support/Animations/AnimationChain.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Animations/BulletinDismissAnimationController.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Animations/BulletinPresentationAnimationController.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Animations/BulletinSwipeInteractionController.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/BulletinViewController.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Helpers/UIButton+BackgroundColor.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Helpers/UIColor+Luminance.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Helpers/UIView+SafeAnchors.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Internal/ActivityIndicator.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Internal/BulletinBackgroundView.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Internal/BulletinCloseButton.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/ContinuousMaskLayer.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/RoundedViewProtocol.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/UIView+RoundedView.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Internal/HighlightButton.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Internal/Highlighter.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Public/BLTNContainerView.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Public/BLTNHighlightButtonWrapper.swift delete mode 100644 Pods/BulletinBoard/Sources/Support/Views/Public/BLTNTitleLabelContainer.swift delete mode 100644 Pods/Manifest.lock delete mode 100644 Pods/Pods.xcodeproj/project.pbxproj delete mode 100644 Pods/SnapKit/LICENSE delete mode 100644 Pods/SnapKit/README.md delete mode 100644 Pods/SnapKit/Source/Constraint.swift delete mode 100644 Pods/SnapKit/Source/ConstraintAttributes.swift delete mode 100644 Pods/SnapKit/Source/ConstraintConfig.swift delete mode 100644 Pods/SnapKit/Source/ConstraintConstantTarget.swift delete mode 100644 Pods/SnapKit/Source/ConstraintDSL.swift delete mode 100644 Pods/SnapKit/Source/ConstraintDescription.swift delete mode 100644 Pods/SnapKit/Source/ConstraintInsetTarget.swift delete mode 100644 Pods/SnapKit/Source/ConstraintInsets.swift delete mode 100644 Pods/SnapKit/Source/ConstraintItem.swift delete mode 100644 Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift delete mode 100644 Pods/SnapKit/Source/ConstraintLayoutGuide.swift delete mode 100644 Pods/SnapKit/Source/ConstraintLayoutGuideDSL.swift delete mode 100644 Pods/SnapKit/Source/ConstraintLayoutSupport.swift delete mode 100644 Pods/SnapKit/Source/ConstraintLayoutSupportDSL.swift delete mode 100644 Pods/SnapKit/Source/ConstraintMaker.swift delete mode 100644 Pods/SnapKit/Source/ConstraintMakerEditable.swift delete mode 100644 Pods/SnapKit/Source/ConstraintMakerExtendable.swift delete mode 100644 Pods/SnapKit/Source/ConstraintMakerFinalizable.swift delete mode 100644 Pods/SnapKit/Source/ConstraintMakerPriortizable.swift delete mode 100644 Pods/SnapKit/Source/ConstraintMakerRelatable.swift delete mode 100644 Pods/SnapKit/Source/ConstraintMultiplierTarget.swift delete mode 100644 Pods/SnapKit/Source/ConstraintOffsetTarget.swift delete mode 100644 Pods/SnapKit/Source/ConstraintPriority.swift delete mode 100644 Pods/SnapKit/Source/ConstraintPriorityTarget.swift delete mode 100644 Pods/SnapKit/Source/ConstraintRelatableTarget.swift delete mode 100644 Pods/SnapKit/Source/ConstraintRelation.swift delete mode 100644 Pods/SnapKit/Source/ConstraintView+Extensions.swift delete mode 100644 Pods/SnapKit/Source/ConstraintView.swift delete mode 100644 Pods/SnapKit/Source/ConstraintViewDSL.swift delete mode 100644 Pods/SnapKit/Source/Debugging.swift delete mode 100644 Pods/SnapKit/Source/LayoutConstraint.swift delete mode 100644 Pods/SnapKit/Source/LayoutConstraintItem.swift delete mode 100644 Pods/SnapKit/Source/Typealiases.swift delete mode 100644 Pods/SnapKit/Source/UILayoutSupport+Extensions.swift delete mode 100644 Pods/Target Support Files/BulletinBoard/BulletinBoard-dummy.m delete mode 100644 Pods/Target Support Files/BulletinBoard/BulletinBoard-prefix.pch delete mode 100644 Pods/Target Support Files/BulletinBoard/BulletinBoard-umbrella.h delete mode 100644 Pods/Target Support Files/BulletinBoard/BulletinBoard.modulemap delete mode 100644 Pods/Target Support Files/BulletinBoard/BulletinBoard.xcconfig delete mode 100644 Pods/Target Support Files/BulletinBoard/Info.plist delete mode 100644 Pods/Target Support Files/Pods-Pageboy-Example/Info.plist delete mode 100644 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-acknowledgements.markdown delete mode 100644 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-acknowledgements.plist delete mode 100644 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-dummy.m delete mode 100755 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-frameworks.sh delete mode 100755 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-resources.sh delete mode 100644 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-umbrella.h delete mode 100644 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.debug.xcconfig delete mode 100644 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.modulemap delete mode 100644 Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.release.xcconfig delete mode 100644 Pods/Target Support Files/SnapKit/Info.plist delete mode 100644 Pods/Target Support Files/SnapKit/SnapKit-dummy.m delete mode 100644 Pods/Target Support Files/SnapKit/SnapKit-prefix.pch delete mode 100644 Pods/Target Support Files/SnapKit/SnapKit-umbrella.h delete mode 100644 Pods/Target Support Files/SnapKit/SnapKit.modulemap delete mode 100644 Pods/Target Support Files/SnapKit/SnapKit.xcconfig diff --git a/.gitignore b/.gitignore index 78312cc9..6cca5424 100644 --- a/.gitignore +++ b/.gitignore @@ -50,7 +50,7 @@ playground.xcworkspace # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts -Carthage/Build +Carthage/ # fastlane # diff --git a/Cartfile.private b/Cartfile.private new file mode 100644 index 00000000..63aea10b --- /dev/null +++ b/Cartfile.private @@ -0,0 +1 @@ +github "alexaubry/BulletinBoard" ~> 2.0.0 \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved new file mode 100644 index 00000000..25d4cbdf --- /dev/null +++ b/Cartfile.resolved @@ -0,0 +1 @@ +github "alexaubry/BulletinBoard" "2.0.2" diff --git a/Example/Pageboy-Example.xcodeproj/project.pbxproj b/Example/Pageboy-Example.xcodeproj/project.pbxproj index 5d786e28..0171e336 100644 --- a/Example/Pageboy-Example.xcodeproj/project.pbxproj +++ b/Example/Pageboy-Example.xcodeproj/project.pbxproj @@ -19,8 +19,8 @@ 46A32DBA20FF7ADC003AEAFC /* Gradients.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A32DB920FF7ADC003AEAFC /* Gradients.swift */; }; 46A32DC120FF7BBC003AEAFC /* UIColor+Interpolation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A32DC020FF7BBC003AEAFC /* UIColor+Interpolation.swift */; }; 46A32DC320FF7DA8003AEAFC /* GradientViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46A32DC220FF7DA8003AEAFC /* GradientViewController.swift */; }; + 46B7BD79217905500041EFFC /* BLTNBoard.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46B7BD74217905500041EFFC /* BLTNBoard.framework */; }; 46EDC8F7210368B400675EC3 /* SettingsBulletinDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46EDC8F6210368B400675EC3 /* SettingsBulletinDataSource.swift */; }; - 95EB9402F206F2C241407EEE /* Pods_Pageboy_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C5C1D68F89D0728DCA126B0A /* Pods_Pageboy_Example.framework */; }; D623B1E21E1D32D700527F3D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D623B1E11E1D32D700527F3D /* AppDelegate.swift */; }; D623B1E41E1D32D700527F3D /* PageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D623B1E31E1D32D700527F3D /* PageViewController.swift */; }; D623B1E71E1D32D700527F3D /* Pageboy.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D623B1E51E1D32D700527F3D /* Pageboy.storyboard */; }; @@ -95,7 +95,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 22D5D537913042076AC16780 /* Pods-Pageboy-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Pageboy-Example.release.xcconfig"; path = "../Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.release.xcconfig"; sourceTree = ""; }; 4603D7712103701E00FA0F23 /* PageViewController+Bulletins.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PageViewController+Bulletins.swift"; sourceTree = ""; }; 4603D77921060C8600FA0F23 /* SettingsBulletinPage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsBulletinPage.swift; sourceTree = ""; }; 4603D77D2106148A00FA0F23 /* SettingsOptionButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsOptionButton.swift; sourceTree = ""; }; @@ -108,8 +107,8 @@ 46A32DB920FF7ADC003AEAFC /* Gradients.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Gradients.swift; sourceTree = ""; }; 46A32DC020FF7BBC003AEAFC /* UIColor+Interpolation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+Interpolation.swift"; sourceTree = ""; }; 46A32DC220FF7DA8003AEAFC /* GradientViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientViewController.swift; sourceTree = ""; }; + 46B7BD74217905500041EFFC /* BLTNBoard.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = BLTNBoard.framework; path = ../Carthage/Build/iOS/BLTNBoard.framework; sourceTree = ""; }; 46EDC8F6210368B400675EC3 /* SettingsBulletinDataSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsBulletinDataSource.swift; sourceTree = ""; }; - C5C1D68F89D0728DCA126B0A /* Pods_Pageboy_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Pageboy_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D623B1DE1E1D32D700527F3D /* Pageboy-Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Pageboy-Example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; D623B1E11E1D32D700527F3D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; D623B1E31E1D32D700527F3D /* PageViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PageViewController.swift; sourceTree = ""; }; @@ -122,7 +121,6 @@ D681E3531E549F7E007C08F5 /* PageViewController+BarButtons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PageViewController+BarButtons.swift"; sourceTree = ""; }; D681E3551E54ABE8007C08F5 /* TransparentNavigationBar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransparentNavigationBar.swift; sourceTree = ""; }; D6ECCEC51E51B6FB00E9D5B3 /* ChildViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChildViewController.swift; sourceTree = ""; }; - E8DA8DCCF2018C397CC96DF4 /* Pods-Pageboy-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Pageboy-Example.debug.xcconfig"; path = "../Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.debug.xcconfig"; sourceTree = ""; }; E8F663AA1E9C387D00F601AC /* UINavigationController+Utilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UINavigationController+Utilities.swift"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -132,7 +130,7 @@ buildActionMask = 2147483647; files = ( D681E3331E546A90007C08F5 /* Pageboy.framework in Frameworks */, - 95EB9402F206F2C241407EEE /* Pods_Pageboy_Example.framework in Frameworks */, + 46B7BD79217905500041EFFC /* BLTNBoard.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -186,7 +184,6 @@ D623B1E01E1D32D700527F3D /* Pageboy-Example */, D6CC55831ECCCCB700A7FBB4 /* Frameworks */, D623B1DF1E1D32D700527F3D /* Products */, - E89E66555AB13D5969586923 /* Pods */, ); sourceTree = ""; }; @@ -251,21 +248,12 @@ D6CC55831ECCCCB700A7FBB4 /* Frameworks */ = { isa = PBXGroup; children = ( + 46B7BD74217905500041EFFC /* BLTNBoard.framework */, D681E31E1E546A7D007C08F5 /* Pageboy.xcodeproj */, - C5C1D68F89D0728DCA126B0A /* Pods_Pageboy_Example.framework */, ); name = Frameworks; sourceTree = ""; }; - E89E66555AB13D5969586923 /* Pods */ = { - isa = PBXGroup; - children = ( - E8DA8DCCF2018C397CC96DF4 /* Pods-Pageboy-Example.debug.xcconfig */, - 22D5D537913042076AC16780 /* Pods-Pageboy-Example.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -273,12 +261,11 @@ isa = PBXNativeTarget; buildConfigurationList = D623B1F01E1D32D700527F3D /* Build configuration list for PBXNativeTarget "Pageboy-Example" */; buildPhases = ( - BF43A48B7FD85A3BD59BE132 /* [CP] Check Pods Manifest.lock */, D623B1DA1E1D32D700527F3D /* Sources */, D623B1DB1E1D32D700527F3D /* Frameworks */, D623B1DC1E1D32D700527F3D /* Resources */, D6E73A701E51F7C400A8D5A5 /* Embed Frameworks */, - 1C801D1CF6D073978EA7D11A /* [CP] Embed Pods Frameworks */, + 46B7BD7A217905650041EFFC /* Copy Carthage Frameworks */, ); buildRules = ( ); @@ -384,43 +371,25 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 1C801D1CF6D073978EA7D11A /* [CP] Embed Pods Frameworks */ = { + 46B7BD7A217905650041EFFC /* Copy Carthage Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${SRCROOT}/../Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/BulletinBoard/BLTNBoard.framework", - "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework", - ); - name = "[CP] Embed Pods Frameworks"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BLTNBoard.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - BF43A48B7FD85A3BD59BE132 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( + inputFileListPaths = ( ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", + "$(SRCROOT)/../Carthage/Build/iOS/BLTNBoard.framework", + ); + name = "Copy Carthage Frameworks"; + outputFileListPaths = ( ); - name = "[CP] Check Pods Manifest.lock"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Pageboy-Example-checkManifestLockResult.txt", + "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/BLTNBoard.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "/usr/local/bin/carthage copy-frameworks\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -594,11 +563,11 @@ }; D623B1F11E1D32D700527F3D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E8DA8DCCF2018C397CC96DF4 /* Pods-Pageboy-Example.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; DEVELOPMENT_TEAM = ""; + FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../Carthage/Build/iOS"; INFOPLIST_FILE = "Pageboy-Example/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.uias.Pageboy-Example"; @@ -612,11 +581,11 @@ }; D623B1F21E1D32D700527F3D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 22D5D537913042076AC16780 /* Pods-Pageboy-Example.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; DEVELOPMENT_TEAM = ""; + FRAMEWORK_SEARCH_PATHS = "$(SRCROOT)/../Carthage/Build/iOS"; INFOPLIST_FILE = "Pageboy-Example/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "com.uias.Pageboy-Example"; diff --git a/Example/Pageboy-Example/PageStepper.swift b/Example/Pageboy-Example/PageStepper.swift index 5fba8ef1..c5930bf3 100644 --- a/Example/Pageboy-Example/PageStepper.swift +++ b/Example/Pageboy-Example/PageStepper.swift @@ -7,7 +7,6 @@ // import UIKit -import SnapKit class PageStepper: UIControl { @@ -61,31 +60,34 @@ class PageStepper: UIControl { let negativeButton = makeStepperButton(for: .negative) negativeButton.addTarget(self, action: #selector(negativeButtonPressed(_:)), for: .touchUpInside) addSubview(negativeButton) - negativeButton.snp.makeConstraints { (make) in - make.leading.equalToSuperview() - make.top.equalToSuperview() - make.bottom.equalToSuperview() - } + negativeButton.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + negativeButton.leadingAnchor.constraint(equalTo: leadingAnchor), + negativeButton.topAnchor.constraint(equalTo: topAnchor), + negativeButton.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) self.negativeButton = negativeButton let positiveButton = makeStepperButton(for: .positive) positiveButton.addTarget(self, action: #selector(positiveButtonPressed(_:)), for: .touchUpInside) addSubview(positiveButton) - positiveButton.snp.makeConstraints { (make) in - make.trailing.equalToSuperview() - make.top.equalToSuperview() - make.bottom.equalToSuperview() - } + positiveButton.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + positiveButton.trailingAnchor.constraint(equalTo: trailingAnchor), + positiveButton.topAnchor.constraint(equalTo: topAnchor), + positiveButton.bottomAnchor.constraint(equalTo: bottomAnchor) + ]) self.positiveButton = positiveButton let statusLabel = makeStatusLabel() addSubview(statusLabel) - statusLabel.snp.makeConstraints { (make) in - make.leading.equalTo(negativeButton.snp.trailing) - make.top.equalToSuperview() - make.bottom.equalToSuperview() - make.trailing.equalTo(positiveButton.snp.leading) - } + statusLabel.translatesAutoresizingMaskIntoConstraints = false + NSLayoutConstraint.activate([ + statusLabel.leadingAnchor.constraint(equalTo: negativeButton.trailingAnchor), + statusLabel.topAnchor.constraint(equalTo: topAnchor), + statusLabel.bottomAnchor.constraint(equalTo: bottomAnchor), + statusLabel.trailingAnchor.constraint(equalTo: positiveButton.leadingAnchor) + ]) self.statusLabel = statusLabel update(for: currentPage) @@ -130,9 +132,8 @@ extension PageStepper { button.imageView?.contentMode = .scaleAspectFit button.imageEdgeInsets = UIEdgeInsets(top: 10.0, left: 28.0, bottom: 10.0, right: 28.0) - button.snp.makeConstraints { (make) in - make.width.equalTo(80.0) - } + button.translatesAutoresizingMaskIntoConstraints = false + button.widthAnchor.constraint(equalToConstant: 80.0).isActive = true return button } diff --git a/Pageboy.xcworkspace/contents.xcworkspacedata b/Pageboy.xcworkspace/contents.xcworkspacedata index c081025d..00ccfc89 100644 --- a/Pageboy.xcworkspace/contents.xcworkspacedata +++ b/Pageboy.xcworkspace/contents.xcworkspacedata @@ -7,7 +7,4 @@ - - diff --git a/Podfile b/Podfile deleted file mode 100644 index 56eec17b..00000000 --- a/Podfile +++ /dev/null @@ -1,25 +0,0 @@ -platform :ios, '9.0' - -target 'Pageboy-Example' do - workspace 'Pageboy' - project './Example/Pageboy-Example.xcodeproj' - - use_frameworks! - - pod 'BulletinBoard', '~> 2.0' - pod 'SnapKit', '~> 4.0' - -end - -post_install do |installer| - - # convert incompatible pods back to Swift 4.1 - myTargets = ['BulletinBoard', 'SnapKit'] - installer.pods_project.targets.each do |target| - if myTargets.include? target.name - target.build_configurations.each do |config| - config.build_settings['SWIFT_VERSION'] = '4.1' - end - end - end -end \ No newline at end of file diff --git a/Podfile.lock b/Podfile.lock deleted file mode 100644 index d796a9ae..00000000 --- a/Podfile.lock +++ /dev/null @@ -1,20 +0,0 @@ -PODS: - - BulletinBoard (2.0.1) - - SnapKit (4.0.0) - -DEPENDENCIES: - - BulletinBoard (~> 2.0) - - SnapKit (~> 4.0) - -SPEC REPOS: - https://github.com/cocoapods/specs.git: - - BulletinBoard - - SnapKit - -SPEC CHECKSUMS: - BulletinBoard: 99a428f91f64d0ffabf8a8104f79ecd064e2a4db - SnapKit: a42d492c16e80209130a3379f73596c3454b7694 - -PODFILE CHECKSUM: c3e205b008526633bc522e5b6ef558877b8e54a6 - -COCOAPODS: 1.5.3 diff --git a/Pods/BulletinBoard/LICENSE b/Pods/BulletinBoard/LICENSE deleted file mode 100644 index 06c97274..00000000 --- a/Pods/BulletinBoard/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017 Alexis Aubry - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/Pods/BulletinBoard/README.md b/Pods/BulletinBoard/README.md deleted file mode 100644 index c36b801c..00000000 --- a/Pods/BulletinBoard/README.md +++ /dev/null @@ -1,300 +0,0 @@ -# BulletinBoard - -[![CI Status](https://travis-ci.org/alexaubry/BulletinBoard.svg?branch=master)](https://travis-ci.org/alexaubry/BulletinBoard) -[![Version](https://img.shields.io/cocoapods/v/BulletinBoard.svg?style=flat)](https://cocoapods.org/pods/BulletinBoard) -[![License](https://img.shields.io/cocoapods/l/BulletinBoard.svg?style=flat)](https://cocoapods.org/pods/BulletinBoard) -[![Platform](https://img.shields.io/cocoapods/p/BulletinBoard.svg?style=flat)](https://cocoapods.org/pods/BulletinBoard) -[![Documentation](https://img.shields.io/badge/Documentation-available-blue.svg)](https://alexaubry.github.io/BulletinBoard) -[![Contact: @_alexaubry](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/twitter_badge.svg?sanitize=true)](https://twitter.com/_alexaubry) - -BulletinBoard is an iOS library that generates and manages contextual cards displayed at the bottom of the screen. It is especially well suited for quick user interactions such as onboarding screens or configuration. - -It has an interface similar to the cards displayed by iOS for AirPods, Apple TV/HomePod configuration and NFC tag scanning. It supports both the iPhone, iPhone X and the iPad. - -It has built-in support for accessibility features such as VoiceOver and Switch Control. - -Here are some screenshots showing what you can build with BulletinBoard: - -![Demo Screenshots](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/demo_screenshots.png) - -## Requirements - -- Xcode 9 and later -- iOS 9 and later -- Swift 3.2 and later - -## Demo - -A demo project is included in the `BulletinBoard` workspace. It demonstrates how to: - -- integrate the library (setup, data flow) -- create standard page cards -- create custom page subclasses to add features -- create custom cards from scratch - -Two demo targets are available: - -- `BB-Swift` (demo written in Swift) -- `BB-ObjC` (demo written in Objective-C) - -Build and run the scheme for your favorite language to open the demo app. - -Here's a video showing it in action: - -[![Watch Demo on YouTube](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/demo_thumbnail.png)](https://youtu.be/f4UErY-epYY) - -## Installation - -BulletinBoard is available via CocoaPods and Carthage. - -### CocoaPods - -To install BulletinBoard using [CocoaPods](https://cocoapods.org), add this line to your `Podfile`: - -~~~ruby -pod 'BulletinBoard' -~~~ - -### Carthage - -To install BulletinBoard using [Carthage](https://github.com/Carthage/Carthage), add this line to your `Cartfile`: - -~~~ -github "alexaubry/BulletinBoard" -~~~ - -## 🦕 Objective-C Integration - -BulletinBoard is fully compatible with Objective-C. - -To import it in your Objective-C app, just add this line at the top of your files: - -~~~objc -@import BLTNBoard; -~~~ - -## Usage - -## The Basics - -The `BLTNManager` class generates, manages and displays bulletin cards. Cards are created using bulletin items. Bulletin items are objects that conform to the `BLTNItem` protocol. - -The library provides a standard item type: `BLTNPageItem`. If you need to customize the items, you can override this class, or create new item types from scratch. - -## Displaying Bulletins - -To display bulletins you first need to create the root item to display (explained in the next sections). - -With this root item, you need to create a `BLTNManager`. We recommend putting it in the view controller that will display the bulletin. - -~~~swift -class ViewController: UIViewController { - - lazy var bulletinManager: BLTNManager = { - let rootItem: BLTNItem = // ... create your item here - return BLTNManager(rootItem: rootItem) - }() - -} -~~~ - -To present your bulletin, call this method: - -~~~swift -bulletinManager.showBulletin(above: self) -~~~ - -For the case of onboarding, you can call it in `viewWillAppear(animated:)` after checking if the user has already completed onboarding. - -## Creating Page Items - -You can create standard page items using the `BLTNPageItem` class. - -It takes care of generating a user interface with standard components: - -- a title (required) -- an icon image (should be 128x128px or less) -- a description text (plain or attributed) -- a large action button -- a smaller alternative button - -For example, this interface was created using a `BLTNPageItem`: - -![Customizing BLTNPageItem](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/page_customization.png) - -To recreate this interface, use this code: - -~~~swift -let page = BLTNPageItem(title: "Push Notifications") -page.image = UIImage(named: "...") - -page.descriptionText = "Receive push notifications when new photos of pets are available." -page.actionButtonTitle = "Subscribe" -page.alternativeButtonTitle = "Not now" -~~~ - -If you omit an optional property, the page won't generate a view for it. For instance, if you set `alternativeButtonTitle` to `nil`, the card won't display an alternative button. - -You can also set the `attributedDescriptionText` if you want to use an attributed string. - -### Customizing the Appearance - -The `BLTNPageItem` class exposes a `appearance` property that allows you to fully customize the appearance of the generated interface. - -This property references a `BLTNAppearance`, which is used to generate the standard components (more on this later). - -You can customize both color and fonts. You need to change these before you present / push the item. Changing them after presentation will have no effect. - -**Example** - -~~~swift -let greenColor = UIColor(red: 0.294, green: 0.85, blue: 0.392, alpha: 1) -page.appearance.actionButtonColor = greenColor -page.appearance.alternativeButtonColor = greenColor -page.appearance.actionButtonTitleColor = .white -~~~ - -This produces a card with the following appearance: - -![Demo Tint Color](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/demo_tint_color.png) - -### Handling Button Taps - -To handle taps on buttons, set a closure for these properties: - -- `actionHandler` - called when the action button is tapped. -- `alternativeHandler` - called when the alternative button is tapped. - -~~~swift -page.actionHandler = { (item: BLTNActionItem) in - print("Action button tapped") -} -~~~ - -This prints `"Action button tapped"` when the action button is tapped. - -~~~swift -page.alternativeHandler = { (item: BLTNActionItem) in - print("Alternative button tapped") -} -~~~ - -This prints `"Alternative button tapped"` when the alternative button is tapped. - -Use these handlers as an opportunity to change the presented item, dismiss the bulletin and/or pass data to your model. - -## Changing the Presented Item - -The `BLTNItem` protocol exposes a `manager` property that is set when the item is currently being displayed by a manager. - -You can use it to interact with the presented bulletin. Call: - -- `manager?.popItem()` to go back to the previous item -- `manager?.popToRootItem()` to go back to the first item -- `manager?.push(item:)` with a `BulletinItem` to present a new item -- `manager?.dismissBulletin(animated:)` to dismiss the bulletin -- `manager?.displayNextItem()` to display the next item (see below) - -You need to call these methods from the main thread. Never force unwrap `manager`, as this property will be unset as soon as the item is removed from the bulletin. - -It is also possible to set the `nextItem` property to the `BLTNItem` that should be displayed next and call the `displayNextItem()` method when you want to display it. - -For instance, to present a new card when the user taps the action button: - -~~~swift -page.nextItem = makeLocationPage() // Creates a new PageBulletinItem - -page.actionHandler = { (item: PageBulletinItem) in - item.manager?.displayNextItem() -} -~~~ - -This creates the following interaction: - -![Next Item](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/demo_segue.png) - -## Displaying an Activity Indicator - -If you need to perform a task between the moment the user taps a button and the moment you'll be able to change the presented item, you can call `displayActivityIndicator()` method on the item manager to hide the current card and display an activity indicator. - -This is especially useful if you need to fetch data from a server (in-app purchase price, subscription status, ...) or save data (e.g. Core Data). - -Once your task is finished, you call one of the methods described in [Changing the Presented Item](#changing-the-presented-item) to display the new item, or call `hideActivityIndicator()` to hide the indicator without changing the item. - -**Example**: - -~~~swift -page.actionHandler = { (item: BLTNActionItem) in - item.manager?.displayActivityIndicator() - // do your task - // ... - // when your task is finished, transition to the appropriate bulletin item - item.manager?.displayNextItem() -} -~~~ - -This creates the following interaction: - -![Activity Indicator](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/demo_activity.png) - -## Customizing the Background View - -By default, the content behind the card is covered with a semi-opaque view (known as the `.dimming` style). - -You can customize the background view by changing the `backgroundViewStyle` property of the manager before calling `prepare()`. - -**Example**: - -~~~swift -manager.backgroundViewStyle = .blurredExtraLight -manager.prepare() -~~~ - -Several styles are available in the `BulletinBackgroundViewStyle` enum: - -![Dimming View](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/demo_background_styles.png) - -> Note: blurred backgrounds are available in iOS 10.0 and later. - -## Dismissal - -If you set the `isDismissable` property to `true`, the user will be able to dismiss the bulletin by tapping outside of the card or by swiping the card down. This property defaults to `true`. You should set this property to `false` if completing the task is required, and should not be avoided by the user. - -By default, a close button will be displayed when the item can be dismissed. If you don't want this behavior, you can set the `requiresCloseButton` property to `false`. This is useful when the bulletin already provides an action button to close the item (such as a “Done“ button). - -![Dismissal](https://raw.githubusercontent.com/alexaubry/BulletinBoard/master/.assets/demo_close_button.png) - -## Creating Custom Items - -To create custom bulletin items, create a class that implements the `BLTNItem` protocol. It is usually easier to subclass `BLTNPageItem` and implement one of the hook methods to provide your custom views to display with standard elements. - -See the [Creating a Custom Item](guides/Creating%20a%20Custom%20Item.md) guide to learn more. - -## Internals - -BulletinBoard uses stack views and Auto Layout to display and manage cards. It automatically adapts to changes in width and height. iPad and iPhone X are supported out of the box. - -If you are interested in learning how it works in more details, look at the implementation of `BLTNManager`, `BulletinViewController` and `BLTNInterfaceBuilder`. - -## Contributing - -Thank you for your interest in the project! Contributions are welcome and appreciated. - -Make sure to read these guides before getting started: - -- [Code of Conduct](https://github.com/alexaubry/BulletinBoard/blob/master/CODE_OF_CONDUCT.md) -- [Contribution Guidelines](https://github.com/alexaubry/BulletinBoard/blob/master/CONTRIBUTING.md) - -## Apps Using _BulletinBoard_ - -Feel free to submit a PR if you’re using this library in your apps. - -- [SpdrVision mobile](https://itunes.apple.com/it/app/spdrvision-mobile/id1260166539?mt=8) - A simple way to watch Italian television on macOS and iOS by Gianpiero Spinelli - -## Author - -Written by Alexis Aubry. You can [find me on Twitter](https://twitter.com/_alexaubry). - -## License - -BulletinBoard is available under the MIT license. See the [LICENSE](LICENSE) file for more info. diff --git a/Pods/BulletinBoard/Resources/CloseGlyph.png b/Pods/BulletinBoard/Resources/CloseGlyph.png deleted file mode 100644 index b2d49b0d492b996644c06898610fc2e91d5be2f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|mUy~2hFA!$ zo$SrmV8G$hS$Px$SV=@dR9FekmrYK@FbqZ`E-?q-F5Hs~a4A>-d&H9QGjbP}r{kYWok&)iY5l#g zi91Tx`fnHMUM1coz9ilxo+XZIXrYNV3|KI=aq%hf=i*1kFA~#+23lSprkcQwziH!N zxi>LEE*hrid)Vt^=K&JBChoz}hP}QeyfZ(pn#jOmP!n1l9vF?YCbDoC6sA^tR3se} z6*$c8ORFT_nu)Q-L|~H3Dr~JI)XCX^(M45|C5h_A|8{HXA`klKlNI)$Xk3DuqsmM~ zQ2VU~Kgz@iJ~eR&ylWy2e=@=&_uXPl&%)lzci|851&mBg-`wEVmzJXfN0>0sUY{~i zh4XwTC#<`P&?HyQj0Gk$!M5nsEg2ibz2dQZsUj-QglPx%1W80eRA>d|n%_;tFbsz)#0E^k8{@DBo82qSz!bb9W;py=xVrY5%1P{06_KK} zxt#s|^2d>qPSY~I%Iih)m*j8B?~>mnKS~~*@QH62V1WrX81K@P)bQiAkUypVS@Nia zFMO7GV1;>3d+=uDM_Rwk|Hym52foa2sf1Y*LsDwAuFn?Xg*PspPAIVoPnjj679Lg| z1r~<~{I*TBh!%KwVAmCX3+H`~6443|C(%j6loxv4u2)14JS>D*jkRmAn)g-_z3?!y zPv|DK7jr#gYDGlA!#r=WY#cy%U`uVhA|l}Nb+@rb8OBa2rTfTqkZF6-VHu7xY%ZYJ zFOd!-ZLK+X-=iFl3J#lMB1Dv;mZ#nu**4*=@+c7@@JERVg&!><1%8x>RQPNWL*TPS z426#t(FOltH2rxzSt(^zlTl)dnO8oKrgy<$53CEulT1fqK0M!?FJ=>)red*Gcq zS@5kQ=ID?)qU{&f0}JxmBgf-)91E1VEZtetNI<#|-H&uw6U1t!?$X(P|m YFSk7kYb2@TiU0rr07*qoM6N<$g6h=@M*si- diff --git a/Pods/BulletinBoard/Resources/Strings/ar.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/ar.lproj/Localizable.strings deleted file mode 100644 index 5b920b7f..00000000 --- a/Pods/BulletinBoard/Resources/Strings/ar.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "إغلاق"; diff --git a/Pods/BulletinBoard/Resources/Strings/ca.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/ca.lproj/Localizable.strings deleted file mode 100644 index 8af6cefc..00000000 --- a/Pods/BulletinBoard/Resources/Strings/ca.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Tancar"; diff --git a/Pods/BulletinBoard/Resources/Strings/cs.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/cs.lproj/Localizable.strings deleted file mode 100644 index 4df78495..00000000 --- a/Pods/BulletinBoard/Resources/Strings/cs.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Zavřít"; diff --git a/Pods/BulletinBoard/Resources/Strings/da.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/da.lproj/Localizable.strings deleted file mode 100644 index 08068bf5..00000000 --- a/Pods/BulletinBoard/Resources/Strings/da.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Luk"; diff --git a/Pods/BulletinBoard/Resources/Strings/de.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/de.lproj/Localizable.strings deleted file mode 100644 index e5c54f8e..00000000 --- a/Pods/BulletinBoard/Resources/Strings/de.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Schließen"; diff --git a/Pods/BulletinBoard/Resources/Strings/el.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/el.lproj/Localizable.strings deleted file mode 100644 index 1ece50ca..00000000 --- a/Pods/BulletinBoard/Resources/Strings/el.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Κλείσιμο"; diff --git a/Pods/BulletinBoard/Resources/Strings/en.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/en.lproj/Localizable.strings deleted file mode 100644 index 65d09408..00000000 --- a/Pods/BulletinBoard/Resources/Strings/en.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Close"; diff --git a/Pods/BulletinBoard/Resources/Strings/es.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/es.lproj/Localizable.strings deleted file mode 100644 index ba2a98ad..00000000 --- a/Pods/BulletinBoard/Resources/Strings/es.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Cerrar"; diff --git a/Pods/BulletinBoard/Resources/Strings/fi.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/fi.lproj/Localizable.strings deleted file mode 100644 index fc2aa516..00000000 --- a/Pods/BulletinBoard/Resources/Strings/fi.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Sulje"; diff --git a/Pods/BulletinBoard/Resources/Strings/fr.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/fr.lproj/Localizable.strings deleted file mode 100644 index 1542301a..00000000 --- a/Pods/BulletinBoard/Resources/Strings/fr.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Fermer"; diff --git a/Pods/BulletinBoard/Resources/Strings/he.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/he.lproj/Localizable.strings deleted file mode 100644 index bef3c6f2..00000000 --- a/Pods/BulletinBoard/Resources/Strings/he.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "סגור"; diff --git a/Pods/BulletinBoard/Resources/Strings/hi.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/hi.lproj/Localizable.strings deleted file mode 100644 index 3a0a9300..00000000 --- a/Pods/BulletinBoard/Resources/Strings/hi.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "बंद करें"; diff --git a/Pods/BulletinBoard/Resources/Strings/hr.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/hr.lproj/Localizable.strings deleted file mode 100644 index d57a19cf..00000000 --- a/Pods/BulletinBoard/Resources/Strings/hr.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Zatvori"; diff --git a/Pods/BulletinBoard/Resources/Strings/hu.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/hu.lproj/Localizable.strings deleted file mode 100644 index c6dac637..00000000 --- a/Pods/BulletinBoard/Resources/Strings/hu.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Bezárás"; diff --git a/Pods/BulletinBoard/Resources/Strings/id.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/id.lproj/Localizable.strings deleted file mode 100644 index 575045f6..00000000 --- a/Pods/BulletinBoard/Resources/Strings/id.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Tutup"; diff --git a/Pods/BulletinBoard/Resources/Strings/it.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/it.lproj/Localizable.strings deleted file mode 100644 index c3285b5b..00000000 --- a/Pods/BulletinBoard/Resources/Strings/it.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Chiudi"; diff --git a/Pods/BulletinBoard/Resources/Strings/ja.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/ja.lproj/Localizable.strings deleted file mode 100644 index 20bc3954..00000000 --- a/Pods/BulletinBoard/Resources/Strings/ja.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "閉じる"; diff --git a/Pods/BulletinBoard/Resources/Strings/ko.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/ko.lproj/Localizable.strings deleted file mode 100644 index e7c1a8a8..00000000 --- a/Pods/BulletinBoard/Resources/Strings/ko.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "닫기"; diff --git a/Pods/BulletinBoard/Resources/Strings/ms.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/ms.lproj/Localizable.strings deleted file mode 100644 index 575045f6..00000000 --- a/Pods/BulletinBoard/Resources/Strings/ms.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Tutup"; diff --git a/Pods/BulletinBoard/Resources/Strings/nb.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/nb.lproj/Localizable.strings deleted file mode 100644 index c4cc01b9..00000000 --- a/Pods/BulletinBoard/Resources/Strings/nb.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Lukk"; diff --git a/Pods/BulletinBoard/Resources/Strings/nl.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/nl.lproj/Localizable.strings deleted file mode 100644 index f48263c9..00000000 --- a/Pods/BulletinBoard/Resources/Strings/nl.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Sluit"; diff --git a/Pods/BulletinBoard/Resources/Strings/pl.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/pl.lproj/Localizable.strings deleted file mode 100644 index 8a44a88c..00000000 --- a/Pods/BulletinBoard/Resources/Strings/pl.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Zamknij"; diff --git a/Pods/BulletinBoard/Resources/Strings/pt-BR.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/pt-BR.lproj/Localizable.strings deleted file mode 100644 index 0ae2f36e..00000000 --- a/Pods/BulletinBoard/Resources/Strings/pt-BR.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Fechar"; diff --git a/Pods/BulletinBoard/Resources/Strings/pt-PT.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/pt-PT.lproj/Localizable.strings deleted file mode 100644 index 0ae2f36e..00000000 --- a/Pods/BulletinBoard/Resources/Strings/pt-PT.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Fechar"; diff --git a/Pods/BulletinBoard/Resources/Strings/ro.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/ro.lproj/Localizable.strings deleted file mode 100644 index bdc7fb4a..00000000 --- a/Pods/BulletinBoard/Resources/Strings/ro.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Închideți"; diff --git a/Pods/BulletinBoard/Resources/Strings/ru.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/ru.lproj/Localizable.strings deleted file mode 100644 index 1a7ae5c3..00000000 --- a/Pods/BulletinBoard/Resources/Strings/ru.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Закрыть"; diff --git a/Pods/BulletinBoard/Resources/Strings/sk.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/sk.lproj/Localizable.strings deleted file mode 100644 index 5883f211..00000000 --- a/Pods/BulletinBoard/Resources/Strings/sk.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Zatvoriť"; diff --git a/Pods/BulletinBoard/Resources/Strings/sv.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/sv.lproj/Localizable.strings deleted file mode 100644 index c0ed97cc..00000000 --- a/Pods/BulletinBoard/Resources/Strings/sv.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Stäng"; diff --git a/Pods/BulletinBoard/Resources/Strings/th.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/th.lproj/Localizable.strings deleted file mode 100644 index d4f09611..00000000 --- a/Pods/BulletinBoard/Resources/Strings/th.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "ปิด"; diff --git a/Pods/BulletinBoard/Resources/Strings/tr.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/tr.lproj/Localizable.strings deleted file mode 100644 index 70c1d972..00000000 --- a/Pods/BulletinBoard/Resources/Strings/tr.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Kapat"; diff --git a/Pods/BulletinBoard/Resources/Strings/uk.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/uk.lproj/Localizable.strings deleted file mode 100644 index b05e6037..00000000 --- a/Pods/BulletinBoard/Resources/Strings/uk.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Закрити"; diff --git a/Pods/BulletinBoard/Resources/Strings/vi.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/vi.lproj/Localizable.strings deleted file mode 100644 index ddb087db..00000000 --- a/Pods/BulletinBoard/Resources/Strings/vi.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "Đóng"; diff --git a/Pods/BulletinBoard/Resources/Strings/zh-Hans.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/zh-Hans.lproj/Localizable.strings deleted file mode 100644 index bf36ecbe..00000000 --- a/Pods/BulletinBoard/Resources/Strings/zh-Hans.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "关闭"; diff --git a/Pods/BulletinBoard/Resources/Strings/zh-Hant.lproj/Localizable.strings b/Pods/BulletinBoard/Resources/Strings/zh-Hant.lproj/Localizable.strings deleted file mode 100644 index 2f1491d7..00000000 --- a/Pods/BulletinBoard/Resources/Strings/zh-Hant.lproj/Localizable.strings +++ /dev/null @@ -1,6 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -"Close" = "關閉"; diff --git a/Pods/BulletinBoard/Sources/Appearance/BLTNBackgroundViewStyle.swift b/Pods/BulletinBoard/Sources/Appearance/BLTNBackgroundViewStyle.swift deleted file mode 100644 index 3ccc81d9..00000000 --- a/Pods/BulletinBoard/Sources/Appearance/BLTNBackgroundViewStyle.swift +++ /dev/null @@ -1,87 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * The types of background used to cover the content behind the bulletins. - */ - -@objc public class BLTNBackgroundViewStyle: NSObject { - - enum Style { - - case none - case dimmed - case blurred(style: UIBlurEffectStyle, isDark: Bool) - - var isDark: Bool { - - switch self { - case .none, .dimmed: return true - case .blurred(_, let isDarkBlur): return isDarkBlur - } - - } - - } - - let rawValue: Style - - init(rawValue: Style) { - self.rawValue = rawValue - } - - @available(*, unavailable, message: "Use one of the presets to create a backrgound style object.") - override init() { - fatalError("BLTNBackgroundViewStyle.init is unavailable. Use one of the presets instead.") - } - -} - -// MARK: - Presets - -extension BLTNBackgroundViewStyle { - - /** - * The background content is not covered. - */ - - @objc public static let none = BLTNBackgroundViewStyle(rawValue: .none) - - /** - * The background is covered with a semi-transparent view similar to the view displayed behind - * UIKit alerts and action sheets. - */ - - @objc public static let dimmed = BLTNBackgroundViewStyle(rawValue: .dimmed) - - /** - * The background is blurred with the specified effect. - * - * Available on iOS 10.0 and later. - * - * - parameter style: The style of blur to use to cover the background. - * - parameter isDark: Whether the blur effect is dark. - */ - - @available(iOS 10, *) - @objc public static func blurred(style: UIBlurEffectStyle, isDark: Bool) -> BLTNBackgroundViewStyle { - return BLTNBackgroundViewStyle(rawValue: .blurred(style: style, isDark: isDark)) - } - - /// The background blurred with a light style. - @available(iOS 10, *) - @objc public static let blurredLight: BLTNBackgroundViewStyle = .blurred(style: .light, isDark: false) - - /// The background blurred with an extra light style. - @available(iOS 10, *) - @objc public static let blurredExtraLight: BLTNBackgroundViewStyle = .blurred(style: .extraLight, isDark: false) - - /// The background blurred with a dark style. - @available(iOS 10, *) - @objc public static let blurredDark: BLTNBackgroundViewStyle = .blurred(style: .dark, isDark: true) - -} diff --git a/Pods/BulletinBoard/Sources/Appearance/BLTNInterfaceBuilder.swift b/Pods/BulletinBoard/Sources/Appearance/BLTNInterfaceBuilder.swift deleted file mode 100644 index 2480f54e..00000000 --- a/Pods/BulletinBoard/Sources/Appearance/BLTNInterfaceBuilder.swift +++ /dev/null @@ -1,213 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * Generates interface elements for bulletins. Use this class to create custom bulletin items with - * standard components. - */ - -@objc open class BLTNInterfaceBuilder: NSObject { - - /// The item for which the interface builder was created. - @objc public weak var item: BLTNItem? - - /// The appearance to use to generate the items. - @objc public let appearance: BLTNItemAppearance - - /// Creates a new interface builder. - @objc public required init(appearance: BLTNItemAppearance, item: BLTNItem) { - self.appearance = appearance - self.item = item - } - - /** - * Creates a standard title label. - */ - - @objc open func makeTitleLabel() -> BLTNTitleLabelContainer { - - let titleLabel = UILabel() - titleLabel.textAlignment = .center - titleLabel.textColor = appearance.titleTextColor - titleLabel.accessibilityTraits |= UIAccessibilityTraitHeader - titleLabel.numberOfLines = 2 - titleLabel.adjustsFontSizeToFitWidth = true - titleLabel.lineBreakMode = .byWordWrapping - - titleLabel.font = appearance.makeTitleFont() - - let needsCloseButton = item?.isDismissable == true && item?.requiresCloseButton == true - let inset: CGFloat = needsCloseButton ? 12 + 30 : 0 - - return BLTNTitleLabelContainer(label: titleLabel, horizontalInset: inset) - - } - - /** - * Creates a standard description label. - */ - - @objc open func makeDescriptionLabel() -> UILabel { - - let descriptionLabel = UILabel() - descriptionLabel.textAlignment = .center - descriptionLabel.textColor = appearance.descriptionTextColor - descriptionLabel.numberOfLines = 0 - descriptionLabel.font = appearance.makeDescriptionFont() - - return descriptionLabel - - } - - /** - * Creates a standard text field with an optional delegate. - * - * - parameter placeholder: The placeholder text. - * - parameter returnKey: The type of return key to apply to the text field. - * - parameter delegate: The delegate for the text field. - */ - - @objc open func makeTextField(placeholder: String? = nil, - returnKey: UIReturnKeyType = .default, - delegate: UITextFieldDelegate? = nil) -> UITextField { - - let textField = UITextField() - textField.delegate = delegate - textField.textAlignment = .left - textField.placeholder = placeholder - textField.borderStyle = .roundedRect - textField.returnKeyType = returnKey - - return textField - - } - - /** - * Creates a standard action (main) button. - * - * The created button will have rounded corners, a background color set to the `tintColor` and - * a title color set to `actionButtonTitleColor`. - * - * - parameter title: The title of the button. - */ - - @objc open func makeActionButton(title: String) -> BLTNHighlightButtonWrapper { - - let actionButton = HighlightButton() - actionButton.cornerRadius = appearance.actionButtonCornerRadius - actionButton.setBackgroundColor(appearance.actionButtonColor, forState: .normal) - actionButton.setTitleColor(appearance.actionButtonTitleColor, for: .normal) - actionButton.contentHorizontalAlignment = .center - - actionButton.setTitle(title, for: .normal) - actionButton.titleLabel?.font = appearance.makeActionButtonFont() - - actionButton.clipsToBounds = true - - if let color = appearance.actionButtonBorderColor { - actionButton.layer.borderColor = color.cgColor - actionButton.layer.borderWidth = appearance.actionButtonBorderWidth - } - - let wrapper = BLTNHighlightButtonWrapper(button: actionButton) - wrapper.setContentHuggingPriority(UILayoutPriorityDefaultLow, for: .horizontal) - - let heightConstraint = wrapper.heightAnchor.constraint(equalToConstant: 55) - heightConstraint.priority = UILayoutPriorityDefaultHigh - heightConstraint.isActive = true - - return wrapper - - } - - /** - * Creates a standard alternative button. - * - * The created button will have no background color and a title color set to `tintColor`. - * - * - parameter title: The title of the button. - */ - - @objc open func makeAlternativeButton(title: String) -> UIButton { - - let alternativeButton = RoundedButton() - alternativeButton.cornerRadius = appearance.alternativeButtonCornerRadius - alternativeButton.setTitle(title, for: .normal) - alternativeButton.setTitleColor(appearance.alternativeButtonTitleColor, for: .normal) - alternativeButton.titleLabel?.font = appearance.makeAlternativeButtonFont() - - if let color = appearance.alternativeButtonBorderColor { - alternativeButton.clipsToBounds = true - alternativeButton.layer.borderColor = color.cgColor - alternativeButton.layer.borderWidth = appearance.alternativeButtonBorderWidth - } - - return alternativeButton - - } - - /** - * Creates a stack view to contain a group of objects. - * - * - parameter spacing: The spacing between elements. Defaults to `10`. - */ - - @objc open func makeGroupStack(spacing: CGFloat = 10) -> UIStackView { - - let buttonsStack = UIStackView() - buttonsStack.axis = .vertical - buttonsStack.alignment = .fill - buttonsStack.distribution = .fill - buttonsStack.spacing = spacing - - return buttonsStack - - } - - /** - * Wraps a view without intrinsic content size inside a view with an intrinsic content size. - * - * This method allows you to display view without an intrinsic content size, such as collection views, - * inside stack views; by using the returned `BLTNContentView` view. - * - * - parameter view: The view to wrap in the container. - * - parameter width: The width of the content. Pass `nil` if the content has a flexible width. - * - parameter height: The height of the content. Pass `nil` if the content has a flexible height. - * - parameter position: The position of `view` inside its parent. - * - * - returns: The view that contains the `view` and an intrinsic content size. You can add the returned - * view to a stack view. - */ - - @objc open func wrapView(_ view: UIView, width: NSNumber?, height: NSNumber?, position: BLTNViewPosition) -> BLTNContainerView { - - let container = BLTNContainerView() - - container.contentSize = CGSize(width: width.flatMap(CGFloat.init) ?? UIViewNoIntrinsicMetric, - height: height.flatMap(CGFloat.init) ?? UIViewNoIntrinsicMetric) - - container.setChildView(view) { parent, child in - - switch position { - case .centered: - child.centerXAnchor.constraint(equalTo: parent.centerXAnchor).isActive = true - child.centerYAnchor.constraint(equalTo: parent.centerYAnchor).isActive = true - - case .pinnedToEdges: - child.leadingAnchor.constraint(equalTo: parent.leadingAnchor).isActive = true - child.trailingAnchor.constraint(equalTo: parent.trailingAnchor).isActive = true - child.topAnchor.constraint(equalTo: parent.topAnchor).isActive = true - child.bottomAnchor.constraint(equalTo: parent.bottomAnchor).isActive = true - } - - } - - return container - - } - -} diff --git a/Pods/BulletinBoard/Sources/Appearance/BLTNItemAppearance.swift b/Pods/BulletinBoard/Sources/Appearance/BLTNItemAppearance.swift deleted file mode 100644 index f9d699a6..00000000 --- a/Pods/BulletinBoard/Sources/Appearance/BLTNItemAppearance.swift +++ /dev/null @@ -1,184 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * An object that defines the appearance of bulletin items. - */ - -@objc public class BLTNItemAppearance: NSObject { - - // MARK: - Color Customization - - /// The tint color to apply to the action button (default blue). - @objc public var actionButtonColor: UIColor = #colorLiteral(red: 0, green: 0.4784313725, blue: 1, alpha: 1) - - /// The title color to apply to action button (default white). - @objc public var actionButtonTitleColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1) - - /// The border color to apply to action button. - @objc public var actionButtonBorderColor: UIColor? = nil - - /// The border width to apply to action button. - @objc public var actionButtonBorderWidth: CGFloat = 1.0 - - /// The title color to apply to the alternative button (default blue). - @objc public var alternativeButtonTitleColor: UIColor = #colorLiteral(red: 0, green: 0.4784313725, blue: 1, alpha: 1) - - /// The border color to apply to the alternative button. - @objc public var alternativeButtonBorderColor: UIColor? = nil - - /// The border width to apply to the alternative button. - @objc public var alternativeButtonBorderWidth: CGFloat = 1.0 - - /// The tint color to apply to the imageView (if image rendered in template mode, default blue). - @objc public var imageViewTintColor = #colorLiteral(red: 0, green: 0.4784313725, blue: 1, alpha: 1) - - /// The color of title text labels (default light gray). - @objc public var titleTextColor = #colorLiteral(red: 0.568627451, green: 0.5647058824, blue: 0.5725490196, alpha: 1) - - /// The color of description text labels (default black). - @objc public var descriptionTextColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1) - - // MARK: - Corner Radius Customization - - /// The corner radius of the action button (default 12). - @objc public var actionButtonCornerRadius: CGFloat = 12 - - /// The corner radius of the alternative button (default 12). - @objc public var alternativeButtonCornerRadius: CGFloat = 12 - - // MARK: - Font Customization - - /// An optional custom font to use for the title label. Set this to nil to use the system font. - @objc public var titleFontDescriptor: UIFontDescriptor? - - /// An optional custom font to use for the description label. Set this to nil to use the system font. - @objc public var descriptionFontDescriptor: UIFontDescriptor? - - /// An optional custom font to use for the buttons. Set this to nil to use the system font. - @objc public var buttonFontDescriptor: UIFontDescriptor? - - /** - * Whether the description text should be displayed with a smaller font. - * - * You should set this to `true` if your text is long (more that two sentences). - */ - - @objc public var shouldUseCompactDescriptionText: Bool = false - - - // MARK: - Font Constants - - /// The font size of title elements (default 30). - @objc public var titleFontSize: CGFloat = 30 - - /// The font size of description labels (default 20). - @objc public var descriptionFontSize: CGFloat = 20 - - /// The font size of compact description labels (default 15). - @objc public var compactDescriptionFontSize: CGFloat = 15 - - /// The font size of action buttons (default 17). - @objc public var actionButtonFontSize: CGFloat = 17 - - /// The font size of alternative buttons (default 15). - @objc public var alternativeButtonFontSize: CGFloat = 15 - -} - -// MARK: - Font Factories - -extension BLTNItemAppearance { - - /** - * Creates the font for title labels. - */ - - @objc public func makeTitleFont() -> UIFont { - - if let titleFontDescriptor = self.titleFontDescriptor { - return UIFont(descriptor: titleFontDescriptor, size: titleFontSize) - } else { - return UIFont.systemFont(ofSize: titleFontSize, weight: UIFontWeightMedium) - } - - } - - /** - * Creates the font for description labels. - */ - - @objc public func makeDescriptionFont() -> UIFont { - - let size = shouldUseCompactDescriptionText ? compactDescriptionFontSize : descriptionFontSize - - if let descriptionFontDescriptor = self.descriptionFontDescriptor { - return UIFont(descriptor: descriptionFontDescriptor, size: size) - } else { - return UIFont.systemFont(ofSize: size) - } - - } - - /** - * Creates the font for action buttons. - */ - - @objc public func makeActionButtonFont() -> UIFont { - - if let buttonFontDescriptor = self.buttonFontDescriptor { - return UIFont(descriptor: buttonFontDescriptor, size: actionButtonFontSize) - } else { - return UIFont.systemFont(ofSize: actionButtonFontSize, weight: UIFontWeightSemibold) - } - - } - - /** - * Creates the font for alternative buttons. - */ - - @objc public func makeAlternativeButtonFont() -> UIFont { - - if let buttonFontDescriptor = self.buttonFontDescriptor { - return UIFont(descriptor: buttonFontDescriptor, size: alternativeButtonFontSize) - } else { - return UIFont.systemFont(ofSize: alternativeButtonFontSize, weight: UIFontWeightSemibold) - } - - } - -} - -// MARK: - Status Bar - -/** - * Styles of status bar to use with bulletin items. - */ - -@objc public enum BLTNStatusBarAppearance: Int { - - /// The status bar is hidden. - case hidden - - /// The color of the status bar is determined automatically. This is the default style. - case automatic - - /// Style to use with dark backgrounds. - case lightContent - - /// Style to use with light backgrounds. - case darkContent - -} - -// MARK: - Swift Compatibility - -#if swift(>=4.0) - let UIFontWeightMedium = UIFont.Weight.medium - let UIFontWeightSemibold = UIFont.Weight.semibold -#endif diff --git a/Pods/BulletinBoard/Sources/Appearance/BLTNSpacing.swift b/Pods/BulletinBoard/Sources/Appearance/BLTNSpacing.swift deleted file mode 100644 index 54e7090b..00000000 --- a/Pods/BulletinBoard/Sources/Appearance/BLTNSpacing.swift +++ /dev/null @@ -1,56 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * Represents a spacing value. - */ - -@objc public class BLTNSpacing: NSObject { - - let rawValue: CGFloat - - init(rawValue: CGFloat) { - self.rawValue = rawValue - } - - /** - * A custom spacing. - * - * - parameter value: The spacing to apply. - */ - - @objc public class func custom(_ value: CGFloat) -> BLTNSpacing { - return BLTNSpacing(rawValue: value) - } - - /** - * No spacing is applied. (value: 0) - * - * If you use this padding, corner radii will be ignored. - */ - - @objc public class var none: BLTNSpacing { - return BLTNSpacing(rawValue: 0) - } - - /** - * A compact spacing. (value: 6) - */ - - @objc public class var compact: BLTNSpacing { - return BLTNSpacing(rawValue: 6) - } - - /** - * The standard spacing. (value: 12) - */ - - @objc public class var regular: BLTNSpacing { - return BLTNSpacing(rawValue: 12) - } - -} diff --git a/Pods/BulletinBoard/Sources/Appearance/BLTNViewPosition.swift b/Pods/BulletinBoard/Sources/Appearance/BLTNViewPosition.swift deleted file mode 100644 index 0c849fa8..00000000 --- a/Pods/BulletinBoard/Sources/Appearance/BLTNViewPosition.swift +++ /dev/null @@ -1,20 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import Foundation - -/** - * Describes the position of a view inside of its parent container. - */ - -@objc public enum BLTNViewPosition: Int { - - /// The view is centered in its parent container. - case centered - - /// The view is pinned to the four edges of its parent container. - case pinnedToEdges - -} diff --git a/Pods/BulletinBoard/Sources/BLTNBoard.h b/Pods/BulletinBoard/Sources/BLTNBoard.h deleted file mode 100644 index b59238fa..00000000 --- a/Pods/BulletinBoard/Sources/BLTNBoard.h +++ /dev/null @@ -1,10 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -@import UIKit; - -#import "BLTNItem.h" -#import "BLTNActionItem.h" -#import "BLTNPageItem.h" diff --git a/Pods/BulletinBoard/Sources/BLTNItemManager.swift b/Pods/BulletinBoard/Sources/BLTNItemManager.swift deleted file mode 100644 index d3428ece..00000000 --- a/Pods/BulletinBoard/Sources/BLTNItemManager.swift +++ /dev/null @@ -1,636 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * An object that manages the presentation of a bulletin. - * - * You create a bulletin manager using the `init(rootItem:)` initializer, where `rootItem` is the - * first bulletin item to display. An item represents the contents displayed on a single card. - * - * The manager works like a navigation controller. You can push new items to the stack to display them, - * and pop existing ones to go back. - * - * You must call the `prepare` method before displaying the view controller. - * - * `BLTNItemManager` must only be used from the main thread. - */ - -@objc public final class BLTNItemManager: NSObject { - - /// Bulletin view controller. - fileprivate var bulletinController: BulletinViewController! - - // MARK: - Background - - /** - * The background color of the bulletin card. Defaults to white. - * - * Set this value before presenting the bulletin. Changing it after will have no effect. - */ - - @objc public var backgroundColor: UIColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) - - /** - * The style of the view covering the content. Defaults to `.dimmed`. - * - * Set this value before presenting the bulletin. Changing it after will have no effect. - */ - - @objc public var backgroundViewStyle: BLTNBackgroundViewStyle = .dimmed - - // MARK: - Status Bar - - /** - * The style of status bar to use with the bulltin. Defaults to `.automatic`. - * - * Set this value before presenting the bulletin. Changing it after will have no effect. - */ - - @objc public var statusBarAppearance: BLTNStatusBarAppearance = .automatic - - /** - * The style of status bar animation. Defaults to `.fade`. - * - * Set this value before presenting the bulletin. Changing it after will have no effect. - */ - - @objc public var statusBarAnimation: UIStatusBarAnimation = .fade - - /** - * The home indicator for iPhone X should be hidden or not. Defaults to false. - * - * Set this value before presenting the bulletin. Changing it after will have no effect. - */ - - @objc public var hidesHomeIndicator: Bool = false - - // MARK: - Card Presentation - - /** - * The spacing between the edge of the screen and the edge of the card. Defaults to regular. - * - * Set this value before presenting the bulletin. Changing it after will have no effect. - */ - - @objc public var edgeSpacing: BLTNSpacing = .regular - - /** - * The rounded corner radius of the bulletin card. Defaults to 12, and 36 on iPhone X. - * - * Set this value before calling `prepare`. Changing it after will have no effect. - */ - - @objc public var cardCornerRadius: NSNumber? - - /** - * Whether swipe to dismiss should be allowed. Defaults to true. - * - * If you set this value to true, the user will be able to drag the card, and swipe down to - * dismiss it (if allowed by the current item). - * - * If you set this value to false, no pan gesture will be recognized, and swipe to dismiss - * won't be available. - */ - - @objc public var allowsSwipeInteraction: Bool = true - - - // MARK: - Private Properties - - var currentItem: BLTNItem - - fileprivate let rootItem: BLTNItem - fileprivate var itemsStack: [BLTNItem] - fileprivate var previousItem: BLTNItem? - - fileprivate var isPrepared: Bool = false - fileprivate var isPreparing: Bool = false - fileprivate var shouldDisplayActivityIndicator: Bool = false - fileprivate var lastActivityIndicatorColor: UIColor = .black - - // MARK: - Initialization - - /** - * Creates a bulletin manager and sets the first item to display.s - * - * - parameter rootItem: The first item to display. - */ - - @objc public init(rootItem: BLTNItem) { - - self.rootItem = rootItem - self.itemsStack = [] - self.currentItem = rootItem - - } - - deinit { - - tearDownItemsChain(startingAt: self.rootItem) - - for item in itemsStack { - tearDownItemsChain(startingAt: item) - } - - } - - @available(*, unavailable, message: "Use init(rootItem:) instead.") - override init() { - fatalError("BLTNItemManager.init is unavailable. Use init(rootItem:) instead.") - } - -} - -// MARK: - Interacting with the Bulletin - -extension BLTNItemManager { - - /** - * Prepares the bulletin interface and displays the root item. - * - * This method must be called before any other interaction with the bulletin. - */ - - fileprivate func prepare() { - - assertIsMainThread() - - bulletinController = BulletinViewController() - bulletinController.manager = self - - bulletinController.modalPresentationStyle = .overFullScreen - bulletinController.transitioningDelegate = bulletinController - bulletinController.loadBackgroundView() - bulletinController.setNeedsStatusBarAppearanceUpdate() - - if #available(iOS 11.0, *) { - bulletinController.setNeedsUpdateOfHomeIndicatorAutoHidden() - } - - isPrepared = true - isPreparing = true - shouldDisplayActivityIndicator = rootItem.shouldStartWithActivityIndicator - - refreshCurrentItemInterface() - isPreparing = false - - } - - /** - * Presents a view controller above the bulletin card. - * - * This is useful if you want to present an alert or a Safari view contoller in response to user - * action. - * - * - parameter viewController: The view controller to present. - * - parameter animated: Whether presentation should be animated. - * - parameter completion: An optional completion block to run after presentation - * has completed. Defaults to `nil`. - */ - - @objc(presentViewControllerAboveBulletin:animated:completion:) - public func present(_ viewController: UIViewController, animated: Bool, completion: (() -> Void)? = nil) { - assertIsPrepared() - self.bulletinController.present(viewController, animated: animated, completion: completion) - } - - /** - * Performs an operation with the bulletin content view and returns the result. - * - * Use this as an opportunity to customize the behavior of the content view (e.g. add motion effects). - * - * You must not store a reference to the view, or modify its layout (add subviews, add contraints, ...) as this - * could break the bulletin. - * - * Use this feature sparingly. - * - * - parameter transform: The code to execute with the content view. - * - warning: If you save the content view outside of the `transform` closure, an exception will be raised. - */ - - @discardableResult - public func withContentView(_ transform: (UIView) throws -> Result) rethrows -> Result { - - assertIsPrepared() - assertIsMainThread() - - let contentView = bulletinController.contentView - let initialRetainCount = CFGetRetainCount(contentView) - - let result = try transform(bulletinController.contentView) - let finalRetainCount = CFGetRetainCount(contentView) - - precondition(initialRetainCount == finalRetainCount, - "The content view was saved outside of the transform closure. This is not allowed.") - - return result - - } - - /** - * Hides the contents of the stack and displays an activity indicator view. - * - * Use this method if you need to perform a long task or fetch some data before changing the item. - * - * Displaying the loading indicator does not change the height of the page or the current item. It will disable - * dismissal by tapping and swiping to allow the task to complete and avoid resource deallocation. - * - * - parameter color: The color of the activity indicator to display. Defaults to black. - * - * Displaying the loading indicator does not change the height of the page or the current item. - */ - - @objc public func displayActivityIndicator(color: UIColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)) { - - assertIsPrepared() - assertIsMainThread() - - shouldDisplayActivityIndicator = true - lastActivityIndicatorColor = color - - bulletinController.displayActivityIndicator(color: color) - - } - - /** - * Hides the activity indicator and displays the current item. - * - * You can also call one of `popItem`, `popToRootItem` and `pushItem` if you need to hide the activity - * indicator and change the current item. - */ - - @objc public func hideActivityIndicator() { - - assertIsPrepared() - assertIsMainThread() - - shouldDisplayActivityIndicator = false - bulletinController.swipeInteractionController?.cancelIfNeeded() - refreshCurrentItemInterface(elementsChanged: false) - - } - - /** - * Displays a new item after the current one. - * - parameter item: The item to display. - */ - - @objc public func push(item: BLTNItem) { - - assertIsPrepared() - assertIsMainThread() - - previousItem = currentItem - itemsStack.append(item) - - currentItem = item - - shouldDisplayActivityIndicator = item.shouldStartWithActivityIndicator - refreshCurrentItemInterface() - - } - - /** - * Removes the current item from the stack and displays the previous item. - */ - - @objc public func popItem() { - - assertIsPrepared() - assertIsMainThread() - - guard let previousItem = itemsStack.popLast() else { - popToRootItem() - return - } - - self.previousItem = previousItem - - guard let currentItem = itemsStack.last else { - popToRootItem() - return - } - - self.currentItem = currentItem - - shouldDisplayActivityIndicator = currentItem.shouldStartWithActivityIndicator - refreshCurrentItemInterface() - - } - - /** - * Removes all the items from the stack and displays the root item. - */ - - @objc public func popToRootItem() { - - assertIsPrepared() - assertIsMainThread() - - guard currentItem !== rootItem else { - return - } - - previousItem = currentItem - currentItem = rootItem - - itemsStack = [] - - shouldDisplayActivityIndicator = rootItem.shouldStartWithActivityIndicator - refreshCurrentItemInterface() - - } - - /** - * Displays the next item, if the `next` property of the current item is set. - * - * - warning: If you call this method but `next` is `nil`, an exception will be raised. - */ - - @objc public func displayNextItem() { - - guard let next = currentItem.next else { - preconditionFailure("Calling BLTNItemManager.displayNextItem, but the current item has no nextItem.") - } - - push(item: next) - - } - -} - -// MARK: - Presentation / Dismissal - -extension BLTNItemManager { - - /** - * Presents the bulletin above the specified view controller. - * - * - parameter presentingVC: The view controller to use to present the bulletin. - * - parameter animated: Whether to animate presentation. Defaults to `true`. - * - parameter completion: An optional block to execute after presentation. Default to `nil`. - */ - - @objc(showBulletinAboveViewController:animated:completion:) - public func showBulletin(above presentingVC: UIViewController, - animated: Bool = true, - completion: (() -> Void)? = nil) { - - self.prepare() - - let isDetached = bulletinController.presentingViewController == nil - assert(isDetached, "Attempt to present a Bulletin that is already presented.") - - assertIsPrepared() - assertIsMainThread() - bulletinController.loadView() - - let refreshActivityIndicator = shouldDisplayActivityIndicator && isDetached - - if refreshActivityIndicator { - bulletinController.displayActivityIndicator(color: lastActivityIndicatorColor) - } - - bulletinController.modalPresentationCapturesStatusBarAppearance = true - presentingVC.present(bulletinController, animated: animated, completion: completion) - - } - - /** - * Dismisses the bulletin and clears the current page. You will have to call `prepare` before - * presenting the bulletin again. - * - * This method will call the `dismissalHandler` block of the current item if it was set. - * - * - parameter animated: Whether to animate dismissal. Defaults to `true`. - */ - - @objc(dismissBulletinAnimated:) - public func dismissBulletin(animated: Bool = true) { - - assertIsPrepared() - assertIsMainThread() - - currentItem.tearDown() - currentItem.manager = nil - - bulletinController.dismiss(animated: animated) { - self.completeDismissal() - } - - isPrepared = false - - } - - /** - * Tears down the view controller and item stack after dismissal is finished. - */ - - @nonobjc func completeDismissal() { - - currentItem.onDismiss() - - for arrangedSubview in bulletinController.contentStackView.arrangedSubviews { - bulletinController.contentStackView.removeArrangedSubview(arrangedSubview) - arrangedSubview.removeFromSuperview() - } - - bulletinController.backgroundView = nil - bulletinController.manager = nil - bulletinController.transitioningDelegate = nil - - bulletinController = nil - - currentItem = self.rootItem - itemsStack.removeAll() - - } - -} - -// MARK: - Transitions - -extension BLTNItemManager { - - var needsCloseButton: Bool { - return currentItem.isDismissable && currentItem.requiresCloseButton - } - - /// Refreshes the interface for the current item. - fileprivate func refreshCurrentItemInterface(elementsChanged: Bool = true) { - - bulletinController.isDismissable = false - bulletinController.swipeInteractionController?.cancelIfNeeded() - bulletinController.refreshSwipeInteractionController() - - let showActivityIndicator = self.shouldDisplayActivityIndicator - let contentAlpha: CGFloat = showActivityIndicator ? 0 : 1 - - // Tear down old item - - let oldArrangedSubviews = bulletinController.contentStackView.arrangedSubviews - let oldHideableArrangedSubviews = recursiveArrangedSubviews(in: oldArrangedSubviews) - - if elementsChanged { - previousItem?.tearDown() - previousItem?.manager = nil - previousItem = nil - } - - // Create new views - - let newArrangedSubviews = currentItem.makeArrangedSubviews() - let newHideableArrangedSubviews = recursiveArrangedSubviews(in: newArrangedSubviews) - - if elementsChanged { - - currentItem.setUp() - currentItem.manager = self - - for arrangedSubview in newHideableArrangedSubviews { - arrangedSubview.isHidden = isPreparing ? false : true - } - - for arrangedSubview in newArrangedSubviews { - bulletinController.contentStackView.addArrangedSubview(arrangedSubview) - } - - } - - // Animate transition - - let animationDuration = isPreparing ? 0 : 0.75 - let transitionAnimationChain = AnimationChain(duration: animationDuration) - - let hideSubviewsAnimationPhase = AnimationPhase(relativeDuration: 1/3, curve: .linear) - - hideSubviewsAnimationPhase.block = { - - if !showActivityIndicator { - self.bulletinController.hideActivityIndicator() - } - - for arrangedSubview in oldArrangedSubviews { - arrangedSubview.alpha = 0 - } - - for arrangedSubview in newArrangedSubviews { - arrangedSubview.alpha = 0 - } - - } - - let displayNewItemsAnimationPhase = AnimationPhase(relativeDuration: 1/3, curve: .linear) - - displayNewItemsAnimationPhase.block = { - - for arrangedSubview in oldHideableArrangedSubviews { - arrangedSubview.isHidden = true - } - - for arrangedSubview in newHideableArrangedSubviews { - arrangedSubview.isHidden = false - } - - } - - let finalAnimationPhase = AnimationPhase(relativeDuration: 1/3, curve: .linear) - - finalAnimationPhase.block = { - - let currentElements = elementsChanged ? newArrangedSubviews : oldArrangedSubviews - self.bulletinController.contentStackView.alpha = contentAlpha - self.bulletinController.updateCloseButton(isRequired: self.needsCloseButton && !showActivityIndicator) - - for arrangedSubview in currentElements { - arrangedSubview.alpha = contentAlpha - } - - } - - finalAnimationPhase.completionHandler = { - - self.bulletinController.isDismissable = self.currentItem.isDismissable && (showActivityIndicator == false) - - if elementsChanged { - - self.currentItem.onDisplay() - - for arrangedSubview in oldArrangedSubviews { - self.bulletinController.contentStackView.removeArrangedSubview(arrangedSubview) - arrangedSubview.removeFromSuperview() - } - - } - - UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, newArrangedSubviews.first) - - } - - // Perform animation - - if elementsChanged { - transitionAnimationChain.add(hideSubviewsAnimationPhase) - transitionAnimationChain.add(displayNewItemsAnimationPhase) - } else { - bulletinController.hideActivityIndicator() - } - - transitionAnimationChain.add(finalAnimationPhase) - transitionAnimationChain.start() - - } - - /// Tears down every item on the stack starting from the specified item. - fileprivate func tearDownItemsChain(startingAt item: BLTNItem) { - - item.tearDown() - item.manager = nil - - if let next = item.next { - tearDownItemsChain(startingAt: next) - item.next = nil - } - - } - - /// Returns all the arranged subviews. - private func recursiveArrangedSubviews(in views: [UIView]) -> [UIView] { - - var arrangedSubviews: [UIView] = [] - - for view in views { - - if let stack = view as? UIStackView { - arrangedSubviews.append(stack) - let recursiveViews = self.recursiveArrangedSubviews(in: stack.arrangedSubviews) - arrangedSubviews.append(contentsOf: recursiveViews) - } else { - arrangedSubviews.append(view) - } - - } - - return arrangedSubviews - - } - -} - -// MARK: - Utilities - -extension BLTNItemManager { - - fileprivate func assertIsMainThread() { - precondition(Thread.isMainThread, "BLTNItemManager must only be used from the main thread.") - } - - fileprivate func assertIsPrepared() { - precondition(isPrepared, "You must call the `prepare` function before interacting with the bulletin.") - } - -} diff --git a/Pods/BulletinBoard/Sources/Deprecations.swift b/Pods/BulletinBoard/Sources/Deprecations.swift deleted file mode 100644 index 290806c0..00000000 --- a/Pods/BulletinBoard/Sources/Deprecations.swift +++ /dev/null @@ -1,30 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import Foundation - -@available(*, unavailable, renamed: "BLTNItem") -@objc public protocol BulletinItem {} - -@available(*, unavailable, renamed: "BLTNItemManager") -@objc public class BulletinManager: NSObject {} - -@available(*, unavailable, renamed: "BLTNActionItem") -@objc public class ActionBulletinItem: NSObject {} - -@available(*, unavailable, renamed: "BLTNPageItem") -@objc public class PageBulletinItem: NSObject {} - -@available(*, unavailable, message: "To specify the appearance, use BLTNItemAppearance. To create standard views, use BLTNInterfaceBuilder.") -@objc public class BulletinInterfaceFactory: NSObject {} - -@available(*, unavailable, renamed: "BLTNSpacing") -@objc public class BulletinPadding: NSObject {} - -@available(*, unavailable, renamed: "BLTNBackgroundViewStyle") -@objc public class BulletinBackgroundViewStyle: NSObject {} - -@available(*, unavailable, renamed: "BLTNHighlightButtonWrapper") -@objc public class HighlightButtonWrapper: UIView {} diff --git a/Pods/BulletinBoard/Sources/Models/BLTNActionItem.h b/Pods/BulletinBoard/Sources/Models/BLTNActionItem.h deleted file mode 100644 index 9fd614a0..00000000 --- a/Pods/BulletinBoard/Sources/Models/BLTNActionItem.h +++ /dev/null @@ -1,288 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -@import UIKit; - -#import "BLTNItem.h" - -@class BLTNItemManager; -@class BLTNItemAppearance; -@class BLTNInterfaceBuilder; - -/** - * A standard bulletin item with that displays a large action button and a smaller button for alternative options. - * - * You do not use this class directly: - * - * - If your custom item has a title and optional stock elements (description, image), use `BLTNPageItem` - * which provides these stock elements. You can also override this class to insert custom views between the stock - * views. - * - * - If you need to display custom elements with the standard buttons on a page without a title, subclass `BLTNActionItem` - * and implement the `makeContentViews` method to return the elements to display above the buttons. - * - * Subclasses can override several methods to customize the UI: - * - * - In `footerViews`, return the views to display below the buttons. - * - In `actionButtonTapped(sender:)` and `alternativeButtonTapped(sender:)`, perform custom additional button handling - * (ex: haptic feedback). - * - * Use the `appearance` property to customize the appearance of the buttons. If you want to use a different interface - * builder type, change the `InterfaceBuilderType` property. - */ - -@interface BLTNActionItem : NSObject - -#pragma mark - Page Contents - -/** - * The title of the action button. The action button represents the main action for the item. - * - * If you set this property to `nil`, no action button will be added (this is the default). - */ - -@property (nonatomic, strong, nullable) NSString *actionButtonTitle; - -/** - * The title of the alternative button. The alternative button represents a second option for - * the user. - * - * If you set this property to `nil`, no alternative button will be added (this is the default). - */ - -@property (nonatomic, strong, nullable) NSString *alternativeButtonTitle; - -#pragma mark - BLTNItem - -/** - * The object managing the item. - * - * This property is set when the item is currently being displayed. It will be set to `nil` when - * the item is removed from bulletin. - */ - -@property (nonatomic, nullable, weak) BLTNItemManager *manager; - -/** - * Whether the page can be dismissed. - * - * If you set this value to `true`, the user will be able to dismiss the bulletin by tapping outside - * of the card or by swiping down. - * - * You should set it to `true` for the last item you want to display. - */ - -@property (nonatomic, getter=isDismissable) BOOL dismissable; - -/** - * Whether the page can be dismissed with a close button. - * - * The default value is `true`. The user will be able to dismiss the bulletin by tapping on a button - * in the corner of the screen. - * - * You should set it to `false` if the interface of the bulletin already has buttons to dismiss the item, - * such as an action button. - */ - -@property (nonatomic) BOOL requiresCloseButton; - -/** - * Whether the page should start with an activity indicator. - * - * Set this value to `false` to display the elements right away. If you set it to `true`, - * you'll need to call `manager?.hideActivityIndicator()` to show the UI. - * - * This defaults to `false`. - */ - -@property (nonatomic) BOOL shouldStartWithActivityIndicator; - -/** - * Whether the item should move with the keyboard. - * - * You must set it to `true` if the item displays a text field. Otherwise, you can set it to `false` if you - * don't want the bulletin to move when system alerts are displayed. - * - * This value defaults to `true`. - */ - -@property (nonatomic) BOOL shouldRespondToKeyboardChanges; - -/** - * The item to display after this one. - * - * If you set this value, you'll be able to call `displayNextItem()` to push the next item to - * the stack. - */ - -@property (nonatomic, strong, nullable) id nextItem; - -/** - * The block of code to execute when the bulletin item is presented. This is called after the - * bulletin is moved onto the view. - * - * - parameter item: The item that is being presented. - */ - -@property (nonatomic, nullable) void(^presentationHandler)(id _Nonnull); - -/** - * The block of code to execute when the bulletin item is dismissed. This is called when the bulletin - * is moved out of view. - * - * You can leave it `nil` if `isDismissable` is set to false. - */ - -@property (nonatomic, nullable) void(^dismissalHandler)(id _Nonnull); - -#pragma mark - Customization - -/** - * The appearance manager used to generate the interface of the page. - * - * Use this property to customize the appearance of the generated elements. - * - * Make sure to customize the appearance before presenting the page. Changing the appearance properties - * after the bulletin page was presented has no effect. - */ - -@property (nonatomic, strong, nonnull) BLTNItemAppearance *appearance; - -/** - * The type of interface builder to use to generate the components. - * - * Make sure to customize this property before presenting the page. Changing the interface builder type - * after the bulletin page was presented has no effect. - */ - -@property (nonatomic, strong, nonnull) Class interfaceBuilderType; - -#pragma mark - Buttons - -/** - * The action button managed by the item. - */ - -@property (nonatomic, strong, nullable, readonly) UIButton *actionButton; - -/** - * The alternative button managed by the item. - */ - -@property (nonatomic, strong, nullable, readonly) UIButton *alternativeButton; - -/** - * The code to execute when the action button is tapped. - */ - -@property (nonatomic, nullable) void(^actionHandler)(BLTNActionItem * _Nonnull); - -/** - * The code to execute when the alternative button is tapped. - */ - -@property (nonatomic, nullable) void(^alternativeHandler)(BLTNActionItem * _Nonnull); - -/** - * Handles a tap on the action button. - * - * You can override this method to add custom tap handling. You have to call `super.actionButtonTapped(sender:)` - * in your implementation. - */ - -- (void)actionButtonTappedWithSender:(UIButton * _Nonnull)sender NS_SWIFT_NAME(actionButtonTapped(sender:)); - -/** - * Handles a tap on the alternative button. - * - * You can override this method to add custom tap handling. You have to call `super.alternativeButtonTapped(sender:)` - * in your implementation. - */ - -- (void)alternativeButtonTappedWithSender:(UIButton * _Nonnull)sender NS_SWIFT_NAME(alternativeButtonTapped(sender:)); - -#pragma mark - View Management - -/** - * The views to display below the buttons. - * - * You can override this method to insert custom views after the buttons. The default implementation returns `nil` and - * does not append footer elements. - * - * This method is called inside `makeArrangedSubviews` after the buttons are created. - * - * - parameter interfaceBuilder: The interface builder used to create the buttons. - * - returns: The footer views for the item, or `nil` if no footer views should be added. - */ - -- (NSArray * _Nullable)makeFooterViewsWithInterfaceBuilder:(BLTNInterfaceBuilder * _Nonnull)interfaceBuilder; - -/** - * Creates the content views of the page. Content views are displayed above the buttons. - * - * You must override this method to return the elements displayed above the buttons. Your implementation - * must not call `super`. - * - * If you do not implement this method, an exception will be raised. - * - * - parameter interfaceBuilder: The interface builder used to create the buttons. - * - returns: The views to display above the buttons. - */ - -- (NSArray * _Nonnull)makeContentViewsWithInterfaceBuilder:(BLTNInterfaceBuilder * _Nonnull)interfaceBuilder; - -/** - * Creates the list of views to display on the bulletin. - * - * This is an implementation detail of `BLTNItem` and you should not call it directly. Subclasses should not override this method, and should - * implement `makeContentViewsWithInterfaceBuilder:` instead. - */ - -- (NSArray * _Nonnull)makeArrangedSubviews; - -#pragma mark - Events - -/** - * Called by the manager when the item was added to the bulletin. - * - * Override this function to configure your managed views, and allocate any resources required - * for this item. Make sure to call `super` if you override this method. - */ - -- (void)setUp; - -/** - * Called by the manager when the item was removed from the bulletin view. - * - * Override this method if elements you returned in `makeContentViews` need cleanup. Make sure - * to call `super` if you override this method. - * - * This is an implementation detail of `BLTNItem` and you should not call it directly. - */ - -- (void)tearDown; - -/** - * Called by the manager when bulletin item is pushed onto the view. - * - * By default, this method calls trhe `presentationHandler` of the action item. Override this - * method if you need to perform additional preparation after presentation (although using - * `setUp` is preferred). - */ - -- (void)onDisplay; - -/** - * Called by the manager when bulletin item is dismissed. This is called after the bulletin - * is moved out of view. - * - * By default, this method calls trhe `dismissalHandler` of the action item. Override this - * method if you need to perform additional cleanup after dismissal (although using - * `tearDown` is preferred). - */ - -- (void)onDismiss; - -@end diff --git a/Pods/BulletinBoard/Sources/Models/BLTNActionItem.m b/Pods/BulletinBoard/Sources/Models/BLTNActionItem.m deleted file mode 100644 index 56fb4182..00000000 --- a/Pods/BulletinBoard/Sources/Models/BLTNActionItem.m +++ /dev/null @@ -1,170 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -#import "BLTNActionItem.h" -#import -#import - -@interface BLTNActionItem () - -@property (nonatomic, strong, nullable, readwrite) UIButton *actionButton; -@property (nonatomic, strong, nullable, readwrite) UIButton *alternativeButton; - -@end - -@implementation BLTNActionItem - -- (instancetype)init -{ - self = [super init]; - if (self) { - self.actionButtonTitle = nil; - self.alternativeButtonTitle = nil; - self.manager = nil; - self.dismissable = YES; - self.requiresCloseButton = YES; - self.shouldStartWithActivityIndicator = NO; - self.shouldRespondToKeyboardChanges = YES; - self.nextItem = nil; - self.presentationHandler = nil; - self.dismissalHandler = nil; - self.appearance = [[BLTNItemAppearance alloc] init]; - self.interfaceBuilderType = [BLTNInterfaceBuilder class]; - self.actionButton = nil; - self.alternativeButton = nil; - self.actionHandler = nil; - self.alternativeHandler = nil; - } - return self; -} - -#pragma mark - Properties - -- (void)setActionButtonTitle:(NSString *)actionButtonTitle -{ - _actionButtonTitle = actionButtonTitle; - if (self.actionButton) { - [self.actionButton setTitle:actionButtonTitle forState:UIControlStateNormal]; - } -} - -- (void)setAlternativeButtonTitle:(NSString *)alternativeButtonTitle -{ - _alternativeButtonTitle = alternativeButtonTitle; - if (self.alternativeButton) { - [self.alternativeButton setTitle:alternativeButtonTitle forState:UIControlStateNormal]; - } -} - -#pragma mark - Buttons - -- (void)actionButtonTappedWithSender:(UIButton *)sender -{ - if (self.actionHandler) { - self.actionHandler(self); - } -} - -- (void)alternativeButtonTappedWithSender:(UIButton *)sender -{ - if (self.alternativeHandler) { - self.alternativeHandler(self); - } -} - -#pragma mark - View Management - -- (NSArray *)makeFooterViewsWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder -{ - return nil; -} - -- (NSArray *)makeContentViewsWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder -{ - return @[]; -} - -- (NSArray *)makeArrangedSubviews -{ - NSMutableArray *arrangedSubviews = [[NSMutableArray alloc] init]; - - NSAssert([self.interfaceBuilderType isSubclassOfClass:[BLTNInterfaceBuilder class]], - @"InterfaceBuilderType must be a subclass of BulletinInterfaceBuilder, or BulletinInterfaceBuilder."); - - BLTNInterfaceBuilder *interfaceBuilder = [[self.interfaceBuilderType alloc] initWithAppearance:self.appearance - item:self]; - - NSArray *contentViews = [self makeContentViewsWithInterfaceBuilder:interfaceBuilder]; - [arrangedSubviews addObjectsFromArray:contentViews]; - - // Buttons stack - - if (self.actionButtonTitle == nil && self.alternativeButtonTitle == nil) { - return arrangedSubviews; - } - - UIStackView *buttonsStack = [interfaceBuilder makeGroupStackWithSpacing:10]; - - if (self.actionButtonTitle) { - BLTNHighlightButtonWrapper *buttonWrapper = [interfaceBuilder makeActionButtonWithTitle:self.actionButtonTitle]; - [buttonsStack addArrangedSubview:buttonWrapper]; - self.actionButton = buttonWrapper.button; - } - - if (self.alternativeButtonTitle) { - UIButton *button = [interfaceBuilder makeAlternativeButtonWithTitle:self.alternativeButtonTitle]; - [buttonsStack addArrangedSubview:button]; - self.alternativeButton = button; - } - - [arrangedSubviews addObject:buttonsStack]; - - // Footer - - NSArray *footerViews = [self makeFooterViewsWithInterfaceBuilder:interfaceBuilder]; - - if (footerViews) { - [arrangedSubviews addObjectsFromArray:footerViews]; - } - - return arrangedSubviews; -} - -#pragma mark - Events - -- (void)setUp -{ - [self.actionButton addTarget:self - action:@selector(actionButtonTappedWithSender:) - forControlEvents:UIControlEventTouchUpInside]; - - [self.alternativeButton addTarget:self - action:@selector(alternativeButtonTappedWithSender:) - forControlEvents:UIControlEventTouchUpInside]; -} - -- (void)tearDown -{ - [self.actionButton removeTarget:self action:NULL forControlEvents:UIControlEventTouchUpInside]; - [self.alternativeButton removeTarget:self action:NULL forControlEvents:UIControlEventTouchUpInside]; - self.actionButton = nil; - self.alternativeButton = nil; -} - -- (void)onDisplay -{ - if (self.presentationHandler) { - self.presentationHandler(self); - } -} - -- (void)onDismiss -{ - if (self.dismissalHandler) { - self.dismissalHandler(self); - } -} - -@end diff --git a/Pods/BulletinBoard/Sources/Models/BLTNItem.h b/Pods/BulletinBoard/Sources/Models/BLTNItem.h deleted file mode 100644 index f650e882..00000000 --- a/Pods/BulletinBoard/Sources/Models/BLTNItem.h +++ /dev/null @@ -1,122 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -@import UIKit; - -@class BLTNItemManager; - -/** - * An item that can be displayed inside a bulletin card. - */ - -@protocol BLTNItem - -#pragma mark - Configuration - -/** - * The current object managing the item. - * - * This property is set when the item is currently being displayed. It will be set to `nil` when - * the item is removed from view. - * - * When implementing `BLTNItem`, you should mark this property `weak` to avoid retain cycles. - */ - -@property (nonatomic, nullable, weak) BLTNItemManager *manager; - -/** - * Whether the page can be dismissed. - * - * If you set this value to `true`, the user will be able to dismiss the bulletin by tapping outside - * of the card or by swiping down. - * - * You should set it to `true` for the last item you want to display, or for items that start an optional flow - * (ex: a purchase). - */ - -@property (nonatomic, getter=isDismissable) BOOL dismissable; - -/** - * Whether the page can be dismissed with a close button. - * - * The default value is `true`. The user will be able to dismiss the bulletin by tapping on a button - * in the corner of the screen. - * - * You should set it to `false` if the interface of the bulletin already has buttons to dismiss the item, - * such as an action button. - */ - -@property (nonatomic) BOOL requiresCloseButton; - -/** - * Whether the card should start with an activity indicator. - * - * Set this value to `false` to display the elements right away. If you set it to `true`, - * you'll need to call `manager?.hideActivityIndicator()` to show the UI. - */ - -@property (nonatomic) BOOL shouldStartWithActivityIndicator; - -/** - * Whether the item should move with the keyboard. - * - * You must set it to `true` if the item displays a text field. You can set it to `false` if you - * don't want the bulletin to move when system alerts containing a text field (ex: iTunes login) - * are displayed. - */ - -@property (nonatomic) BOOL shouldRespondToKeyboardChanges; - -/** - * The item to display after this one. - * - * If you set this value, you'll be able to call `manager?.displayNextItem()` to push the next item to - * the stack. - */ - -@property (nonatomic, nullable, strong) id nextItem; - -// MARK: - Interface - -/** - * Creates the list of views to display inside the bulletin card. - * - * The views will be arranged vertically, in the order they are stored in the return array. - */ - -- (NSArray * _Nonnull)makeArrangedSubviews; - -/** - * Called by the manager when the item was added to the bulletin. - * - * Use this function to configure your managed views, and allocate any resources required - * for this item. - */ - -- (void)setUp; - -/** - * Called by the manager when the item was removed from the bulletin. - * - * Use this function to remove any button target or gesture recognizers from your managed views, and - * deallocate any resources created for this item that are no longer needed. - */ - -- (void)tearDown; - -/** - * Called by the manager when bulletin item is pushed onto the view. - */ - -- (void)onDisplay; - -/** - * Called by the manager when bulletin item is dismissed. This is called after the bulletin - * is moved out of view. - */ - -- (void)onDismiss; - -@end diff --git a/Pods/BulletinBoard/Sources/Models/BLTNPageItem.h b/Pods/BulletinBoard/Sources/Models/BLTNPageItem.h deleted file mode 100644 index f306c355..00000000 --- a/Pods/BulletinBoard/Sources/Models/BLTNPageItem.h +++ /dev/null @@ -1,140 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -@import UIKit; - -#import "BLTNActionItem.h" - -@class BLTNTitleLabelContainer; - -NS_ASSUME_NONNULL_BEGIN - -/** - * A standard bulletin item with a title and optional additional informations. It can display a large - * action button and a smaller button for alternative options. - * - * - If you need to display custom elements with the standard buttons, subclass `BLTNPageItem` and - * implement the `makeArrangedSubviews` method to return the elements to display above the buttons. - * - * You can also override this class to customize button tap handling. Override the `actionButtonTapped(sender:)` - * and `alternativeButtonTapped(sender:)` methods to handle tap events. Make sure to call `super` in your - * implementations if you do. - * - * Use the `appearance` property to customize the appearance of the page. If you want to use a different interface - * builder type, change the `InterfaceBuilderType` property. - */ - -@interface BLTNPageItem : BLTNActionItem - -/** - * Creates a bulletin page with the specified title. - * - parameter title: The title of the page. - */ - -- (instancetype)initWithTitle:(NSString *)title; - -#pragma mark - Page Contents - -/// The title of the page. -@property (nonatomic, nonnull, readonly) NSString *title; - -/** - * An image to display below the title. - * - * If you set this property to `nil`, no image will be displayed (this is the default). - * - * The image should have a size of 128x128 pixels (@1x). - */ - -@property (nonatomic, nullable) UIImage *image; - -/// An accessibility label which gets announced to VoiceOver users if the image gets focused. -@property (nonatomic, nullable) NSString *imageAccessibilityLabel; - -/** - * An description text to display below the image. - * - * If you set this property to `nil`, no label will be displayed (this is the default). - */ - -@property (nonatomic, nullable) NSString *descriptionText; - -/** - * An attributed description text to display below the image. - * - * If you set this property to `nil`, no label will be displayed (this is the default). The attributed - * text takes priority over the regular description label. If you set both values, only the - * `attributedDescriptionText` will be used. - */ - -@property (nonatomic, nullable) NSAttributedString *attributedDescriptionText; - -#pragma mark - View Management - -@property (nonatomic, nonnull, readonly) BLTNTitleLabelContainer *titleLabel; -@property (nonatomic, nullable, readonly) UILabel *descriptionLabel; -@property (nonatomic, nullable, readonly) UIImageView *imageView; - -#pragma mark - Customization - -/** - * The views to display above the title. - * - * You can override this method to insert custom views before the title. The default implementation returns `nil` and - * does not append header elements. - * - * This method is called inside `makeArrangedSubviews` before the title is created. - * - * - parameter interfaceBuilder: The interface builder used to create the title. - * - returns: The header views for the item, or `nil` if no header views should be added. - */ - -- (NSArray * _Nullable)makeHeaderViewsWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder; - -/** - * The views to display below the title. - * - * You can override this method to insert custom views after the title. The default implementation returns `nil` and - * does not append elements after the title. - * - * This method is called inside `makeArrangedSubviews` after the title is created. - * - * - parameter interfaceBuilder: The interface builder used to create the title. - * - returns: The views to display after the title, or `nil` if no views should be added. - */ - -- (NSArray * _Nullable)makeViewsUnderTitleWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder; - -/** - * The views to display below the image. - * - * You can override this method to insert custom views after the image. The default implementation returns `nil` and - * does not append elements after the image. - * - * This method is called inside `makeArrangedSubviews` after the image is created. - * - * - parameter interfaceBuilder: The interface builder used to create the image. - * - returns: The views to display after the image, or `nil` if no views should be added. - */ - -- (NSArray * _Nullable)makeViewsUnderImageWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder; - -/** - * The views to display below the description. - * - * You can override this method to insert custom views after the description. The default implementation - * returns `nil` and does not append elements after the description. - * - * This method is called inside `makeArrangedSubviews` after the description is created. - * - * - parameter interfaceBuilder: The interface builder used to create the description. - * - returns: The views to display after the description, or `nil` if no views should be added. - */ - -- (NSArray * _Nullable)makeViewsUnderDescriptionWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder; - -@end - -NS_ASSUME_NONNULL_END diff --git a/Pods/BulletinBoard/Sources/Models/BLTNPageItem.m b/Pods/BulletinBoard/Sources/Models/BLTNPageItem.m deleted file mode 100644 index 41dc5868..00000000 --- a/Pods/BulletinBoard/Sources/Models/BLTNPageItem.m +++ /dev/null @@ -1,162 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -#import "BLTNPageItem.h" -#import - -@interface BLTNPageItem () - -@property (nonatomic, nonnull, readwrite) NSString *title; -@property (nonatomic, nullable, readwrite) BLTNTitleLabelContainer *titleLabel; -@property (nonatomic, nullable, readwrite) UILabel *descriptionLabel; -@property (nonatomic, nullable, readwrite) UIImageView *imageView; - -@end - -@implementation BLTNPageItem - -- (instancetype)initWithTitle:(NSString *)title -{ - self = [super init]; - if (self) { - self.title = title; - self.image = nil; - self.imageAccessibilityLabel = nil; - self.descriptionText = nil; - self.titleLabel = nil; - self.descriptionLabel = nil; - self.imageView = nil; - } - return self; -} - -#pragma mark - View Updates - -- (void)setDescriptionText:(NSString *)descriptionText -{ - _descriptionText = descriptionText; - if (self.attributedDescriptionText) { - return; - } - if (self.descriptionLabel) { - self.descriptionLabel.text = descriptionText; - } -} - -- (void)setImage:(UIImage *)image -{ - _image = image; - if (self.imageView) { - self.imageView.image = image; - } -} - -- (void)setImageAccessibilityLabel:(NSString *)imageAccessibilityLabel -{ - _imageAccessibilityLabel = imageAccessibilityLabel; - if (self.imageView) { - self.imageView.accessibilityLabel = imageAccessibilityLabel; - } -} - -- (void)setAttributedDescriptionText:(NSAttributedString *)attributedDescriptionText -{ - _attributedDescriptionText = self.attributedDescriptionText; - self.descriptionText = nil; - if (self.descriptionLabel) { - self.descriptionLabel.attributedText = attributedDescriptionText; - } -} - -#pragma mark - View Management - -- (NSArray *)makeContentViewsWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder -{ - NSMutableArray *contentViews = [[NSMutableArray alloc] init]; - - void (^insertComplementaryViews)(SEL) = ^(SEL generator) { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-performSelector-leaks" - NSObject *result = [self performSelector:generator withObject:interfaceBuilder]; -#pragma clang diagnostic pop - - if ([result isKindOfClass:[NSArray class]]) { - [contentViews addObjectsFromArray:(NSArray *)result]; - } - }; - - insertComplementaryViews(@selector(makeHeaderViewsWithInterfaceBuilder:)); - - // Title label - - self.titleLabel = [interfaceBuilder makeTitleLabel]; - self.titleLabel.label.text = self.title; - - [contentViews addObject:self.titleLabel]; - insertComplementaryViews(@selector(makeViewsUnderTitleWithInterfaceBuilder:)); - - // Image View - - if (self.image) { - - UIImageView *imageView = [[UIImageView alloc] init]; - imageView.image = self.image; - imageView.contentMode = UIViewContentModeScaleAspectFit; - imageView.tintColor = self.appearance.imageViewTintColor; - - if (self.imageAccessibilityLabel) { - imageView.isAccessibilityElement = YES; - imageView.accessibilityLabel = self.imageAccessibilityLabel; - } - - self.imageView = imageView; - [contentViews addObject:imageView]; - - insertComplementaryViews(@selector(makeViewsUnderImageWithInterfaceBuilder:)); - - } - - // Description Label - - if (self.attributedDescriptionText) { - self.descriptionLabel = [interfaceBuilder makeDescriptionLabel]; - self.descriptionLabel.attributedText = self.attributedDescriptionText; - [contentViews addObject:self.descriptionLabel]; - insertComplementaryViews(@selector(makeViewsUnderDescriptionWithInterfaceBuilder:)); - - } else if (self.descriptionText) { - self.descriptionLabel = [interfaceBuilder makeDescriptionLabel]; - self.descriptionLabel.text = self.descriptionText; - [contentViews addObject:self.descriptionLabel]; - insertComplementaryViews(@selector(makeViewsUnderDescriptionWithInterfaceBuilder:)); - } - - return contentViews; - -} - -#pragma mark - Customization - -- (NSArray *)makeHeaderViewsWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder -{ - return nil; -} - -- (NSArray *)makeViewsUnderTitleWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder -{ - return nil; -} - -- (NSArray *)makeViewsUnderImageWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder -{ - return nil; -} - -- (NSArray *)makeViewsUnderDescriptionWithInterfaceBuilder:(BLTNInterfaceBuilder *)interfaceBuilder -{ - return nil; -} - -@end diff --git a/Pods/BulletinBoard/Sources/Support/Animations/AnimationChain.swift b/Pods/BulletinBoard/Sources/Support/Animations/AnimationChain.swift deleted file mode 100644 index db272fcc..00000000 --- a/Pods/BulletinBoard/Sources/Support/Animations/AnimationChain.swift +++ /dev/null @@ -1,163 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import Foundation -import UIKit - -// MARK: AnimationChain - -/** - * A sequence of animations where animations are executed the one after the other. - * - * Animations are represented by `AnimationPhase` objects, that contain the code of the animation, - * its duration relative to the chain duration, their curve and their individual completion handlers. - */ - -public class AnimationChain { - - /// The total duration of the animation chain. - public let duration: TimeInterval - - /// The initial delay before the animation chain starts. - public var initialDelay: TimeInterval = 0 - - /// The code to execute after animation chain is executed. - public var completionHandler: () -> Void - - /// Whether the chain is being run. - public private(set) var isRunning: Bool = false - - // MARK: Initialization - - private var animations: [AnimationPhase] = [] - private var didFinishFirstAnimation: Bool = false - - /** - * Creates an animation chain with the specified duration. - */ - - public init(duration: TimeInterval) { - self.duration = duration - self.completionHandler = {} - } - - // MARK: - Interacting with the Chain - - /** - * Add an animation at the end of the chain. - * - * You cannot add animations if the chain is running. - * - * - parameter animation: The animation phase to add. - */ - - public func add(_ animation: AnimationPhase) { - precondition(!isRunning, "Cannot add an animation to the chain because it is already performing.") - animations.append(animation) - } - - /** - * Starts the animation chain. - */ - - public func start() { - - precondition(!isRunning, "Animation chain already running.") - - isRunning = true - performNextAnimation() - - } - - private func performNextAnimation() { - - guard animations.count > 0 else { - completeGroup() - return - } - - let animation = animations.removeFirst() - - let duration = animation.relativeDuration * self.duration - let options = UIViewAnimationOptions(rawValue: UInt(animation.curve.rawValue << 16)) - let delay: TimeInterval = didFinishFirstAnimation ? 0 : initialDelay - - UIView.animate(withDuration: duration, delay: delay, options: options, animations: animation.block) { _ in - - self.didFinishFirstAnimation = true - - animation.completionHandler() - self.performNextAnimation() - - } - - } - - private func completeGroup() { - isRunning = false - completionHandler() - } - -} - -// MARK: - AnimationPhase - -/** - * A member of an `AnimationChain`, representing a single animation. - * - * Set the `block` property to a block containing the animations. Set the `completionHandler` with - * a block to execute at the end of the animation. The default values do nothing. - */ - -public class AnimationPhase { - - /** - * The duration of the animation, relative to the total duration of the chain. - * - * Must be between 0 and 1. - */ - - public let relativeDuration: TimeInterval - - /** - * The animation curve. - */ - - public let curve: UIViewAnimationCurve - - /** - * The animation code. - */ - - public var block: () -> Void - - /** - * A block to execute at the end of the animation. - */ - - public var completionHandler: () -> Void - - // MARK: Initialization - - /** - * Creates an animtion phase object. - * - * - parameter relativeDuration: The duration of the animation, as a fraction of the total chain - * duration. Must be between 0 and 1. - * - parameter curve: The animation curve - */ - - public init(relativeDuration: TimeInterval, curve: UIViewAnimationCurve) { - - self.relativeDuration = relativeDuration - self.curve = curve - - self.block = {} - self.completionHandler = {} - - } - -} - diff --git a/Pods/BulletinBoard/Sources/Support/Animations/BulletinDismissAnimationController.swift b/Pods/BulletinBoard/Sources/Support/Animations/BulletinDismissAnimationController.swift deleted file mode 100644 index c1c2da74..00000000 --- a/Pods/BulletinBoard/Sources/Support/Animations/BulletinDismissAnimationController.swift +++ /dev/null @@ -1,86 +0,0 @@ -import UIKit - -/** - * The animation controller for bulletin dismissal. - * - * It moves the card out of the screen, fades out the background view and removes it from the hierarchy - * on completion. - */ - -class BulletinDismissAnimationController: NSObject, UIViewControllerAnimatedTransitioning { - - func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { - return 0.3 - } - - func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { - - guard let fromVC = transitionContext.viewController(forKey: .from) as? BulletinViewController else { - transitionContext.completeTransition(false) - return - } - - let rootView = fromVC.view! - let contentView = fromVC.contentView - let backgroundView = fromVC.backgroundView! - let activityIndicatorView = fromVC.activityIndicator - let snapshotActivityIndicator = ActivityIndicator() - snapshotActivityIndicator.startAnimating() - - // Take Snapshot - - guard let snapshot = contentView.snapshotView(afterScreenUpdates: true) else { - transitionContext.completeTransition(false) - return - } - - snapshotActivityIndicator.translatesAutoresizingMaskIntoConstraints = false - - snapshot.addSubview(snapshotActivityIndicator) - snapshotActivityIndicator.topAnchor.constraint(equalTo: snapshot.topAnchor).isActive = true - snapshotActivityIndicator.leftAnchor.constraint(equalTo: snapshot.leftAnchor).isActive = true - snapshotActivityIndicator.rightAnchor.constraint(equalTo: snapshot.rightAnchor).isActive = true - snapshotActivityIndicator.bottomAnchor.constraint(equalTo: snapshot.bottomAnchor).isActive = true - - snapshotActivityIndicator.activityIndicatorViewStyle = .whiteLarge - snapshotActivityIndicator.color = .black - snapshotActivityIndicator.isUserInteractionEnabled = false - - snapshotActivityIndicator.alpha = activityIndicatorView.alpha - - rootView.insertSubview(snapshot, aboveSubview: contentView) - snapshot.frame = contentView.frame - contentView.isHidden = true - activityIndicatorView.isHidden = true - - fromVC.prepareForDismissal(displaying: snapshot) - - // Animate dismissal - - let duration = transitionDuration(using: transitionContext) - let options = UIViewAnimationOptions(rawValue: 6 << 16) - - let animations = { - snapshot.frame.origin.y = rootView.frame.maxY + 12 - backgroundView.hide() - } - - UIView.animate(withDuration: duration, delay: 0, options: options, animations: animations) { finished in - - let isCancelled = transitionContext.transitionWasCancelled - - if !isCancelled { - fromVC.view.removeFromSuperview() - } else { - contentView.isHidden = false - activityIndicatorView.isHidden = false - snapshot.removeFromSuperview() - } - - transitionContext.completeTransition(!isCancelled) - - } - - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Animations/BulletinPresentationAnimationController.swift b/Pods/BulletinBoard/Sources/Support/Animations/BulletinPresentationAnimationController.swift deleted file mode 100644 index 6fa2dff3..00000000 --- a/Pods/BulletinBoard/Sources/Support/Animations/BulletinPresentationAnimationController.swift +++ /dev/null @@ -1,74 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * The animation controller for bulletin presentation. - * - * It moves the card on screen, creates and fades in the background view. - */ - -class BulletinPresentationAnimationController: NSObject, UIViewControllerAnimatedTransitioning { - - let style: BLTNBackgroundViewStyle - - init(style: BLTNBackgroundViewStyle) { - self.style = style - } - - // MARK: - Transition - - func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval { - return 0.3 - } - - func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { - - guard let toVC = transitionContext.viewController(forKey: .to) as? BulletinViewController else { - return - } - - let rootView = toVC.view! - let contentView = toVC.contentView - let backgroundView = toVC.backgroundView! - let containerView = transitionContext.containerView - - // Add root view - - containerView.addSubview(rootView) - - // Prepare background view - - rootView.insertSubview(backgroundView, at: 0) - backgroundView.leadingAnchor.constraint(equalTo: rootView.leadingAnchor).isActive = true - backgroundView.trailingAnchor.constraint(equalTo: rootView.trailingAnchor).isActive = true - backgroundView.topAnchor.constraint(equalTo: rootView.topAnchor).isActive = true - backgroundView.bottomAnchor.constraint(equalTo: rootView.bottomAnchor).isActive = true - - rootView.setNeedsLayout() - contentView.setNeedsLayout() - - rootView.layoutIfNeeded() - contentView.layoutIfNeeded() - backgroundView.layoutIfNeeded() - - // Animate presentation - - let duration = transitionDuration(using: transitionContext) - let options = UIViewAnimationOptions(rawValue: 7 << 16) - - let animations = { - toVC.moveIntoPlace() - backgroundView.show() - } - - UIView.animate(withDuration: duration, delay: 0, options: options, animations: animations) { _ in - transitionContext.completeTransition(!transitionContext.transitionWasCancelled) - } - - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Animations/BulletinSwipeInteractionController.swift b/Pods/BulletinBoard/Sources/Support/Animations/BulletinSwipeInteractionController.swift deleted file mode 100644 index 95b33ebb..00000000 --- a/Pods/BulletinBoard/Sources/Support/Animations/BulletinSwipeInteractionController.swift +++ /dev/null @@ -1,260 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * An interaction controller that handles swipe-to-dismiss for bulletins. - */ - -class BulletinSwipeInteractionController: UIPercentDrivenInteractiveTransition, UIGestureRecognizerDelegate { - - /// Whether a panning interaction is in progress. - var isInteractionInProgress = false - - var panGestureRecognizer: UIPanGestureRecognizer? - - // MARK: - State - - private var isFinished = false - private var currentPercentage: CGFloat = -1 - private weak var viewController: BulletinViewController! - - private var snapshotView: UIView? { - return viewController.activeSnapshotView - } - - private var contentView: UIView { - return viewController.contentView - } - - private var activityIndicatorView: UIView { - return viewController.activityIndicator - } - - // MARK: - Preparation - - /** - * Sets up the interaction recognizer for the given view controller and content view. - */ - - func wire(to viewController: BulletinViewController) { - self.viewController = viewController - prepareGestureRecognizer() - } - - private func prepareGestureRecognizer() { - - let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePanGesture)) - panGesture.maximumNumberOfTouches = 1 - panGesture.cancelsTouchesInView = false - panGesture.delegate = self - - self.panGestureRecognizer = panGesture - contentView.addGestureRecognizer(panGesture) - - } - - - // MARK: - Gesture Recognizer - - func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { - return !(touch.view is UIControl) - } - - @objc func handlePanGesture(gestureRecognizer: UIPanGestureRecognizer) { - - /// Constants - - let screenHeight = viewController.view.bounds.height - let distanceFactor: CGFloat = screenHeight >= 500 ? 3/4 : 2/3 - - let dismissThreshold: CGFloat = 256 * distanceFactor - let elasticThreshold: CGFloat = 128 * distanceFactor - let trackScreenPercentage = dismissThreshold / contentView.bounds.height - - switch gestureRecognizer.state { - case .began: - - isFinished = false - - gestureRecognizer.setTranslation(.zero, in: contentView) - - let isCompactWidth = viewController.traitCollection.horizontalSizeClass == .compact - - guard viewController.isDismissable && isCompactWidth else { - isInteractionInProgress = false - return - } - - isInteractionInProgress = true - - viewController.dismiss(animated: true) { - - guard self.isFinished else { - return - } - - self.viewController.manager?.completeDismissal() - - } - - case .changed: - - guard !isFinished else { - return - } - - let translation = gestureRecognizer.translation(in: contentView) - let verticalTranslation = translation.y - isFinished = false - - guard (verticalTranslation > 0) && isInteractionInProgress else { - update(0) - updateCardViews(forTranslation: translation) - return - } - - snapshotView?.transform = .identity - - let adaptativeTranslation = self.adaptativeTranslation(for: verticalTranslation, elasticThreshold: elasticThreshold) - let newPercentage = (adaptativeTranslation / dismissThreshold) * trackScreenPercentage - - guard currentPercentage != newPercentage else { - return - } - - currentPercentage = newPercentage - update(currentPercentage) - - case .cancelled, .failed: - - isInteractionInProgress = false - - if !isFinished { - resetCardViews() - } - - panGestureRecognizer?.isEnabled = true - - case .ended: - - guard isInteractionInProgress else { - resetCardViews() - isFinished = false - return - } - - let translation = gestureRecognizer.translation(in: contentView).y - - if translation >= dismissThreshold { - isFinished = true - isInteractionInProgress = false - finish() - } else { - resetCardViews() - cancel() - isFinished = false - } - - default: - break - } - - } - - // MARK: - Math - - // Source: https://github.com/HarshilShah/DeckTransition - let elasticTranslationCurve = { (translation: CGFloat, translationFactor: CGFloat) -> CGFloat in - return 30 * atan(translation/120) + translation/10 - } - - private func adaptativeTranslation(for translation: CGFloat, elasticThreshold: CGFloat) -> CGFloat { - - let translationFactor: CGFloat = 2/3 - - if translation >= elasticThreshold { - let frictionLength = translation - elasticThreshold - let frictionTranslation = elasticTranslationCurve(frictionLength, translationFactor) - return frictionTranslation + (elasticThreshold * translationFactor) - } else { - return translation * translationFactor - } - - } - - private func transform(forTranslation translation: CGPoint) -> CGAffineTransform { - - let translationFactor: CGFloat = 1/3 - var adaptedTranslation = translation - - // Vertical - - if translation.y < 0 || !(isInteractionInProgress) { - adaptedTranslation.y = elasticTranslationCurve(translation.y, translationFactor) - } - - let yTransform = adaptedTranslation.y * translationFactor - - if viewController.traitCollection.horizontalSizeClass == .compact { - return CGAffineTransform(translationX: 0, y: yTransform) - } - - // Horizontal - - adaptedTranslation.x = elasticTranslationCurve(translation.x, translationFactor) - let xTransform = adaptedTranslation.x * translationFactor - - return CGAffineTransform(translationX: xTransform, y: yTransform) - - } - - // MARK: - Position Management - - private func updateCardViews(forTranslation translation: CGPoint) { - - let transform = self.transform(forTranslation: translation) - - snapshotView?.transform = transform - contentView.transform = transform - activityIndicatorView.transform = transform - - } - - private func resetCardViews() { - - let options: UIViewAnimationOptions = UIViewAnimationOptions(rawValue: 6 << 7) - - let animations = { - self.snapshotView?.transform = .identity - self.contentView.transform = .identity - self.activityIndicatorView.transform = .identity - } - - viewController.backgroundView.show() - - UIView.animate(withDuration: 0.15, delay: 0, options: options, animations: animations) { _ in - self.update(0) - self.cancel() - } - - } - - // MARK: - Cancellation - - /** - * Resets the view if needed. - */ - - func cancelIfNeeded() { - - if panGestureRecognizer?.state == .changed { - panGestureRecognizer?.isEnabled = false - } - - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/BulletinViewController.swift b/Pods/BulletinBoard/Sources/Support/BulletinViewController.swift deleted file mode 100644 index dac28363..00000000 --- a/Pods/BulletinBoard/Sources/Support/BulletinViewController.swift +++ /dev/null @@ -1,636 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A view controller that displays a card at the bottom of the screen. - */ - -final class BulletinViewController: UIViewController, UIGestureRecognizerDelegate { - - /// The object managing the view controller. - weak var manager: BLTNItemManager? - - // MARK: - UI Elements - - /// The subview that contains the contents of the card. - let contentView = RoundedView() - - /// The button that allows the users to close the bulletin. - let closeButton = BulletinCloseButton() - - /** - * The stack view displaying the content of the card. - * - * - warning: You should not customize the distribution, axis and alignment of the stack, as this - * may break the layout of the card. - */ - - let contentStackView = UIStackView() - - /// The view covering the content. Generated in `loadBackgroundView`. - var backgroundView: BulletinBackgroundView! - - /// The activity indicator. - let activityIndicator = ActivityIndicator() - - // MARK: - Dismissal Support Properties - - /// Indicates whether the bulletin can be dismissed by a tap outside the card. - var isDismissable: Bool = false - - /// The snapshot view of the content used during dismissal. - var activeSnapshotView: UIView? - - /// The active swipe interaction controller. - var swipeInteractionController: BulletinSwipeInteractionController! - - // MARK: - Private Interface Elements - - // Compact constraints - fileprivate var leadingConstraint: NSLayoutConstraint! - fileprivate var trailingConstraint: NSLayoutConstraint! - fileprivate var centerXConstraint: NSLayoutConstraint! - fileprivate var maxWidthConstraint: NSLayoutConstraint! - - // Regular constraints - fileprivate var widthConstraint: NSLayoutConstraint! - fileprivate var centerYConstraint: NSLayoutConstraint! - - // Stack view constraints - fileprivate var stackLeadingConstraint: NSLayoutConstraint! - fileprivate var stackTrailingConstraint: NSLayoutConstraint! - fileprivate var stackBottomConstraint: NSLayoutConstraint! - - // Position constraints - fileprivate var minYConstraint: NSLayoutConstraint! - fileprivate var contentTopConstraint: NSLayoutConstraint! - fileprivate var contentBottomConstraint: NSLayoutConstraint! - - // MARK: - Deinit - - deinit { - cleanUpKeyboardLogic() - } - -} - -// MARK: - Lifecycle - -extension BulletinViewController { - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - setUpLayout(with: traitCollection) - } - - override func viewWillDisappear(_ animated: Bool) { - super.viewWillDisappear(animated) - - /// Animate status bar appearance when hiding - UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseInOut, animations: { - self.setNeedsStatusBarAppearanceUpdate() - }) - - } - - override func loadView() { - - super.loadView() - view.backgroundColor = .clear - - let recognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:))) - recognizer.delegate = self - recognizer.cancelsTouchesInView = false - recognizer.delaysTouchesEnded = false - - view.addGestureRecognizer(recognizer) - - contentView.accessibilityViewIsModal = true - contentView.translatesAutoresizingMaskIntoConstraints = false - contentStackView.translatesAutoresizingMaskIntoConstraints = false - - view.addSubview(contentView) - - // Content View - - centerXConstraint = contentView.centerXAnchor.constraint(equalTo: view.safeCenterXAnchor) - - centerYConstraint = contentView.centerYAnchor.constraint(equalTo: view.safeCenterYAnchor) - centerYConstraint.constant = 2500 - - widthConstraint = contentView.widthAnchor.constraint(equalToConstant: 444) - widthConstraint.priority = UILayoutPriorityRequired - - // Close button - - contentView.addSubview(closeButton) - closeButton.translatesAutoresizingMaskIntoConstraints = false - closeButton.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 12).isActive = true - closeButton.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -12).isActive = true - closeButton.heightAnchor.constraint(equalToConstant: 44).isActive = true - closeButton.widthAnchor.constraint(equalToConstant: 44).isActive = true - closeButton.isUserInteractionEnabled = true - - closeButton.addTarget(self, action: #selector(closeButtonTapped), for: .touchUpInside) - - // Content Stack View - - contentView.addSubview(contentStackView) - - stackLeadingConstraint = contentStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor) - stackLeadingConstraint.isActive = true - - stackTrailingConstraint = contentStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor) - stackTrailingConstraint.isActive = true - - minYConstraint = contentView.topAnchor.constraint(greaterThanOrEqualTo: view.safeTopAnchor) - minYConstraint.isActive = true - minYConstraint.priority = UILayoutPriorityRequired - - contentStackView.axis = .vertical - contentStackView.alignment = .fill - contentStackView.distribution = .fill - - // Activity Indicator - - activityIndicator.translatesAutoresizingMaskIntoConstraints = false - - view.addSubview(activityIndicator) - activityIndicator.leftAnchor.constraint(equalTo: contentView.leftAnchor).isActive = true - activityIndicator.rightAnchor.constraint(equalTo: contentView.rightAnchor).isActive = true - activityIndicator.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true - activityIndicator.bottomAnchor.constraint(equalTo: contentView.bottomAnchor).isActive = true - - activityIndicator.activityIndicatorViewStyle = .whiteLarge - activityIndicator.color = .black - activityIndicator.isUserInteractionEnabled = false - - activityIndicator.alpha = 0 - - // Vertical Position - - stackBottomConstraint = contentStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor) - contentTopConstraint = contentView.topAnchor.constraint(equalTo: contentStackView.topAnchor) - - stackBottomConstraint.isActive = true - contentTopConstraint.isActive = true - - // Configuration - - configureContentView() - setUpKeyboardLogic() - - contentView.bringSubview(toFront: closeButton) - - } - - @available(iOS 11.0, *) - override func viewSafeAreaInsetsDidChange() { - super.viewSafeAreaInsetsDidChange() - updateCornerRadius() - setUpLayout(with: traitCollection) - } - - /// Configure content view with customizations. - - fileprivate func configureContentView() { - - guard let manager = self.manager else { - fatalError("Trying to set up the content view, but the BulletinViewController is not managed.") - } - - contentView.backgroundColor = manager.backgroundColor - contentView.cornerRadius = CGFloat((manager.cardCornerRadius ?? 12).doubleValue) - closeButton.updateColors(isDarkBackground: manager.backgroundColor.needsDarkText == false) - - let cardPadding = manager.edgeSpacing.rawValue - - // Set left and right padding - leadingConstraint = contentView.leadingAnchor.constraint(equalTo: view.safeLeadingAnchor, - constant: cardPadding) - - trailingConstraint = contentView.trailingAnchor.constraint(equalTo: view.safeTrailingAnchor, - constant: -cardPadding) - - // Set maximum width with padding - - maxWidthConstraint = contentView.widthAnchor.constraint(lessThanOrEqualTo: view.safeWidthAnchor, - constant: -(cardPadding * 2)) - - maxWidthConstraint.priority = UILayoutPriorityRequired - maxWidthConstraint.isActive = true - - if manager.hidesHomeIndicator { - contentBottomConstraint = contentView.bottomAnchor.constraint(equalTo: view.bottomAnchor) - } else { - contentBottomConstraint = contentView.bottomAnchor.constraint(equalTo: view.safeBottomAnchor) - } - - contentBottomConstraint.constant = 1000 - contentBottomConstraint.isActive = true - - } - - // MARK: - Gesture Recognizer - - internal func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { - if touch.view?.isDescendant(of: contentView) == true { - return false - } - - return true - } - -} - -// MARK: - Layout - -extension BulletinViewController { - - override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) { - - coordinator.animate(alongsideTransition: { _ in - self.setUpLayout(with: newCollection) - }) - - } - - fileprivate func setUpLayout(with traitCollection: UITraitCollection) { - - switch traitCollection.horizontalSizeClass { - case .regular: - leadingConstraint.isActive = false - trailingConstraint.isActive = false - contentBottomConstraint.isActive = false - centerXConstraint.isActive = true - centerYConstraint.isActive = true - widthConstraint.isActive = true - - case .compact: - leadingConstraint.isActive = true - trailingConstraint.isActive = true - contentBottomConstraint.isActive = true - centerXConstraint.isActive = false - centerYConstraint.isActive = false - widthConstraint.isActive = false - - default: - break - } - - switch (traitCollection.verticalSizeClass, traitCollection.horizontalSizeClass) { - case (.regular, .regular): - stackLeadingConstraint.constant = 32 - stackTrailingConstraint.constant = -32 - stackBottomConstraint.constant = -32 - contentTopConstraint.constant = -32 - contentStackView.spacing = 32 - - default: - stackLeadingConstraint.constant = 24 - stackTrailingConstraint.constant = -24 - stackBottomConstraint.constant = -24 - contentTopConstraint.constant = -24 - contentStackView.spacing = 24 - - } - - } - - // MARK: - Transition Adaptivity - - var defaultBottomMargin: CGFloat { - return manager?.edgeSpacing.rawValue ?? 12 - } - - func bottomMargin() -> CGFloat { - - if #available(iOS 11, *) { - if view.safeAreaInsets.bottom > 0 { - return 0 - } - } - - var bottomMargin: CGFloat = manager?.edgeSpacing.rawValue ?? 12 - - if manager?.hidesHomeIndicator == true { - bottomMargin = manager?.edgeSpacing.rawValue == 0 ? 0 : 6 - } - - return bottomMargin - - } - - /// Moves the content view to its final location on the screen. Use during presentation. - func moveIntoPlace() { - - contentBottomConstraint.constant = -bottomMargin() - centerYConstraint.constant = 0 - - view.layoutIfNeeded() - contentView.layoutIfNeeded() - backgroundView.layoutIfNeeded() - - } - - // MARK: - Presentation/Dismissal - - /// Dismisses the presnted BulletinViewController if `isDissmisable` is set to `true`. - @discardableResult - func dismissIfPossible() -> Bool { - - guard isDismissable else { - return false - } - - manager?.dismissBulletin(animated: true) - return true - - } - - // MARK: - Touch Events - - @objc fileprivate func handleTap(recognizer: UITapGestureRecognizer) { - dismissIfPossible() - } - - // MARK: - Accessibility - - override func accessibilityPerformEscape() -> Bool { - return dismissIfPossible() - } - -} - -// MARK: - System Elements - -extension BulletinViewController { - - override var preferredStatusBarStyle: UIStatusBarStyle { - if let manager = manager { - switch manager.statusBarAppearance { - case .lightContent: - return .lightContent - case .automatic: - return manager.backgroundViewStyle.rawValue.isDark ? .lightContent : .default - default: - break - } - } - - return .default - } - - override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { - return manager?.statusBarAnimation ?? .fade - } - - override var prefersStatusBarHidden: Bool { - return manager?.statusBarAppearance == .hidden - } - - @available(iOS 11.0, *) - override func prefersHomeIndicatorAutoHidden() -> Bool { - return manager?.hidesHomeIndicator ?? false - } - -} - -// MARK: - Safe Area - -extension BulletinViewController { - - @available(iOS 11.0, *) - fileprivate var screenHasRoundedCorners: Bool { - return view.safeAreaInsets.bottom > 0 - } - - fileprivate func updateCornerRadius() { - - if manager?.edgeSpacing.rawValue == 0 { - contentView.cornerRadius = 0 - return - } - - var defaultRadius: NSNumber = 12 - - if #available(iOS 11.0, *) { - defaultRadius = screenHasRoundedCorners ? 36 : 12 - } - - contentView.cornerRadius = CGFloat((manager?.cardCornerRadius ?? defaultRadius).doubleValue) - - } - -} - -// MARK: - Background - -extension BulletinViewController { - - /// Creates a new background view for the bulletin. - func loadBackgroundView() { - backgroundView = BulletinBackgroundView(style: manager?.backgroundViewStyle ?? .dimmed) - } - -} - -// MARK: - Activity Indicator - -extension BulletinViewController { - - /// Displays the activity indicator. - func displayActivityIndicator(color: UIColor) { - - activityIndicator.color = color - activityIndicator.startAnimating() - - let animations = { - self.activityIndicator.alpha = 1 - self.contentStackView.alpha = 0 - self.closeButton.alpha = 0 - } - - UIView.animate(withDuration: 0.25, animations: animations) { _ in - UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, self.activityIndicator) - } - - } - - /// Hides the activity indicator. - func hideActivityIndicator() { - - activityIndicator.stopAnimating() - activityIndicator.alpha = 0 - - let needsCloseButton = manager?.needsCloseButton == true - - let animations = { - self.activityIndicator.alpha = 0 - self.updateCloseButton(isRequired: needsCloseButton) - } - - UIView.animate(withDuration: 0.25, animations: animations) - - } - -} - -// MARK: - Close Button - -extension BulletinViewController { - - func updateCloseButton(isRequired: Bool) { - isRequired ? showCloseButton() : hideCloseButton() - } - - func showCloseButton() { - closeButton.alpha = 1 - } - - func hideCloseButton() { - closeButton.alpha = 0 - } - - @objc func closeButtonTapped() { - manager?.dismissBulletin(animated: true) - } - -} - -// MARK: - Transitions - -extension BulletinViewController: UIViewControllerTransitioningDelegate { - - func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? { - return BulletinPresentationAnimationController(style: manager?.backgroundViewStyle ?? .dimmed) - } - - func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? { - return BulletinDismissAnimationController() - } - - func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) - -> UIViewControllerInteractiveTransitioning? { - - guard manager?.allowsSwipeInteraction == true else { - return nil - } - - let isEligible = swipeInteractionController.isInteractionInProgress - return isEligible ? swipeInteractionController : nil - - } - - /// Creates a new view swipe interaction controller and wires it to the content view. - func refreshSwipeInteractionController() { - - guard manager?.allowsSwipeInteraction == true else { - return - } - - swipeInteractionController = BulletinSwipeInteractionController() - swipeInteractionController.wire(to: self) - - } - - /// Prepares the view controller for dismissal. - func prepareForDismissal(displaying snapshot: UIView) { - activeSnapshotView = snapshot - } - -} - -// MARK: - Keyboard - -extension BulletinViewController { - func setUpKeyboardLogic() { - NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardShow), name: .UIKeyboardWillShow, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardHide), name: .UIKeyboardWillHide, object: nil) - } - - func cleanUpKeyboardLogic() { - NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillShow, object: nil) - NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillHide, object: nil) - } - - @objc func onKeyboardShow(_ notification: Notification) { - - guard manager?.currentItem.shouldRespondToKeyboardChanges == true else { - return - } - - guard let userInfo = notification.userInfo, - let keyboardFrameFinal = userInfo[UIKeyboardFrameEndUserInfoKey] as? CGRect, - let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? Double, - let curveInt = userInfo[UIKeyboardAnimationCurveUserInfoKey] as? Int - else { - return - } - - let animationCurve = UIViewAnimationCurve(rawValue: curveInt) ?? .linear - let animationOptions = UIViewAnimationOptions(curve: animationCurve) - - UIView.animate(withDuration: duration, delay: 0, options: animationOptions, animations: { - var bottomSpacing = -(keyboardFrameFinal.size.height + self.defaultBottomMargin) - - if #available(iOS 11.0, *) { - - if self.manager?.hidesHomeIndicator == false { - bottomSpacing += self.view.safeAreaInsets.bottom - } - - } - - self.minYConstraint.isActive = false - self.contentBottomConstraint.constant = bottomSpacing - self.centerYConstraint.constant = -(keyboardFrameFinal.size.height + 12) / 2 - self.contentView.superview?.layoutIfNeeded() - - }, completion: nil) - - } - - @objc func onKeyboardHide(_ notification: Notification) { - - guard manager?.currentItem.shouldRespondToKeyboardChanges == true else { - return - } - - guard let userInfo = notification.userInfo, - let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? Double, - let curveInt = userInfo[UIKeyboardAnimationCurveUserInfoKey] as? Int - else { - return - } - - let animationCurve = UIViewAnimationCurve(rawValue: curveInt) ?? .linear - let animationOptions = UIViewAnimationOptions(curve: animationCurve) - - UIView.animate(withDuration: duration, delay: 0, options: animationOptions, animations: { - self.minYConstraint.isActive = true - self.contentBottomConstraint.constant = -self.bottomMargin() - self.centerYConstraint.constant = 0 - self.contentView.superview?.layoutIfNeeded() - }, completion: nil) - - } -} - -extension UIViewAnimationOptions { - init(curve: UIViewAnimationCurve) { - self = UIViewAnimationOptions(rawValue: UInt(curve.rawValue << 16)) - } -} - -// MARK: - Swift Compatibility - -#if swift(>=4.0) -let UILayoutPriorityRequired = UILayoutPriority.required -let UILayoutPriorityDefaultHigh = UILayoutPriority.defaultHigh -let UILayoutPriorityDefaultLow = UILayoutPriority.defaultLow -#endif diff --git a/Pods/BulletinBoard/Sources/Support/Helpers/UIButton+BackgroundColor.swift b/Pods/BulletinBoard/Sources/Support/Helpers/UIButton+BackgroundColor.swift deleted file mode 100644 index c62de912..00000000 --- a/Pods/BulletinBoard/Sources/Support/Helpers/UIButton+BackgroundColor.swift +++ /dev/null @@ -1,26 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -extension UIButton { - - /** - * Sets a solid background color for the button. - */ - - func setBackgroundColor(_ color: UIColor, forState controlState: UIControlState) { - - UIGraphicsBeginImageContext(CGSize(width: 1, height: 1)) - UIGraphicsGetCurrentContext()?.setFillColor(color.cgColor) - UIGraphicsGetCurrentContext()?.fill(CGRect(x: 0, y: 0, width: 1, height: 1)) - let colorImage = UIGraphicsGetImageFromCurrentImageContext() - UIGraphicsEndImageContext() - setBackgroundImage(colorImage, for: controlState) - - } - -} - diff --git a/Pods/BulletinBoard/Sources/Support/Helpers/UIColor+Luminance.swift b/Pods/BulletinBoard/Sources/Support/Helpers/UIColor+Luminance.swift deleted file mode 100644 index 7425e873..00000000 --- a/Pods/BulletinBoard/Sources/Support/Helpers/UIColor+Luminance.swift +++ /dev/null @@ -1,25 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -extension UIColor { - - var luminance: CGFloat { - - var red: CGFloat = 0 - var green: CGFloat = 0 - var blue: CGFloat = 0 - - getRed(&red, green: &green, blue: &blue, alpha: nil) - return 0.2126 * red + 0.7152 * green + 0.0722 * blue - - } - - var needsDarkText: Bool { - return luminance > sqrt(1.05 * 0.05) - 0.05 - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Helpers/UIView+SafeAnchors.swift b/Pods/BulletinBoard/Sources/Support/Helpers/UIView+SafeAnchors.swift deleted file mode 100644 index 495da587..00000000 --- a/Pods/BulletinBoard/Sources/Support/Helpers/UIView+SafeAnchors.swift +++ /dev/null @@ -1,27 +0,0 @@ -import UIKit - -// Source: https://gist.github.com/HarshilShah/6d75593d4c78a8015f54a090b115a40b - -extension UIView { - - var safeTopAnchor: NSLayoutYAxisAnchor { return safeAreaLayoutGuideIfAvailable?.topAnchor ?? topAnchor } - var safeBottomAnchor: NSLayoutYAxisAnchor { return safeAreaLayoutGuideIfAvailable?.bottomAnchor ?? bottomAnchor } - - var safeLeadingAnchor: NSLayoutXAxisAnchor { return safeAreaLayoutGuideIfAvailable?.leadingAnchor ?? leadingAnchor } - var safeTrailingAnchor: NSLayoutXAxisAnchor { return safeAreaLayoutGuideIfAvailable?.trailingAnchor ?? trailingAnchor } - - var safeCenterXAnchor: NSLayoutXAxisAnchor { return safeAreaLayoutGuideIfAvailable?.centerXAnchor ?? centerXAnchor } - var safeCenterYAnchor: NSLayoutYAxisAnchor { return safeAreaLayoutGuideIfAvailable?.centerYAnchor ?? centerYAnchor } - - var safeWidthAnchor: NSLayoutDimension { return safeAreaLayoutGuideIfAvailable?.widthAnchor ?? widthAnchor } - var safeHeightAnchor: NSLayoutDimension { return safeAreaLayoutGuideIfAvailable?.heightAnchor ?? heightAnchor } - - private var safeAreaLayoutGuideIfAvailable: UILayoutGuide? { - if #available(iOS 11.0, *) { - return safeAreaLayoutGuide - } else { - return nil - } - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Internal/ActivityIndicator.swift b/Pods/BulletinBoard/Sources/Support/Views/Internal/ActivityIndicator.swift deleted file mode 100644 index 2081353e..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Internal/ActivityIndicator.swift +++ /dev/null @@ -1,70 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A view that contains an activity indicator. The indicator is centered inside the view. - */ - -class ActivityIndicator: UIView { - - private let activityIndicatorView = UIActivityIndicatorView() - - // MARK: - Lifecycle - - override init(frame: CGRect) { - super.init(frame: frame) - initialize() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - initialize() - } - - private func initialize() { - - activityIndicatorView.translatesAutoresizingMaskIntoConstraints = false - addSubview(activityIndicatorView) - - activityIndicatorView.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true - activityIndicatorView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true - - } - - // MARK: - Activity Indicator - - /// Starts the animation of the activity indicator. - func startAnimating() { - activityIndicatorView.startAnimating() - } - - /// Stops the animation of the activity indicator. - func stopAnimating() { - activityIndicatorView.stopAnimating() - } - - /// The color of the activity indicator. - var color: UIColor? { - get { - return activityIndicatorView.color - } - set { - activityIndicatorView.color = newValue - } - } - - /// The style of the activity indicator. - var activityIndicatorViewStyle: UIActivityIndicatorViewStyle { - get { - return activityIndicatorView.activityIndicatorViewStyle - } - set { - activityIndicatorView.activityIndicatorViewStyle = newValue - } - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Internal/BulletinBackgroundView.swift b/Pods/BulletinBoard/Sources/Support/Views/Internal/BulletinBackgroundView.swift deleted file mode 100644 index 7ebe5fd1..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Internal/BulletinBackgroundView.swift +++ /dev/null @@ -1,134 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * The view to display behind the bulletin. - */ - -class BulletinBackgroundView: UIView { - - let style: BLTNBackgroundViewStyle - - // MARK: - Content View - - enum ContentView { - - case dim(UIView, CGFloat) - case blur(UIVisualEffectView, UIBlurEffect) - - var instance: UIView { - switch self { - case .dim(let dimmingView, _): - return dimmingView - case .blur(let blurView, _): - return blurView - } - } - - } - - private(set) var contentView: ContentView! - - // MARK: - Initialization - - init(style: BLTNBackgroundViewStyle) { - self.style = style - super.init(frame: .zero) - initialize() - } - - override init(frame: CGRect) { - style = .dimmed - super.init(frame: frame) - initialize() - } - - required init?(coder aDecoder: NSCoder) { - style = .dimmed - super.init(coder: aDecoder) - initialize() - } - - private func initialize() { - - translatesAutoresizingMaskIntoConstraints = false - - func makeDimmingView() -> UIView { - - let dimmingView = UIView() - dimmingView.alpha = 0.0 - dimmingView.backgroundColor = UIColor(white: 0.0, alpha: 0.5) - dimmingView.translatesAutoresizingMaskIntoConstraints = false - - return dimmingView - - } - - switch style.rawValue { - case .none: - - let dimmingView = makeDimmingView() - - addSubview(dimmingView) - contentView = .dim(dimmingView, 0.0) - - case .dimmed: - - let dimmingView = makeDimmingView() - - addSubview(dimmingView) - contentView = .dim(dimmingView, 1.0) - - case .blurred(let blurredBackground): - - let blurEffect = UIBlurEffect(style: blurredBackground.style) - let blurEffectView = UIVisualEffectView(effect: nil) - blurEffectView.translatesAutoresizingMaskIntoConstraints = false - - addSubview(blurEffectView) - contentView = .blur(blurEffectView, blurEffect) - - } - - let contentViewInstance = contentView.instance - - contentViewInstance.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true - contentViewInstance.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true - contentViewInstance.topAnchor.constraint(equalTo: topAnchor).isActive = true - contentViewInstance.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true - - } - - // MARK: - Interactions - - /// Shows the background view. Animatable. - func show() { - - switch contentView! { - case .dim(let dimmingView, let maxAlpha): - dimmingView.alpha = maxAlpha - - case .blur(let blurView, let blurEffect): - blurView.effect = blurEffect - } - - } - - /// Hides the background view. Animatable. - func hide() { - - switch contentView! { - case .dim(let dimmingView, _): - dimmingView.alpha = 0 - - case .blur(let blurView, _): - blurView.effect = nil - } - - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Internal/BulletinCloseButton.swift b/Pods/BulletinBoard/Sources/Support/Views/Internal/BulletinCloseButton.swift deleted file mode 100644 index 1e53f214..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Internal/BulletinCloseButton.swift +++ /dev/null @@ -1,122 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A button to close the bulletin. - */ - -class BulletinCloseButton: UIControl, HighlighterTarget { - - private let backgroundContainer = UIView() - private let closeGlyph = UIImageView() - - private let highlighter = Highlighter() - - // MARK: - Initialization - - override init(frame: CGRect) { - super.init(frame: frame) - highlighter.target = self - configureSubviews() - configureConstraints() - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - highlighter.target = self - configureSubviews() - configureConstraints() - } - - private func configureSubviews() { - - // Content - - isAccessibilityElement = true - accessibilityLabel = NSLocalizedString("Close", tableName: "Localizable", - bundle: Bundle(for: BulletinCloseButton.self), comment: "") - - // Layout - - addSubview(backgroundContainer) - addSubview(closeGlyph) - - backgroundContainer.layer.cornerRadius = 14 - - let glyph = UIImage(named: "CloseGlyph", in: Bundle(for: BulletinCloseButton.self), compatibleWith: nil)! - closeGlyph.image = glyph.withRenderingMode(.alwaysTemplate) - closeGlyph.clipsToBounds = true - - backgroundContainer.isUserInteractionEnabled = false - closeGlyph.isUserInteractionEnabled = false - - } - - private func configureConstraints() { - - backgroundContainer.translatesAutoresizingMaskIntoConstraints = false - closeGlyph.translatesAutoresizingMaskIntoConstraints = false - - backgroundContainer.widthAnchor.constraint(equalToConstant: 28).isActive = true - backgroundContainer.heightAnchor.constraint(equalToConstant: 28).isActive = true - backgroundContainer.centerXAnchor.constraint(equalTo: centerXAnchor).isActive = true - backgroundContainer.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true - - closeGlyph.widthAnchor.constraint(equalToConstant: 12).isActive = true - closeGlyph.heightAnchor.constraint(equalToConstant: 12).isActive = true - closeGlyph.centerXAnchor.constraint(equalTo: backgroundContainer.centerXAnchor).isActive = true - closeGlyph.centerYAnchor.constraint(equalTo: backgroundContainer.centerYAnchor).isActive = true - - } - - // MARK: - Customization - - func updateColors(isDarkBackground: Bool) { - if isDarkBackground { - backgroundContainer.backgroundColor = #colorLiteral(red: 0.9529411765, green: 0.9607843137, blue: 0.9607843137, alpha: 1) - closeGlyph.tintColor = #colorLiteral(red: 0.3764705882, green: 0.3921568627, blue: 0.431372549, alpha: 1) - } else { - backgroundContainer.backgroundColor = #colorLiteral(red: 0.3764705882, green: 0.3921568627, blue: 0.431372549, alpha: 1) - closeGlyph.tintColor = #colorLiteral(red: 0.9529411765, green: 0.9607843137, blue: 0.9607843137, alpha: 1) - } - } - - // MARK: - Highlighting - - override func touchesBegan(_ touches: Set, with event: UIEvent?) { - highlighter.handleTouchesBegan(touches, with: event) - } - - override func touchesMoved(_ touches: Set, with event: UIEvent?) { - highlighter.handleTouchesMoved(touches, with: event) - } - - override func touchesEnded(_ touches: Set, with event: UIEvent?) { - highlighter.handleTouchesEnded(touches, with: event) - } - - func highlight() { - - let animations = { - self.alpha = 0.5 - } - - UIView.transition(with: self, duration: 0.1, animations: animations) - - } - - func unhighlight() { - - let animations = { - self.alpha = 1 - } - - UIView.transition(with: self, duration: 0.1, animations: animations) - - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/ContinuousMaskLayer.swift b/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/ContinuousMaskLayer.swift deleted file mode 100644 index 2cbccefa..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/ContinuousMaskLayer.swift +++ /dev/null @@ -1,81 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A shape layer that animates its path inside a block. - */ - -private class AnimatingShapeLayer: CAShapeLayer { - - override class func defaultAction(forKey event: String) -> CAAction? { - - if event == "path" { - return CABasicAnimation(keyPath: event) - } else { - return super.defaultAction(forKey: event) - } - - } - -} - -/** - * A layer whose corners are rounded with a continuous mask (“squircle“). - */ - -class ContinuousMaskLayer: CALayer { - - /// The corner radius. - var continuousCornerRadius: CGFloat = 0 { - didSet { - refreshMask() - } - } - - /// The corners to round. - var roundedCorners: UIRectCorner = .allCorners { - didSet { - refreshMask() - } - } - - // MARK: - Initialization - - override init(layer: Any) { - super.init(layer: layer) - } - - override init() { - super.init() - self.mask = AnimatingShapeLayer() - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - // MARK: - Layout - - override func layoutSublayers() { - super.layoutSublayers() - refreshMask() - } - - private func refreshMask() { - - guard let mask = mask as? CAShapeLayer else { - return - } - - let radii = CGSize(width: continuousCornerRadius, height: continuousCornerRadius) - let roundedPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: roundedCorners, cornerRadii: radii) - - mask.path = roundedPath.cgPath - - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/RoundedViewProtocol.swift b/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/RoundedViewProtocol.swift deleted file mode 100644 index 9c965a2b..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/RoundedViewProtocol.swift +++ /dev/null @@ -1,45 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A view with rounded corners. Adopt this protocol if your view's layer is a `ContinuousMaskLayer`. - * This protocol provides utilities to easily change the rounded corners. - * - * You need to override `+ (Class *)layerClass` on `UIView` before conforming to this protocol. - */ - -protocol RoundedViewProtocol: NSObjectProtocol { - var layer: CALayer { get } -} - -extension RoundedViewProtocol { - - /// The corner radius of the view. - var cornerRadius: CGFloat { - get { - return roundedLayer.continuousCornerRadius - } - set { - roundedLayer.continuousCornerRadius = newValue - } - } - - /// The corners to round. - var roundedCorners: UIRectCorner { - get { - return roundedLayer.roundedCorners - } - set { - roundedLayer.roundedCorners = newValue - } - } - - private var roundedLayer: ContinuousMaskLayer { - return layer as! ContinuousMaskLayer - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/UIView+RoundedView.swift b/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/UIView+RoundedView.swift deleted file mode 100644 index a3c59871..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Internal/ContinuousCorners/UIView+RoundedView.swift +++ /dev/null @@ -1,30 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A view with rounded corners. - */ - -class RoundedView: UIView, RoundedViewProtocol { - - override class var layerClass: AnyClass { - return ContinuousMaskLayer.self - } - -} - -/** - * A button with rounded corners. - */ - -class RoundedButton: UIButton, RoundedViewProtocol { - - override class var layerClass: AnyClass { - return ContinuousMaskLayer.self - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Internal/HighlightButton.swift b/Pods/BulletinBoard/Sources/Support/Views/Internal/HighlightButton.swift deleted file mode 100644 index 307069d0..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Internal/HighlightButton.swift +++ /dev/null @@ -1,71 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A button that provides a visual feedback when the user interacts with it. - * - * This style of button works best with a solid background color. Use the `setBackgroundColor` - * function on `UIButton` to set one. - */ - -class HighlightButton: RoundedButton, HighlighterTarget { - - private let highlighter = Highlighter() - - override var bounds: CGRect { - didSet { - highlighter.updateBounds(bounds) - } - } - - override init(frame: CGRect) { - super.init(frame: frame) - highlighter.target = self - } - - required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - highlighter.target = self - } - - // MARK: - Touch Handling - - override func touchesBegan(_ touches: Set, with event: UIEvent?) { - highlighter.handleTouchesBegan(touches, with: event) - } - - override func touchesMoved(_ touches: Set, with event: UIEvent?) { - highlighter.handleTouchesMoved(touches, with: event) - } - - override func touchesEnded(_ touches: Set, with event: UIEvent?) { - highlighter.handleTouchesEnded(touches, with: event) - } - - // MARK: - Transitions - - func highlight() { - - let animations = { - self.alpha = 0.5 - } - - UIView.transition(with: self, duration: 0.1, animations: animations) - - } - - func unhighlight() { - - let animations = { - self.alpha = 1 - } - - UIView.transition(with: self, duration: 0.1, animations: animations) - - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Internal/Highlighter.swift b/Pods/BulletinBoard/Sources/Support/Views/Internal/Highlighter.swift deleted file mode 100644 index 2fab0c5b..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Internal/Highlighter.swift +++ /dev/null @@ -1,110 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/// An item that can be highlighted due to a touch event. -protocol HighlighterTarget: class { - - /// Highlight the item. - func highlight() - - /// Unhighlight the item. - func unhighlight() - -} - -/** - * An object that determines when an item (its target) needs to be highlighted in response to - * touch events. - * - * You must forward the target's `touchesBegan`, `touchesMoved` and `touchesEnded` to this highlighter. - */ - -class Highlighter { - - /// The control targeted for highlight. - weak var target: (UIControl & HighlighterTarget)? - - // MARK: - Hit Area - - private var _cachedHitArea: CGRect! - - private func makeHitArea(bounds: CGRect) -> CGRect { - let scaleTransform = CGAffineTransform(scaleX: 5/3, y: 5/3) - let translateTransform = CGAffineTransform(translationX: -bounds.width/3, y: -bounds.height/3) - return bounds.applying(scaleTransform).applying(translateTransform) - } - - private var hitArea: CGRect { - return _cachedHitArea ?? makeHitArea(bounds: target!.bounds) - } - - // MARK: - Touch Handling - - /** - * Call this method when the bounds of the target change. - */ - - func updateBounds(_ bounds: CGRect) { - _cachedHitArea = makeHitArea(bounds: bounds) - } - - /** - * Call this method when touches begin on the target. - */ - - func handleTouchesBegan(_ touches: Set, with event: UIEvent?) { - target?.highlight() - } - - /** - * Call this method when touches move on the target. - */ - - func handleTouchesMoved(_ touches: Set, with event: UIEvent?) { - - guard let mainTouch = touches.first else { - return - } - - let currentLocation = mainTouch.location(in: target!) - let previousLocation = mainTouch.previousLocation(in: target!) - - let containsCurrentLocation = hitArea.contains(currentLocation) - let containsPreviousLocation = hitArea.contains(previousLocation) - - let isEntering = !containsPreviousLocation && containsCurrentLocation - let isExiting = containsPreviousLocation && !containsCurrentLocation - - if isEntering { - target?.highlight() - } else if isExiting { - target?.unhighlight() - } - - } - - /** - * Call this method when touches end on the target. - */ - - func handleTouchesEnded(_ touches: Set, with event: UIEvent?) { - - guard let mainTouch = touches.first else { - return - } - - let currentLocation = mainTouch.location(in: target!) - - if hitArea.contains(currentLocation) { - target?.sendActions(for: .touchUpInside) - } - - target?.unhighlight() - - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNContainerView.swift b/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNContainerView.swift deleted file mode 100644 index ddf1be78..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNContainerView.swift +++ /dev/null @@ -1,47 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import Foundation - -/** - * A view that contains another view without intrinsic content size. - * - * The intrinsic content size is provided by this view, with the `contentSize` property. - * - * You should not add subviews directly. Instead, call `setChildView(childView:constraintsBuilder:)` - * to specify the view that should be displayed and position it with Auto Layout. - */ - -@objc public class BLTNContainerView: UIView { - - /// The size of the content displayed in this view. - @objc public var contentSize: CGSize = .zero - - /** - * Adds the child view and configures the constraints. - * - parameter childView: The view to display inside the fixed-size container. - * - parameter constraintsBuilder: The block of code to executed for adding constaints to position - * the child view. - */ - - @objc public func setChildView(_ childView: UIView, constraintsBuilder: @escaping (BLTNContainerView, UIView) -> Void) { - currentChildView?.removeFromSuperview() - currentChildView = childView - addSubview(childView) - childView.translatesAutoresizingMaskIntoConstraints = false - constraintsBuilder(self, childView) - } - - // MARK: - Utilties - - private var currentChildView: UIView? - - public override var intrinsicContentSize: CGSize { - return contentSize - } - -} - - diff --git a/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNHighlightButtonWrapper.swift b/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNHighlightButtonWrapper.swift deleted file mode 100644 index e1e0e8c4..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNHighlightButtonWrapper.swift +++ /dev/null @@ -1,42 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A view that wraps a HighlightButton. - * - * A wrapper is required to avoid alpha animation issues when unhighlighting the button and performing - * a bulletin transition. - */ - -@objc public class BLTNHighlightButtonWrapper: UIView { - - /// The underlying button. - @objc public let button: UIButton - - public required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) is unavailable. Use init(button:) instead.") - } - - init(button: HighlightButton) { - - self.button = button - super.init(frame: .zero) - - addSubview(button) - button.translatesAutoresizingMaskIntoConstraints = false - button.leadingAnchor.constraint(equalTo: leadingAnchor).isActive = true - button.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true - button.topAnchor.constraint(equalTo: topAnchor).isActive = true - button.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true - - } - - public override var intrinsicContentSize: CGSize { - return button.intrinsicContentSize - } - -} diff --git a/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNTitleLabelContainer.swift b/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNTitleLabelContainer.swift deleted file mode 100644 index d9621826..00000000 --- a/Pods/BulletinBoard/Sources/Support/Views/Public/BLTNTitleLabelContainer.swift +++ /dev/null @@ -1,45 +0,0 @@ -/** - * BulletinBoard - * Copyright (c) 2017 - present Alexis Aubry. Licensed under the MIT license. - */ - -import UIKit - -/** - * A view that contains a title label. - */ - -@objc public class BLTNTitleLabelContainer: UIView { - - /// The label contained in the view. - @objc public let label: UILabel - - // MARK: - Initialization - - @objc init(label: UILabel, horizontalInset: CGFloat) { - self.label = label - super.init(frame: .zero) - configureSubviews(horizontalInset: horizontalInset) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private func configureSubviews(horizontalInset: CGFloat) { - - addSubview(label) - label.translatesAutoresizingMaskIntoConstraints = false - - label.leadingAnchor.constraint(equalTo: leadingAnchor, constant: horizontalInset).isActive = true - label.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -horizontalInset).isActive = true - label.topAnchor.constraint(equalTo: topAnchor).isActive = true - label.bottomAnchor.constraint(equalTo: bottomAnchor).isActive = true - - } - - public override var intrinsicContentSize: CGSize { - return label.intrinsicContentSize - } - -} diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock deleted file mode 100644 index d796a9ae..00000000 --- a/Pods/Manifest.lock +++ /dev/null @@ -1,20 +0,0 @@ -PODS: - - BulletinBoard (2.0.1) - - SnapKit (4.0.0) - -DEPENDENCIES: - - BulletinBoard (~> 2.0) - - SnapKit (~> 4.0) - -SPEC REPOS: - https://github.com/cocoapods/specs.git: - - BulletinBoard - - SnapKit - -SPEC CHECKSUMS: - BulletinBoard: 99a428f91f64d0ffabf8a8104f79ecd064e2a4db - SnapKit: a42d492c16e80209130a3379f73596c3454b7694 - -PODFILE CHECKSUM: c3e205b008526633bc522e5b6ef558877b8e54a6 - -COCOAPODS: 1.5.3 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj deleted file mode 100644 index 6a753dfd..00000000 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1172 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0C6FE01DB5922B2581AA10368D47C699 /* ja.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 5CAF5B05276151AA497434E24D592865 /* ja.lproj */; }; - 0CDD6636599ED69A0BB0106D6CDCCCE9 /* ConstraintRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EDB4322F6873D483403B30B6349C937 /* ConstraintRelation.swift */; }; - 0DDAADAC4311D4E6E7F5D54C02855C34 /* BLTNItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 416D49F095B8BE314D406A8CB3BC9112 /* BLTNItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0F4B5F2A6F3CD5CAC380B66803E34B2E /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = EC91003DD2C4C338CF0CC04A1D7D7F3C /* es.lproj */; }; - 105F8AAF25A31415C00E95F917A27C32 /* ConstraintDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 966D3DCE0663AEF9D927F6CEA7D58B4B /* ConstraintDSL.swift */; }; - 13A3E3992D650AE6EE827A21D8DA44ED /* BLTNItemAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B3B14834F082757809791DD7E5538CB /* BLTNItemAppearance.swift */; }; - 1BBADB747083E1866019F4A611052351 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - 1EDE2EF6D7213DF37A9754C6275B319C /* BLTNViewPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83B02FBD6551A07061C09068C0B44742 /* BLTNViewPosition.swift */; }; - 1FDF670F6A022556F0792773D1532BF8 /* BLTNActionItem.m in Sources */ = {isa = PBXBuildFile; fileRef = C5E01A33C70D822871DB2773EF4DE503 /* BLTNActionItem.m */; }; - 23CE0E50CA7AC0CAC505CC15F509B53C /* sv.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3484B5AB0826494DF4CE40DAF0F10045 /* sv.lproj */; }; - 2896680B75F61AC7E09565C716573419 /* Typealiases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FF59B5EE03EDF7108EF7739A66F2A7B /* Typealiases.swift */; }; - 2C5FB79BC886AC4BD9D8F9B1507D7764 /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF86D62E31987C6F02251C0239D75387 /* ActivityIndicator.swift */; }; - 2E5A5D2A3BCCB70D4CF4B535C404727B /* ConstraintView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDD6097D19A2E4103BA8149D8C2953C9 /* ConstraintView.swift */; }; - 2FBE3712730236E0630BF300F285754D /* uk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = A1CE057C7FDE59C9B58A401ADF1EFD29 /* uk.lproj */; }; - 2FC797D4AEAE61450CE49B446D147BCC /* hu.lproj in Resources */ = {isa = PBXBuildFile; fileRef = A4D10A248F57C948E95D58C91012114C /* hu.lproj */; }; - 33684DF4CCD8ADBE8F37004E01A8089A /* BulletinDismissAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 201B084FCD26B3CED55796314CEE53D3 /* BulletinDismissAnimationController.swift */; }; - 3418896F4B19AD7BA5C29F33E39FFD39 /* Debugging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16378277435EC32FA1A3B84BDC00AC1F /* Debugging.swift */; }; - 359998CF584EB1EAEB8B88FB2889F8C6 /* BLTNActionItem.h in Headers */ = {isa = PBXBuildFile; fileRef = D5248BB199742C2033B19115717FEF49 /* BLTNActionItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 399AB9734D81093363ADCC1E60EBE563 /* pt-PT.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 377914CA39A5E25670A2489C654CDD6A /* pt-PT.lproj */; }; - 3A8C3C67CB59D0AB31DF779E18092B4A /* ConstraintConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8FF3558DCD2BC1339A956F288137245 /* ConstraintConfig.swift */; }; - 3BB55680A9CC06E64FB134A7FBF96366 /* el.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 7ECE2DE16AC2569CFA3DF9349F7467AE /* el.lproj */; }; - 3D77D7FCA36C8770B9036386D05DC05C /* Deprecations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A9F9DA4FA03B4E53444AF8E30DC2828 /* Deprecations.swift */; }; - 41F382B627C5ECDA994EF9D7C9C8BC2F /* CloseGlyph@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A2C4C552F27BD6FBB5493F6A318852B /* CloseGlyph@3x.png */; }; - 42FD389F0602119C2885B5D33FE3F907 /* sk.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 7D40EA8D88A1AC5768EE3B2F249ACEAA /* sk.lproj */; }; - 462E29CE00D459B8B9CB499319FB92D3 /* LayoutConstraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCF8A6D8BE8815B22006DD1193BD4B26 /* LayoutConstraint.swift */; }; - 46851422E1B7A91B10F3DEF75F0B345D /* SnapKit-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B49CD06D2A35A2BFDB418EF34DB5B519 /* SnapKit-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4ABD77F4DFE4FE3487248FD592A1251C /* ConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60831E9BE1BEE39BF8820E6455250A3D /* ConstraintItem.swift */; }; - 4DD7D63224EC69CE3FAF3F11D11F2357 /* BLTNPageItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 79DC1C8EA02FC399C6145FE40DA5C4A6 /* BLTNPageItem.m */; }; - 5145AC3B703DECA71536B9136D06DF04 /* ms.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 194A2856481B5787C20D8E49AB9D79B8 /* ms.lproj */; }; - 53075C8F27E4A203C4B9C2F9CFDE35B8 /* zh-Hans.lproj in Resources */ = {isa = PBXBuildFile; fileRef = C2AB2E96E7092FB45BF42C052FFB421A /* zh-Hans.lproj */; }; - 545D4ACF561AFAA6367B429D2E2550E9 /* ConstraintMakerPriortizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F40F3D40626154421F2EBBB2D2D5E17 /* ConstraintMakerPriortizable.swift */; }; - 556EC1B3267663668943E94F721322FF /* ConstraintMakerEditable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FD7B37CE1A351AB7E1C38D36D71E2C4 /* ConstraintMakerEditable.swift */; }; - 5DF94BF0EFC8168DC4355262AF774F8D /* UIButton+BackgroundColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABC580196F792F75ED0AB0EC588757D /* UIButton+BackgroundColor.swift */; }; - 618EC795592F88A3BFE209C6D58D444D /* Pods-Pageboy-Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D39AA6653F76AFC68416BF0EC99E5A /* Pods-Pageboy-Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 62132B7E4128A7F7DC54376CFE8D098D /* ConstraintMakerRelatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5430A3909F162F4E7AC41A9161ED08E5 /* ConstraintMakerRelatable.swift */; }; - 6781CB26F47E9BF5469219B5096B63E7 /* LayoutConstraintItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A5ED7738DC551D31CF02D462FD6C15B /* LayoutConstraintItem.swift */; }; - 69CCBF24AE4A52AB30640A8F80CF94A8 /* ConstraintMakerExtendable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 800DD2606A4D04C7F9E9BEA5C2547341 /* ConstraintMakerExtendable.swift */; }; - 6CFF67E4A417F9CA1ACCE7287F3887A4 /* BLTNBackgroundViewStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DD79FA283F1EBC4B6D57FA0AFA8D120 /* BLTNBackgroundViewStyle.swift */; }; - 7400D4901AA51FCB8F33B121AFE3E2B8 /* ConstraintPriority.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF633BD67997A6B76E0B4B9695F51927 /* ConstraintPriority.swift */; }; - 77326086C1DDC89F8F125E55C1E2CB22 /* ar.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 17528D17AB7659C849A10F9B23180A1E /* ar.lproj */; }; - 77AEB48A2235A5EB6DD4E01626AA40A0 /* BulletinPresentationAnimationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DB76E1EADEF6DFC48A889686BED2530 /* BulletinPresentationAnimationController.swift */; }; - 7B02486001495C595F892DD1690BF4DD /* ConstraintLayoutGuideDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D2DBE8BED42AC049CEF342256E3C389 /* ConstraintLayoutGuideDSL.swift */; }; - 7CC7F11617B9B82B2891269B225610A9 /* id.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 1C7398EB1161552BFA47CA61F36234CC /* id.lproj */; }; - 818DBEF44B312E7EBACF402CDEF84A9F /* BulletinCloseButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400902D26790FD6E17793C75D56930BA /* BulletinCloseButton.swift */; }; - 8482F0196F319B4F81C7531CB57EDD78 /* AnimationChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F7A1169CEDAE95686A7FDD855A219F3 /* AnimationChain.swift */; }; - 85C7341CC40AB744ED0FE7667A7ECDB8 /* Highlighter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45A123887B7C7A38CC337E150C7EB253 /* Highlighter.swift */; }; - 8888BD7BC318FD205048A1A9C3170FC9 /* hr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 45897BF93171443BE6DB98049CDE3FB1 /* hr.lproj */; }; - 896AD6793DF7491B2E27D6D6E2C86B79 /* ko.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 0A9A8B9B6561D0ACD679736044B5166A /* ko.lproj */; }; - 8A5CBBAFEBAB06E57C3FFEA158B4F193 /* Pods-Pageboy-Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D2DE767B4F239BBD197713B988094F89 /* Pods-Pageboy-Example-dummy.m */; }; - 8BFA06671C5FA5BA9874B2E10F7531E6 /* BulletinBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D704270B41B3C1C9A73113BB718370B9 /* BulletinBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 90D056E98F36BB97A226C48280222D1E /* ro.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 8C464024842156C159E13B5B646A9BBF /* ro.lproj */; }; - 9636D1DEC0EE22E4440644A2CDF5FC1C /* ConstraintLayoutGuide+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1862E23B6A224CF5E08C8CA24924DE /* ConstraintLayoutGuide+Extensions.swift */; }; - 9820328F57CB226C452BD78CCF42034F /* UILayoutSupport+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB01008F9C7AB31FDF3C15FB2BADBB9A /* UILayoutSupport+Extensions.swift */; }; - 9941EFAEF31B7A608F0B62AA1931FA35 /* BulletinViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4913027BA2E062C23476C025FBE111A /* BulletinViewController.swift */; }; - 995908FBCF9B41E95076A31A0977BF85 /* fi.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 6CA4B6EA1DC535736878E0742530A056 /* fi.lproj */; }; - 9B278E02D5670590A30CA9E98E9E4C32 /* BLTNPageItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E9959949E85AB2525E01923769B9B6C /* BLTNPageItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9CBA77E45E85967F5950F2B3D12C5359 /* ConstraintOffsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E2D889AB4BC956B6080E3785071D780 /* ConstraintOffsetTarget.swift */; }; - 9F8FE4B199ECCE83CC88D4282A021294 /* pl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 9DAFBE6F6A394487F3EC49F514DDFD19 /* pl.lproj */; }; - 9FBAC25050ABF16363A1862228976545 /* BLTNSpacing.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5EC93FF802B07D2F791D3D46AB39957 /* BLTNSpacing.swift */; }; - 9FFF4036CF2302DF87F0A72D8F55D809 /* HighlightButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 725DAF393ADF9F0A093415F5DD8362B7 /* HighlightButton.swift */; }; - A073A02B17FCE0C1996967576653C2AC /* vi.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 47FEF3C33F88525A8ED64901694D0347 /* vi.lproj */; }; - A0DE5B5EA280CFE3E7C60D6AD19AA15F /* BLTNItemManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 277394FCB5190B8D529E59A91C30BA1C /* BLTNItemManager.swift */; }; - A0F42F194903634B5CF3301C790B7A04 /* pt-BR.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 134D438E68A9B824A3B77B79938F9E5F /* pt-BR.lproj */; }; - A24E0059F8832B7AC0A3D6E970E01DEE /* BLTNTitleLabelContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72853B4D24D14A2B3E4CFE6654E242A4 /* BLTNTitleLabelContainer.swift */; }; - A338908BA488A5600FFC345D4E00563D /* ru.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 56B59E65579EA282BFC96A600BAADFD2 /* ru.lproj */; }; - A5825BD7525D8ED1911227933903FED4 /* UIColor+Luminance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3747E9265EB48DA8171A0AD3E51FD6 /* UIColor+Luminance.swift */; }; - AA8B015595D692D6CB97FC8B15996E85 /* CloseGlyph.png in Resources */ = {isa = PBXBuildFile; fileRef = BAF70436F1BBEE6B26246390D3CEFE14 /* CloseGlyph.png */; }; - AB1D9C23E9EF1C0DA86DB2BF4EC60F09 /* BulletinBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D1EB9A92A515B306DBB14F80BAE0FC3 /* BulletinBackgroundView.swift */; }; - AD38D391BB6E506DD6B0ED1191E8C8E0 /* nb.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E3302491CA3FB21D37BEE5AA87D14A03 /* nb.lproj */; }; - AE002DD5C1C390C918D43A179FF180DA /* cs.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 42A738B0E5F00DFF9393629CD3816A2C /* cs.lproj */; }; - B0487DAF2C8EEDCC5A8D61899EBB6817 /* BLTNContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78AA5DD99795511F2F3403259A55B158 /* BLTNContainerView.swift */; }; - B0B8627333C7F6B7DFF8584065BB2B41 /* hi.lproj in Resources */ = {isa = PBXBuildFile; fileRef = FFADABCD3ACD801C5F81726FB032C370 /* hi.lproj */; }; - B2336B6E51CB4132FBE366AE9F6C3A3B /* ConstraintInsets.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD04F95C385D7A1D4D6C8A4DF99E4E4F /* ConstraintInsets.swift */; }; - B48299A7FD6DA757CB28E7E080F032CF /* th.lproj in Resources */ = {isa = PBXBuildFile; fileRef = DB7727430C6AFBA5646AF180A10B7880 /* th.lproj */; }; - B5B684971FEF1693F3C7FD35C445868A /* UIView+RoundedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6570347F956DE1CF022139563F48061 /* UIView+RoundedView.swift */; }; - B5BEB9257320143EC5C6F3B965CAABAB /* zh-Hant.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 94479EE0ACE006A4C89C5FBBBE07D24A /* zh-Hant.lproj */; }; - B87BC732304B4C29331A3E6AC73EB9B8 /* BLTNBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = 946D6A683AFA0B802131556AD6D50DD9 /* BLTNBoard.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B8F647CA0D74E3457B706AD65AB76B8C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */; }; - BBE76E24B20237F6D37FF8C1AC352D55 /* da.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 9E3B867DE22623909DC987FB22A76E4B /* da.lproj */; }; - BE75F8A4CB0F5ACE2534A7A45DF792D4 /* he.lproj in Resources */ = {isa = PBXBuildFile; fileRef = F2676597636E1B8A06C3D98446A51812 /* he.lproj */; }; - BF30E5763C889DC9BD0EFFEAACBE4C6F /* ConstraintDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59042E70A6DB6B7203308B4798BA358D /* ConstraintDescription.swift */; }; - C50F168A7F365AB0F7FADEBD00849AF2 /* CloseGlyph@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4D51D35892395F495CDC296042D9EF24 /* CloseGlyph@2x.png */; }; - CA0539DCD335A5F7E0DBBC981B142E57 /* UIView+SafeAnchors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 284AE7CE7F6DC0A573D4520B9D2F45D1 /* UIView+SafeAnchors.swift */; }; - CA1C8409377D5F65BF93CC743C3A379F /* Constraint.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33204330E2C8E922FFD438358BC834D /* Constraint.swift */; }; - CA752B93C818A5E6D6D0ABD4E34EB072 /* ConstraintLayoutSupportDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E9D2BEBC484D05FC7041B634688EB37 /* ConstraintLayoutSupportDSL.swift */; }; - CC23B751F7B3943DAD4671C6FBAE3C78 /* RoundedViewProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F28655B98CFAF23AE34A68EEAEB9471 /* RoundedViewProtocol.swift */; }; - CCC14A27A6FCDD8C4762939E6BC5CB8D /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = EB55E0ED24D5F996F5DF4AB9C72FB196 /* fr.lproj */; }; - CDB8884C41B38C9368680DCE7B0186C7 /* ConstraintViewDSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D1C62DE5FB3130CE71FC5C1226EA23 /* ConstraintViewDSL.swift */; }; - D35BDCF1076462CE075758EED8413D40 /* ConstraintAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7548A1D8481B0C4ABED435D7C026D83 /* ConstraintAttributes.swift */; }; - D60FD7F66370767C0D32A4D282B8ABF3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - D6F819E2C4E5EACDE627C45C9B56D944 /* tr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 735E74910A1AF889510D799F1561690E /* tr.lproj */; }; - DF424C676F192351885812B6D168F685 /* ConstraintPriorityTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11A5B85FA3DF382BFE2D120FEF2BABA /* ConstraintPriorityTarget.swift */; }; - DFB68FE763B6520FC3B8D2F126693A4A /* ConstraintRelatableTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B37696169C273E8DD40E6B754BB1650 /* ConstraintRelatableTarget.swift */; }; - DFF35FD9862215E0087CF9AAC1049BF0 /* ContinuousMaskLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF7E56C66805B0CC590488023867743F /* ContinuousMaskLayer.swift */; }; - E15CC9B5AAC13885D128B0C6F675649E /* ConstraintMaker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F55F3ED875FBE8F53D614A47A491F5 /* ConstraintMaker.swift */; }; - E36CA5C8D9603021CB59D8A940CF414C /* ConstraintMakerFinalizable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 300A222834FF8C43A20E76BDF10225D0 /* ConstraintMakerFinalizable.swift */; }; - E38EAE8013F000978DD25B03F11E1580 /* ConstraintMultiplierTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80309BEDBB9966645BEB0C58305949B7 /* ConstraintMultiplierTarget.swift */; }; - E3E0353E2DDB5B5345D1223151068716 /* ConstraintInsetTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03B6C65DE0154A4CC77D074CE861174A /* ConstraintInsetTarget.swift */; }; - E613FCA570FBFFC09FED91AB843EA264 /* SnapKit-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2787829273A24490B57EBAD054C10150 /* SnapKit-dummy.m */; }; - E8F78A58CCB20A9542761891D0F9B97B /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = E79BF9540F1407C4AAD74178BA432DA5 /* en.lproj */; }; - E98E8EE503DA5ACD8453EABA1260B38E /* BLTNInterfaceBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7D48C164EA0A8E8ED5CE7EF26BA8834 /* BLTNInterfaceBuilder.swift */; }; - EA419A8DF91E7F9CB3CA60FD8A047CDC /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 067AF2ECED94EDBDC9600358E2AD4693 /* it.lproj */; }; - EA503617DE9C17CF1796A2D6716DE27A /* nl.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 6F9CC4F2246E3D599AA615FCF8BF2AE6 /* nl.lproj */; }; - EC5EC385F9E66B6823592330A669EAD4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */; }; - EDE7DF5E3CDB96F2E9DFB0E2B266DE1D /* ConstraintLayoutSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918FA43E8A527D621F304965AAAEC5A9 /* ConstraintLayoutSupport.swift */; }; - EE246AE943E70483B327EE95317A40E0 /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 15A9FBBB3993B0AE49FF494461456341 /* de.lproj */; }; - F329EAFD8F204FCC8724C9309AB5E81F /* ConstraintView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13A99232B776C28A7AF9E69785D0F243 /* ConstraintView+Extensions.swift */; }; - F45F982688E135E2CAB047B90D5AE053 /* BulletinBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 719F7A8F670223EA7ABEAFD1E5A4BF09 /* BulletinBoard-dummy.m */; }; - F5C1DACBF125804C47E5AFE60D560E9C /* ca.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 439F54BA6EDB311C919C5A03B3558FF0 /* ca.lproj */; }; - F8A64B46BCCB93F44C092F70C8796509 /* BulletinSwipeInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDC72A37542363DB73914EDDA2DBBA71 /* BulletinSwipeInteractionController.swift */; }; - F99BF0904C9FDC46F31D2E86EDECD91F /* BLTNHighlightButtonWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2E079BA0FB1CA7A181696FCDEC7D1C1 /* BLTNHighlightButtonWrapper.swift */; }; - FA55EB533F3FF5B2E468D6750A0A1D06 /* ConstraintConstantTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71A9AAF0C59D916B1EB021F41B6DB8A3 /* ConstraintConstantTarget.swift */; }; - FF3FC91D0A5A33BA151F587E4F081DEA /* ConstraintLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68EDB17E9A45E99249AA03F59B057360 /* ConstraintLayoutGuide.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 423B5D7BEDEE92F2FDFABD4E1B7D969C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4A7048C4345E6886ECA17B3F5FDEC620; - remoteInfo = SnapKit; - }; - A935C5D2E66409EF4F27D29ECF4F80D4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; - proxyType = 1; - remoteGlobalIDString = F76C6CAEC5CCF08C6477CBA6FC453250; - remoteInfo = BulletinBoard; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 00058A0941326130A4A78CD5B0C3E162 /* Pods-Pageboy-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Pageboy-Example.debug.xcconfig"; sourceTree = ""; }; - 03B6C65DE0154A4CC77D074CE861174A /* ConstraintInsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsetTarget.swift; path = Source/ConstraintInsetTarget.swift; sourceTree = ""; }; - 067AF2ECED94EDBDC9600358E2AD4693 /* it.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = it.lproj; path = Resources/Strings/it.lproj; sourceTree = ""; }; - 0A9A8B9B6561D0ACD679736044B5166A /* ko.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ko.lproj; path = Resources/Strings/ko.lproj; sourceTree = ""; }; - 0ABC580196F792F75ED0AB0EC588757D /* UIButton+BackgroundColor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+BackgroundColor.swift"; path = "Sources/Support/Helpers/UIButton+BackgroundColor.swift"; sourceTree = ""; }; - 0C2BD59F9E41EE6AB693F96C817CB619 /* BLTNBoard.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = BLTNBoard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0F28655B98CFAF23AE34A68EEAEB9471 /* RoundedViewProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RoundedViewProtocol.swift; path = Sources/Support/Views/Internal/ContinuousCorners/RoundedViewProtocol.swift; sourceTree = ""; }; - 134D438E68A9B824A3B77B79938F9E5F /* pt-BR.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = "pt-BR.lproj"; path = "Resources/Strings/pt-BR.lproj"; sourceTree = ""; }; - 13A99232B776C28A7AF9E69785D0F243 /* ConstraintView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintView+Extensions.swift"; path = "Source/ConstraintView+Extensions.swift"; sourceTree = ""; }; - 15A9FBBB3993B0AE49FF494461456341 /* de.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = de.lproj; path = Resources/Strings/de.lproj; sourceTree = ""; }; - 16378277435EC32FA1A3B84BDC00AC1F /* Debugging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Debugging.swift; path = Source/Debugging.swift; sourceTree = ""; }; - 17528D17AB7659C849A10F9B23180A1E /* ar.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ar.lproj; path = Resources/Strings/ar.lproj; sourceTree = ""; }; - 194A2856481B5787C20D8E49AB9D79B8 /* ms.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ms.lproj; path = Resources/Strings/ms.lproj; sourceTree = ""; }; - 1C7398EB1161552BFA47CA61F36234CC /* id.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = id.lproj; path = Resources/Strings/id.lproj; sourceTree = ""; }; - 1D1EB9A92A515B306DBB14F80BAE0FC3 /* BulletinBackgroundView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BulletinBackgroundView.swift; path = Sources/Support/Views/Internal/BulletinBackgroundView.swift; sourceTree = ""; }; - 1F40F3D40626154421F2EBBB2D2D5E17 /* ConstraintMakerPriortizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerPriortizable.swift; path = Source/ConstraintMakerPriortizable.swift; sourceTree = ""; }; - 201B084FCD26B3CED55796314CEE53D3 /* BulletinDismissAnimationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BulletinDismissAnimationController.swift; path = Sources/Support/Animations/BulletinDismissAnimationController.swift; sourceTree = ""; }; - 277394FCB5190B8D529E59A91C30BA1C /* BLTNItemManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNItemManager.swift; path = Sources/BLTNItemManager.swift; sourceTree = ""; }; - 2787829273A24490B57EBAD054C10150 /* SnapKit-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SnapKit-dummy.m"; sourceTree = ""; }; - 284AE7CE7F6DC0A573D4520B9D2F45D1 /* UIView+SafeAnchors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+SafeAnchors.swift"; path = "Sources/Support/Helpers/UIView+SafeAnchors.swift"; sourceTree = ""; }; - 295BF61F14DB812652231D461C250124 /* BulletinBoard-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BulletinBoard-prefix.pch"; sourceTree = ""; }; - 2A3747E9265EB48DA8171A0AD3E51FD6 /* UIColor+Luminance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIColor+Luminance.swift"; path = "Sources/Support/Helpers/UIColor+Luminance.swift"; sourceTree = ""; }; - 2A9F9DA4FA03B4E53444AF8E30DC2828 /* Deprecations.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Deprecations.swift; path = Sources/Deprecations.swift; sourceTree = ""; }; - 2B37696169C273E8DD40E6B754BB1650 /* ConstraintRelatableTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelatableTarget.swift; path = Source/ConstraintRelatableTarget.swift; sourceTree = ""; }; - 2C795D7FA1218113037383A8C3FE7491 /* Pods_Pageboy_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Pageboy_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 300A222834FF8C43A20E76BDF10225D0 /* ConstraintMakerFinalizable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerFinalizable.swift; path = Source/ConstraintMakerFinalizable.swift; sourceTree = ""; }; - 3484B5AB0826494DF4CE40DAF0F10045 /* sv.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = sv.lproj; path = Resources/Strings/sv.lproj; sourceTree = ""; }; - 377914CA39A5E25670A2489C654CDD6A /* pt-PT.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = "pt-PT.lproj"; path = "Resources/Strings/pt-PT.lproj"; sourceTree = ""; }; - 3A5ED7738DC551D31CF02D462FD6C15B /* LayoutConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraintItem.swift; path = Source/LayoutConstraintItem.swift; sourceTree = ""; }; - 3D2DBE8BED42AC049CEF342256E3C389 /* ConstraintLayoutGuideDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuideDSL.swift; path = Source/ConstraintLayoutGuideDSL.swift; sourceTree = ""; }; - 3DD79FA283F1EBC4B6D57FA0AFA8D120 /* BLTNBackgroundViewStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNBackgroundViewStyle.swift; path = Sources/Appearance/BLTNBackgroundViewStyle.swift; sourceTree = ""; }; - 3E9959949E85AB2525E01923769B9B6C /* BLTNPageItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BLTNPageItem.h; path = Sources/Models/BLTNPageItem.h; sourceTree = ""; }; - 400902D26790FD6E17793C75D56930BA /* BulletinCloseButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BulletinCloseButton.swift; path = Sources/Support/Views/Internal/BulletinCloseButton.swift; sourceTree = ""; }; - 416D49F095B8BE314D406A8CB3BC9112 /* BLTNItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BLTNItem.h; path = Sources/Models/BLTNItem.h; sourceTree = ""; }; - 42A738B0E5F00DFF9393629CD3816A2C /* cs.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = cs.lproj; path = Resources/Strings/cs.lproj; sourceTree = ""; }; - 439F54BA6EDB311C919C5A03B3558FF0 /* ca.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ca.lproj; path = Resources/Strings/ca.lproj; sourceTree = ""; }; - 44F55F3ED875FBE8F53D614A47A491F5 /* ConstraintMaker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMaker.swift; path = Source/ConstraintMaker.swift; sourceTree = ""; }; - 45897BF93171443BE6DB98049CDE3FB1 /* hr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = hr.lproj; path = Resources/Strings/hr.lproj; sourceTree = ""; }; - 45A123887B7C7A38CC337E150C7EB253 /* Highlighter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Highlighter.swift; path = Sources/Support/Views/Internal/Highlighter.swift; sourceTree = ""; }; - 47FEF3C33F88525A8ED64901694D0347 /* vi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = vi.lproj; path = Resources/Strings/vi.lproj; sourceTree = ""; }; - 4D51D35892395F495CDC296042D9EF24 /* CloseGlyph@2x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "CloseGlyph@2x.png"; path = "Resources/CloseGlyph@2x.png"; sourceTree = ""; }; - 4E1862E23B6A224CF5E08C8CA24924DE /* ConstraintLayoutGuide+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ConstraintLayoutGuide+Extensions.swift"; path = "Source/ConstraintLayoutGuide+Extensions.swift"; sourceTree = ""; }; - 4FD7B37CE1A351AB7E1C38D36D71E2C4 /* ConstraintMakerEditable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerEditable.swift; path = Source/ConstraintMakerEditable.swift; sourceTree = ""; }; - 5430A3909F162F4E7AC41A9161ED08E5 /* ConstraintMakerRelatable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerRelatable.swift; path = Source/ConstraintMakerRelatable.swift; sourceTree = ""; }; - 56B59E65579EA282BFC96A600BAADFD2 /* ru.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ru.lproj; path = Resources/Strings/ru.lproj; sourceTree = ""; }; - 59042E70A6DB6B7203308B4798BA358D /* ConstraintDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDescription.swift; path = Source/ConstraintDescription.swift; sourceTree = ""; }; - 5CAF5B05276151AA497434E24D592865 /* ja.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ja.lproj; path = Resources/Strings/ja.lproj; sourceTree = ""; }; - 5FF59B5EE03EDF7108EF7739A66F2A7B /* Typealiases.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Typealiases.swift; path = Source/Typealiases.swift; sourceTree = ""; }; - 60831E9BE1BEE39BF8820E6455250A3D /* ConstraintItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintItem.swift; path = Source/ConstraintItem.swift; sourceTree = ""; }; - 62DA85FCD8626A20B87CF651F4C767AB /* SnapKit-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-prefix.pch"; sourceTree = ""; }; - 66D25016E2700B794DF811ADD470C1CD /* SnapKit.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SnapKit.xcconfig; sourceTree = ""; }; - 68D1C62DE5FB3130CE71FC5C1226EA23 /* ConstraintViewDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintViewDSL.swift; path = Source/ConstraintViewDSL.swift; sourceTree = ""; }; - 68EDB17E9A45E99249AA03F59B057360 /* ConstraintLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutGuide.swift; path = Source/ConstraintLayoutGuide.swift; sourceTree = ""; }; - 6B3B14834F082757809791DD7E5538CB /* BLTNItemAppearance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNItemAppearance.swift; path = Sources/Appearance/BLTNItemAppearance.swift; sourceTree = ""; }; - 6CA4B6EA1DC535736878E0742530A056 /* fi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = fi.lproj; path = Resources/Strings/fi.lproj; sourceTree = ""; }; - 6E9D2BEBC484D05FC7041B634688EB37 /* ConstraintLayoutSupportDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupportDSL.swift; path = Source/ConstraintLayoutSupportDSL.swift; sourceTree = ""; }; - 6F9CC4F2246E3D599AA615FCF8BF2AE6 /* nl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = nl.lproj; path = Resources/Strings/nl.lproj; sourceTree = ""; }; - 719F7A8F670223EA7ABEAFD1E5A4BF09 /* BulletinBoard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BulletinBoard-dummy.m"; sourceTree = ""; }; - 71A9AAF0C59D916B1EB021F41B6DB8A3 /* ConstraintConstantTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConstantTarget.swift; path = Source/ConstraintConstantTarget.swift; sourceTree = ""; }; - 725DAF393ADF9F0A093415F5DD8362B7 /* HighlightButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HighlightButton.swift; path = Sources/Support/Views/Internal/HighlightButton.swift; sourceTree = ""; }; - 72853B4D24D14A2B3E4CFE6654E242A4 /* BLTNTitleLabelContainer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNTitleLabelContainer.swift; path = Sources/Support/Views/Public/BLTNTitleLabelContainer.swift; sourceTree = ""; }; - 735E74910A1AF889510D799F1561690E /* tr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = tr.lproj; path = Resources/Strings/tr.lproj; sourceTree = ""; }; - 78AA5DD99795511F2F3403259A55B158 /* BLTNContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNContainerView.swift; path = Sources/Support/Views/Public/BLTNContainerView.swift; sourceTree = ""; }; - 79DC1C8EA02FC399C6145FE40DA5C4A6 /* BLTNPageItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BLTNPageItem.m; path = Sources/Models/BLTNPageItem.m; sourceTree = ""; }; - 7D40EA8D88A1AC5768EE3B2F249ACEAA /* sk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = sk.lproj; path = Resources/Strings/sk.lproj; sourceTree = ""; }; - 7DB76E1EADEF6DFC48A889686BED2530 /* BulletinPresentationAnimationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BulletinPresentationAnimationController.swift; path = Sources/Support/Animations/BulletinPresentationAnimationController.swift; sourceTree = ""; }; - 7E2D889AB4BC956B6080E3785071D780 /* ConstraintOffsetTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintOffsetTarget.swift; path = Source/ConstraintOffsetTarget.swift; sourceTree = ""; }; - 7ECE2DE16AC2569CFA3DF9349F7467AE /* el.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = el.lproj; path = Resources/Strings/el.lproj; sourceTree = ""; }; - 800DD2606A4D04C7F9E9BEA5C2547341 /* ConstraintMakerExtendable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMakerExtendable.swift; path = Source/ConstraintMakerExtendable.swift; sourceTree = ""; }; - 80309BEDBB9966645BEB0C58305949B7 /* ConstraintMultiplierTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintMultiplierTarget.swift; path = Source/ConstraintMultiplierTarget.swift; sourceTree = ""; }; - 83B02FBD6551A07061C09068C0B44742 /* BLTNViewPosition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNViewPosition.swift; path = Sources/Appearance/BLTNViewPosition.swift; sourceTree = ""; }; - 87DC80D84AB11CC5CA52017401EBDFFE /* Pods-Pageboy-Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Pageboy-Example-frameworks.sh"; sourceTree = ""; }; - 88D39AA6653F76AFC68416BF0EC99E5A /* Pods-Pageboy-Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Pageboy-Example-umbrella.h"; sourceTree = ""; }; - 8A2C4C552F27BD6FBB5493F6A318852B /* CloseGlyph@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "CloseGlyph@3x.png"; path = "Resources/CloseGlyph@3x.png"; sourceTree = ""; }; - 8C464024842156C159E13B5B646A9BBF /* ro.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = ro.lproj; path = Resources/Strings/ro.lproj; sourceTree = ""; }; - 8C66F3C9E5A6DC78EF0F0C18DB550C13 /* Pods-Pageboy-Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Pageboy-Example-resources.sh"; sourceTree = ""; }; - 8EDB4322F6873D483403B30B6349C937 /* ConstraintRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintRelation.swift; path = Source/ConstraintRelation.swift; sourceTree = ""; }; - 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 918FA43E8A527D621F304965AAAEC5A9 /* ConstraintLayoutSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintLayoutSupport.swift; path = Source/ConstraintLayoutSupport.swift; sourceTree = ""; }; - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 94479EE0ACE006A4C89C5FBBBE07D24A /* zh-Hant.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = "zh-Hant.lproj"; path = "Resources/Strings/zh-Hant.lproj"; sourceTree = ""; }; - 946D6A683AFA0B802131556AD6D50DD9 /* BLTNBoard.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BLTNBoard.h; path = Sources/BLTNBoard.h; sourceTree = ""; }; - 966D3DCE0663AEF9D927F6CEA7D58B4B /* ConstraintDSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintDSL.swift; path = Source/ConstraintDSL.swift; sourceTree = ""; }; - 9DAFBE6F6A394487F3EC49F514DDFD19 /* pl.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = pl.lproj; path = Resources/Strings/pl.lproj; sourceTree = ""; }; - 9E3B867DE22623909DC987FB22A76E4B /* da.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = da.lproj; path = Resources/Strings/da.lproj; sourceTree = ""; }; - 9F7A1169CEDAE95686A7FDD855A219F3 /* AnimationChain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnimationChain.swift; path = Sources/Support/Animations/AnimationChain.swift; sourceTree = ""; }; - 9F8872D75F68503F3C680104E48AFC08 /* Pods-Pageboy-Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Pageboy-Example.modulemap"; sourceTree = ""; }; - A1CE057C7FDE59C9B58A401ADF1EFD29 /* uk.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = uk.lproj; path = Resources/Strings/uk.lproj; sourceTree = ""; }; - A4D10A248F57C948E95D58C91012114C /* hu.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = hu.lproj; path = Resources/Strings/hu.lproj; sourceTree = ""; }; - A7548A1D8481B0C4ABED435D7C026D83 /* ConstraintAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintAttributes.swift; path = Source/ConstraintAttributes.swift; sourceTree = ""; }; - A8FF3558DCD2BC1339A956F288137245 /* ConstraintConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintConfig.swift; path = Source/ConstraintConfig.swift; sourceTree = ""; }; - AA21B0EEEBB7F9CC66E80EA5541C80C0 /* SnapKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SnapKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AF1ACA300D4F602C27404B2CCB91E6CA /* Pods-Pageboy-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Pageboy-Example.release.xcconfig"; sourceTree = ""; }; - AF86D62E31987C6F02251C0239D75387 /* ActivityIndicator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityIndicator.swift; path = Sources/Support/Views/Internal/ActivityIndicator.swift; sourceTree = ""; }; - B33204330E2C8E922FFD438358BC834D /* Constraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Constraint.swift; path = Source/Constraint.swift; sourceTree = ""; }; - B49CD06D2A35A2BFDB418EF34DB5B519 /* SnapKit-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SnapKit-umbrella.h"; sourceTree = ""; }; - BAF70436F1BBEE6B26246390D3CEFE14 /* CloseGlyph.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = CloseGlyph.png; path = Resources/CloseGlyph.png; sourceTree = ""; }; - BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - BDC72A37542363DB73914EDDA2DBBA71 /* BulletinSwipeInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BulletinSwipeInteractionController.swift; path = Sources/Support/Animations/BulletinSwipeInteractionController.swift; sourceTree = ""; }; - BF633BD67997A6B76E0B4B9695F51927 /* ConstraintPriority.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriority.swift; path = Source/ConstraintPriority.swift; sourceTree = ""; }; - C00AB1C4665926E0C5F773ADC40B2059 /* Pods-Pageboy-Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Pageboy-Example-acknowledgements.plist"; sourceTree = ""; }; - C00C649DEE718F0B36797E7779D0D94E /* BulletinBoard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = BulletinBoard.modulemap; sourceTree = ""; }; - C2AB2E96E7092FB45BF42C052FFB421A /* zh-Hans.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = "zh-Hans.lproj"; path = "Resources/Strings/zh-Hans.lproj"; sourceTree = ""; }; - C5E01A33C70D822871DB2773EF4DE503 /* BLTNActionItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = BLTNActionItem.m; path = Sources/Models/BLTNActionItem.m; sourceTree = ""; }; - C6570347F956DE1CF022139563F48061 /* UIView+RoundedView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+RoundedView.swift"; path = "Sources/Support/Views/Internal/ContinuousCorners/UIView+RoundedView.swift"; sourceTree = ""; }; - C7D48C164EA0A8E8ED5CE7EF26BA8834 /* BLTNInterfaceBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNInterfaceBuilder.swift; path = Sources/Appearance/BLTNInterfaceBuilder.swift; sourceTree = ""; }; - CB2CC64DAD2878537A121DD5C9BC8AAB /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - CCF8A6D8BE8815B22006DD1193BD4B26 /* LayoutConstraint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LayoutConstraint.swift; path = Source/LayoutConstraint.swift; sourceTree = ""; }; - CD04F95C385D7A1D4D6C8A4DF99E4E4F /* ConstraintInsets.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintInsets.swift; path = Source/ConstraintInsets.swift; sourceTree = ""; }; - CFCDC8E1061090A61DF886BBDAD1EC5D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D2DE767B4F239BBD197713B988094F89 /* Pods-Pageboy-Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Pageboy-Example-dummy.m"; sourceTree = ""; }; - D4913027BA2E062C23476C025FBE111A /* BulletinViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BulletinViewController.swift; path = Sources/Support/BulletinViewController.swift; sourceTree = ""; }; - D5248BB199742C2033B19115717FEF49 /* BLTNActionItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = BLTNActionItem.h; path = Sources/Models/BLTNActionItem.h; sourceTree = ""; }; - D5EC93FF802B07D2F791D3D46AB39957 /* BLTNSpacing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNSpacing.swift; path = Sources/Appearance/BLTNSpacing.swift; sourceTree = ""; }; - D704270B41B3C1C9A73113BB718370B9 /* BulletinBoard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BulletinBoard-umbrella.h"; sourceTree = ""; }; - DB516FEC25484944E6355BC21CF38A15 /* SnapKit.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SnapKit.modulemap; sourceTree = ""; }; - DB7727430C6AFBA5646AF180A10B7880 /* th.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = th.lproj; path = Resources/Strings/th.lproj; sourceTree = ""; }; - DF7E56C66805B0CC590488023867743F /* ContinuousMaskLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContinuousMaskLayer.swift; path = Sources/Support/Views/Internal/ContinuousCorners/ContinuousMaskLayer.swift; sourceTree = ""; }; - E11A5B85FA3DF382BFE2D120FEF2BABA /* ConstraintPriorityTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintPriorityTarget.swift; path = Source/ConstraintPriorityTarget.swift; sourceTree = ""; }; - E2E079BA0FB1CA7A181696FCDEC7D1C1 /* BLTNHighlightButtonWrapper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BLTNHighlightButtonWrapper.swift; path = Sources/Support/Views/Public/BLTNHighlightButtonWrapper.swift; sourceTree = ""; }; - E3302491CA3FB21D37BEE5AA87D14A03 /* nb.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = nb.lproj; path = Resources/Strings/nb.lproj; sourceTree = ""; }; - E76462054B909764B98DFE3A3FF6D49B /* BulletinBoard.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BulletinBoard.xcconfig; sourceTree = ""; }; - E79BF9540F1407C4AAD74178BA432DA5 /* en.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = en.lproj; path = Resources/Strings/en.lproj; sourceTree = ""; }; - EB01008F9C7AB31FDF3C15FB2BADBB9A /* UILayoutSupport+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UILayoutSupport+Extensions.swift"; path = "Source/UILayoutSupport+Extensions.swift"; sourceTree = ""; }; - EB55E0ED24D5F996F5DF4AB9C72FB196 /* fr.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = fr.lproj; path = Resources/Strings/fr.lproj; sourceTree = ""; }; - EC91003DD2C4C338CF0CC04A1D7D7F3C /* es.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = es.lproj; path = Resources/Strings/es.lproj; sourceTree = ""; }; - EDD6097D19A2E4103BA8149D8C2953C9 /* ConstraintView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintView.swift; path = Source/ConstraintView.swift; sourceTree = ""; }; - EECD5A45654EF7A6ED041091059CB5D9 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - F2676597636E1B8A06C3D98446A51812 /* he.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = he.lproj; path = Resources/Strings/he.lproj; sourceTree = ""; }; - FE99EF066DC2294F35B74BE23103AF2D /* Pods-Pageboy-Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Pageboy-Example-acknowledgements.markdown"; sourceTree = ""; }; - FFADABCD3ACD801C5F81726FB032C370 /* hi.lproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder; name = hi.lproj; path = Resources/Strings/hi.lproj; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 20144BC0A50B63258192C163EED2A57A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1BBADB747083E1866019F4A611052351 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4CA0C70560DF790F81BBB95625D1DEBA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D60FD7F66370767C0D32A4D282B8ABF3 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 77993663AC3C65B4DACC12BD80AB37C7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - EC5EC385F9E66B6823592330A669EAD4 /* Foundation.framework in Frameworks */, - B8F647CA0D74E3457B706AD65AB76B8C /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 003A53461C219D95F032A97B190FF71C /* Pods */ = { - isa = PBXGroup; - children = ( - 83EE8568AFFB5660969AB4C11C894116 /* BulletinBoard */, - 47BFACB554773259FB6056AD638CF0E6 /* SnapKit */, - ); - name = Pods; - sourceTree = ""; - }; - 0E0EAE198EAD7ECBD7AF0AD0AAAF89E8 /* Products */ = { - isa = PBXGroup; - children = ( - 0C2BD59F9E41EE6AB693F96C817CB619 /* BLTNBoard.framework */, - 2C795D7FA1218113037383A8C3FE7491 /* Pods_Pageboy_Example.framework */, - AA21B0EEEBB7F9CC66E80EA5541C80C0 /* SnapKit.framework */, - ); - name = Products; - sourceTree = ""; - }; - 10DEDCB394BAA0C7FEDEBE330207B074 /* iOS */ = { - isa = PBXGroup; - children = ( - 908E902E026C5C22904CF9014A5604AD /* Foundation.framework */, - BC2C02191C153C1554B35DEE8B2D09D4 /* UIKit.framework */, - ); - name = iOS; - sourceTree = ""; - }; - 34F8A0DEB817D320852F9FFF3AF66F22 /* Resources */ = { - isa = PBXGroup; - children = ( - 17528D17AB7659C849A10F9B23180A1E /* ar.lproj */, - 439F54BA6EDB311C919C5A03B3558FF0 /* ca.lproj */, - BAF70436F1BBEE6B26246390D3CEFE14 /* CloseGlyph.png */, - 4D51D35892395F495CDC296042D9EF24 /* CloseGlyph@2x.png */, - 8A2C4C552F27BD6FBB5493F6A318852B /* CloseGlyph@3x.png */, - 42A738B0E5F00DFF9393629CD3816A2C /* cs.lproj */, - 9E3B867DE22623909DC987FB22A76E4B /* da.lproj */, - 15A9FBBB3993B0AE49FF494461456341 /* de.lproj */, - 7ECE2DE16AC2569CFA3DF9349F7467AE /* el.lproj */, - E79BF9540F1407C4AAD74178BA432DA5 /* en.lproj */, - EC91003DD2C4C338CF0CC04A1D7D7F3C /* es.lproj */, - 6CA4B6EA1DC535736878E0742530A056 /* fi.lproj */, - EB55E0ED24D5F996F5DF4AB9C72FB196 /* fr.lproj */, - F2676597636E1B8A06C3D98446A51812 /* he.lproj */, - FFADABCD3ACD801C5F81726FB032C370 /* hi.lproj */, - 45897BF93171443BE6DB98049CDE3FB1 /* hr.lproj */, - A4D10A248F57C948E95D58C91012114C /* hu.lproj */, - 1C7398EB1161552BFA47CA61F36234CC /* id.lproj */, - 067AF2ECED94EDBDC9600358E2AD4693 /* it.lproj */, - 5CAF5B05276151AA497434E24D592865 /* ja.lproj */, - 0A9A8B9B6561D0ACD679736044B5166A /* ko.lproj */, - 194A2856481B5787C20D8E49AB9D79B8 /* ms.lproj */, - E3302491CA3FB21D37BEE5AA87D14A03 /* nb.lproj */, - 6F9CC4F2246E3D599AA615FCF8BF2AE6 /* nl.lproj */, - 9DAFBE6F6A394487F3EC49F514DDFD19 /* pl.lproj */, - 134D438E68A9B824A3B77B79938F9E5F /* pt-BR.lproj */, - 377914CA39A5E25670A2489C654CDD6A /* pt-PT.lproj */, - 8C464024842156C159E13B5B646A9BBF /* ro.lproj */, - 56B59E65579EA282BFC96A600BAADFD2 /* ru.lproj */, - 7D40EA8D88A1AC5768EE3B2F249ACEAA /* sk.lproj */, - 3484B5AB0826494DF4CE40DAF0F10045 /* sv.lproj */, - DB7727430C6AFBA5646AF180A10B7880 /* th.lproj */, - 735E74910A1AF889510D799F1561690E /* tr.lproj */, - A1CE057C7FDE59C9B58A401ADF1EFD29 /* uk.lproj */, - 47FEF3C33F88525A8ED64901694D0347 /* vi.lproj */, - C2AB2E96E7092FB45BF42C052FFB421A /* zh-Hans.lproj */, - 94479EE0ACE006A4C89C5FBBBE07D24A /* zh-Hant.lproj */, - ); - name = Resources; - sourceTree = ""; - }; - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { - isa = PBXGroup; - children = ( - 10DEDCB394BAA0C7FEDEBE330207B074 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 47BFACB554773259FB6056AD638CF0E6 /* SnapKit */ = { - isa = PBXGroup; - children = ( - B33204330E2C8E922FFD438358BC834D /* Constraint.swift */, - A7548A1D8481B0C4ABED435D7C026D83 /* ConstraintAttributes.swift */, - A8FF3558DCD2BC1339A956F288137245 /* ConstraintConfig.swift */, - 71A9AAF0C59D916B1EB021F41B6DB8A3 /* ConstraintConstantTarget.swift */, - 59042E70A6DB6B7203308B4798BA358D /* ConstraintDescription.swift */, - 966D3DCE0663AEF9D927F6CEA7D58B4B /* ConstraintDSL.swift */, - CD04F95C385D7A1D4D6C8A4DF99E4E4F /* ConstraintInsets.swift */, - 03B6C65DE0154A4CC77D074CE861174A /* ConstraintInsetTarget.swift */, - 60831E9BE1BEE39BF8820E6455250A3D /* ConstraintItem.swift */, - 68EDB17E9A45E99249AA03F59B057360 /* ConstraintLayoutGuide.swift */, - 4E1862E23B6A224CF5E08C8CA24924DE /* ConstraintLayoutGuide+Extensions.swift */, - 3D2DBE8BED42AC049CEF342256E3C389 /* ConstraintLayoutGuideDSL.swift */, - 918FA43E8A527D621F304965AAAEC5A9 /* ConstraintLayoutSupport.swift */, - 6E9D2BEBC484D05FC7041B634688EB37 /* ConstraintLayoutSupportDSL.swift */, - 44F55F3ED875FBE8F53D614A47A491F5 /* ConstraintMaker.swift */, - 4FD7B37CE1A351AB7E1C38D36D71E2C4 /* ConstraintMakerEditable.swift */, - 800DD2606A4D04C7F9E9BEA5C2547341 /* ConstraintMakerExtendable.swift */, - 300A222834FF8C43A20E76BDF10225D0 /* ConstraintMakerFinalizable.swift */, - 1F40F3D40626154421F2EBBB2D2D5E17 /* ConstraintMakerPriortizable.swift */, - 5430A3909F162F4E7AC41A9161ED08E5 /* ConstraintMakerRelatable.swift */, - 80309BEDBB9966645BEB0C58305949B7 /* ConstraintMultiplierTarget.swift */, - 7E2D889AB4BC956B6080E3785071D780 /* ConstraintOffsetTarget.swift */, - BF633BD67997A6B76E0B4B9695F51927 /* ConstraintPriority.swift */, - E11A5B85FA3DF382BFE2D120FEF2BABA /* ConstraintPriorityTarget.swift */, - 2B37696169C273E8DD40E6B754BB1650 /* ConstraintRelatableTarget.swift */, - 8EDB4322F6873D483403B30B6349C937 /* ConstraintRelation.swift */, - EDD6097D19A2E4103BA8149D8C2953C9 /* ConstraintView.swift */, - 13A99232B776C28A7AF9E69785D0F243 /* ConstraintView+Extensions.swift */, - 68D1C62DE5FB3130CE71FC5C1226EA23 /* ConstraintViewDSL.swift */, - 16378277435EC32FA1A3B84BDC00AC1F /* Debugging.swift */, - CCF8A6D8BE8815B22006DD1193BD4B26 /* LayoutConstraint.swift */, - 3A5ED7738DC551D31CF02D462FD6C15B /* LayoutConstraintItem.swift */, - 5FF59B5EE03EDF7108EF7739A66F2A7B /* Typealiases.swift */, - EB01008F9C7AB31FDF3C15FB2BADBB9A /* UILayoutSupport+Extensions.swift */, - CFAF73FB7B0F3EDEB588543C71C5EDD5 /* Support Files */, - ); - path = SnapKit; - sourceTree = ""; - }; - 47CA6AD74F3D97F903122476511308DF /* Support Files */ = { - isa = PBXGroup; - children = ( - C00C649DEE718F0B36797E7779D0D94E /* BulletinBoard.modulemap */, - E76462054B909764B98DFE3A3FF6D49B /* BulletinBoard.xcconfig */, - 719F7A8F670223EA7ABEAFD1E5A4BF09 /* BulletinBoard-dummy.m */, - 295BF61F14DB812652231D461C250124 /* BulletinBoard-prefix.pch */, - D704270B41B3C1C9A73113BB718370B9 /* BulletinBoard-umbrella.h */, - CFCDC8E1061090A61DF886BBDAD1EC5D /* Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/BulletinBoard"; - sourceTree = ""; - }; - 7DB346D0F39D3F0E887471402A8071AB = { - isa = PBXGroup; - children = ( - 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */, - 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, - 003A53461C219D95F032A97B190FF71C /* Pods */, - 0E0EAE198EAD7ECBD7AF0AD0AAAF89E8 /* Products */, - F422E12910FE7B241F22474BB3376278 /* Targets Support Files */, - ); - sourceTree = ""; - }; - 83EE8568AFFB5660969AB4C11C894116 /* BulletinBoard */ = { - isa = PBXGroup; - children = ( - AF86D62E31987C6F02251C0239D75387 /* ActivityIndicator.swift */, - 9F7A1169CEDAE95686A7FDD855A219F3 /* AnimationChain.swift */, - D5248BB199742C2033B19115717FEF49 /* BLTNActionItem.h */, - C5E01A33C70D822871DB2773EF4DE503 /* BLTNActionItem.m */, - 3DD79FA283F1EBC4B6D57FA0AFA8D120 /* BLTNBackgroundViewStyle.swift */, - 946D6A683AFA0B802131556AD6D50DD9 /* BLTNBoard.h */, - 78AA5DD99795511F2F3403259A55B158 /* BLTNContainerView.swift */, - E2E079BA0FB1CA7A181696FCDEC7D1C1 /* BLTNHighlightButtonWrapper.swift */, - C7D48C164EA0A8E8ED5CE7EF26BA8834 /* BLTNInterfaceBuilder.swift */, - 416D49F095B8BE314D406A8CB3BC9112 /* BLTNItem.h */, - 6B3B14834F082757809791DD7E5538CB /* BLTNItemAppearance.swift */, - 277394FCB5190B8D529E59A91C30BA1C /* BLTNItemManager.swift */, - 3E9959949E85AB2525E01923769B9B6C /* BLTNPageItem.h */, - 79DC1C8EA02FC399C6145FE40DA5C4A6 /* BLTNPageItem.m */, - D5EC93FF802B07D2F791D3D46AB39957 /* BLTNSpacing.swift */, - 72853B4D24D14A2B3E4CFE6654E242A4 /* BLTNTitleLabelContainer.swift */, - 83B02FBD6551A07061C09068C0B44742 /* BLTNViewPosition.swift */, - 1D1EB9A92A515B306DBB14F80BAE0FC3 /* BulletinBackgroundView.swift */, - 400902D26790FD6E17793C75D56930BA /* BulletinCloseButton.swift */, - 201B084FCD26B3CED55796314CEE53D3 /* BulletinDismissAnimationController.swift */, - 7DB76E1EADEF6DFC48A889686BED2530 /* BulletinPresentationAnimationController.swift */, - BDC72A37542363DB73914EDDA2DBBA71 /* BulletinSwipeInteractionController.swift */, - D4913027BA2E062C23476C025FBE111A /* BulletinViewController.swift */, - DF7E56C66805B0CC590488023867743F /* ContinuousMaskLayer.swift */, - 2A9F9DA4FA03B4E53444AF8E30DC2828 /* Deprecations.swift */, - 725DAF393ADF9F0A093415F5DD8362B7 /* HighlightButton.swift */, - 45A123887B7C7A38CC337E150C7EB253 /* Highlighter.swift */, - 0F28655B98CFAF23AE34A68EEAEB9471 /* RoundedViewProtocol.swift */, - 0ABC580196F792F75ED0AB0EC588757D /* UIButton+BackgroundColor.swift */, - 2A3747E9265EB48DA8171A0AD3E51FD6 /* UIColor+Luminance.swift */, - C6570347F956DE1CF022139563F48061 /* UIView+RoundedView.swift */, - 284AE7CE7F6DC0A573D4520B9D2F45D1 /* UIView+SafeAnchors.swift */, - 34F8A0DEB817D320852F9FFF3AF66F22 /* Resources */, - 47CA6AD74F3D97F903122476511308DF /* Support Files */, - ); - path = BulletinBoard; - sourceTree = ""; - }; - 93E6F2C77A0B5255E0EC09D9C9F907E9 /* Pods-Pageboy-Example */ = { - isa = PBXGroup; - children = ( - CB2CC64DAD2878537A121DD5C9BC8AAB /* Info.plist */, - 9F8872D75F68503F3C680104E48AFC08 /* Pods-Pageboy-Example.modulemap */, - FE99EF066DC2294F35B74BE23103AF2D /* Pods-Pageboy-Example-acknowledgements.markdown */, - C00AB1C4665926E0C5F773ADC40B2059 /* Pods-Pageboy-Example-acknowledgements.plist */, - D2DE767B4F239BBD197713B988094F89 /* Pods-Pageboy-Example-dummy.m */, - 87DC80D84AB11CC5CA52017401EBDFFE /* Pods-Pageboy-Example-frameworks.sh */, - 8C66F3C9E5A6DC78EF0F0C18DB550C13 /* Pods-Pageboy-Example-resources.sh */, - 88D39AA6653F76AFC68416BF0EC99E5A /* Pods-Pageboy-Example-umbrella.h */, - 00058A0941326130A4A78CD5B0C3E162 /* Pods-Pageboy-Example.debug.xcconfig */, - AF1ACA300D4F602C27404B2CCB91E6CA /* Pods-Pageboy-Example.release.xcconfig */, - ); - name = "Pods-Pageboy-Example"; - path = "Target Support Files/Pods-Pageboy-Example"; - sourceTree = ""; - }; - CFAF73FB7B0F3EDEB588543C71C5EDD5 /* Support Files */ = { - isa = PBXGroup; - children = ( - EECD5A45654EF7A6ED041091059CB5D9 /* Info.plist */, - DB516FEC25484944E6355BC21CF38A15 /* SnapKit.modulemap */, - 66D25016E2700B794DF811ADD470C1CD /* SnapKit.xcconfig */, - 2787829273A24490B57EBAD054C10150 /* SnapKit-dummy.m */, - 62DA85FCD8626A20B87CF651F4C767AB /* SnapKit-prefix.pch */, - B49CD06D2A35A2BFDB418EF34DB5B519 /* SnapKit-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/SnapKit"; - sourceTree = ""; - }; - F422E12910FE7B241F22474BB3376278 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - 93E6F2C77A0B5255E0EC09D9C9F907E9 /* Pods-Pageboy-Example */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 66301F64C8D7EAD0F1CE9E9226D3C371 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 46851422E1B7A91B10F3DEF75F0B345D /* SnapKit-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6B6E6308BD911A01ABA68EBF8B558B1D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 618EC795592F88A3BFE209C6D58D444D /* Pods-Pageboy-Example-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9B9EE5A5B0FCC8F4440984791F54D1EA /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 359998CF584EB1EAEB8B88FB2889F8C6 /* BLTNActionItem.h in Headers */, - B87BC732304B4C29331A3E6AC73EB9B8 /* BLTNBoard.h in Headers */, - 0DDAADAC4311D4E6E7F5D54C02855C34 /* BLTNItem.h in Headers */, - 9B278E02D5670590A30CA9E98E9E4C32 /* BLTNPageItem.h in Headers */, - 8BFA06671C5FA5BA9874B2E10F7531E6 /* BulletinBoard-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 4A7048C4345E6886ECA17B3F5FDEC620 /* SnapKit */ = { - isa = PBXNativeTarget; - buildConfigurationList = C322A149886F7E2F6080211D03749E38 /* Build configuration list for PBXNativeTarget "SnapKit" */; - buildPhases = ( - 87E747EED115B31855CD6A36C24C47B1 /* Sources */, - 20144BC0A50B63258192C163EED2A57A /* Frameworks */, - 66301F64C8D7EAD0F1CE9E9226D3C371 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SnapKit; - productName = SnapKit; - productReference = AA21B0EEEBB7F9CC66E80EA5541C80C0 /* SnapKit.framework */; - productType = "com.apple.product-type.framework"; - }; - BC5653A6EC2CA01B69737FB773277270 /* Pods-Pageboy-Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 055A6D8B11138B6F1810C3E27D938021 /* Build configuration list for PBXNativeTarget "Pods-Pageboy-Example" */; - buildPhases = ( - 5588F628E3C7D7A0A35614A36B005E37 /* Sources */, - 4CA0C70560DF790F81BBB95625D1DEBA /* Frameworks */, - 6B6E6308BD911A01ABA68EBF8B558B1D /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - 71D27FF859E6C7CCE99BC6A65EEC10BD /* PBXTargetDependency */, - CB2337CD091423DE061159A298E2C199 /* PBXTargetDependency */, - ); - name = "Pods-Pageboy-Example"; - productName = "Pods-Pageboy-Example"; - productReference = 2C795D7FA1218113037383A8C3FE7491 /* Pods_Pageboy_Example.framework */; - productType = "com.apple.product-type.framework"; - }; - F76C6CAEC5CCF08C6477CBA6FC453250 /* BulletinBoard */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0B12A0BFAE8D85EAE3404AB7D4D6A98C /* Build configuration list for PBXNativeTarget "BulletinBoard" */; - buildPhases = ( - 0FF608E437EE6E48AD191A2E580FA3E9 /* Sources */, - 77993663AC3C65B4DACC12BD80AB37C7 /* Frameworks */, - 9B9EE5A5B0FCC8F4440984791F54D1EA /* Headers */, - B11BE769EEF6E5F8AA9A7B4CF01B2E85 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = BulletinBoard; - productName = BulletinBoard; - productReference = 0C2BD59F9E41EE6AB693F96C817CB619 /* BLTNBoard.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - D41D8CD98F00B204E9800998ECF8427E /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0930; - LastUpgradeCheck = 0930; - TargetAttributes = { - 4A7048C4345E6886ECA17B3F5FDEC620 = { - LastSwiftMigration = 1000; - }; - F76C6CAEC5CCF08C6477CBA6FC453250 = { - LastSwiftMigration = 1000; - }; - }; - }; - buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = 0E0EAE198EAD7ECBD7AF0AD0AAAF89E8 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - F76C6CAEC5CCF08C6477CBA6FC453250 /* BulletinBoard */, - BC5653A6EC2CA01B69737FB773277270 /* Pods-Pageboy-Example */, - 4A7048C4345E6886ECA17B3F5FDEC620 /* SnapKit */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - B11BE769EEF6E5F8AA9A7B4CF01B2E85 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 77326086C1DDC89F8F125E55C1E2CB22 /* ar.lproj in Resources */, - F5C1DACBF125804C47E5AFE60D560E9C /* ca.lproj in Resources */, - AA8B015595D692D6CB97FC8B15996E85 /* CloseGlyph.png in Resources */, - C50F168A7F365AB0F7FADEBD00849AF2 /* CloseGlyph@2x.png in Resources */, - 41F382B627C5ECDA994EF9D7C9C8BC2F /* CloseGlyph@3x.png in Resources */, - AE002DD5C1C390C918D43A179FF180DA /* cs.lproj in Resources */, - BBE76E24B20237F6D37FF8C1AC352D55 /* da.lproj in Resources */, - EE246AE943E70483B327EE95317A40E0 /* de.lproj in Resources */, - 3BB55680A9CC06E64FB134A7FBF96366 /* el.lproj in Resources */, - E8F78A58CCB20A9542761891D0F9B97B /* en.lproj in Resources */, - 0F4B5F2A6F3CD5CAC380B66803E34B2E /* es.lproj in Resources */, - 995908FBCF9B41E95076A31A0977BF85 /* fi.lproj in Resources */, - CCC14A27A6FCDD8C4762939E6BC5CB8D /* fr.lproj in Resources */, - BE75F8A4CB0F5ACE2534A7A45DF792D4 /* he.lproj in Resources */, - B0B8627333C7F6B7DFF8584065BB2B41 /* hi.lproj in Resources */, - 8888BD7BC318FD205048A1A9C3170FC9 /* hr.lproj in Resources */, - 2FC797D4AEAE61450CE49B446D147BCC /* hu.lproj in Resources */, - 7CC7F11617B9B82B2891269B225610A9 /* id.lproj in Resources */, - EA419A8DF91E7F9CB3CA60FD8A047CDC /* it.lproj in Resources */, - 0C6FE01DB5922B2581AA10368D47C699 /* ja.lproj in Resources */, - 896AD6793DF7491B2E27D6D6E2C86B79 /* ko.lproj in Resources */, - 5145AC3B703DECA71536B9136D06DF04 /* ms.lproj in Resources */, - AD38D391BB6E506DD6B0ED1191E8C8E0 /* nb.lproj in Resources */, - EA503617DE9C17CF1796A2D6716DE27A /* nl.lproj in Resources */, - 9F8FE4B199ECCE83CC88D4282A021294 /* pl.lproj in Resources */, - A0F42F194903634B5CF3301C790B7A04 /* pt-BR.lproj in Resources */, - 399AB9734D81093363ADCC1E60EBE563 /* pt-PT.lproj in Resources */, - 90D056E98F36BB97A226C48280222D1E /* ro.lproj in Resources */, - A338908BA488A5600FFC345D4E00563D /* ru.lproj in Resources */, - 42FD389F0602119C2885B5D33FE3F907 /* sk.lproj in Resources */, - 23CE0E50CA7AC0CAC505CC15F509B53C /* sv.lproj in Resources */, - B48299A7FD6DA757CB28E7E080F032CF /* th.lproj in Resources */, - D6F819E2C4E5EACDE627C45C9B56D944 /* tr.lproj in Resources */, - 2FBE3712730236E0630BF300F285754D /* uk.lproj in Resources */, - A073A02B17FCE0C1996967576653C2AC /* vi.lproj in Resources */, - 53075C8F27E4A203C4B9C2F9CFDE35B8 /* zh-Hans.lproj in Resources */, - B5BEB9257320143EC5C6F3B965CAABAB /* zh-Hant.lproj in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 0FF608E437EE6E48AD191A2E580FA3E9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2C5FB79BC886AC4BD9D8F9B1507D7764 /* ActivityIndicator.swift in Sources */, - 8482F0196F319B4F81C7531CB57EDD78 /* AnimationChain.swift in Sources */, - 1FDF670F6A022556F0792773D1532BF8 /* BLTNActionItem.m in Sources */, - 6CFF67E4A417F9CA1ACCE7287F3887A4 /* BLTNBackgroundViewStyle.swift in Sources */, - B0487DAF2C8EEDCC5A8D61899EBB6817 /* BLTNContainerView.swift in Sources */, - F99BF0904C9FDC46F31D2E86EDECD91F /* BLTNHighlightButtonWrapper.swift in Sources */, - E98E8EE503DA5ACD8453EABA1260B38E /* BLTNInterfaceBuilder.swift in Sources */, - 13A3E3992D650AE6EE827A21D8DA44ED /* BLTNItemAppearance.swift in Sources */, - A0DE5B5EA280CFE3E7C60D6AD19AA15F /* BLTNItemManager.swift in Sources */, - 4DD7D63224EC69CE3FAF3F11D11F2357 /* BLTNPageItem.m in Sources */, - 9FBAC25050ABF16363A1862228976545 /* BLTNSpacing.swift in Sources */, - A24E0059F8832B7AC0A3D6E970E01DEE /* BLTNTitleLabelContainer.swift in Sources */, - 1EDE2EF6D7213DF37A9754C6275B319C /* BLTNViewPosition.swift in Sources */, - AB1D9C23E9EF1C0DA86DB2BF4EC60F09 /* BulletinBackgroundView.swift in Sources */, - F45F982688E135E2CAB047B90D5AE053 /* BulletinBoard-dummy.m in Sources */, - 818DBEF44B312E7EBACF402CDEF84A9F /* BulletinCloseButton.swift in Sources */, - 33684DF4CCD8ADBE8F37004E01A8089A /* BulletinDismissAnimationController.swift in Sources */, - 77AEB48A2235A5EB6DD4E01626AA40A0 /* BulletinPresentationAnimationController.swift in Sources */, - F8A64B46BCCB93F44C092F70C8796509 /* BulletinSwipeInteractionController.swift in Sources */, - 9941EFAEF31B7A608F0B62AA1931FA35 /* BulletinViewController.swift in Sources */, - DFF35FD9862215E0087CF9AAC1049BF0 /* ContinuousMaskLayer.swift in Sources */, - 3D77D7FCA36C8770B9036386D05DC05C /* Deprecations.swift in Sources */, - 9FFF4036CF2302DF87F0A72D8F55D809 /* HighlightButton.swift in Sources */, - 85C7341CC40AB744ED0FE7667A7ECDB8 /* Highlighter.swift in Sources */, - CC23B751F7B3943DAD4671C6FBAE3C78 /* RoundedViewProtocol.swift in Sources */, - 5DF94BF0EFC8168DC4355262AF774F8D /* UIButton+BackgroundColor.swift in Sources */, - A5825BD7525D8ED1911227933903FED4 /* UIColor+Luminance.swift in Sources */, - B5B684971FEF1693F3C7FD35C445868A /* UIView+RoundedView.swift in Sources */, - CA0539DCD335A5F7E0DBBC981B142E57 /* UIView+SafeAnchors.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5588F628E3C7D7A0A35614A36B005E37 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8A5CBBAFEBAB06E57C3FFEA158B4F193 /* Pods-Pageboy-Example-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 87E747EED115B31855CD6A36C24C47B1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CA1C8409377D5F65BF93CC743C3A379F /* Constraint.swift in Sources */, - D35BDCF1076462CE075758EED8413D40 /* ConstraintAttributes.swift in Sources */, - 3A8C3C67CB59D0AB31DF779E18092B4A /* ConstraintConfig.swift in Sources */, - FA55EB533F3FF5B2E468D6750A0A1D06 /* ConstraintConstantTarget.swift in Sources */, - BF30E5763C889DC9BD0EFFEAACBE4C6F /* ConstraintDescription.swift in Sources */, - 105F8AAF25A31415C00E95F917A27C32 /* ConstraintDSL.swift in Sources */, - B2336B6E51CB4132FBE366AE9F6C3A3B /* ConstraintInsets.swift in Sources */, - E3E0353E2DDB5B5345D1223151068716 /* ConstraintInsetTarget.swift in Sources */, - 4ABD77F4DFE4FE3487248FD592A1251C /* ConstraintItem.swift in Sources */, - 9636D1DEC0EE22E4440644A2CDF5FC1C /* ConstraintLayoutGuide+Extensions.swift in Sources */, - FF3FC91D0A5A33BA151F587E4F081DEA /* ConstraintLayoutGuide.swift in Sources */, - 7B02486001495C595F892DD1690BF4DD /* ConstraintLayoutGuideDSL.swift in Sources */, - EDE7DF5E3CDB96F2E9DFB0E2B266DE1D /* ConstraintLayoutSupport.swift in Sources */, - CA752B93C818A5E6D6D0ABD4E34EB072 /* ConstraintLayoutSupportDSL.swift in Sources */, - E15CC9B5AAC13885D128B0C6F675649E /* ConstraintMaker.swift in Sources */, - 556EC1B3267663668943E94F721322FF /* ConstraintMakerEditable.swift in Sources */, - 69CCBF24AE4A52AB30640A8F80CF94A8 /* ConstraintMakerExtendable.swift in Sources */, - E36CA5C8D9603021CB59D8A940CF414C /* ConstraintMakerFinalizable.swift in Sources */, - 545D4ACF561AFAA6367B429D2E2550E9 /* ConstraintMakerPriortizable.swift in Sources */, - 62132B7E4128A7F7DC54376CFE8D098D /* ConstraintMakerRelatable.swift in Sources */, - E38EAE8013F000978DD25B03F11E1580 /* ConstraintMultiplierTarget.swift in Sources */, - 9CBA77E45E85967F5950F2B3D12C5359 /* ConstraintOffsetTarget.swift in Sources */, - 7400D4901AA51FCB8F33B121AFE3E2B8 /* ConstraintPriority.swift in Sources */, - DF424C676F192351885812B6D168F685 /* ConstraintPriorityTarget.swift in Sources */, - DFB68FE763B6520FC3B8D2F126693A4A /* ConstraintRelatableTarget.swift in Sources */, - 0CDD6636599ED69A0BB0106D6CDCCCE9 /* ConstraintRelation.swift in Sources */, - F329EAFD8F204FCC8724C9309AB5E81F /* ConstraintView+Extensions.swift in Sources */, - 2E5A5D2A3BCCB70D4CF4B535C404727B /* ConstraintView.swift in Sources */, - CDB8884C41B38C9368680DCE7B0186C7 /* ConstraintViewDSL.swift in Sources */, - 3418896F4B19AD7BA5C29F33E39FFD39 /* Debugging.swift in Sources */, - 462E29CE00D459B8B9CB499319FB92D3 /* LayoutConstraint.swift in Sources */, - 6781CB26F47E9BF5469219B5096B63E7 /* LayoutConstraintItem.swift in Sources */, - E613FCA570FBFFC09FED91AB843EA264 /* SnapKit-dummy.m in Sources */, - 2896680B75F61AC7E09565C716573419 /* Typealiases.swift in Sources */, - 9820328F57CB226C452BD78CCF42034F /* UILayoutSupport+Extensions.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 71D27FF859E6C7CCE99BC6A65EEC10BD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = BulletinBoard; - target = F76C6CAEC5CCF08C6477CBA6FC453250 /* BulletinBoard */; - targetProxy = A935C5D2E66409EF4F27D29ECF4F80D4 /* PBXContainerItemProxy */; - }; - CB2337CD091423DE061159A298E2C199 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SnapKit; - target = 4A7048C4345E6886ECA17B3F5FDEC620 /* SnapKit */; - targetProxy = 423B5D7BEDEE92F2FDFABD4E1B7D969C /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 199D972A13F2B4C56847F7A89CCA83BC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 7DFC4C414D7FC415AF8B02E81DCD17D0 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 66D25016E2700B794DF811ADD470C1CD /* SnapKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapKit/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; - PRODUCT_MODULE_NAME = SnapKit; - PRODUCT_NAME = SnapKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9F4A307DE42774B21225E900BBB5D8D7 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E76462054B909764B98DFE3A3FF6D49B /* BulletinBoard.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BulletinBoard/BulletinBoard-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BulletinBoard/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/BulletinBoard/BulletinBoard.modulemap"; - PRODUCT_MODULE_NAME = BLTNBoard; - PRODUCT_NAME = BLTNBoard; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - A3F487AF95043306EA08C40E16479312 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 00058A0941326130A4A78CD5B0C3E162 /* Pods-Pageboy-Example.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Pageboy-Example/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B7EF9B52E4BB178C9F44FDFC61F45BC0 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E76462054B909764B98DFE3A3FF6D49B /* BulletinBoard.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/BulletinBoard/BulletinBoard-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/BulletinBoard/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/BulletinBoard/BulletinBoard.modulemap"; - PRODUCT_MODULE_NAME = BLTNBoard; - PRODUCT_NAME = BLTNBoard; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B97E6BE65B768EE307D30A64F0F3FBC3 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AF1ACA300D4F602C27404B2CCB91E6CA /* Pods-Pageboy-Example.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Pageboy-Example/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - EC4A728A63B2733B8EA3F6297142A8D4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 66D25016E2700B794DF811ADD470C1CD /* SnapKit.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/SnapKit/SnapKit-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SnapKit/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SnapKit/SnapKit.modulemap"; - PRODUCT_MODULE_NAME = SnapKit; - PRODUCT_NAME = SnapKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.1; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - FDB2FC4A1E5891381CD9D922145497F1 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGNING_ALLOWED = NO; - CODE_SIGNING_REQUIRED = NO; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 055A6D8B11138B6F1810C3E27D938021 /* Build configuration list for PBXNativeTarget "Pods-Pageboy-Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A3F487AF95043306EA08C40E16479312 /* Debug */, - B97E6BE65B768EE307D30A64F0F3FBC3 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0B12A0BFAE8D85EAE3404AB7D4D6A98C /* Build configuration list for PBXNativeTarget "BulletinBoard" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B7EF9B52E4BB178C9F44FDFC61F45BC0 /* Debug */, - 9F4A307DE42774B21225E900BBB5D8D7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 199D972A13F2B4C56847F7A89CCA83BC /* Debug */, - FDB2FC4A1E5891381CD9D922145497F1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C322A149886F7E2F6080211D03749E38 /* Build configuration list for PBXNativeTarget "SnapKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7DFC4C414D7FC415AF8B02E81DCD17D0 /* Debug */, - EC4A728A63B2733B8EA3F6297142A8D4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = D41D8CD98F00B204E9800998ECF8427E /* Project object */; -} diff --git a/Pods/SnapKit/LICENSE b/Pods/SnapKit/LICENSE deleted file mode 100644 index a18ccfbd..00000000 --- a/Pods/SnapKit/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/Pods/SnapKit/README.md b/Pods/SnapKit/README.md deleted file mode 100644 index fed21330..00000000 --- a/Pods/SnapKit/README.md +++ /dev/null @@ -1,129 +0,0 @@ - - -SnapKit is a DSL to make Auto Layout easy on both iOS and OS X. - -[![Build Status](https://travis-ci.org/SnapKit/SnapKit.svg)](https://travis-ci.org/SnapKit/SnapKit) -[![Platform](https://img.shields.io/cocoapods/p/SnapKit.svg?style=flat)](https://github.com/SnapKit/SnapKit) -[![Cocoapods Compatible](https://img.shields.io/cocoapods/v/SnapKit.svg)](https://cocoapods.org/pods/SnapKit) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) - -#### ⚠️ **To use with Swift 3.x please ensure you are using >= 3.0.0** ⚠️ -#### ⚠️ **To use with Swift 4.x please ensure you are using >= 4.0.0** ⚠️ - -## Contents - -- [Requirements](#requirements) -- [Migration Guides](#migration-guides) -- [Communication](#communication) -- [Installation](#installation) -- [Usage](#usage) -- [Credits](#credits) -- [License](#license) - -## Requirements - -- iOS 8.0+ / Mac OS X 10.11+ / tvOS 9.0+ -- Xcode 9.0+ -- Swift 3.0+ - -## Communication - -- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). (Tag 'snapkit') -- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). -- If you **found a bug**, open an issue. -- If you **have a feature request**, open an issue. -- If you **want to contribute**, submit a pull request. - - -## Installation - -### CocoaPods - -[CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command: - -```bash -$ gem install cocoapods -``` - -> CocoaPods 1.1.0+ is required to build SnapKit 4.0.0+. - -To integrate SnapKit into your Xcode project using CocoaPods, specify it in your `Podfile`: - -```ruby -source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '10.0' -use_frameworks! - -target '' do - pod 'SnapKit', '~> 4.0.0' -end -``` - -Then, run the following command: - -```bash -$ pod install -``` - -### Carthage - -[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. - -You can install Carthage with [Homebrew](http://brew.sh/) using the following command: - -```bash -$ brew update -$ brew install carthage -``` - -To integrate SnapKit into your Xcode project using Carthage, specify it in your `Cartfile`: - -```ogdl -github "SnapKit/SnapKit" ~> 4.0.0 -``` - -Run `carthage update` to build the framework and drag the built `SnapKit.framework` into your Xcode project. - -### Manually - -If you prefer not to use either of the aforementioned dependency managers, you can integrate SnapKit into your project manually. - ---- - -## Usage - -### Quick Start - -```swift -import SnapKit - -class MyViewController: UIViewController { - - lazy var box = UIView() - - override func viewDidLoad() { - super.viewDidLoad() - - self.view.addSubview(box) - box.snp.makeConstraints { (make) -> Void in - make.width.height.equalTo(50) - make.center.equalTo(self.view) - } - } - -} -``` - -### Resources - -- [Documentation](http://snapkit.io/docs/) -- [F.A.Q.](http://snapkit.io/faq/) - -## Credits - -- Robert Payne ([@robertjpayne](https://twitter.com/robertjpayne)) -- Many other contributors - -## License - -SnapKit is released under the MIT license. See LICENSE for details. diff --git a/Pods/SnapKit/Source/Constraint.swift b/Pods/SnapKit/Source/Constraint.swift deleted file mode 100644 index 2720745b..00000000 --- a/Pods/SnapKit/Source/Constraint.swift +++ /dev/null @@ -1,289 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - -public final class Constraint { - - internal let sourceLocation: (String, UInt) - internal let label: String? - - private let from: ConstraintItem - private let to: ConstraintItem - private let relation: ConstraintRelation - private let multiplier: ConstraintMultiplierTarget - private var constant: ConstraintConstantTarget { - didSet { - self.updateConstantAndPriorityIfNeeded() - } - } - private var priority: ConstraintPriorityTarget { - didSet { - self.updateConstantAndPriorityIfNeeded() - } - } - public var layoutConstraints: [LayoutConstraint] - - public var isActive: Bool { - for layoutConstraint in self.layoutConstraints { - if layoutConstraint.isActive { - return true - } - } - return false - } - - // MARK: Initialization - - internal init(from: ConstraintItem, - to: ConstraintItem, - relation: ConstraintRelation, - sourceLocation: (String, UInt), - label: String?, - multiplier: ConstraintMultiplierTarget, - constant: ConstraintConstantTarget, - priority: ConstraintPriorityTarget) { - self.from = from - self.to = to - self.relation = relation - self.sourceLocation = sourceLocation - self.label = label - self.multiplier = multiplier - self.constant = constant - self.priority = priority - self.layoutConstraints = [] - - // get attributes - let layoutFromAttributes = self.from.attributes.layoutAttributes - let layoutToAttributes = self.to.attributes.layoutAttributes - - // get layout from - let layoutFrom = self.from.layoutConstraintItem! - - // get relation - let layoutRelation = self.relation.layoutRelation - - for layoutFromAttribute in layoutFromAttributes { - // get layout to attribute - let layoutToAttribute: LayoutAttribute - #if os(iOS) || os(tvOS) - if layoutToAttributes.count > 0 { - if self.from.attributes == .edges && self.to.attributes == .margins { - switch layoutFromAttribute { - case .left: - layoutToAttribute = .leftMargin - case .right: - layoutToAttribute = .rightMargin - case .top: - layoutToAttribute = .topMargin - case .bottom: - layoutToAttribute = .bottomMargin - default: - fatalError() - } - } else if self.from.attributes == .margins && self.to.attributes == .edges { - switch layoutFromAttribute { - case .leftMargin: - layoutToAttribute = .left - case .rightMargin: - layoutToAttribute = .right - case .topMargin: - layoutToAttribute = .top - case .bottomMargin: - layoutToAttribute = .bottom - default: - fatalError() - } - } else if self.from.attributes == self.to.attributes { - layoutToAttribute = layoutFromAttribute - } else { - layoutToAttribute = layoutToAttributes[0] - } - } else { - if self.to.target == nil && (layoutFromAttribute == .centerX || layoutFromAttribute == .centerY) { - layoutToAttribute = layoutFromAttribute == .centerX ? .left : .top - } else { - layoutToAttribute = layoutFromAttribute - } - } - #else - if self.from.attributes == self.to.attributes { - layoutToAttribute = layoutFromAttribute - } else if layoutToAttributes.count > 0 { - layoutToAttribute = layoutToAttributes[0] - } else { - layoutToAttribute = layoutFromAttribute - } - #endif - - // get layout constant - let layoutConstant: CGFloat = self.constant.constraintConstantTargetValueFor(layoutAttribute: layoutToAttribute) - - // get layout to - var layoutTo: AnyObject? = self.to.target - - // use superview if possible - if layoutTo == nil && layoutToAttribute != .width && layoutToAttribute != .height { - layoutTo = layoutFrom.superview - } - - // create layout constraint - let layoutConstraint = LayoutConstraint( - item: layoutFrom, - attribute: layoutFromAttribute, - relatedBy: layoutRelation, - toItem: layoutTo, - attribute: layoutToAttribute, - multiplier: self.multiplier.constraintMultiplierTargetValue, - constant: layoutConstant - ) - - // set label - layoutConstraint.label = self.label - - // set priority - layoutConstraint.priority = LayoutPriority(rawValue: self.priority.constraintPriorityTargetValue) - - // set constraint - layoutConstraint.constraint = self - - // append - self.layoutConstraints.append(layoutConstraint) - } - } - - // MARK: Public - - @available(*, deprecated:3.0, message:"Use activate().") - public func install() { - self.activate() - } - - @available(*, deprecated:3.0, message:"Use deactivate().") - public func uninstall() { - self.deactivate() - } - - public func activate() { - self.activateIfNeeded() - } - - public func deactivate() { - self.deactivateIfNeeded() - } - - @discardableResult - public func update(offset: ConstraintOffsetTarget) -> Constraint { - self.constant = offset.constraintOffsetTargetValue - return self - } - - @discardableResult - public func update(inset: ConstraintInsetTarget) -> Constraint { - self.constant = inset.constraintInsetTargetValue - return self - } - - @discardableResult - public func update(priority: ConstraintPriorityTarget) -> Constraint { - self.priority = priority.constraintPriorityTargetValue - return self - } - - @available(*, deprecated:3.0, message:"Use update(offset: ConstraintOffsetTarget) instead.") - public func updateOffset(amount: ConstraintOffsetTarget) -> Void { self.update(offset: amount) } - - @available(*, deprecated:3.0, message:"Use update(inset: ConstraintInsetTarget) instead.") - public func updateInsets(amount: ConstraintInsetTarget) -> Void { self.update(inset: amount) } - - @available(*, deprecated:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") - public func updatePriority(amount: ConstraintPriorityTarget) -> Void { self.update(priority: amount) } - - @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") - public func updatePriorityRequired() -> Void {} - - @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") - public func updatePriorityHigh() -> Void { fatalError("Must be implemented by Concrete subclass.") } - - @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") - public func updatePriorityMedium() -> Void { fatalError("Must be implemented by Concrete subclass.") } - - @available(*, obsoleted:3.0, message:"Use update(priority: ConstraintPriorityTarget) instead.") - public func updatePriorityLow() -> Void { fatalError("Must be implemented by Concrete subclass.") } - - // MARK: Internal - - internal func updateConstantAndPriorityIfNeeded() { - for layoutConstraint in self.layoutConstraints { - let attribute = (layoutConstraint.secondAttribute == .notAnAttribute) ? layoutConstraint.firstAttribute : layoutConstraint.secondAttribute - layoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: attribute) - - let requiredPriority = ConstraintPriority.required.value - if (layoutConstraint.priority.rawValue < requiredPriority), (self.priority.constraintPriorityTargetValue != requiredPriority) { - layoutConstraint.priority = LayoutPriority(rawValue: self.priority.constraintPriorityTargetValue) - } - } - } - - internal func activateIfNeeded(updatingExisting: Bool = false) { - guard let item = self.from.layoutConstraintItem else { - print("WARNING: SnapKit failed to get from item from constraint. Activate will be a no-op.") - return - } - let layoutConstraints = self.layoutConstraints - - if updatingExisting { - var existingLayoutConstraints: [LayoutConstraint] = [] - for constraint in item.constraints { - existingLayoutConstraints += constraint.layoutConstraints - } - - for layoutConstraint in layoutConstraints { - let existingLayoutConstraint = existingLayoutConstraints.first { $0 == layoutConstraint } - guard let updateLayoutConstraint = existingLayoutConstraint else { - fatalError("Updated constraint could not find existing matching constraint to update: \(layoutConstraint)") - } - - let updateLayoutAttribute = (updateLayoutConstraint.secondAttribute == .notAnAttribute) ? updateLayoutConstraint.firstAttribute : updateLayoutConstraint.secondAttribute - updateLayoutConstraint.constant = self.constant.constraintConstantTargetValueFor(layoutAttribute: updateLayoutAttribute) - } - } else { - NSLayoutConstraint.activate(layoutConstraints) - item.add(constraints: [self]) - } - } - - internal func deactivateIfNeeded() { - guard let item = self.from.layoutConstraintItem else { - print("WARNING: SnapKit failed to get from item from constraint. Deactivate will be a no-op.") - return - } - let layoutConstraints = self.layoutConstraints - NSLayoutConstraint.deactivate(layoutConstraints) - item.remove(constraints: [self]) - } -} diff --git a/Pods/SnapKit/Source/ConstraintAttributes.swift b/Pods/SnapKit/Source/ConstraintAttributes.swift deleted file mode 100644 index 10bddb17..00000000 --- a/Pods/SnapKit/Source/ConstraintAttributes.swift +++ /dev/null @@ -1,190 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -internal struct ConstraintAttributes : OptionSet { - - internal init(rawValue: UInt) { - self.rawValue = rawValue - } - internal init(_ rawValue: UInt) { - self.init(rawValue: rawValue) - } - internal init(nilLiteral: ()) { - self.rawValue = 0 - } - - internal private(set) var rawValue: UInt - internal static var allZeros: ConstraintAttributes { return self.init(0) } - internal static func convertFromNilLiteral() -> ConstraintAttributes { return self.init(0) } - internal var boolValue: Bool { return self.rawValue != 0 } - - internal func toRaw() -> UInt { return self.rawValue } - internal static func fromRaw(_ raw: UInt) -> ConstraintAttributes? { return self.init(raw) } - internal static func fromMask(_ raw: UInt) -> ConstraintAttributes { return self.init(raw) } - - // normal - - internal static var none: ConstraintAttributes { return self.init(0) } - internal static var left: ConstraintAttributes { return self.init(1) } - internal static var top: ConstraintAttributes { return self.init(2) } - internal static var right: ConstraintAttributes { return self.init(4) } - internal static var bottom: ConstraintAttributes { return self.init(8) } - internal static var leading: ConstraintAttributes { return self.init(16) } - internal static var trailing: ConstraintAttributes { return self.init(32) } - internal static var width: ConstraintAttributes { return self.init(64) } - internal static var height: ConstraintAttributes { return self.init(128) } - internal static var centerX: ConstraintAttributes { return self.init(256) } - internal static var centerY: ConstraintAttributes { return self.init(512) } - internal static var lastBaseline: ConstraintAttributes { return self.init(1024) } - - @available(iOS 8.0, OSX 10.11, *) - internal static var firstBaseline: ConstraintAttributes { return self.init(2048) } - - @available(iOS 8.0, *) - internal static var leftMargin: ConstraintAttributes { return self.init(4096) } - - @available(iOS 8.0, *) - internal static var rightMargin: ConstraintAttributes { return self.init(8192) } - - @available(iOS 8.0, *) - internal static var topMargin: ConstraintAttributes { return self.init(16384) } - - @available(iOS 8.0, *) - internal static var bottomMargin: ConstraintAttributes { return self.init(32768) } - - @available(iOS 8.0, *) - internal static var leadingMargin: ConstraintAttributes { return self.init(65536) } - - @available(iOS 8.0, *) - internal static var trailingMargin: ConstraintAttributes { return self.init(131072) } - - @available(iOS 8.0, *) - internal static var centerXWithinMargins: ConstraintAttributes { return self.init(262144) } - - @available(iOS 8.0, *) - internal static var centerYWithinMargins: ConstraintAttributes { return self.init(524288) } - - // aggregates - - internal static var edges: ConstraintAttributes { return self.init(15) } - internal static var size: ConstraintAttributes { return self.init(192) } - internal static var center: ConstraintAttributes { return self.init(768) } - - @available(iOS 8.0, *) - internal static var margins: ConstraintAttributes { return self.init(61440) } - - @available(iOS 8.0, *) - internal static var centerWithinMargins: ConstraintAttributes { return self.init(786432) } - - internal var layoutAttributes:[LayoutAttribute] { - var attrs = [LayoutAttribute]() - if (self.contains(ConstraintAttributes.left)) { - attrs.append(.left) - } - if (self.contains(ConstraintAttributes.top)) { - attrs.append(.top) - } - if (self.contains(ConstraintAttributes.right)) { - attrs.append(.right) - } - if (self.contains(ConstraintAttributes.bottom)) { - attrs.append(.bottom) - } - if (self.contains(ConstraintAttributes.leading)) { - attrs.append(.leading) - } - if (self.contains(ConstraintAttributes.trailing)) { - attrs.append(.trailing) - } - if (self.contains(ConstraintAttributes.width)) { - attrs.append(.width) - } - if (self.contains(ConstraintAttributes.height)) { - attrs.append(.height) - } - if (self.contains(ConstraintAttributes.centerX)) { - attrs.append(.centerX) - } - if (self.contains(ConstraintAttributes.centerY)) { - attrs.append(.centerY) - } - if (self.contains(ConstraintAttributes.lastBaseline)) { - attrs.append(.lastBaseline) - } - - #if os(iOS) || os(tvOS) - if (self.contains(ConstraintAttributes.firstBaseline)) { - attrs.append(.firstBaseline) - } - if (self.contains(ConstraintAttributes.leftMargin)) { - attrs.append(.leftMargin) - } - if (self.contains(ConstraintAttributes.rightMargin)) { - attrs.append(.rightMargin) - } - if (self.contains(ConstraintAttributes.topMargin)) { - attrs.append(.topMargin) - } - if (self.contains(ConstraintAttributes.bottomMargin)) { - attrs.append(.bottomMargin) - } - if (self.contains(ConstraintAttributes.leadingMargin)) { - attrs.append(.leadingMargin) - } - if (self.contains(ConstraintAttributes.trailingMargin)) { - attrs.append(.trailingMargin) - } - if (self.contains(ConstraintAttributes.centerXWithinMargins)) { - attrs.append(.centerXWithinMargins) - } - if (self.contains(ConstraintAttributes.centerYWithinMargins)) { - attrs.append(.centerYWithinMargins) - } - #endif - - return attrs - } -} - -internal func + (left: ConstraintAttributes, right: ConstraintAttributes) -> ConstraintAttributes { - return left.union(right) -} - -internal func +=(left: inout ConstraintAttributes, right: ConstraintAttributes) { - left.formUnion(right) -} - -internal func -=(left: inout ConstraintAttributes, right: ConstraintAttributes) { - left.subtract(right) -} - -internal func ==(left: ConstraintAttributes, right: ConstraintAttributes) -> Bool { - return left.rawValue == right.rawValue -} diff --git a/Pods/SnapKit/Source/ConstraintConfig.swift b/Pods/SnapKit/Source/ConstraintConfig.swift deleted file mode 100644 index 2746b7d2..00000000 --- a/Pods/SnapKit/Source/ConstraintConfig.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit - public typealias ConstraintInterfaceLayoutDirection = UIUserInterfaceLayoutDirection -#else - import AppKit - public typealias ConstraintInterfaceLayoutDirection = NSUserInterfaceLayoutDirection -#endif - - -public struct ConstraintConfig { - - public static var interfaceLayoutDirection: ConstraintInterfaceLayoutDirection = .leftToRight - -} diff --git a/Pods/SnapKit/Source/ConstraintConstantTarget.swift b/Pods/SnapKit/Source/ConstraintConstantTarget.swift deleted file mode 100644 index bc6d596c..00000000 --- a/Pods/SnapKit/Source/ConstraintConstantTarget.swift +++ /dev/null @@ -1,147 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public protocol ConstraintConstantTarget { -} - -extension CGPoint: ConstraintConstantTarget { -} - -extension CGSize: ConstraintConstantTarget { -} - -extension ConstraintInsets: ConstraintConstantTarget { -} - -extension ConstraintConstantTarget { - - internal func constraintConstantTargetValueFor(layoutAttribute: LayoutAttribute) -> CGFloat { - if let value = self as? CGFloat { - return value - } - - if let value = self as? Float { - return CGFloat(value) - } - - if let value = self as? Double { - return CGFloat(value) - } - - if let value = self as? Int { - return CGFloat(value) - } - - if let value = self as? UInt { - return CGFloat(value) - } - - if let value = self as? CGSize { - if layoutAttribute == .width { - return value.width - } else if layoutAttribute == .height { - return value.height - } else { - return 0.0 - } - } - - if let value = self as? CGPoint { - #if os(iOS) || os(tvOS) - switch layoutAttribute { - case .left, .right, .leading, .trailing, .centerX, .leftMargin, .rightMargin, .leadingMargin, .trailingMargin, .centerXWithinMargins: - return value.x - case .top, .bottom, .centerY, .topMargin, .bottomMargin, .centerYWithinMargins, .lastBaseline, .firstBaseline: - return value.y - case .width, .height, .notAnAttribute: - return 0.0 - } - #else - switch layoutAttribute { - case .left, .right, .leading, .trailing, .centerX: - return value.x - case .top, .bottom, .centerY, .lastBaseline, .firstBaseline: - return value.y - case .width, .height, .notAnAttribute: - return 0.0 - } - #endif - } - - if let value = self as? ConstraintInsets { - #if os(iOS) || os(tvOS) - switch layoutAttribute { - case .left, .leftMargin, .centerX, .centerXWithinMargins: - return value.left - case .top, .topMargin, .centerY, .centerYWithinMargins, .lastBaseline, .firstBaseline: - return value.top - case .right, .rightMargin: - return -value.right - case .bottom, .bottomMargin: - return -value.bottom - case .leading, .leadingMargin: - return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.left : value.right - case .trailing, .trailingMargin: - return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.right : -value.left - case .width: - return -(value.left + value.right) - case .height: - return -(value.top + value.bottom) - case .notAnAttribute: - return 0.0 - } - #else - switch layoutAttribute { - case .left, .centerX: - return value.left - case .top, .centerY, .lastBaseline, .firstBaseline: - return value.top - case .right: - return -value.right - case .bottom: - return -value.bottom - case .leading: - return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.left : value.right - case .trailing: - return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.right : -value.left - case .width: - return -(value.left + value.right) - case .height: - return -(value.top + value.bottom) - case .notAnAttribute: - return 0.0 - } - #endif - } - - return 0.0 - } - -} diff --git a/Pods/SnapKit/Source/ConstraintDSL.swift b/Pods/SnapKit/Source/ConstraintDSL.swift deleted file mode 100644 index a7e1798b..00000000 --- a/Pods/SnapKit/Source/ConstraintDSL.swift +++ /dev/null @@ -1,185 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public protocol ConstraintDSL { - - var target: AnyObject? { get } - - func setLabel(_ value: String?) - func label() -> String? - -} -extension ConstraintDSL { - - public func setLabel(_ value: String?) { - objc_setAssociatedObject(self.target as Any, &labelKey, value, .OBJC_ASSOCIATION_COPY_NONATOMIC) - } - public func label() -> String? { - return objc_getAssociatedObject(self.target as Any, &labelKey) as? String - } - -} -private var labelKey: UInt8 = 0 - - -public protocol ConstraintBasicAttributesDSL : ConstraintDSL { -} -extension ConstraintBasicAttributesDSL { - - // MARK: Basics - - public var left: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.left) - } - - public var top: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) - } - - public var right: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.right) - } - - public var bottom: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) - } - - public var leading: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leading) - } - - public var trailing: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.trailing) - } - - public var width: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.width) - } - - public var height: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) - } - - public var centerX: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerX) - } - - public var centerY: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerY) - } - - public var edges: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.edges) - } - - public var size: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.size) - } - - public var center: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.center) - } - -} - -public protocol ConstraintAttributesDSL : ConstraintBasicAttributesDSL { -} -extension ConstraintAttributesDSL { - - // MARK: Baselines - - @available(*, deprecated:3.0, message:"Use .lastBaseline instead") - public var baseline: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline) - } - - @available(iOS 8.0, OSX 10.11, *) - public var lastBaseline: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline) - } - - @available(iOS 8.0, OSX 10.11, *) - public var firstBaseline: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.firstBaseline) - } - - // MARK: Margins - - @available(iOS 8.0, *) - public var leftMargin: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leftMargin) - } - - @available(iOS 8.0, *) - public var topMargin: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.topMargin) - } - - @available(iOS 8.0, *) - public var rightMargin: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.rightMargin) - } - - @available(iOS 8.0, *) - public var bottomMargin: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottomMargin) - } - - @available(iOS 8.0, *) - public var leadingMargin: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leadingMargin) - } - - @available(iOS 8.0, *) - public var trailingMargin: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.trailingMargin) - } - - @available(iOS 8.0, *) - public var centerXWithinMargins: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerXWithinMargins) - } - - @available(iOS 8.0, *) - public var centerYWithinMargins: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerYWithinMargins) - } - - @available(iOS 8.0, *) - public var margins: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.margins) - } - - @available(iOS 8.0, *) - public var centerWithinMargins: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerWithinMargins) - } - -} diff --git a/Pods/SnapKit/Source/ConstraintDescription.swift b/Pods/SnapKit/Source/ConstraintDescription.swift deleted file mode 100644 index 3521f9f9..00000000 --- a/Pods/SnapKit/Source/ConstraintDescription.swift +++ /dev/null @@ -1,69 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public class ConstraintDescription { - - internal let item: LayoutConstraintItem - internal var attributes: ConstraintAttributes - internal var relation: ConstraintRelation? = nil - internal var sourceLocation: (String, UInt)? = nil - internal var label: String? = nil - internal var related: ConstraintItem? = nil - internal var multiplier: ConstraintMultiplierTarget = 1.0 - internal var constant: ConstraintConstantTarget = 0.0 - internal var priority: ConstraintPriorityTarget = 1000.0 - internal lazy var constraint: Constraint? = { - guard let relation = self.relation, - let related = self.related, - let sourceLocation = self.sourceLocation else { - return nil - } - let from = ConstraintItem(target: self.item, attributes: self.attributes) - - return Constraint( - from: from, - to: related, - relation: relation, - sourceLocation: sourceLocation, - label: self.label, - multiplier: self.multiplier, - constant: self.constant, - priority: self.priority - ) - }() - - // MARK: Initialization - - internal init(item: LayoutConstraintItem, attributes: ConstraintAttributes) { - self.item = item - self.attributes = attributes - } - -} diff --git a/Pods/SnapKit/Source/ConstraintInsetTarget.swift b/Pods/SnapKit/Source/ConstraintInsetTarget.swift deleted file mode 100644 index ba8a0f3e..00000000 --- a/Pods/SnapKit/Source/ConstraintInsetTarget.swift +++ /dev/null @@ -1,72 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public protocol ConstraintInsetTarget: ConstraintConstantTarget { -} - -extension Int: ConstraintInsetTarget { -} - -extension UInt: ConstraintInsetTarget { -} - -extension Float: ConstraintInsetTarget { -} - -extension Double: ConstraintInsetTarget { -} - -extension CGFloat: ConstraintInsetTarget { -} - -extension ConstraintInsets: ConstraintInsetTarget { -} - -extension ConstraintInsetTarget { - - internal var constraintInsetTargetValue: ConstraintInsets { - if let amount = self as? ConstraintInsets { - return amount - } else if let amount = self as? Float { - return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) - } else if let amount = self as? Double { - return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) - } else if let amount = self as? CGFloat { - return ConstraintInsets(top: amount, left: amount, bottom: amount, right: amount) - } else if let amount = self as? Int { - return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) - } else if let amount = self as? UInt { - return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) - } else { - return ConstraintInsets(top: 0, left: 0, bottom: 0, right: 0) - } - } - -} diff --git a/Pods/SnapKit/Source/ConstraintInsets.swift b/Pods/SnapKit/Source/ConstraintInsets.swift deleted file mode 100644 index 738ca055..00000000 --- a/Pods/SnapKit/Source/ConstraintInsets.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -#if os(iOS) || os(tvOS) - public typealias ConstraintInsets = UIEdgeInsets -#else - public typealias ConstraintInsets = NSEdgeInsets -#endif diff --git a/Pods/SnapKit/Source/ConstraintItem.swift b/Pods/SnapKit/Source/ConstraintItem.swift deleted file mode 100644 index a342c1d9..00000000 --- a/Pods/SnapKit/Source/ConstraintItem.swift +++ /dev/null @@ -1,61 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public final class ConstraintItem { - - internal weak var target: AnyObject? - internal let attributes: ConstraintAttributes - - internal init(target: AnyObject?, attributes: ConstraintAttributes) { - self.target = target - self.attributes = attributes - } - - internal var layoutConstraintItem: LayoutConstraintItem? { - return self.target as? LayoutConstraintItem - } - -} - -public func ==(lhs: ConstraintItem, rhs: ConstraintItem) -> Bool { - // pointer equality - guard lhs !== rhs else { - return true - } - - // must both have valid targets and identical attributes - guard let target1 = lhs.target, - let target2 = rhs.target, - target1 === target2 && lhs.attributes == rhs.attributes else { - return false - } - - return true -} diff --git a/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift b/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift deleted file mode 100644 index c2d9e9de..00000000 --- a/Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#endif - - -@available(iOS 9.0, OSX 10.11, *) -public extension ConstraintLayoutGuide { - - public var snp: ConstraintLayoutGuideDSL { - return ConstraintLayoutGuideDSL(guide: self) - } - -} diff --git a/Pods/SnapKit/Source/ConstraintLayoutGuide.swift b/Pods/SnapKit/Source/ConstraintLayoutGuide.swift deleted file mode 100644 index e3e50c89..00000000 --- a/Pods/SnapKit/Source/ConstraintLayoutGuide.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -#if os(iOS) || os(tvOS) - @available(iOS 9.0, *) - public typealias ConstraintLayoutGuide = UILayoutGuide -#else - @available(OSX 10.11, *) - public typealias ConstraintLayoutGuide = NSLayoutGuide -#endif diff --git a/Pods/SnapKit/Source/ConstraintLayoutGuideDSL.swift b/Pods/SnapKit/Source/ConstraintLayoutGuideDSL.swift deleted file mode 100644 index 0007819c..00000000 --- a/Pods/SnapKit/Source/ConstraintLayoutGuideDSL.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -@available(iOS 9.0, OSX 10.11, *) -public struct ConstraintLayoutGuideDSL: ConstraintAttributesDSL { - - @discardableResult - public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { - return ConstraintMaker.prepareConstraints(item: self.guide, closure: closure) - } - - public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - ConstraintMaker.makeConstraints(item: self.guide, closure: closure) - } - - public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - ConstraintMaker.remakeConstraints(item: self.guide, closure: closure) - } - - public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - ConstraintMaker.updateConstraints(item: self.guide, closure: closure) - } - - public func removeConstraints() { - ConstraintMaker.removeConstraints(item: self.guide) - } - - public var target: AnyObject? { - return self.guide - } - - internal let guide: ConstraintLayoutGuide - - internal init(guide: ConstraintLayoutGuide) { - self.guide = guide - - } - -} diff --git a/Pods/SnapKit/Source/ConstraintLayoutSupport.swift b/Pods/SnapKit/Source/ConstraintLayoutSupport.swift deleted file mode 100644 index e92e9fbc..00000000 --- a/Pods/SnapKit/Source/ConstraintLayoutSupport.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -#if os(iOS) || os(tvOS) - @available(iOS 8.0, *) - public typealias ConstraintLayoutSupport = UILayoutSupport -#else - public class ConstraintLayoutSupport {} -#endif diff --git a/Pods/SnapKit/Source/ConstraintLayoutSupportDSL.swift b/Pods/SnapKit/Source/ConstraintLayoutSupportDSL.swift deleted file mode 100644 index 5d6ae899..00000000 --- a/Pods/SnapKit/Source/ConstraintLayoutSupportDSL.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -@available(iOS 8.0, *) -public struct ConstraintLayoutSupportDSL: ConstraintDSL { - - public var target: AnyObject? { - return self.support - } - - internal let support: ConstraintLayoutSupport - - internal init(support: ConstraintLayoutSupport) { - self.support = support - - } - - public var top: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) - } - - public var bottom: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) - } - - public var height: ConstraintItem { - return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) - } -} diff --git a/Pods/SnapKit/Source/ConstraintMaker.swift b/Pods/SnapKit/Source/ConstraintMaker.swift deleted file mode 100644 index b20cdb5d..00000000 --- a/Pods/SnapKit/Source/ConstraintMaker.swift +++ /dev/null @@ -1,220 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - -public class ConstraintMaker { - - public var left: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.left) - } - - public var top: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.top) - } - - public var bottom: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.bottom) - } - - public var right: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.right) - } - - public var leading: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.leading) - } - - public var trailing: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.trailing) - } - - public var width: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.width) - } - - public var height: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.height) - } - - public var centerX: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.centerX) - } - - public var centerY: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.centerY) - } - - @available(*, deprecated:3.0, message:"Use lastBaseline instead") - public var baseline: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.lastBaseline) - } - - public var lastBaseline: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.lastBaseline) - } - - @available(iOS 8.0, OSX 10.11, *) - public var firstBaseline: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.firstBaseline) - } - - @available(iOS 8.0, *) - public var leftMargin: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.leftMargin) - } - - @available(iOS 8.0, *) - public var rightMargin: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.rightMargin) - } - - @available(iOS 8.0, *) - public var topMargin: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.topMargin) - } - - @available(iOS 8.0, *) - public var bottomMargin: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.bottomMargin) - } - - @available(iOS 8.0, *) - public var leadingMargin: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.leadingMargin) - } - - @available(iOS 8.0, *) - public var trailingMargin: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.trailingMargin) - } - - @available(iOS 8.0, *) - public var centerXWithinMargins: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.centerXWithinMargins) - } - - @available(iOS 8.0, *) - public var centerYWithinMargins: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.centerYWithinMargins) - } - - public var edges: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.edges) - } - public var size: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.size) - } - public var center: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.center) - } - - @available(iOS 8.0, *) - public var margins: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.margins) - } - - @available(iOS 8.0, *) - public var centerWithinMargins: ConstraintMakerExtendable { - return self.makeExtendableWithAttributes(.centerWithinMargins) - } - - private let item: LayoutConstraintItem - private var descriptions = [ConstraintDescription]() - - internal init(item: LayoutConstraintItem) { - self.item = item - self.item.prepare() - } - - internal func makeExtendableWithAttributes(_ attributes: ConstraintAttributes) -> ConstraintMakerExtendable { - let description = ConstraintDescription(item: self.item, attributes: attributes) - self.descriptions.append(description) - return ConstraintMakerExtendable(description) - } - - internal static func prepareConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { - let maker = ConstraintMaker(item: item) - closure(maker) - var constraints: [Constraint] = [] - for description in maker.descriptions { - guard let constraint = description.constraint else { - continue - } - constraints.append(constraint) - } - return constraints - } - - internal static func makeConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { - let maker = ConstraintMaker(item: item) - closure(maker) - var constraints: [Constraint] = [] - for description in maker.descriptions { - guard let constraint = description.constraint else { - continue - } - constraints.append(constraint) - } - for constraint in constraints { - constraint.activateIfNeeded(updatingExisting: false) - } - } - - internal static func remakeConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { - self.removeConstraints(item: item) - self.makeConstraints(item: item, closure: closure) - } - - internal static func updateConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { - guard item.constraints.count > 0 else { - self.makeConstraints(item: item, closure: closure) - return - } - - let maker = ConstraintMaker(item: item) - closure(maker) - var constraints: [Constraint] = [] - for description in maker.descriptions { - guard let constraint = description.constraint else { - continue - } - constraints.append(constraint) - } - for constraint in constraints { - constraint.activateIfNeeded(updatingExisting: true) - } - } - - internal static func removeConstraints(item: LayoutConstraintItem) { - let constraints = item.constraints - for constraint in constraints { - constraint.deactivateIfNeeded() - } - } - -} diff --git a/Pods/SnapKit/Source/ConstraintMakerEditable.swift b/Pods/SnapKit/Source/ConstraintMakerEditable.swift deleted file mode 100644 index fb88c416..00000000 --- a/Pods/SnapKit/Source/ConstraintMakerEditable.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public class ConstraintMakerEditable: ConstraintMakerPriortizable { - - @discardableResult - public func multipliedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable { - self.description.multiplier = amount - return self - } - - @discardableResult - public func dividedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable { - return self.multipliedBy(1.0 / amount.constraintMultiplierTargetValue) - } - - @discardableResult - public func offset(_ amount: ConstraintOffsetTarget) -> ConstraintMakerEditable { - self.description.constant = amount.constraintOffsetTargetValue - return self - } - - @discardableResult - public func inset(_ amount: ConstraintInsetTarget) -> ConstraintMakerEditable { - self.description.constant = amount.constraintInsetTargetValue - return self - } - -} diff --git a/Pods/SnapKit/Source/ConstraintMakerExtendable.swift b/Pods/SnapKit/Source/ConstraintMakerExtendable.swift deleted file mode 100644 index 6a755b59..00000000 --- a/Pods/SnapKit/Source/ConstraintMakerExtendable.swift +++ /dev/null @@ -1,169 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public class ConstraintMakerExtendable: ConstraintMakerRelatable { - - public var left: ConstraintMakerExtendable { - self.description.attributes += .left - return self - } - - public var top: ConstraintMakerExtendable { - self.description.attributes += .top - return self - } - - public var bottom: ConstraintMakerExtendable { - self.description.attributes += .bottom - return self - } - - public var right: ConstraintMakerExtendable { - self.description.attributes += .right - return self - } - - public var leading: ConstraintMakerExtendable { - self.description.attributes += .leading - return self - } - - public var trailing: ConstraintMakerExtendable { - self.description.attributes += .trailing - return self - } - - public var width: ConstraintMakerExtendable { - self.description.attributes += .width - return self - } - - public var height: ConstraintMakerExtendable { - self.description.attributes += .height - return self - } - - public var centerX: ConstraintMakerExtendable { - self.description.attributes += .centerX - return self - } - - public var centerY: ConstraintMakerExtendable { - self.description.attributes += .centerY - return self - } - - @available(*, deprecated:3.0, message:"Use lastBaseline instead") - public var baseline: ConstraintMakerExtendable { - self.description.attributes += .lastBaseline - return self - } - - public var lastBaseline: ConstraintMakerExtendable { - self.description.attributes += .lastBaseline - return self - } - - @available(iOS 8.0, OSX 10.11, *) - public var firstBaseline: ConstraintMakerExtendable { - self.description.attributes += .firstBaseline - return self - } - - @available(iOS 8.0, *) - public var leftMargin: ConstraintMakerExtendable { - self.description.attributes += .leftMargin - return self - } - - @available(iOS 8.0, *) - public var rightMargin: ConstraintMakerExtendable { - self.description.attributes += .rightMargin - return self - } - - @available(iOS 8.0, *) - public var topMargin: ConstraintMakerExtendable { - self.description.attributes += .topMargin - return self - } - - @available(iOS 8.0, *) - public var bottomMargin: ConstraintMakerExtendable { - self.description.attributes += .bottomMargin - return self - } - - @available(iOS 8.0, *) - public var leadingMargin: ConstraintMakerExtendable { - self.description.attributes += .leadingMargin - return self - } - - @available(iOS 8.0, *) - public var trailingMargin: ConstraintMakerExtendable { - self.description.attributes += .trailingMargin - return self - } - - @available(iOS 8.0, *) - public var centerXWithinMargins: ConstraintMakerExtendable { - self.description.attributes += .centerXWithinMargins - return self - } - - @available(iOS 8.0, *) - public var centerYWithinMargins: ConstraintMakerExtendable { - self.description.attributes += .centerYWithinMargins - return self - } - - public var edges: ConstraintMakerExtendable { - self.description.attributes += .edges - return self - } - public var size: ConstraintMakerExtendable { - self.description.attributes += .size - return self - } - - @available(iOS 8.0, *) - public var margins: ConstraintMakerExtendable { - self.description.attributes += .margins - return self - } - - @available(iOS 8.0, *) - public var centerWithinMargins: ConstraintMakerExtendable { - self.description.attributes += .centerWithinMargins - return self - } - -} diff --git a/Pods/SnapKit/Source/ConstraintMakerFinalizable.swift b/Pods/SnapKit/Source/ConstraintMakerFinalizable.swift deleted file mode 100644 index 4e1379e2..00000000 --- a/Pods/SnapKit/Source/ConstraintMakerFinalizable.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public class ConstraintMakerFinalizable { - - internal let description: ConstraintDescription - - internal init(_ description: ConstraintDescription) { - self.description = description - } - - @discardableResult - public func labeled(_ label: String) -> ConstraintMakerFinalizable { - self.description.label = label - return self - } - - public var constraint: Constraint { - return self.description.constraint! - } - -} diff --git a/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift b/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift deleted file mode 100644 index ef794481..00000000 --- a/Pods/SnapKit/Source/ConstraintMakerPriortizable.swift +++ /dev/null @@ -1,68 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public class ConstraintMakerPriortizable: ConstraintMakerFinalizable { - - @discardableResult - public func priority(_ amount: ConstraintPriority) -> ConstraintMakerFinalizable { - self.description.priority = amount.value - return self - } - - @discardableResult - public func priority(_ amount: ConstraintPriorityTarget) -> ConstraintMakerFinalizable { - self.description.priority = amount - return self - } - - @available(*, deprecated:3.0, message:"Use priority(.required) instead.") - @discardableResult - public func priorityRequired() -> ConstraintMakerFinalizable { - return self.priority(.required) - } - - @available(*, deprecated:3.0, message:"Use priority(.high) instead.") - @discardableResult - public func priorityHigh() -> ConstraintMakerFinalizable { - return self.priority(.high) - } - - @available(*, deprecated:3.0, message:"Use priority(.medium) instead.") - @discardableResult - public func priorityMedium() -> ConstraintMakerFinalizable { - return self.priority(.medium) - } - - @available(*, deprecated:3.0, message:"Use priority(.low) instead.") - @discardableResult - public func priorityLow() -> ConstraintMakerFinalizable { - return self.priority(.low) - } -} diff --git a/Pods/SnapKit/Source/ConstraintMakerRelatable.swift b/Pods/SnapKit/Source/ConstraintMakerRelatable.swift deleted file mode 100644 index 98c7158c..00000000 --- a/Pods/SnapKit/Source/ConstraintMakerRelatable.swift +++ /dev/null @@ -1,113 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public class ConstraintMakerRelatable { - - internal let description: ConstraintDescription - - internal init(_ description: ConstraintDescription) { - self.description = description - } - - internal func relatedTo(_ other: ConstraintRelatableTarget, relation: ConstraintRelation, file: String, line: UInt) -> ConstraintMakerEditable { - let related: ConstraintItem - let constant: ConstraintConstantTarget - - if let other = other as? ConstraintItem { - guard other.attributes == ConstraintAttributes.none || - other.attributes.layoutAttributes.count <= 1 || - other.attributes.layoutAttributes == self.description.attributes.layoutAttributes || - other.attributes == .edges && self.description.attributes == .margins || - other.attributes == .margins && self.description.attributes == .edges else { - fatalError("Cannot constraint to multiple non identical attributes. (\(file), \(line))"); - } - - related = other - constant = 0.0 - } else if let other = other as? ConstraintView { - related = ConstraintItem(target: other, attributes: ConstraintAttributes.none) - constant = 0.0 - } else if let other = other as? ConstraintConstantTarget { - related = ConstraintItem(target: nil, attributes: ConstraintAttributes.none) - constant = other - } else if #available(iOS 9.0, OSX 10.11, *), let other = other as? ConstraintLayoutGuide { - related = ConstraintItem(target: other, attributes: ConstraintAttributes.none) - constant = 0.0 - } else { - fatalError("Invalid constraint. (\(file), \(line))") - } - - let editable = ConstraintMakerEditable(self.description) - editable.description.sourceLocation = (file, line) - editable.description.relation = relation - editable.description.related = related - editable.description.constant = constant - return editable - } - - @discardableResult - public func equalTo(_ other: ConstraintRelatableTarget, _ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { - return self.relatedTo(other, relation: .equal, file: file, line: line) - } - - @discardableResult - public func equalToSuperview(_ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { - guard let other = self.description.item.superview else { - fatalError("Expected superview but found nil when attempting make constraint `equalToSuperview`.") - } - return self.relatedTo(other, relation: .equal, file: file, line: line) - } - - @discardableResult - public func lessThanOrEqualTo(_ other: ConstraintRelatableTarget, _ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { - return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line) - } - - @discardableResult - public func lessThanOrEqualToSuperview(_ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { - guard let other = self.description.item.superview else { - fatalError("Expected superview but found nil when attempting make constraint `lessThanOrEqualToSuperview`.") - } - return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line) - } - - @discardableResult - public func greaterThanOrEqualTo(_ other: ConstraintRelatableTarget, _ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable { - return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line) - } - - @discardableResult - public func greaterThanOrEqualToSuperview(_ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable { - guard let other = self.description.item.superview else { - fatalError("Expected superview but found nil when attempting make constraint `greaterThanOrEqualToSuperview`.") - } - return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line) - } -} diff --git a/Pods/SnapKit/Source/ConstraintMultiplierTarget.swift b/Pods/SnapKit/Source/ConstraintMultiplierTarget.swift deleted file mode 100644 index 6fecd33e..00000000 --- a/Pods/SnapKit/Source/ConstraintMultiplierTarget.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public protocol ConstraintMultiplierTarget { - - var constraintMultiplierTargetValue: CGFloat { get } - -} - -extension Int: ConstraintMultiplierTarget { - - public var constraintMultiplierTargetValue: CGFloat { - return CGFloat(self) - } - -} - -extension UInt: ConstraintMultiplierTarget { - - public var constraintMultiplierTargetValue: CGFloat { - return CGFloat(self) - } - -} - -extension Float: ConstraintMultiplierTarget { - - public var constraintMultiplierTargetValue: CGFloat { - return CGFloat(self) - } - -} - -extension Double: ConstraintMultiplierTarget { - - public var constraintMultiplierTargetValue: CGFloat { - return CGFloat(self) - } - -} - -extension CGFloat: ConstraintMultiplierTarget { - - public var constraintMultiplierTargetValue: CGFloat { - return self - } - -} diff --git a/Pods/SnapKit/Source/ConstraintOffsetTarget.swift b/Pods/SnapKit/Source/ConstraintOffsetTarget.swift deleted file mode 100644 index bd9e0a1e..00000000 --- a/Pods/SnapKit/Source/ConstraintOffsetTarget.swift +++ /dev/null @@ -1,69 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public protocol ConstraintOffsetTarget: ConstraintConstantTarget { -} - -extension Int: ConstraintOffsetTarget { -} - -extension UInt: ConstraintOffsetTarget { -} - -extension Float: ConstraintOffsetTarget { -} - -extension Double: ConstraintOffsetTarget { -} - -extension CGFloat: ConstraintOffsetTarget { -} - -extension ConstraintOffsetTarget { - - internal var constraintOffsetTargetValue: CGFloat { - let offset: CGFloat - if let amount = self as? Float { - offset = CGFloat(amount) - } else if let amount = self as? Double { - offset = CGFloat(amount) - } else if let amount = self as? CGFloat { - offset = CGFloat(amount) - } else if let amount = self as? Int { - offset = CGFloat(amount) - } else if let amount = self as? UInt { - offset = CGFloat(amount) - } else { - offset = 0.0 - } - return offset - } - -} diff --git a/Pods/SnapKit/Source/ConstraintPriority.swift b/Pods/SnapKit/Source/ConstraintPriority.swift deleted file mode 100644 index f9dab162..00000000 --- a/Pods/SnapKit/Source/ConstraintPriority.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - -public struct ConstraintPriority : ExpressibleByFloatLiteral, Equatable, Strideable { - public typealias FloatLiteralType = Float - - public let value: Float - - public init(floatLiteral value: Float) { - self.value = value - } - - public init(_ value: Float) { - self.value = value - } - - public static var required: ConstraintPriority { - return 1000.0 - } - - public static var high: ConstraintPriority { - return 750.0 - } - - public static var medium: ConstraintPriority { - #if os(OSX) - return 501.0 - #else - return 500.0 - #endif - - } - - public static var low: ConstraintPriority { - return 250.0 - } - - public static func ==(lhs: ConstraintPriority, rhs: ConstraintPriority) -> Bool { - return lhs.value == rhs.value - } - - // MARK: Strideable - - public func advanced(by n: FloatLiteralType) -> ConstraintPriority { - return ConstraintPriority(floatLiteral: value + n) - } - - public func distance(to other: ConstraintPriority) -> FloatLiteralType { - return other.value - value - } -} diff --git a/Pods/SnapKit/Source/ConstraintPriorityTarget.swift b/Pods/SnapKit/Source/ConstraintPriorityTarget.swift deleted file mode 100644 index eb32f799..00000000 --- a/Pods/SnapKit/Source/ConstraintPriorityTarget.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public protocol ConstraintPriorityTarget { - - var constraintPriorityTargetValue: Float { get } - -} - -extension Int: ConstraintPriorityTarget { - - public var constraintPriorityTargetValue: Float { - return Float(self) - } - -} - -extension UInt: ConstraintPriorityTarget { - - public var constraintPriorityTargetValue: Float { - return Float(self) - } - -} - -extension Float: ConstraintPriorityTarget { - - public var constraintPriorityTargetValue: Float { - return self - } - -} - -extension Double: ConstraintPriorityTarget { - - public var constraintPriorityTargetValue: Float { - return Float(self) - } - -} - -extension CGFloat: ConstraintPriorityTarget { - - public var constraintPriorityTargetValue: Float { - return Float(self) - } - -} diff --git a/Pods/SnapKit/Source/ConstraintRelatableTarget.swift b/Pods/SnapKit/Source/ConstraintRelatableTarget.swift deleted file mode 100644 index 69763679..00000000 --- a/Pods/SnapKit/Source/ConstraintRelatableTarget.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public protocol ConstraintRelatableTarget { -} - -extension Int: ConstraintRelatableTarget { -} - -extension UInt: ConstraintRelatableTarget { -} - -extension Float: ConstraintRelatableTarget { -} - -extension Double: ConstraintRelatableTarget { -} - -extension CGFloat: ConstraintRelatableTarget { -} - -extension CGSize: ConstraintRelatableTarget { -} - -extension CGPoint: ConstraintRelatableTarget { -} - -extension ConstraintInsets: ConstraintRelatableTarget { -} - -extension ConstraintItem: ConstraintRelatableTarget { -} - -extension ConstraintView: ConstraintRelatableTarget { -} - -@available(iOS 9.0, OSX 10.11, *) -extension ConstraintLayoutGuide: ConstraintRelatableTarget { -} diff --git a/Pods/SnapKit/Source/ConstraintRelation.swift b/Pods/SnapKit/Source/ConstraintRelation.swift deleted file mode 100644 index 446aaf76..00000000 --- a/Pods/SnapKit/Source/ConstraintRelation.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -internal enum ConstraintRelation : Int { - case equal = 1 - case lessThanOrEqual - case greaterThanOrEqual - - internal var layoutRelation: LayoutRelation { - get { - switch(self) { - case .equal: - return .equal - case .lessThanOrEqual: - return .lessThanOrEqual - case .greaterThanOrEqual: - return .greaterThanOrEqual - } - } - } -} diff --git a/Pods/SnapKit/Source/ConstraintView+Extensions.swift b/Pods/SnapKit/Source/ConstraintView+Extensions.swift deleted file mode 100644 index 77afad90..00000000 --- a/Pods/SnapKit/Source/ConstraintView+Extensions.swift +++ /dev/null @@ -1,152 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public extension ConstraintView { - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_left: ConstraintItem { return self.snp.left } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_top: ConstraintItem { return self.snp.top } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_right: ConstraintItem { return self.snp.right } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_bottom: ConstraintItem { return self.snp.bottom } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_leading: ConstraintItem { return self.snp.leading } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_trailing: ConstraintItem { return self.snp.trailing } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_width: ConstraintItem { return self.snp.width } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_height: ConstraintItem { return self.snp.height } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_centerX: ConstraintItem { return self.snp.centerX } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_centerY: ConstraintItem { return self.snp.centerY } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_baseline: ConstraintItem { return self.snp.baseline } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, OSX 10.11, *) - public var snp_lastBaseline: ConstraintItem { return self.snp.lastBaseline } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, OSX 10.11, *) - public var snp_firstBaseline: ConstraintItem { return self.snp.firstBaseline } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_leftMargin: ConstraintItem { return self.snp.leftMargin } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_topMargin: ConstraintItem { return self.snp.topMargin } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_rightMargin: ConstraintItem { return self.snp.rightMargin } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_bottomMargin: ConstraintItem { return self.snp.bottomMargin } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_leadingMargin: ConstraintItem { return self.snp.leadingMargin } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_trailingMargin: ConstraintItem { return self.snp.trailingMargin } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_centerXWithinMargins: ConstraintItem { return self.snp.centerXWithinMargins } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_centerYWithinMargins: ConstraintItem { return self.snp.centerYWithinMargins } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_edges: ConstraintItem { return self.snp.edges } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_size: ConstraintItem { return self.snp.size } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public var snp_center: ConstraintItem { return self.snp.center } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_margins: ConstraintItem { return self.snp.margins } - - @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") - @available(iOS 8.0, *) - public var snp_centerWithinMargins: ConstraintItem { return self.snp.centerWithinMargins } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { - return self.snp.prepareConstraints(closure) - } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - self.snp.makeConstraints(closure) - } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - self.snp.remakeConstraints(closure) - } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - self.snp.updateConstraints(closure) - } - - @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") - public func snp_removeConstraints() { - self.snp.removeConstraints() - } - - public var snp: ConstraintViewDSL { - return ConstraintViewDSL(view: self) - } - -} diff --git a/Pods/SnapKit/Source/ConstraintView.swift b/Pods/SnapKit/Source/ConstraintView.swift deleted file mode 100644 index 6ff8a76e..00000000 --- a/Pods/SnapKit/Source/ConstraintView.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -#if os(iOS) || os(tvOS) - public typealias ConstraintView = UIView -#else - public typealias ConstraintView = NSView -#endif diff --git a/Pods/SnapKit/Source/ConstraintViewDSL.swift b/Pods/SnapKit/Source/ConstraintViewDSL.swift deleted file mode 100644 index 298bdb18..00000000 --- a/Pods/SnapKit/Source/ConstraintViewDSL.swift +++ /dev/null @@ -1,101 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public struct ConstraintViewDSL: ConstraintAttributesDSL { - - @discardableResult - public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { - return ConstraintMaker.prepareConstraints(item: self.view, closure: closure) - } - - public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - ConstraintMaker.makeConstraints(item: self.view, closure: closure) - } - - public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - ConstraintMaker.remakeConstraints(item: self.view, closure: closure) - } - - public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { - ConstraintMaker.updateConstraints(item: self.view, closure: closure) - } - - public func removeConstraints() { - ConstraintMaker.removeConstraints(item: self.view) - } - - public var contentHuggingHorizontalPriority: Float { - get { - return self.view.contentHuggingPriority(for: .horizontal).rawValue - } - set { - self.view.setContentHuggingPriority(LayoutPriority(rawValue: newValue), for: .horizontal) - } - } - - public var contentHuggingVerticalPriority: Float { - get { - return self.view.contentHuggingPriority(for: .vertical).rawValue - } - set { - self.view.setContentHuggingPriority(LayoutPriority(rawValue: newValue), for: .vertical) - } - } - - public var contentCompressionResistanceHorizontalPriority: Float { - get { - return self.view.contentCompressionResistancePriority(for: .horizontal).rawValue - } - set { - self.view.setContentCompressionResistancePriority(LayoutPriority(rawValue: newValue), for: .horizontal) - } - } - - public var contentCompressionResistanceVerticalPriority: Float { - get { - return self.view.contentCompressionResistancePriority(for: .vertical).rawValue - } - set { - self.view.setContentCompressionResistancePriority(LayoutPriority(rawValue: newValue), for: .vertical) - } - } - - public var target: AnyObject? { - return self.view - } - - internal let view: ConstraintView - - internal init(view: ConstraintView) { - self.view = view - - } - -} diff --git a/Pods/SnapKit/Source/Debugging.swift b/Pods/SnapKit/Source/Debugging.swift deleted file mode 100644 index 55f5b87f..00000000 --- a/Pods/SnapKit/Source/Debugging.swift +++ /dev/null @@ -1,160 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - -public extension LayoutConstraint { - - override public var description: String { - var description = "<" - - description += descriptionForObject(self) - - if let firstItem = conditionalOptional(from: self.firstItem) { - description += " \(descriptionForObject(firstItem))" - } - - if self.firstAttribute != .notAnAttribute { - description += ".\(descriptionForAttribute(self.firstAttribute))" - } - - description += " \(descriptionForRelation(self.relation))" - - if let secondItem = self.secondItem { - description += " \(descriptionForObject(secondItem))" - } - - if self.secondAttribute != .notAnAttribute { - description += ".\(descriptionForAttribute(self.secondAttribute))" - } - - if self.multiplier != 1.0 { - description += " * \(self.multiplier)" - } - - if self.secondAttribute == .notAnAttribute { - description += " \(self.constant)" - } else { - if self.constant > 0.0 { - description += " + \(self.constant)" - } else if self.constant < 0.0 { - description += " - \(abs(self.constant))" - } - } - - if self.priority.rawValue != 1000.0 { - description += " ^\(self.priority)" - } - - description += ">" - - return description - } - -} - -private func descriptionForRelation(_ relation: LayoutRelation) -> String { - switch relation { - case .equal: return "==" - case .greaterThanOrEqual: return ">=" - case .lessThanOrEqual: return "<=" - } -} - -private func descriptionForAttribute(_ attribute: LayoutAttribute) -> String { - #if os(iOS) || os(tvOS) - switch attribute { - case .notAnAttribute: return "notAnAttribute" - case .top: return "top" - case .left: return "left" - case .bottom: return "bottom" - case .right: return "right" - case .leading: return "leading" - case .trailing: return "trailing" - case .width: return "width" - case .height: return "height" - case .centerX: return "centerX" - case .centerY: return "centerY" - case .lastBaseline: return "lastBaseline" - case .firstBaseline: return "firstBaseline" - case .topMargin: return "topMargin" - case .leftMargin: return "leftMargin" - case .bottomMargin: return "bottomMargin" - case .rightMargin: return "rightMargin" - case .leadingMargin: return "leadingMargin" - case .trailingMargin: return "trailingMargin" - case .centerXWithinMargins: return "centerXWithinMargins" - case .centerYWithinMargins: return "centerYWithinMargins" - } - #else - switch attribute { - case .notAnAttribute: return "notAnAttribute" - case .top: return "top" - case .left: return "left" - case .bottom: return "bottom" - case .right: return "right" - case .leading: return "leading" - case .trailing: return "trailing" - case .width: return "width" - case .height: return "height" - case .centerX: return "centerX" - case .centerY: return "centerY" - case .lastBaseline: return "lastBaseline" - case .firstBaseline: return "firstBaseline" - } - #endif -} - -private func conditionalOptional(from object: Optional) -> Optional { - return object -} - -private func conditionalOptional(from object: T) -> Optional { - return Optional.some(object) -} - -private func descriptionForObject(_ object: AnyObject) -> String { - let pointerDescription = String(format: "%p", UInt(bitPattern: ObjectIdentifier(object))) - var desc = "" - - desc += type(of: object).description() - - if let object = object as? ConstraintView { - desc += ":\(object.snp.label() ?? pointerDescription)" - } else if let object = object as? LayoutConstraint { - desc += ":\(object.label ?? pointerDescription)" - } else { - desc += ":\(pointerDescription)" - } - - if let object = object as? LayoutConstraint, let file = object.constraint?.sourceLocation.0, let line = object.constraint?.sourceLocation.1 { - desc += "@\((file as NSString).lastPathComponent)#\(line)" - } - - desc += "" - return desc -} diff --git a/Pods/SnapKit/Source/LayoutConstraint.swift b/Pods/SnapKit/Source/LayoutConstraint.swift deleted file mode 100644 index 8bb5ed2c..00000000 --- a/Pods/SnapKit/Source/LayoutConstraint.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public class LayoutConstraint : NSLayoutConstraint { - - public var label: String? { - get { - return self.identifier - } - set { - self.identifier = newValue - } - } - - internal weak var constraint: Constraint? = nil - -} - -internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool { - guard lhs.firstItem === rhs.firstItem && - lhs.secondItem === rhs.secondItem && - lhs.firstAttribute == rhs.firstAttribute && - lhs.secondAttribute == rhs.secondAttribute && - lhs.relation == rhs.relation && - lhs.priority == rhs.priority && - lhs.multiplier == rhs.multiplier else { - return false - } - return true -} diff --git a/Pods/SnapKit/Source/LayoutConstraintItem.swift b/Pods/SnapKit/Source/LayoutConstraintItem.swift deleted file mode 100644 index a59de6bf..00000000 --- a/Pods/SnapKit/Source/LayoutConstraintItem.swift +++ /dev/null @@ -1,93 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#else - import AppKit -#endif - - -public protocol LayoutConstraintItem: class { -} - -@available(iOS 9.0, OSX 10.11, *) -extension ConstraintLayoutGuide : LayoutConstraintItem { -} - -extension ConstraintView : LayoutConstraintItem { -} - - -extension LayoutConstraintItem { - - internal func prepare() { - if let view = self as? ConstraintView { - view.translatesAutoresizingMaskIntoConstraints = false - } - } - - internal var superview: ConstraintView? { - if let view = self as? ConstraintView { - return view.superview - } - - if #available(iOS 9.0, OSX 10.11, *), let guide = self as? ConstraintLayoutGuide { - return guide.owningView - } - - return nil - } - internal var constraints: [Constraint] { - return self.constraintsSet.allObjects as! [Constraint] - } - - internal func add(constraints: [Constraint]) { - let constraintsSet = self.constraintsSet - for constraint in constraints { - constraintsSet.add(constraint) - } - } - - internal func remove(constraints: [Constraint]) { - let constraintsSet = self.constraintsSet - for constraint in constraints { - constraintsSet.remove(constraint) - } - } - - private var constraintsSet: NSMutableSet { - let constraintsSet: NSMutableSet - - if let existing = objc_getAssociatedObject(self, &constraintsKey) as? NSMutableSet { - constraintsSet = existing - } else { - constraintsSet = NSMutableSet() - objc_setAssociatedObject(self, &constraintsKey, constraintsSet, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - return constraintsSet - - } - -} -private var constraintsKey: UInt8 = 0 diff --git a/Pods/SnapKit/Source/Typealiases.swift b/Pods/SnapKit/Source/Typealiases.swift deleted file mode 100644 index 8a441515..00000000 --- a/Pods/SnapKit/Source/Typealiases.swift +++ /dev/null @@ -1,37 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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 - -#if os(iOS) || os(tvOS) - import UIKit - typealias LayoutRelation = NSLayoutRelation - typealias LayoutAttribute = NSLayoutAttribute - typealias LayoutPriority = UILayoutPriority -#else - import AppKit - typealias LayoutRelation = NSLayoutConstraint.Relation - typealias LayoutAttribute = NSLayoutConstraint.Attribute - typealias LayoutPriority = NSLayoutConstraint.Priority -#endif - diff --git a/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift b/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift deleted file mode 100644 index cfbce2e7..00000000 --- a/Pods/SnapKit/Source/UILayoutSupport+Extensions.swift +++ /dev/null @@ -1,36 +0,0 @@ -// -// SnapKit -// -// Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit -// -// 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. - -#if os(iOS) || os(tvOS) - import UIKit -#endif - - -@available(iOS 8.0, *) -public extension ConstraintLayoutSupport { - - public var snp: ConstraintLayoutSupportDSL { - return ConstraintLayoutSupportDSL(support: self) - } - -} diff --git a/Pods/Target Support Files/BulletinBoard/BulletinBoard-dummy.m b/Pods/Target Support Files/BulletinBoard/BulletinBoard-dummy.m deleted file mode 100644 index 7100f9f0..00000000 --- a/Pods/Target Support Files/BulletinBoard/BulletinBoard-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_BulletinBoard : NSObject -@end -@implementation PodsDummy_BulletinBoard -@end diff --git a/Pods/Target Support Files/BulletinBoard/BulletinBoard-prefix.pch b/Pods/Target Support Files/BulletinBoard/BulletinBoard-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/Pods/Target Support Files/BulletinBoard/BulletinBoard-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/BulletinBoard/BulletinBoard-umbrella.h b/Pods/Target Support Files/BulletinBoard/BulletinBoard-umbrella.h deleted file mode 100644 index 6f678c33..00000000 --- a/Pods/Target Support Files/BulletinBoard/BulletinBoard-umbrella.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "BLTNBoard.h" -#import "BLTNActionItem.h" -#import "BLTNItem.h" -#import "BLTNPageItem.h" - -FOUNDATION_EXPORT double BLTNBoardVersionNumber; -FOUNDATION_EXPORT const unsigned char BLTNBoardVersionString[]; - diff --git a/Pods/Target Support Files/BulletinBoard/BulletinBoard.modulemap b/Pods/Target Support Files/BulletinBoard/BulletinBoard.modulemap deleted file mode 100644 index d764d810..00000000 --- a/Pods/Target Support Files/BulletinBoard/BulletinBoard.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module BLTNBoard { - umbrella header "BulletinBoard-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/BulletinBoard/BulletinBoard.xcconfig b/Pods/Target Support Files/BulletinBoard/BulletinBoard.xcconfig deleted file mode 100644 index a1b95ef9..00000000 --- a/Pods/Target Support Files/BulletinBoard/BulletinBoard.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BulletinBoard -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_LDFLAGS = -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/BulletinBoard -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES diff --git a/Pods/Target Support Files/BulletinBoard/Info.plist b/Pods/Target Support Files/BulletinBoard/Info.plist deleted file mode 100644 index bdac57c6..00000000 --- a/Pods/Target Support Files/BulletinBoard/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.0.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Info.plist b/Pods/Target Support Files/Pods-Pageboy-Example/Info.plist deleted file mode 100644 index 2243fe6e..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-acknowledgements.markdown b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-acknowledgements.markdown deleted file mode 100644 index 9a1dcc8e..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-acknowledgements.markdown +++ /dev/null @@ -1,52 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## BulletinBoard - -The MIT License (MIT) - -Copyright (c) 2017 Alexis Aubry - -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. - - - -## SnapKit - -Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit - -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. - -Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-acknowledgements.plist b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-acknowledgements.plist deleted file mode 100644 index 47ec8415..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-acknowledgements.plist +++ /dev/null @@ -1,90 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - The MIT License (MIT) - -Copyright (c) 2017 Alexis Aubry <me@alexaubry.fr> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - License - MIT - Title - BulletinBoard - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - License - MIT - Title - SnapKit - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - https://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-dummy.m b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-dummy.m deleted file mode 100644 index 9a8df537..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_Pageboy_Example : NSObject -@end -@implementation PodsDummy_Pods_Pageboy_Example -@end diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-frameworks.sh b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-frameworks.sh deleted file mode 100755 index 94883810..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-frameworks.sh +++ /dev/null @@ -1,155 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then - # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy - # frameworks to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -# Used as a return value for each invocation of `strip_invalid_archs` function. -STRIP_BINARY_RETVAL=0 - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -# Copies and strips a vendored framework -install_framework() -{ - if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then - local source="${BUILT_PRODUCTS_DIR}/$1" - elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then - local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" - elif [ -r "$1" ]; then - local source="$1" - fi - - local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source="$(readlink "${source}")" - fi - - # Use filter instead of exclude so missing patterns don't throw errors. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" - - local basename - basename="$(basename -s .framework "$1")" - binary="${destination}/${basename}.framework/${basename}" - if ! [ -r "$binary" ]; then - binary="${destination}/${basename}" - fi - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then - strip_invalid_archs "$binary" - fi - - # Resign the code if required by the build settings to avoid unstable apps - code_sign_if_enabled "${destination}/$(basename "$1")" - - # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. - if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - code_sign_if_enabled "${destination}/${lib}" - done - fi -} - -# Copies and strips a vendored dSYM -install_dsym() { - local source="$1" - if [ -r "$source" ]; then - # Copy the dSYM into a the targets temp dir. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" - - local basename - basename="$(basename -s .framework.dSYM "$source")" - binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" - - # Strip invalid architectures so "fat" simulator / device frameworks work on device - if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then - strip_invalid_archs "$binary" - fi - - if [[ $STRIP_BINARY_RETVAL == 1 ]]; then - # Move the stripped file into its final destination. - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" - else - # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. - touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" - fi - fi -} - -# Signs a framework with the provided identity -code_sign_if_enabled() { - if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" - - if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - code_sign_cmd="$code_sign_cmd &" - fi - echo "$code_sign_cmd" - eval "$code_sign_cmd" - fi -} - -# Strip invalid architectures -strip_invalid_archs() { - binary="$1" - # Get architectures for current target binary - binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" - # Intersect them with the architectures we are building for - intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" - # If there are no archs supported by this binary then warn the user - if [[ -z "$intersected_archs" ]]; then - echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." - STRIP_BINARY_RETVAL=0 - return - fi - stripped="" - for arch in $binary_archs; do - if ! [[ "${ARCHS}" == *"$arch"* ]]; then - # Strip non-valid architectures in-place - lipo -remove "$arch" -output "$binary" "$binary" || exit 1 - stripped="$stripped $arch" - fi - done - if [[ "$stripped" ]]; then - echo "Stripped $binary of architectures:$stripped" - fi - STRIP_BINARY_RETVAL=1 -} - - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/BulletinBoard/BLTNBoard.framework" - install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework "${BUILT_PRODUCTS_DIR}/BulletinBoard/BLTNBoard.framework" - install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" -fi -if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then - wait -fi diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-resources.sh b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-resources.sh deleted file mode 100755 index 345301f2..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-resources.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/sh -set -e -set -u -set -o pipefail - -if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then - # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy - # resources to, so exit 0 (signalling the script phase was successful). - exit 0 -fi - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -# This protects against multiple targets copying the same framework dependency at the same time. The solution -# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html -RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") - -case "${TARGETED_DEVICE_FAMILY:-}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - 3) - TARGET_DEVICE_ARGS="--target-device tv" - ;; - 4) - TARGET_DEVICE_ARGS="--target-device watch" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; -esac - -install_resource() -{ - if [[ "$1" = /* ]] ; then - RESOURCE_PATH="$1" - else - RESOURCE_PATH="${PODS_ROOT}/$1" - fi - if [[ ! -e "$RESOURCE_PATH" ]] ; then - cat << EOM -error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. -EOM - exit 1 - fi - case $RESOURCE_PATH in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true - ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} - ;; - *.framework) - echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true - rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true - xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true - xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - *) - echo "$RESOURCE_PATH" || true - echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then - mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] -then - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "${PODS_ROOT}*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - else - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_TEMP_DIR}/assetcatalog_generated_info_cocoapods.plist" - fi -fi diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-umbrella.h b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-umbrella.h deleted file mode 100644 index 36ec14a2..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Pods_Pageboy_ExampleVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_Pageboy_ExampleVersionString[]; - diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.debug.xcconfig b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.debug.xcconfig deleted file mode 100644 index 0b019741..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.debug.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BulletinBoard" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/BulletinBoard/BLTNBoard.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "BLTNBoard" -framework "SnapKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/.. -PODS_ROOT = ${SRCROOT}/../Pods diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.modulemap b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.modulemap deleted file mode 100644 index c67342b5..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_Pageboy_Example { - umbrella header "Pods-Pageboy-Example-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.release.xcconfig b/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.release.xcconfig deleted file mode 100644 index 0b019741..00000000 --- a/Pods/Target Support Files/Pods-Pageboy-Example/Pods-Pageboy-Example.release.xcconfig +++ /dev/null @@ -1,11 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BulletinBoard" "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/BulletinBoard/BLTNBoard.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" -OTHER_LDFLAGS = $(inherited) -framework "BLTNBoard" -framework "SnapKit" -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_PODFILE_DIR_PATH = ${SRCROOT}/.. -PODS_ROOT = ${SRCROOT}/../Pods diff --git a/Pods/Target Support Files/SnapKit/Info.plist b/Pods/Target Support Files/SnapKit/Info.plist deleted file mode 100644 index 3424ca66..00000000 --- a/Pods/Target Support Files/SnapKit/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 4.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/SnapKit/SnapKit-dummy.m b/Pods/Target Support Files/SnapKit/SnapKit-dummy.m deleted file mode 100644 index b44e8e58..00000000 --- a/Pods/Target Support Files/SnapKit/SnapKit-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SnapKit : NSObject -@end -@implementation PodsDummy_SnapKit -@end diff --git a/Pods/Target Support Files/SnapKit/SnapKit-prefix.pch b/Pods/Target Support Files/SnapKit/SnapKit-prefix.pch deleted file mode 100644 index beb2a244..00000000 --- a/Pods/Target Support Files/SnapKit/SnapKit-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/SnapKit/SnapKit-umbrella.h b/Pods/Target Support Files/SnapKit/SnapKit-umbrella.h deleted file mode 100644 index 1b1be641..00000000 --- a/Pods/Target Support Files/SnapKit/SnapKit-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double SnapKitVersionNumber; -FOUNDATION_EXPORT const unsigned char SnapKitVersionString[]; - diff --git a/Pods/Target Support Files/SnapKit/SnapKit.modulemap b/Pods/Target Support Files/SnapKit/SnapKit.modulemap deleted file mode 100644 index 4b3e47b2..00000000 --- a/Pods/Target Support Files/SnapKit/SnapKit.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module SnapKit { - umbrella header "SnapKit-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/SnapKit/SnapKit.xcconfig b/Pods/Target Support Files/SnapKit/SnapKit.xcconfig deleted file mode 100644 index f9af2c9c..00000000 --- a/Pods/Target Support Files/SnapKit/SnapKit.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES