diff --git a/Chatto/Chatto.xcodeproj/project.pbxproj b/Chatto/Chatto.xcodeproj/project.pbxproj index ef438e172..b2c50f634 100644 --- a/Chatto/Chatto.xcodeproj/project.pbxproj +++ b/Chatto/Chatto.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 3565429D203DB99300B29DA1 /* ChatLayoutConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3565429C203DB99300B29DA1 /* ChatLayoutConfiguration.swift */; }; B3B1B0FF1D6B40DF00D1183D /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B1B0FE1D6B40DF00D1183D /* Utils.swift */; }; C31E919A1BFF4CA300339585 /* BaseChatViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31E91991BFF4CA300339585 /* BaseChatViewControllerTests.swift */; }; C321C3961BE78835009803D1 /* CollectionChangesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C321C3951BE78835009803D1 /* CollectionChangesTests.swift */; }; @@ -48,6 +49,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 3565429C203DB99300B29DA1 /* ChatLayoutConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatLayoutConfiguration.swift; sourceTree = ""; }; 55E85D821BE390BE001885AD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B3B1B0FE1D6B40DF00D1183D /* Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; }; C31E91991BFF4CA300339585 /* BaseChatViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseChatViewControllerTests.swift; sourceTree = ""; }; @@ -206,6 +208,7 @@ C36281E41BF0F0F0004D6BCE /* BaseChatViewController+Changes.swift */, C3E904B11BE0509E00C662A2 /* BaseChatViewController+Presenters.swift */, C38352D01CC6514B006C359C /* BaseChatViewController+AccessoryViewRevealer.swift */, + 3565429C203DB99300B29DA1 /* ChatLayoutConfiguration.swift */, ); path = ChatController; sourceTree = ""; @@ -351,6 +354,7 @@ C38352D11CC6514B006C359C /* BaseChatViewController+AccessoryViewRevealer.swift in Sources */, C342D0BD1C638681008A4605 /* ChatItemCompanion.swift in Sources */, C36281E71BF0F196004D6BCE /* BaseChatViewController+Scrolling.swift in Sources */, + 3565429D203DB99300B29DA1 /* ChatLayoutConfiguration.swift in Sources */, C36281EB1BF0F62F004D6BCE /* DummyChatItemPresenter.swift in Sources */, C3C7C3981CAC4BAC00A49929 /* ChatCollectionViewLayout.swift in Sources */, C3C7C39B1CAC4BAC00A49929 /* KeyboardTracker.swift in Sources */, diff --git a/Chatto/Source/ChatController/BaseChatViewController.swift b/Chatto/Source/ChatController/BaseChatViewController.swift index 2796ee614..848ae7ef5 100644 --- a/Chatto/Source/ChatController/BaseChatViewController.swift +++ b/Chatto/Source/ChatController/BaseChatViewController.swift @@ -28,10 +28,14 @@ open class BaseChatViewController: UIViewController, UICollectionViewDataSource, public typealias ChatItemCompanionCollection = ReadOnlyOrderedDictionary + open var layoutConfiguration: ChatLayoutConfigurationProtocol = ChatLayoutConfiguration.defaultConfiguration { + didSet { + self.adjustCollectionViewInsets(shouldUpdateContentOffset: false) + } + } + public struct Constants { public var updatesAnimationDuration: TimeInterval = 0.33 - public var defaultContentInsets = UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 0) - public var defaultScrollIndicatorInsets = UIEdgeInsets.zero public var preferredMaxMessageCount: Int? = 500 // If not nil, will ask data source to reduce number of messages when limit is reached. @see ChatDataSourceDelegateProtocol public var preferredMaxMessageCountAdjustment: Int = 400 // When the above happens, will ask to adjust with this value. It may be wise for this to be smaller to reduce number of adjustments public var autoloadingFractionalThreshold: CGFloat = 0.05 // in [0, 1] @@ -119,8 +123,8 @@ open class BaseChatViewController: UIViewController, UICollectionViewDataSource, private func addCollectionView() { self.collectionView = UICollectionView(frame: CGRect.zero, collectionViewLayout: self.createCollectionViewLayout()) - self.collectionView.contentInset = self.constants.defaultContentInsets - self.collectionView.scrollIndicatorInsets = self.constants.defaultScrollIndicatorInsets + self.collectionView.contentInset = self.layoutConfiguration.contentInsets + self.collectionView.scrollIndicatorInsets = self.layoutConfiguration.scrollIndicatorInsets self.collectionView.alwaysBounceVertical = true self.collectionView.backgroundColor = UIColor.clear self.collectionView.keyboardDismissMode = .interactive @@ -199,9 +203,9 @@ open class BaseChatViewController: UIViewController, UICollectionViewDataSource, var isAdjustingInputContainer: Bool = false open func setupKeyboardTracker() { - let layoutBlock = { [weak self] (bottomMargin: CGFloat) in + let layoutBlock = { [weak self] (bottomMargin: CGFloat, keyboardStatus: KeyboardStatus) in guard let sSelf = self else { return } - sSelf.handleKeyboardPositionChange(bottomMargin: bottomMargin) + sSelf.handleKeyboardPositionChange(bottomMargin: bottomMargin, keyboardStatus: keyboardStatus) } self.keyboardTracker = KeyboardTracker(viewController: self, inputContainer: self.inputContainer, layoutBlock: layoutBlock, notificationCenter: self.notificationCenter) @@ -209,7 +213,7 @@ open class BaseChatViewController: UIViewController, UICollectionViewDataSource, } - open func handleKeyboardPositionChange(bottomMargin: CGFloat) { + open func handleKeyboardPositionChange(bottomMargin: CGFloat, keyboardStatus: KeyboardStatus) { self.isAdjustingInputContainer = true self.inputContainerBottomConstraint.constant = max(bottomMargin, self.bottomLayoutGuide.length) self.view.layoutIfNeeded() @@ -223,7 +227,7 @@ open class BaseChatViewController: UIViewController, UICollectionViewDataSource, override open func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() - self.adjustCollectionViewInsets() + self.adjustCollectionViewInsets(shouldUpdateContentOffset: true) self.keyboardTracker.adjustTrackingViewSizeIfNeeded() if self.isFirstLayout { @@ -233,21 +237,25 @@ open class BaseChatViewController: UIViewController, UICollectionViewDataSource, } } - private func adjustCollectionViewInsets() { + public var allContentFits: Bool { + let inputHeightWithKeyboard = self.view.bounds.height - self.inputContainer.frame.minY + let insetTop = self.topLayoutGuide.length + self.layoutConfiguration.contentInsets.top + let insetBottom = self.layoutConfiguration.contentInsets.bottom + inputHeightWithKeyboard + let availableHeight = self.collectionView.bounds.height - (insetTop + insetBottom) + let contentSize = self.collectionView.collectionViewLayout.collectionViewContentSize + return availableHeight >= contentSize.height + } + + private func adjustCollectionViewInsets(shouldUpdateContentOffset: Bool) { let isInteracting = self.collectionView.panGestureRecognizer.numberOfTouches > 0 let isBouncingAtTop = isInteracting && self.collectionView.contentOffset.y < -self.collectionView.contentInset.top if isBouncingAtTop { return } let inputHeightWithKeyboard = self.view.bounds.height - self.inputContainer.frame.minY - let newInsetBottom = self.constants.defaultContentInsets.bottom + inputHeightWithKeyboard + let newInsetBottom = self.layoutConfiguration.contentInsets.bottom + inputHeightWithKeyboard let insetBottomDiff = newInsetBottom - self.collectionView.contentInset.bottom - let newInsetTop = self.topLayoutGuide.length + self.constants.defaultContentInsets.top - + let newInsetTop = self.topLayoutGuide.length + self.layoutConfiguration.contentInsets.top let contentSize = self.collectionView.collectionViewLayout.collectionViewContentSize - let allContentFits: Bool = { - let availableHeight = self.collectionView.bounds.height - (newInsetTop + newInsetBottom) - return availableHeight >= contentSize.height - }() let newContentOffsetY: CGFloat = { let minOffset = -newInsetTop @@ -265,14 +273,15 @@ open class BaseChatViewController: UIViewController, UICollectionViewDataSource, self.collectionView.scrollIndicatorInsets = { var currentInsets = self.collectionView.scrollIndicatorInsets - currentInsets.bottom = self.constants.defaultScrollIndicatorInsets.bottom + inputHeightWithKeyboard - currentInsets.top = self.topLayoutGuide.length + self.constants.defaultScrollIndicatorInsets.top + currentInsets.bottom = self.layoutConfiguration.scrollIndicatorInsets.bottom + inputHeightWithKeyboard + currentInsets.top = self.topLayoutGuide.length + self.layoutConfiguration.scrollIndicatorInsets.top return currentInsets }() - let inputIsAtBottom = self.view.bounds.maxY - self.inputContainer.frame.maxY <= 0 + guard shouldUpdateContentOffset else { return } - if allContentFits { + let inputIsAtBottom = self.view.bounds.maxY - self.inputContainer.frame.maxY <= 0 + if self.allContentFits { self.collectionView.contentOffset.y = -self.collectionView.contentInset.top } else if !isInteracting || inputIsAtBottom { self.collectionView.contentOffset.y = newContentOffsetY diff --git a/Chatto/Source/ChatController/ChatLayoutConfiguration.swift b/Chatto/Source/ChatController/ChatLayoutConfiguration.swift new file mode 100644 index 000000000..11817c74a --- /dev/null +++ b/Chatto/Source/ChatController/ChatLayoutConfiguration.swift @@ -0,0 +1,49 @@ +/* + The MIT License (MIT) + + Copyright (c) 2015-present Badoo Trading Limited. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +*/ + +import UIKit + +public protocol ChatLayoutConfigurationProtocol { + var contentInsets: UIEdgeInsets { get } + var scrollIndicatorInsets: UIEdgeInsets { get } +} + +public struct ChatLayoutConfiguration: ChatLayoutConfigurationProtocol { + public let contentInsets: UIEdgeInsets + public let scrollIndicatorInsets: UIEdgeInsets + + public init(contentInsets: UIEdgeInsets, scrollIndicatorInsets: UIEdgeInsets) { + self.contentInsets = contentInsets + self.scrollIndicatorInsets = scrollIndicatorInsets + } +} + +extension ChatLayoutConfiguration { + static var defaultConfiguration: ChatLayoutConfiguration { + let contentInsets = UIEdgeInsets(top: 10, left: 0, bottom: 10, right: 0) + let scrollIndicatorInsets = UIEdgeInsets.zero + return ChatLayoutConfiguration(contentInsets: contentInsets, + scrollIndicatorInsets: scrollIndicatorInsets) + } +} diff --git a/Chatto/Source/ChatController/Collaborators/KeyboardTracker.swift b/Chatto/Source/ChatController/Collaborators/KeyboardTracker.swift index 10bdd76be..9910fdc4f 100644 --- a/Chatto/Source/ChatController/Collaborators/KeyboardTracker.swift +++ b/Chatto/Source/ChatController/Collaborators/KeyboardTracker.swift @@ -24,14 +24,14 @@ import Foundation -class KeyboardTracker { - - private enum KeyboardStatus { - case hidden - case showing - case shown - } +public enum KeyboardStatus { + case hiding + case hidden + case showing + case shown +} +class KeyboardTracker { private var keyboardStatus: KeyboardStatus = .hidden private let view: UIView var trackingView: UIView { @@ -52,7 +52,7 @@ class KeyboardTracker { var inputContainer: UIView private var notificationCenter: NotificationCenter - typealias LayoutBlock = (_ bottomMargin: CGFloat) -> Void + typealias LayoutBlock = (_ bottomMargin: CGFloat, _ status: KeyboardStatus) -> Void private var layoutBlock: LayoutBlock init(viewController: UIViewController, inputContainer: UIView, layoutBlock: @escaping LayoutBlock, notificationCenter: NotificationCenter) { @@ -63,6 +63,7 @@ class KeyboardTracker { self.notificationCenter.addObserver(self, selector: #selector(KeyboardTracker.keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) self.notificationCenter.addObserver(self, selector: #selector(KeyboardTracker.keyboardDidShow(_:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil) self.notificationCenter.addObserver(self, selector: #selector(KeyboardTracker.keyboardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil) + self.notificationCenter.addObserver(self, selector: #selector(KeyboardTracker.keyboardDidHide(_:)), name: NSNotification.Name.UIKeyboardDidHide, object: nil) self.notificationCenter.addObserver(self, selector: #selector(KeyboardTracker.keyboardWillChangeFrame(_:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil) } @@ -105,13 +106,20 @@ class KeyboardTracker { guard self.isTracking else { return } let bottomConstraint = self.bottomConstraintFromNotification(notification) if bottomConstraint == 0 { - self.keyboardStatus = .hidden + self.keyboardStatus = .hiding self.layoutInputAtBottom() } } @objc private func keyboardWillHide(_ notification: Notification) { + guard self.isTracking else { return } + self.keyboardStatus = .hiding + self.layoutInputAtBottom() + } + + @objc + private func keyboardDidHide(_ notification: Notification) { guard self.isTracking else { return } self.keyboardStatus = .hidden self.layoutInputAtBottom() @@ -159,7 +167,7 @@ class KeyboardTracker { private func layoutInputContainer(withBottomConstraint constraint: CGFloat) { self.isPerformingForcedLayout = true - self.layoutBlock(constraint) + self.layoutBlock(constraint, self.keyboardStatus) self.isPerformingForcedLayout = false } } diff --git a/ChattoApp/Pods/Pods.xcodeproj/project.pbxproj b/ChattoApp/Pods/Pods.xcodeproj/project.pbxproj index 71f039ecb..834f8b968 100644 --- a/ChattoApp/Pods/Pods.xcodeproj/project.pbxproj +++ b/ChattoApp/Pods/Pods.xcodeproj/project.pbxproj @@ -7,109 +7,110 @@ objects = { /* Begin PBXBuildFile section */ - 00D6D10980978A3AD87F2EFA18D5FA53 /* BaseMessageCollectionViewCellDefaultStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E6B9EFA482498A8F7626B346CDED36D /* BaseMessageCollectionViewCellDefaultStyle.swift */; }; - 00E3F827CF29D95C20BC041DE0B3E415 /* ChatInputBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1309CFDDC69D430EF26B5A607907C80 /* ChatInputBar.xib */; }; - 010040154F5F454E72EF1468790FA4CD /* BaseChatViewController+Scrolling.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFB8A0CFBD7C0AE7CB03BF74160D4DBA /* BaseChatViewController+Scrolling.swift */; }; - 0C16A79AD329A1AE31DCB63829C8C87B /* PhotosInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D6F0E45378AD0C6B71082D352CC260B /* PhotosInputView.swift */; }; - 0D505833F07BC65FEBC299D37006365D /* HorizontalStackScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD8E4BB9487A80F70C29231EA1E6295 /* HorizontalStackScrollView.swift */; }; - 0D523E4FE6115F7A55C3AC1084204E4B /* BaseChatViewController+AccessoryViewRevealer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 425AA302DBD7925EAF5AC414D86AEA0B /* BaseChatViewController+AccessoryViewRevealer.swift */; }; - 0EA4A981038BAA87CFD193759A602F8F /* PhotosInputDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA64E0B302B8C3DAD22C389E3F73CFB /* PhotosInputDataProvider.swift */; }; - 0FD9575740CF2F8B25FF917D414DD453 /* BaseChatViewController+Presenters.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7A3114802D19936B30971AC47A85BAD /* BaseChatViewController+Presenters.swift */; }; - 13F170B91F743BE7E900034704945334 /* TabInputButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = A500CFC58AF814D90C69A58ED2780972 /* TabInputButton.swift */; }; - 14E1077906B79E35EB6C0D452E98E102 /* PhotosInputPlaceholderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 593C30E9D0A0055838C2854296640A47 /* PhotosInputPlaceholderCell.swift */; }; - 16361DBD3920836499A58C212E9B825F /* PhotosInputCellProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E8F42B307C00B2A41B5509D17EE211A /* PhotosInputCellProvider.swift */; }; - 1B5BAA97C46FBC289D2B770A2CF26195 /* Photos.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4A4DFA43E1F3E4B1A85CEFCEFC38500E /* Photos.xcassets */; }; - 1C0E2D574DEAA28340343074A044380C /* PhotoMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA0E54B122003939CAFC03AE0FA4B5DC /* PhotoMessagePresenter.swift */; }; - 1D22A8C6A20F2FE60BB35918061C3ECB /* ChatDataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9E20DA473442F4FE951198139ADCB9A /* ChatDataSourceProtocol.swift */; }; - 1EBAAE2E59B3FDA14AAD805DFC2707D6 /* AccessoryViewRevealer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6689FB692180AEBAC101759EAD0116C2 /* AccessoryViewRevealer.swift */; }; - 217914BBAE3847BF873C1386E1FAE9AA /* BaseChatItemPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FE7CDA883280C5BDFD7A2E6C025833A /* BaseChatItemPresenter.swift */; }; - 2500D71C245FFE4D6B9BFD4A2A1EDB85 /* CGSize+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C59631DCA268A4285E100821B4E160B /* CGSize+Additions.swift */; }; - 259AE37389BAB08398971B61C68C0202 /* PhotosInputWithPlaceholdersDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7C9C727136FE97562C19E9EED6E66C0 /* PhotosInputWithPlaceholdersDataProvider.swift */; }; - 28075012B4DC5D40D6B054A83AA81BF8 /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = F207983FB08AF781AE4FF881D8960FF0 /* Alignment.swift */; }; - 2CB7713B0D33C9E905F429EF16FB86DF /* DummyChatItemPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14B80E0E9904F4BFCCEA00B151D33F58 /* DummyChatItemPresenter.swift */; }; - 2CDB23CA2683F68395293EE5DBD427A8 /* LiveCameraCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 129420675D0E892156C6D5F890C31DE9 /* LiveCameraCell.swift */; }; - 2EDA353EE9074C181A7F628FF5255F35 /* PhotoMessagePresenterBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 054266A433FDCDF6CE22033EFC757A22 /* PhotoMessagePresenterBuilder.swift */; }; - 2F96149719263B6CB07600157780AF21 /* BaseChatViewControllerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E3235B63095189632DAF591C60640F6 /* BaseChatViewControllerView.swift */; }; - 31157864FC8DD8494902BD87CAEC950E /* TextMessagePresenterBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48A04A3FAAAFC0C4AAF832BBDE30C8D2 /* TextMessagePresenterBuilder.swift */; }; - 33C9126C93D8B4F3D6A1543B4C98618E /* ChatItemProtocolDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFD942A947D0F30C8639C1CBAB4AF302 /* ChatItemProtocolDefinitions.swift */; }; - 39FE01D5BD4A9F43AE61C39CCFC868D8 /* UIView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A8F4A40C1DC22FF561A2874120DDC74 /* UIView+Additions.swift */; }; - 3A87BB2197D9516F6A159670B8E98C26 /* TextMessageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7415D56E6E1F58660510D91A8808D437 /* TextMessageCollectionViewCell.swift */; }; - 3B378B2BBAC42362BDF8AB7F08688E8B /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F3B7809E5A273EF73736CF423B9CB5 /* Utils.swift */; }; - 3E008FC7A2FDDCCCF61C7BD94C131EBE /* PhotoBubbleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34BC85B23764467817891963F9FC304 /* PhotoBubbleView.swift */; }; - 3E32D7EA354D45031B987D3B0BA6B1F8 /* LiveCameraCellPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA258F8A88B4DE305AF692CEE5C855A7 /* LiveCameraCellPresenter.swift */; }; - 3E43C0A2E3955FC38026140E26B4E602 /* CircleProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = B9CD5BEE75214684960D2D0186F18D39 /* CircleProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3FB5355485D2570D0EE541C1C640812F /* ReadOnlyOrderedDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = A20874338A13B082557F5D7D5DAD78FE /* ReadOnlyOrderedDictionary.swift */; }; - 3FE7D49AAD12760C3809D3EF079033DF /* UIScreen+Scale.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8A201C1EFC6CB61F9E130E8293153B4 /* UIScreen+Scale.swift */; }; - 406F0C247B841E15DC8D6F0FF0420D73 /* KeyboardTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = F00A8A9ECFF12DCE30DABCE3E5E136D1 /* KeyboardTracker.swift */; }; - 43EB2F4B3C928EC0ABDE758E9A027F61 /* CircleProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AC84164493C29F99955F0D66AA4184 /* CircleProgressView.m */; }; - 48592135C286A8497752C7ED03A23CEE /* BaseMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8F1E432BC15A34A52E6583F21C1D526 /* BaseMessageModel.swift */; }; - 4C1E87BDED189A0548E50B02C69062B4 /* BaseMessageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 124000A3BF8B8398B7A22D9123A19ED0 /* BaseMessageViewModel.swift */; }; - 512A57DEB9B46A901C1FC10527041D36 /* ChatInputBarPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1270F50E949DF5F1FB5E317CBFC4E308 /* ChatInputBarPresenter.swift */; }; - 532E7EF69E5BE6723F2A4EFAB7ED6607 /* CollectionChanges.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05D5600D8E7D22AC3E225129F527765E /* CollectionChanges.swift */; }; - 59F5745760DD39E7FDE89A10CA21B948 /* CircleProgressIndicator.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 42EB7C4A601A189E1ED3EF6E420EEDA7 /* CircleProgressIndicator.xcassets */; }; - 5DB4ECF73BD0118F052100A502727579 /* TextMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09802F0177B7395415243C806A52ECE0 /* TextMessagePresenter.swift */; }; - 60C8B2C6A1B1CE596A82309FDB96EE56 /* ImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C3A8A70E90E0D7AF0C7506702585A4E /* ImagePicker.swift */; }; - 6355C90A3190FD3F4F748D9A50907DDE /* ChatItemDecorationAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7345926803B4C970357560D78597DB8 /* ChatItemDecorationAttributes.swift */; }; - 6CB02D239F26C9991C816CD677715057 /* Chatto-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 50A7B423BC8E6016073DE574AF7AB1F2 /* Chatto-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6D7F13AD0766C7171AA27435010DBD51 /* CircleIconView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ECE055A1AC334A37ED070AB2F0BA28D /* CircleIconView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 71E16DAE8DC770EB8839FFCED579143E /* Chatto.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ED7B54C4A2CE71FF6F698ED3A75D087 /* Chatto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 02CE3BA69F02E6B00F6314F1C867BF50 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F865526B535C40AA043DF3C40157EBB /* Utils.swift */; }; + 08F8014E7C34A1933EEE464F8A7FD948 /* PhotoBubbleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34BC85B23764467817891963F9FC304 /* PhotoBubbleView.swift */; }; + 0D08CE30D5143B5F68A145F915CED9A8 /* HorizontalStackScrollView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD8E4BB9487A80F70C29231EA1E6295 /* HorizontalStackScrollView.swift */; }; + 0E1462CEC9D2BB30016796D787FD3249 /* CGPoint+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD28FF28BA5E3CE8FC894E71C061E5F3 /* CGPoint+Additions.swift */; }; + 0E2A38FE6272887678D5B2619CDF028F /* TextMessageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7415D56E6E1F58660510D91A8808D437 /* TextMessageCollectionViewCell.swift */; }; + 11B2523F4443015EFDEA1DCCECF773D0 /* ChatInputBarAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 247A5E9062AE185F8515C9C35998CD31 /* ChatInputBarAppearance.swift */; }; + 123327C96E10DB97395C607A98CACEAB /* CircleProgressIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E72656362E555629AE7C98D6A4F14B3 /* CircleProgressIndicatorView.m */; }; + 131899ACA4567508E705F077A2402BEA /* PhotosInputPlaceholderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1FA7FF4FDB6920F132A3F86CF864637 /* PhotosInputPlaceholderCell.swift */; }; + 17A6A1AC584AAF6D214071188CF8D320 /* ChatInputBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = B1309CFDDC69D430EF26B5A607907C80 /* ChatInputBar.xib */; }; + 18CBC232D77FD725AF2592443A3CB3EA /* ReadOnlyOrderedDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB2038633747734D88B4D933A146AE67 /* ReadOnlyOrderedDictionary.swift */; }; + 19B33E6CD8D93361BF336564EFDC27B9 /* ChattoAdditions-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 11540919D58B7B56085DA340933B0FC1 /* ChattoAdditions-dummy.m */; }; + 1A55F588D2BCAE5761C6389011C02661 /* ChatInputBarPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1270F50E949DF5F1FB5E317CBFC4E308 /* ChatInputBarPresenter.swift */; }; + 1AAD77F43DDDAE59C60718AC186CBA3D /* UIColor+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4DF0809CC047786F4137E42373F4134 /* UIColor+Additions.swift */; }; + 1B78F3EB05EB13125FE568781D7486FF /* ChatItemCompanion.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFAF36B42F7ABC3D09FD5F061A0D6B79 /* ChatItemCompanion.swift */; }; + 1EB3B46D4FA4A07B31843E1A5785F7B0 /* BaseChatViewController+Changes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5263B9973D3B6EC8CA1C8402347E902B /* BaseChatViewController+Changes.swift */; }; + 2986205D8AC0CEEF268AE3E28A4878A9 /* BaseChatViewController+Scrolling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92D473620C87E8EF86FC76C5A564AC69 /* BaseChatViewController+Scrolling.swift */; }; + 3234AEC384AC96B20BA857B81DBFCC0C /* ChatLayoutConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D34645FF568A8A90706512A58824527 /* ChatLayoutConfiguration.swift */; }; + 325E12A4E947379B7B77829BBE990EAD /* CircleIconView.m in Sources */ = {isa = PBXBuildFile; fileRef = BF40955EBCA1F843EB6FD57E0B53E165 /* CircleIconView.m */; }; + 339A9E762CDD578F7DF8C8C9C5E34E97 /* BaseMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B229F9BCB567E2FBB872000A9E0ECD2 /* BaseMessagePresenter.swift */; }; + 355EA957643570570C38A1A965305096 /* UIScreen+Scale.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8A201C1EFC6CB61F9E130E8293153B4 /* UIScreen+Scale.swift */; }; + 36ECF3B6D22A9B26CF195921FA9FB166 /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = F207983FB08AF781AE4FF881D8960FF0 /* Alignment.swift */; }; + 37E5484E69AC3C4290114C9360C25321 /* Text.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D410A8560196ED567FD09A0BBCAAC9F8 /* Text.xcassets */; }; + 3990B9429830869037B61EB796198FAC /* SerialTaskQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFC940116D1FE152A8B4391C8179BAB7 /* SerialTaskQueue.swift */; }; + 3A524A7F6CC21ABBFD487AB542F665DC /* LiveCameraCellPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BBB172ACF8D5FC99A24F909709EF0A6 /* LiveCameraCellPresenter.swift */; }; + 3F6026561EF3D31C97E2F9C45648E444 /* ViewDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE00EA2B2F8904F2E6F64C976F9FC256 /* ViewDefinitions.swift */; }; + 3FFE645D7F0A109E86AC440814482B51 /* PhotosInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A891FD7583480DA1F43E049418524D2 /* PhotosInputView.swift */; }; + 406277494EF48172137FE4D41DE545DE /* ExpandableTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D001EAE1C66ADDE971DE7417AA9FC5D /* ExpandableTextView.swift */; }; + 41D047F989032464108E6EE8764FC8FF /* ChatInputBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92B5B3D91CB163330A0FD333E60DDCAB /* ChatInputBar.swift */; }; + 423A4E368CA258CE72ED24F0C784C28E /* ChattoAdditions-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 65540FDB9B6009E3AE2CD01F047293D9 /* ChattoAdditions-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 425EAF6463FECAA4723451596ECA40B3 /* ChatCollectionViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1C6AC04E26A1E1DE63AD1FAFE3232E6 /* ChatCollectionViewLayout.swift */; }; + 43618A8F6880123014BCFAD6EE452F43 /* CircleProgressIndicator.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 42EB7C4A601A189E1ED3EF6E420EEDA7 /* CircleProgressIndicator.xcassets */; }; + 46B23101F2C9EB6C2D8D0A925C3A3E35 /* LiveCameraCaptureSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC319BABE04FB7EE13FC04CC6841F22B /* LiveCameraCaptureSession.swift */; }; + 48D774F9DBC66F7B3328E4DF830C7E5A /* CircleIconView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ECE055A1AC334A37ED070AB2F0BA28D /* CircleIconView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 511CF5A6863FE5D4E5081DD49FDF685E /* UIView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A8F4A40C1DC22FF561A2874120DDC74 /* UIView+Additions.swift */; }; + 513D3AC06D6C5D629E8D618B00F13101 /* UIImage+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6D7F742DFE0768F96231D1F0733523 /* UIImage+Additions.swift */; }; + 536C46DC87D180A26FB697C425647696 /* CollectionChanges.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA3D6A8FA7B4733B47E59765BAAE50B0 /* CollectionChanges.swift */; }; + 5994C35B08BA5C89BFB59A96A28BCA0E /* Chatto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0A636ED63D4950987B5410B6B50F1B4 /* Chatto.framework */; }; + 5B2EB2FA2D00C9CA7B1B5774D6D1E6D5 /* CGSize+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C59631DCA268A4285E100821B4E160B /* CGSize+Additions.swift */; }; + 5CA864BA6C30472334EA61B8A6D9A59B /* CircleProgressIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = CA346CB6808EFE01AE75836A1F7A0698 /* CircleProgressIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5CC30B0AA5E0C72415D3C0467A8D4324 /* LiveCameraCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1487A45371AC8104BC0CE7C162FBF982 /* LiveCameraCell.swift */; }; + 5E08DBA5C1DCC7EA567AA8DC11DD64E1 /* BaseChatViewControllerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79432F3617D69C8DA909CFA540018DC4 /* BaseChatViewControllerView.swift */; }; + 60593D3B7251C8794767D33622E56259 /* PhotosInputCameraPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41213A169A1327F38C02D02FF4E7EAB4 /* PhotosInputCameraPicker.swift */; }; + 64658EDE7621DF8D7CA77870B1060D71 /* UIEdgeInsets+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653AC366611432A9FD809ECC143989E4 /* UIEdgeInsets+Additions.swift */; }; + 675AC2126A225E5DA52B5486BF106C4E /* PhotosInputWithPlaceholdersDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D89429FA94D510A5A6A77537122BBA05 /* PhotosInputWithPlaceholdersDataProvider.swift */; }; + 69D0AB53007DF11147A1B1EC8987DF50 /* ChatItemPresenterFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = B45107EC0B5669FFE263EEDC1376216D /* ChatItemPresenterFactory.swift */; }; + 6E58A916AF862E96FE9E1E80E9CF1628 /* TextBubbleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3BA07DBA51A986FB2A3D18DBB01B96 /* TextBubbleView.swift */; }; + 705ADC8E473A4FA09685E3A3938F71E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9FB20ED66AF2A93EB50539902AE6733 /* Foundation.framework */; }; + 705E7BFE90BC4F32123FD61B7D6DDE0D /* PhotoMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE1FCDE5DEF7DF407DE4318DBB83DB2D /* PhotoMessageModel.swift */; }; + 70FEFCFC2A8832EB145F3E18916D4022 /* BaseMessageAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8E530272C9C6DF0ABC40B6E61D3DD29C /* BaseMessageAssets.xcassets */; }; + 717869C722B7C46D09556EFB33A11486 /* Photos.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4A4DFA43E1F3E4B1A85CEFCEFC38500E /* Photos.xcassets */; }; + 71BD18B5F73AA8E71E88803C2D9AFFDC /* TextMessagePresenterBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48A04A3FAAAFC0C4AAF832BBDE30C8D2 /* TextMessagePresenterBuilder.swift */; }; 733ECA7D1AEA031AA153E7A49C281A19 /* Pods-ChattoApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D26F81AF79CA37D208D3C6511A534949 /* Pods-ChattoApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7507614804E28F304AD99EE5C8B67C43 /* LiveCameraCaptureSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9ABAEAD42B233C4C72F4D8C62D264AC /* LiveCameraCaptureSession.swift */; }; - 759100F5B47B2E76F5CA16E2F37532D3 /* Text.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D410A8560196ED567FD09A0BBCAAC9F8 /* Text.xcassets */; }; - 77E6F472B22328E2F6962FB06D4E8475 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9FB20ED66AF2A93EB50539902AE6733 /* Foundation.framework */; }; - 78F46BA4780730F9A3B1D419A4DC56BF /* PhotoMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE1FCDE5DEF7DF407DE4318DBB83DB2D /* PhotoMessageModel.swift */; }; - 7B0EBDA75601E029EA64F03E579D0663 /* ChatCollectionViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F938377FA02F6C0D99FD8706AC3C3D0 /* ChatCollectionViewLayout.swift */; }; - 7D20450EADD4BAEBAC1E1028D9768995 /* PhotoMessageAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7B09B7BBFF294077116E789BA62D48C /* PhotoMessageAssets.xcassets */; }; + 7C0EFEE9B9E3DE06B84E4765ED934ED1 /* ChatItemProtocolDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5DB80495DEC9A7A3F171F2C8144F441 /* ChatItemProtocolDefinitions.swift */; }; + 7C3B55D2D648098E0F561A189ADAD5B9 /* TextChatInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53D247BEFAB9EF120E4F010A1F91C4C6 /* TextChatInputItem.swift */; }; + 7C4D5F4CA2DAA84A15307B68ED914A97 /* BaseMessageCollectionViewCellDefaultStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E6B9EFA482498A8F7626B346CDED36D /* BaseMessageCollectionViewCellDefaultStyle.swift */; }; + 7EAA32B3B18209F7E9910D2A1F260361 /* ImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC7294781831F5B384F58E5C00EDFE61 /* ImagePicker.swift */; }; 7F663761FE373B0CB90C3906DC50E832 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9FB20ED66AF2A93EB50539902AE6733 /* Foundation.framework */; }; - 8060B6D103DA4161BF922E14847B8736 /* TextMessageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58BEF5E6331B2CB05F56D9E10C66A901 /* TextMessageViewModel.swift */; }; - 826A43BDFAD7AD06AE209B47592E31D0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9FB20ED66AF2A93EB50539902AE6733 /* Foundation.framework */; }; - 831E03B95B8F5E02ACF2250807749B41 /* SerialTaskQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1985774D53B3A1654C7775FD6A07A399 /* SerialTaskQueue.swift */; }; - 8867B0709DE6851C45CD27BC45D5E4E7 /* ChatItemPresenterFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19441BE50AD243FC9F2E75C3DE5B8E80 /* ChatItemPresenterFactory.swift */; }; - 8B417560642B39B55AB772AAAB4A5E25 /* PhotosInputCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B11277D4132D3470FC06F6E567361A /* PhotosInputCell.swift */; }; - 8F80B5B62BFD9C705AB6108ED449CCC1 /* PhotosChatInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A352E08BEB4912F511344FF68E6BF19 /* PhotosChatInputItem.swift */; }; - 902FA0B2997BA4D8AA0B17164278BBA7 /* UIColor+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4DF0809CC047786F4137E42373F4134 /* UIColor+Additions.swift */; }; - 919F6A1D05D00F1D815A5D6E30C16822 /* PhotosInputPlaceholderDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = D380068E3A21DDCA854A552D0681F12A /* PhotosInputPlaceholderDataProvider.swift */; }; + 827296B2AB1BCE4CCA8E47180866927D /* PhotosInputPlaceholderCellProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = C03CA7139E45D8B591A159B7EA591CFD /* PhotosInputPlaceholderCellProvider.swift */; }; + 89DF80AADDB0269D31EC805C0FD838E9 /* Chatto-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A42734C8FFED903A56F2ACA651B53739 /* Chatto-dummy.m */; }; + 8DD30642274B7A93D205FD54A552B006 /* BaseChatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EC50CE002F4C3E5F8C47AA3D6B63CA5 /* BaseChatViewController.swift */; }; + 90D09BB277BF9EC20D5C035DD35271D9 /* TabInputButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = A500CFC58AF814D90C69A58ED2780972 /* TabInputButton.swift */; }; + 915D77F697630FFFE9B7456BD9158909 /* PhotosChatInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3476C0B5EE071FF5997DED8B07EFA11C /* PhotosChatInputItem.swift */; }; + 936348BC9FA00DE4751CD9165E2D14E5 /* PhotoMessageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCD5E1BC57BB87C53CABBB55C3A86CE1 /* PhotoMessageCollectionViewCell.swift */; }; 93AC0348CFA081A20308C0FFA9A85A3A /* Pods-ChattoApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E3F504B152268D2F40F52A62C446408 /* Pods-ChattoApp-dummy.m */; }; - 93CD8A20A6A2DAA0C36A20F67C103030 /* BaseMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B229F9BCB567E2FBB872000A9E0ECD2 /* BaseMessagePresenter.swift */; }; - 9ECEBD5C0D9255BF6888EB9D5D19D77A /* PhotosInputCameraPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF479F563BA6247F15B5BA474AF80975 /* PhotosInputCameraPicker.swift */; }; - A06C6E4AAEF5C39720886BA18621C919 /* AnimationUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB7CAC59BED45C08C2E61CC07F82A24E /* AnimationUtils.swift */; }; - A1807B0B711E646B1E57F637E3D467FF /* CircleIconView.m in Sources */ = {isa = PBXBuildFile; fileRef = BF40955EBCA1F843EB6FD57E0B53E165 /* CircleIconView.m */; }; - A528EB120A5E7DC270E7E2F133D85B3C /* CGRect+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AE9343D0A945ED2AC24F7B0A390A4E7 /* CGRect+Additions.swift */; }; - A58BD56650DE9663F4A6B51B114E8921 /* PhotoMessageCollectionViewCellDefaultStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90B6821F7D9C990696D159A8A8F3885 /* PhotoMessageCollectionViewCellDefaultStyle.swift */; }; - A6A57EC7C8F3AA159B14477221F8C91A /* TextMessageCollectionViewCellDefaultStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE380B5B75A6D0600DBDE77FF958ADAE /* TextMessageCollectionViewCellDefaultStyle.swift */; }; - AA0B570656617383FE7AFCC873A3F6C0 /* PhotoMessageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCD5E1BC57BB87C53CABBB55C3A86CE1 /* PhotoMessageCollectionViewCell.swift */; }; - AAC97E757D1592775A9A9499FB555858 /* BaseMessageAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8E530272C9C6DF0ABC40B6E61D3DD29C /* BaseMessageAssets.xcassets */; }; - BD92A029D5888E3E83B13232899832BB /* PhotosInputViewItemSizeCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D0430B2B18F1C6A279939FE7FEAB97C /* PhotosInputViewItemSizeCalculator.swift */; }; - C12D5C1C7CF2DCC15D64201569A6A107 /* ReusableXibView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F14F86937C99E9B9182BDC8D3D66B884 /* ReusableXibView.swift */; }; - C5CA29B99659A34C87C587840BE8B1CA /* CircleProgressIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = CA346CB6808EFE01AE75836A1F7A0698 /* CircleProgressIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C888A6F89201A5B9148B199FCC3A1329 /* ChattoAdditions-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 11540919D58B7B56085DA340933B0FC1 /* ChattoAdditions-dummy.m */; }; - CABD18923698A9608DFCC1A0A27A0C80 /* UIEdgeInsets+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653AC366611432A9FD809ECC143989E4 /* UIEdgeInsets+Additions.swift */; }; - CC1DC524A231D132832C59A91CB5F2BC /* TextMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 128C8DC0F70D827A45AA0DD49B3689D6 /* TextMessageModel.swift */; }; - CC4F915B4A3E45BBFE4F9C409C345A2F /* ExpandableTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D001EAE1C66ADDE971DE7417AA9FC5D /* ExpandableTextView.swift */; }; - CD240780265A33455A58308A /* DeviceImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD2407785B3CE07C044E5860 /* DeviceImagePicker.swift */; }; - CD240FBFE867CEE2C20A2C71 /* SimulatorImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD240F278096B97B5422DDEC /* SimulatorImagePicker.swift */; }; - CEB217F536637B792CD39700C6C09996 /* ChatInputBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92B5B3D91CB163330A0FD333E60DDCAB /* ChatInputBar.swift */; }; - D383F5FDC2D260D8358A206310B7FC68 /* ViewDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE00EA2B2F8904F2E6F64C976F9FC256 /* ViewDefinitions.swift */; }; - D653E8F4A1DAF0E61DF020F622DBA1D1 /* BaseMessageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88C185C185C37220F2DB10F36D736542 /* BaseMessageCollectionViewCell.swift */; }; - D9F713EAC4BD81B407957E3E29FEDE79 /* ChattoAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AD9B97CEBDD8AFB58128F14ACBBBC412 /* ChattoAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAD6EDFF6F4E25EFB1DC50E550732E15 /* CGFloat+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40601F885EEF498338F0F3D0940B99F /* CGFloat+Additions.swift */; }; - DF03B550764571CA287E0B4B8CFD5DB2 /* CGPoint+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD28FF28BA5E3CE8FC894E71C061E5F3 /* CGPoint+Additions.swift */; }; - DF0DD294440693888AE371BD30638C9A /* ChatInputItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AA587742C30D113BA584FA54710FD0A /* ChatInputItemView.swift */; }; - DFB12A9A065E868FE0EE84C6126EA37C /* CircleProgressIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E72656362E555629AE7C98D6A4F14B3 /* CircleProgressIndicatorView.m */; }; - E087569EF5E356913098318056B77BE3 /* ChatInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E401C6009E6CBFD1139547BA604FB9 /* ChatInputItem.swift */; }; - E3FF292D87A07BA67A729AD36AEF5076 /* BaseChatViewController+Changes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46581CCBDE0B2F41FF3265FC82B1E001 /* BaseChatViewController+Changes.swift */; }; - E601017C14729E02A50CC61844F9FC16 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62614FA915BDC7A6FA98EC080BC0FE2 /* Observable.swift */; }; - ED3A9540FCF8929A92605DD482096345 /* ChattoAdditions-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 65540FDB9B6009E3AE2CD01F047293D9 /* ChattoAdditions-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED8761914EA48870B07EF342B4C412B1 /* PhotosInputPlaceholderCellProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663915E51C99CC0E3FF755D7D7C9B964 /* PhotosInputPlaceholderCellProvider.swift */; }; - F0A451A28135770A80CAE3312B2E396F /* ChatInputBarAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 247A5E9062AE185F8515C9C35998CD31 /* ChatInputBarAppearance.swift */; }; - F122757D5AE43AEA5224C57D6BC791F3 /* Chatto.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0A636ED63D4950987B5410B6B50F1B4 /* Chatto.framework */; }; - F44F9E965318C8D275A6D6F27D2BB14E /* Chatto-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 55826B807503BE7DDC77A0B9310616CF /* Chatto-dummy.m */; }; - F6A0282EDBB0B7785CC58190CCFE9F8B /* BaseChatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC6D20F1A27D9120A64F63AE5A503034 /* BaseChatViewController.swift */; }; - F721CCDBC314636F25FC84F9002014A3 /* TextBubbleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3BA07DBA51A986FB2A3D18DBB01B96 /* TextBubbleView.swift */; }; - FA5A27A37622D781F82E51B25551880F /* UIImage+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD6D7F742DFE0768F96231D1F0733523 /* UIImage+Additions.swift */; }; - FB8866C5639D10A9D6EF04ADC4667542 /* TextChatInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53D247BEFAB9EF120E4F010A1F91C4C6 /* TextChatInputItem.swift */; }; - FC9C847E639368AE9DCD4F4C0D745EF3 /* ChatItemCompanion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4510561EB01709E73B706E8CD931E27D /* ChatItemCompanion.swift */; }; - FD053593E7C6C6E82265C241782F45F9 /* PhotoMessageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAE542D15277B59EF8C23E3086B388A7 /* PhotoMessageViewModel.swift */; }; + 97E2827833D127D296B3901D29C13755 /* PhotosInputCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40C59E85FF73F4E4F180194642C7E7EC /* PhotosInputCell.swift */; }; + 9EA2120DF77F7DEFECC22032F1F58B29 /* BaseChatItemPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C8247FEE16DD077AD31937F3E008A95 /* BaseChatItemPresenter.swift */; }; + 9FEF95A21384F801D04965CDD64C71FD /* DummyChatItemPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4599A7F6AEF15DFF28C49B6FF667278 /* DummyChatItemPresenter.swift */; }; + A3A132D4E243506251D0448F08935B93 /* KeyboardTracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22F371B3EBB2A7B84B11B4687A5A4122 /* KeyboardTracker.swift */; }; + A5617DD5238B2EDE314D6A9110CFE391 /* CGFloat+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40601F885EEF498338F0F3D0940B99F /* CGFloat+Additions.swift */; }; + A58FE8D84B5F1F4663AEDC149E3AE434 /* TextMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09802F0177B7395415243C806A52ECE0 /* TextMessagePresenter.swift */; }; + A636C4EF6A2A6F9D9EBCFA15FF972F8E /* BaseMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8F1E432BC15A34A52E6583F21C1D526 /* BaseMessageModel.swift */; }; + A8C83B165CC00166011D78F473DE88A6 /* PhotosInputDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 899948B07AF10EFF958FE42E03002B4E /* PhotosInputDataProvider.swift */; }; + AD1F7BADAF279FADDC4712746786715E /* DeviceImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE216F909C038FBAE3679CB0E9126AE0 /* DeviceImagePicker.swift */; }; + AD34D11B6CFA8A807BCA16A1142A338D /* CGRect+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AE9343D0A945ED2AC24F7B0A390A4E7 /* CGRect+Additions.swift */; }; + ADA8733CB0BB2891CF2F5CA6D5BCD1B1 /* ReusableXibView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F14F86937C99E9B9182BDC8D3D66B884 /* ReusableXibView.swift */; }; + AF114E4CFA26AE52F2937237CDCD91EA /* ChatDataSourceProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87C8C12E18BF8E7E2EE26A2412E9DCFD /* ChatDataSourceProtocol.swift */; }; + B129DBB873EBB17585033BC75A427C60 /* PhotosInputPlaceholderDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42841D9D846D9781CEFA4938F59760F0 /* PhotosInputPlaceholderDataProvider.swift */; }; + BCE0DE4E6A81CBFA97A854FEB12D5748 /* PhotoMessageAssets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F7B09B7BBFF294077116E789BA62D48C /* PhotoMessageAssets.xcassets */; }; + BFF30F4F1C7C3C91BA39B53F1A62F287 /* ChatInputItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E401C6009E6CBFD1139547BA604FB9 /* ChatInputItem.swift */; }; + C28C7557A9E4881AADAFFCA19436CBE3 /* SimulatorImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 320D17D55C07803D11384BBBA2A5ACEE /* SimulatorImagePicker.swift */; }; + C69B980A6911B033AC36CE4274FE6E46 /* CircleProgressView.h in Headers */ = {isa = PBXBuildFile; fileRef = B9CD5BEE75214684960D2D0186F18D39 /* CircleProgressView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C89141D3D6A38A0B2522C3AAE6885F34 /* PhotoMessagePresenterBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 054266A433FDCDF6CE22033EFC757A22 /* PhotoMessagePresenterBuilder.swift */; }; + CAFE51A88BA6BA95E5FC6AF81F3CDA1A /* ChattoAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = AD9B97CEBDD8AFB58128F14ACBBBC412 /* ChattoAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CCDFEE7929998DB07E8FB8D20E610BF8 /* PhotosInputViewItemSizeCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C474939F7D05C999342F3B5B9F5D5168 /* PhotosInputViewItemSizeCalculator.swift */; }; + D30F9E46E572C3BDF4673218FA283CDC /* ChatInputItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AA587742C30D113BA584FA54710FD0A /* ChatInputItemView.swift */; }; + D5BABA0BE0A5BD093648652DC808A8AD /* ChatItemDecorationAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7345926803B4C970357560D78597DB8 /* ChatItemDecorationAttributes.swift */; }; + D6A412953E5130899000DCA9A94D49F2 /* BaseChatViewController+AccessoryViewRevealer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26FA5B1C9839F216FBAC1C8381EA6620 /* BaseChatViewController+AccessoryViewRevealer.swift */; }; + D78FBF1B215BDDD7F5B40F9F0DF73DB7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9FB20ED66AF2A93EB50539902AE6733 /* Foundation.framework */; }; + D9A9FD53F50423D1D8FEA054E8B81098 /* BaseMessageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 124000A3BF8B8398B7A22D9123A19ED0 /* BaseMessageViewModel.swift */; }; + DE5169876329E95228222EF2EA32C713 /* TextMessageCollectionViewCellDefaultStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE380B5B75A6D0600DBDE77FF958ADAE /* TextMessageCollectionViewCellDefaultStyle.swift */; }; + E0EF8F5002F1FB2CCDBFD4CB23D85CCA /* TextMessageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58BEF5E6331B2CB05F56D9E10C66A901 /* TextMessageViewModel.swift */; }; + E18F6A8194F510AC0B084DCA7FA9922C /* Chatto-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F8FDFD950B2CEC7365059B707D140D1 /* Chatto-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1CC3FDDBFF4973752A92184E17B8F68 /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A62614FA915BDC7A6FA98EC080BC0FE2 /* Observable.swift */; }; + E5240ACB57998CFD77EE321359242C05 /* AccessoryViewRevealer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73CF432CF510FECB05A97059F541A9C9 /* AccessoryViewRevealer.swift */; }; + E89FC072AC9479505161CE9EB863C553 /* PhotosInputCellProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15D9AC49FF1CA66072C8F284D4615DEE /* PhotosInputCellProvider.swift */; }; + EB33B65CCACA9146870CEEB75CC21BC4 /* Chatto.h in Headers */ = {isa = PBXBuildFile; fileRef = BBC0872AFC21DBB1EF8C9775F215B756 /* Chatto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F13E099F9760BDADA5EA165B3D2BD014 /* PhotoMessageCollectionViewCellDefaultStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90B6821F7D9C990696D159A8A8F3885 /* PhotoMessageCollectionViewCellDefaultStyle.swift */; }; + F43492C2CEDEEA15778EE3EBAE4FA5C1 /* PhotoMessageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAE542D15277B59EF8C23E3086B388A7 /* PhotoMessageViewModel.swift */; }; + F4C269E8BB9AD5A1B691D7AB8A39D6CA /* BaseChatViewController+Presenters.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7FA81C32043964F72CC0BD5E1AF4FEA /* BaseChatViewController+Presenters.swift */; }; + F68E941704E05913133B1FC3DC1EAE34 /* TextMessageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 128C8DC0F70D827A45AA0DD49B3689D6 /* TextMessageModel.swift */; }; + F7385667FB15B42285F2739E5E192B52 /* PhotoMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA0E54B122003939CAFC03AE0FA4B5DC /* PhotoMessagePresenter.swift */; }; + FA7188EC15ECB27E3D34E079BAC86D52 /* BaseMessageCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88C185C185C37220F2DB10F36D736542 /* BaseMessageCollectionViewCell.swift */; }; + FC4DA29E0DA40655AAAB6FA4F90079AC /* AnimationUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB7CAC59BED45C08C2E61CC07F82A24E /* AnimationUtils.swift */; }; + FEA25065497E0BAE3FB16FC666C91DAC /* CircleProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = D5AC84164493C29F99955F0D66AA4184 /* CircleProgressView.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -117,174 +118,175 @@ isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = DCD24D044DCB3D3A8BB5461EC53DE4E2; + remoteGlobalIDString = CB03F082A875F222026BAF0346E84EC5; remoteInfo = ChattoAdditions; }; 919991093F4ADC46C15C3FE1FE49290F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 0564C2782D1F2F8E464CB332E0FE7246; + remoteGlobalIDString = F3B3A79B2EF929FE3E146E8B922BFFF3; remoteInfo = Chatto; }; - E15D700B0C37BBB75A542999FE2533A3 /* PBXContainerItemProxy */ = { + 9830C72812585E9B6D4D7550B0BCA291 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 0564C2782D1F2F8E464CB332E0FE7246; + remoteGlobalIDString = F3B3A79B2EF929FE3E146E8B922BFFF3; remoteInfo = Chatto; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 050EA91E2E5DB5E650DBAF3DD412C1FB /* Chatto.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = Chatto.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 054266A433FDCDF6CE22033EFC757A22 /* PhotoMessagePresenterBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoMessagePresenterBuilder.swift; sourceTree = ""; }; - 05D5600D8E7D22AC3E225129F527765E /* CollectionChanges.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionChanges.swift; sourceTree = ""; }; 09802F0177B7395415243C806A52ECE0 /* TextMessagePresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextMessagePresenter.swift; sourceTree = ""; }; + 0BBB172ACF8D5FC99A24F909709EF0A6 /* LiveCameraCellPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiveCameraCellPresenter.swift; sourceTree = ""; }; 0E8CD230BF38884D8498CDDAC2BD0AE7 /* Chatto.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Chatto.framework; path = Chatto.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 11540919D58B7B56085DA340933B0FC1 /* ChattoAdditions-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ChattoAdditions-dummy.m"; sourceTree = ""; }; + 1223839FD87970CC27C696E8AFC08B73 /* Chatto.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Chatto.xcconfig; sourceTree = ""; }; 124000A3BF8B8398B7A22D9123A19ED0 /* BaseMessageViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseMessageViewModel.swift; sourceTree = ""; }; 1270F50E949DF5F1FB5E317CBFC4E308 /* ChatInputBarPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatInputBarPresenter.swift; sourceTree = ""; }; 128C8DC0F70D827A45AA0DD49B3689D6 /* TextMessageModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextMessageModel.swift; sourceTree = ""; }; - 129420675D0E892156C6D5F890C31DE9 /* LiveCameraCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiveCameraCell.swift; sourceTree = ""; }; - 14B80E0E9904F4BFCCEA00B151D33F58 /* DummyChatItemPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DummyChatItemPresenter.swift; sourceTree = ""; }; - 19441BE50AD243FC9F2E75C3DE5B8E80 /* ChatItemPresenterFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatItemPresenterFactory.swift; sourceTree = ""; }; + 1487A45371AC8104BC0CE7C162FBF982 /* LiveCameraCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiveCameraCell.swift; sourceTree = ""; }; + 15D9AC49FF1CA66072C8F284D4615DEE /* PhotosInputCellProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputCellProvider.swift; sourceTree = ""; }; 196E807B9D564A10BFF03F9C19F2A61B /* Pods-ChattoApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ChattoApp.release.xcconfig"; sourceTree = ""; }; - 1985774D53B3A1654C7775FD6A07A399 /* SerialTaskQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SerialTaskQueue.swift; path = Chatto/Source/SerialTaskQueue.swift; sourceTree = ""; }; 1D001EAE1C66ADDE971DE7417AA9FC5D /* ExpandableTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExpandableTextView.swift; sourceTree = ""; }; + 1D34645FF568A8A90706512A58824527 /* ChatLayoutConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatLayoutConfiguration.swift; sourceTree = ""; }; + 1E18E8AA22C49C13E1C5CF858B738DC8 /* Chatto.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Chatto.modulemap; sourceTree = ""; }; + 22F371B3EBB2A7B84B11B4687A5A4122 /* KeyboardTracker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeyboardTracker.swift; sourceTree = ""; }; 247A5E9062AE185F8515C9C35998CD31 /* ChatInputBarAppearance.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatInputBarAppearance.swift; sourceTree = ""; }; - 29247C83C1B2146FA34637DA7510391C /* Chatto.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Chatto.modulemap; sourceTree = ""; }; + 26FA5B1C9839F216FBAC1C8381EA6620 /* BaseChatViewController+AccessoryViewRevealer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BaseChatViewController+AccessoryViewRevealer.swift"; sourceTree = ""; }; 2A8F4A40C1DC22FF561A2874120DDC74 /* UIView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIView+Additions.swift"; sourceTree = ""; }; 2AE9343D0A945ED2AC24F7B0A390A4E7 /* CGRect+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGRect+Additions.swift"; sourceTree = ""; }; + 2B4EB484C6FA399B96990E1C79915E64 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 2DD8E4BB9487A80F70C29231EA1E6295 /* HorizontalStackScrollView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = HorizontalStackScrollView.swift; sourceTree = ""; }; 2E72656362E555629AE7C98D6A4F14B3 /* CircleProgressIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CircleProgressIndicatorView.m; sourceTree = ""; }; - 2E8F42B307C00B2A41B5509D17EE211A /* PhotosInputCellProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputCellProvider.swift; sourceTree = ""; }; - 2F938377FA02F6C0D99FD8706AC3C3D0 /* ChatCollectionViewLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatCollectionViewLayout.swift; sourceTree = ""; }; - 3C3A8A70E90E0D7AF0C7506702585A4E /* ImagePicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImagePicker.swift; sourceTree = ""; }; - 3ED7B54C4A2CE71FF6F698ED3A75D087 /* Chatto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Chatto.h; path = Chatto/Source/Chatto.h; sourceTree = ""; }; - 425AA302DBD7925EAF5AC414D86AEA0B /* BaseChatViewController+AccessoryViewRevealer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BaseChatViewController+AccessoryViewRevealer.swift"; sourceTree = ""; }; + 320D17D55C07803D11384BBBA2A5ACEE /* SimulatorImagePicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SimulatorImagePicker.swift; sourceTree = ""; }; + 3476C0B5EE071FF5997DED8B07EFA11C /* PhotosChatInputItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosChatInputItem.swift; sourceTree = ""; }; + 40C59E85FF73F4E4F180194642C7E7EC /* PhotosInputCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputCell.swift; sourceTree = ""; }; + 41213A169A1327F38C02D02FF4E7EAB4 /* PhotosInputCameraPicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputCameraPicker.swift; sourceTree = ""; }; + 42841D9D846D9781CEFA4938F59760F0 /* PhotosInputPlaceholderDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputPlaceholderDataProvider.swift; sourceTree = ""; }; 42EB7C4A601A189E1ED3EF6E420EEDA7 /* CircleProgressIndicator.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; path = CircleProgressIndicator.xcassets; sourceTree = ""; }; - 43B11277D4132D3470FC06F6E567361A /* PhotosInputCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputCell.swift; sourceTree = ""; }; - 4510561EB01709E73B706E8CD931E27D /* ChatItemCompanion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatItemCompanion.swift; sourceTree = ""; }; - 46581CCBDE0B2F41FF3265FC82B1E001 /* BaseChatViewController+Changes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BaseChatViewController+Changes.swift"; sourceTree = ""; }; 48A04A3FAAAFC0C4AAF832BBDE30C8D2 /* TextMessagePresenterBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextMessagePresenterBuilder.swift; sourceTree = ""; }; 4A4DFA43E1F3E4B1A85CEFCEFC38500E /* Photos.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; path = Photos.xcassets; sourceTree = ""; }; + 4A891FD7583480DA1F43E049418524D2 /* PhotosInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputView.swift; sourceTree = ""; }; 4E3F504B152268D2F40F52A62C446408 /* Pods-ChattoApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ChattoApp-dummy.m"; sourceTree = ""; }; - 4F90FA6D4FBA6832B0032AB803E89430 /* Chatto.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Chatto.xcconfig; sourceTree = ""; }; + 4F8FDFD950B2CEC7365059B707D140D1 /* Chatto-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Chatto-umbrella.h"; sourceTree = ""; }; 504410F6DF88345B0FC1D58FA4067A66 /* Pods-ChattoApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ChattoApp-acknowledgements.markdown"; sourceTree = ""; }; - 50A7B423BC8E6016073DE574AF7AB1F2 /* Chatto-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Chatto-umbrella.h"; sourceTree = ""; }; + 5263B9973D3B6EC8CA1C8402347E902B /* BaseChatViewController+Changes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BaseChatViewController+Changes.swift"; sourceTree = ""; }; 53D247BEFAB9EF120E4F010A1F91C4C6 /* TextChatInputItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextChatInputItem.swift; sourceTree = ""; }; - 55826B807503BE7DDC77A0B9310616CF /* Chatto-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Chatto-dummy.m"; sourceTree = ""; }; 58BEF5E6331B2CB05F56D9E10C66A901 /* TextMessageViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextMessageViewModel.swift; sourceTree = ""; }; - 593C30E9D0A0055838C2854296640A47 /* PhotosInputPlaceholderCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputPlaceholderCell.swift; sourceTree = ""; }; 5AA587742C30D113BA584FA54710FD0A /* ChatInputItemView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatInputItemView.swift; sourceTree = ""; }; - 5D0430B2B18F1C6A279939FE7FEAB97C /* PhotosInputViewItemSizeCalculator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputViewItemSizeCalculator.swift; sourceTree = ""; }; + 5C8247FEE16DD077AD31937F3E008A95 /* BaseChatItemPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseChatItemPresenter.swift; sourceTree = ""; }; 65042A58B2844DF8AA45E985932D0640 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 653AC366611432A9FD809ECC143989E4 /* UIEdgeInsets+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIEdgeInsets+Additions.swift"; sourceTree = ""; }; 65540FDB9B6009E3AE2CD01F047293D9 /* ChattoAdditions-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ChattoAdditions-umbrella.h"; sourceTree = ""; }; - 663915E51C99CC0E3FF755D7D7C9B964 /* PhotosInputPlaceholderCellProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputPlaceholderCellProvider.swift; sourceTree = ""; }; - 6689FB692180AEBAC101759EAD0116C2 /* AccessoryViewRevealer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AccessoryViewRevealer.swift; sourceTree = ""; }; - 6A352E08BEB4912F511344FF68E6BF19 /* PhotosChatInputItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosChatInputItem.swift; sourceTree = ""; }; 6DAEAB5DAC1307E56BDF15E9DDC72623 /* Pods_ChattoApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_ChattoApp.framework; path = "Pods-ChattoApp.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 6E3235B63095189632DAF591C60640F6 /* BaseChatViewControllerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseChatViewControllerView.swift; sourceTree = ""; }; + 73CF432CF510FECB05A97059F541A9C9 /* AccessoryViewRevealer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AccessoryViewRevealer.swift; sourceTree = ""; }; 7415D56E6E1F58660510D91A8808D437 /* TextMessageCollectionViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextMessageCollectionViewCell.swift; sourceTree = ""; }; 75A4D0F8C860BD4281E8AED08E680907 /* ChattoAdditions.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ChattoAdditions.framework; path = ChattoAdditions.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 76C8CE48F21BBD79C3E57E7C28E5A051 /* Pods-ChattoApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ChattoApp.modulemap"; sourceTree = ""; }; + 79432F3617D69C8DA909CFA540018DC4 /* BaseChatViewControllerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseChatViewControllerView.swift; sourceTree = ""; }; + 7F865526B535C40AA043DF3C40157EBB /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Chatto/Source/Utils.swift; sourceTree = ""; }; 84E401C6009E6CBFD1139547BA604FB9 /* ChatInputItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatInputItem.swift; sourceTree = ""; }; + 87C8C12E18BF8E7E2EE26A2412E9DCFD /* ChatDataSourceProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatDataSourceProtocol.swift; sourceTree = ""; }; 88C185C185C37220F2DB10F36D736542 /* BaseMessageCollectionViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseMessageCollectionViewCell.swift; sourceTree = ""; }; + 899948B07AF10EFF958FE42E03002B4E /* PhotosInputDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputDataProvider.swift; sourceTree = ""; }; 8A58C02B190EA9F6AE9FB698D29DCBC1 /* ChattoAdditions.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ChattoAdditions.xcconfig; sourceTree = ""; }; 8B229F9BCB567E2FBB872000A9E0ECD2 /* BaseMessagePresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseMessagePresenter.swift; sourceTree = ""; }; 8C59631DCA268A4285E100821B4E160B /* CGSize+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGSize+Additions.swift"; sourceTree = ""; }; + 8E21EA7E35385D3F8E558237788FEAB5 /* Chatto.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = Chatto.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 8E530272C9C6DF0ABC40B6E61D3DD29C /* BaseMessageAssets.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; path = BaseMessageAssets.xcassets; sourceTree = ""; }; 8E6B9EFA482498A8F7626B346CDED36D /* BaseMessageCollectionViewCellDefaultStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseMessageCollectionViewCellDefaultStyle.swift; sourceTree = ""; }; + 8EC50CE002F4C3E5F8C47AA3D6B63CA5 /* BaseChatViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseChatViewController.swift; sourceTree = ""; }; 8ECE055A1AC334A37ED070AB2F0BA28D /* CircleIconView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CircleIconView.h; sourceTree = ""; }; - 8FE7CDA883280C5BDFD7A2E6C025833A /* BaseChatItemPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseChatItemPresenter.swift; sourceTree = ""; }; 92B5B3D91CB163330A0FD333E60DDCAB /* ChatInputBar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatInputBar.swift; sourceTree = ""; }; + 92D473620C87E8EF86FC76C5A564AC69 /* BaseChatViewController+Scrolling.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BaseChatViewController+Scrolling.swift"; sourceTree = ""; }; 93A4A3777CF96A4AAC1D13BA6DCCEA73 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 97A51306EDB159C470E24D9B26BBB9E4 /* ChattoAdditions.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; lastKnownFileType = text; path = ChattoAdditions.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 9D6AE0AE7C9D70F0256D868912937354 /* Pods-ChattoApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ChattoApp.debug.xcconfig"; sourceTree = ""; }; - 9D6F0E45378AD0C6B71082D352CC260B /* PhotosInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputView.swift; sourceTree = ""; }; - A20874338A13B082557F5D7D5DAD78FE /* ReadOnlyOrderedDictionary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReadOnlyOrderedDictionary.swift; path = Chatto/Source/ReadOnlyOrderedDictionary.swift; sourceTree = ""; }; + A42734C8FFED903A56F2ACA651B53739 /* Chatto-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Chatto-dummy.m"; sourceTree = ""; }; A500CFC58AF814D90C69A58ED2780972 /* TabInputButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TabInputButton.swift; sourceTree = ""; }; A62614FA915BDC7A6FA98EC080BC0FE2 /* Observable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = ""; }; - A7C9C727136FE97562C19E9EED6E66C0 /* PhotosInputWithPlaceholdersDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputWithPlaceholdersDataProvider.swift; sourceTree = ""; }; + AB2038633747734D88B4D933A146AE67 /* ReadOnlyOrderedDictionary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ReadOnlyOrderedDictionary.swift; path = Chatto/Source/ReadOnlyOrderedDictionary.swift; sourceTree = ""; }; AB7CAC59BED45C08C2E61CC07F82A24E /* AnimationUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnimationUtils.swift; sourceTree = ""; }; AD6D7F742DFE0768F96231D1F0733523 /* UIImage+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIImage+Additions.swift"; sourceTree = ""; }; AD9B97CEBDD8AFB58128F14ACBBBC412 /* ChattoAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ChattoAdditions.h; path = ChattoAdditions/Source/ChattoAdditions.h; sourceTree = ""; }; AE1FCDE5DEF7DF407DE4318DBB83DB2D /* PhotoMessageModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoMessageModel.swift; sourceTree = ""; }; - AFB8A0CFBD7C0AE7CB03BF74160D4DBA /* BaseChatViewController+Scrolling.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BaseChatViewController+Scrolling.swift"; sourceTree = ""; }; + AFC940116D1FE152A8B4391C8179BAB7 /* SerialTaskQueue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SerialTaskQueue.swift; path = Chatto/Source/SerialTaskQueue.swift; sourceTree = ""; }; B1309CFDDC69D430EF26B5A607907C80 /* ChatInputBar.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; path = ChatInputBar.xib; sourceTree = ""; }; + B1C6AC04E26A1E1DE63AD1FAFE3232E6 /* ChatCollectionViewLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatCollectionViewLayout.swift; sourceTree = ""; }; + B1FA7FF4FDB6920F132A3F86CF864637 /* PhotosInputPlaceholderCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputPlaceholderCell.swift; sourceTree = ""; }; + B45107EC0B5669FFE263EEDC1376216D /* ChatItemPresenterFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatItemPresenterFactory.swift; sourceTree = ""; }; B4DF0809CC047786F4137E42373F4134 /* UIColor+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+Additions.swift"; sourceTree = ""; }; B9CD5BEE75214684960D2D0186F18D39 /* CircleProgressView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CircleProgressView.h; sourceTree = ""; }; + BA3D6A8FA7B4733B47E59765BAAE50B0 /* CollectionChanges.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CollectionChanges.swift; sourceTree = ""; }; + BBC0872AFC21DBB1EF8C9775F215B756 /* Chatto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Chatto.h; path = Chatto/Source/Chatto.h; sourceTree = ""; }; + BC319BABE04FB7EE13FC04CC6841F22B /* LiveCameraCaptureSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiveCameraCaptureSession.swift; sourceTree = ""; }; BCB8F6E24C6E77A45A1B8328196C855C /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; BCD5E1BC57BB87C53CABBB55C3A86CE1 /* PhotoMessageCollectionViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoMessageCollectionViewCell.swift; sourceTree = ""; }; + BE216F909C038FBAE3679CB0E9126AE0 /* DeviceImagePicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeviceImagePicker.swift; sourceTree = ""; }; BE380B5B75A6D0600DBDE77FF958ADAE /* TextMessageCollectionViewCellDefaultStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextMessageCollectionViewCellDefaultStyle.swift; sourceTree = ""; }; BF40955EBCA1F843EB6FD57E0B53E165 /* CircleIconView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CircleIconView.m; sourceTree = ""; }; - BF479F563BA6247F15B5BA474AF80975 /* PhotosInputCameraPicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputCameraPicker.swift; sourceTree = ""; }; + C03CA7139E45D8B591A159B7EA591CFD /* PhotosInputPlaceholderCellProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputPlaceholderCellProvider.swift; sourceTree = ""; }; C40601F885EEF498338F0F3D0940B99F /* CGFloat+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGFloat+Additions.swift"; sourceTree = ""; }; + C474939F7D05C999342F3B5B9F5D5168 /* PhotosInputViewItemSizeCalculator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputViewItemSizeCalculator.swift; sourceTree = ""; }; C69DB6FA1411C4887C437DA609C8019E /* ChattoAdditions.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ChattoAdditions.modulemap; sourceTree = ""; }; - C7A3114802D19936B30971AC47A85BAD /* BaseChatViewController+Presenters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BaseChatViewController+Presenters.swift"; sourceTree = ""; }; C9FB20ED66AF2A93EB50539902AE6733 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; CA0E54B122003939CAFC03AE0FA4B5DC /* PhotoMessagePresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoMessagePresenter.swift; sourceTree = ""; }; CA346CB6808EFE01AE75836A1F7A0698 /* CircleProgressIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CircleProgressIndicatorView.h; sourceTree = ""; }; - CD2407785B3CE07C044E5860 /* DeviceImagePicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeviceImagePicker.swift; sourceTree = ""; }; - CD240F278096B97B5422DDEC /* SimulatorImagePicker.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimulatorImagePicker.swift; sourceTree = ""; }; + CFAF36B42F7ABC3D09FD5F061A0D6B79 /* ChatItemCompanion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatItemCompanion.swift; sourceTree = ""; }; D0A636ED63D4950987B5410B6B50F1B4 /* Chatto.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Chatto.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D2408AA70D73DDBDEFCBB4C7ADE29172 /* Pods-ChattoApp-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ChattoApp-resources.sh"; sourceTree = ""; }; D26F81AF79CA37D208D3C6511A534949 /* Pods-ChattoApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ChattoApp-umbrella.h"; sourceTree = ""; }; - D380068E3A21DDCA854A552D0681F12A /* PhotosInputPlaceholderDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputPlaceholderDataProvider.swift; sourceTree = ""; }; D410A8560196ED567FD09A0BBCAAC9F8 /* Text.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; path = Text.xcassets; sourceTree = ""; }; D5AC84164493C29F99955F0D66AA4184 /* CircleProgressView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = CircleProgressView.m; sourceTree = ""; }; - D9E20DA473442F4FE951198139ADCB9A /* ChatDataSourceProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatDataSourceProtocol.swift; sourceTree = ""; }; - DA258F8A88B4DE305AF692CEE5C855A7 /* LiveCameraCellPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiveCameraCellPresenter.swift; sourceTree = ""; }; + D7FA81C32043964F72CC0BD5E1AF4FEA /* BaseChatViewController+Presenters.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "BaseChatViewController+Presenters.swift"; sourceTree = ""; }; + D89429FA94D510A5A6A77537122BBA05 /* PhotosInputWithPlaceholdersDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputWithPlaceholdersDataProvider.swift; sourceTree = ""; }; DAE542D15277B59EF8C23E3086B388A7 /* PhotoMessageViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoMessageViewModel.swift; sourceTree = ""; }; DB3BA07DBA51A986FB2A3D18DBB01B96 /* TextBubbleView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TextBubbleView.swift; sourceTree = ""; }; - DBA64E0B302B8C3DAD22C389E3F73CFB /* PhotosInputDataProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotosInputDataProvider.swift; sourceTree = ""; }; - DC63AB949B66E4124657A68C82D45349 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DC6D20F1A27D9120A64F63AE5A503034 /* BaseChatViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseChatViewController.swift; sourceTree = ""; }; + DC7294781831F5B384F58E5C00EDFE61 /* ImagePicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImagePicker.swift; sourceTree = ""; }; DE00EA2B2F8904F2E6F64C976F9FC256 /* ViewDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ViewDefinitions.swift; sourceTree = ""; }; + E4599A7F6AEF15DFF28C49B6FF667278 /* DummyChatItemPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DummyChatItemPresenter.swift; sourceTree = ""; }; + E5DB80495DEC9A7A3F171F2C8144F441 /* ChatItemProtocolDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatItemProtocolDefinitions.swift; sourceTree = ""; }; E6E414FA5AE66A6E8074D4AAED7C914E /* Pods-ChattoApp-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ChattoApp-frameworks.sh"; sourceTree = ""; }; - E7F3B7809E5A273EF73736CF423B9CB5 /* Utils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Utils.swift; path = Chatto/Source/Utils.swift; sourceTree = ""; }; E90B6821F7D9C990696D159A8A8F3885 /* PhotoMessageCollectionViewCellDefaultStyle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoMessageCollectionViewCellDefaultStyle.swift; sourceTree = ""; }; - E9ABAEAD42B233C4C72F4D8C62D264AC /* LiveCameraCaptureSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LiveCameraCaptureSession.swift; sourceTree = ""; }; - F00A8A9ECFF12DCE30DABCE3E5E136D1 /* KeyboardTracker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeyboardTracker.swift; sourceTree = ""; }; F14F86937C99E9B9182BDC8D3D66B884 /* ReusableXibView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ReusableXibView.swift; sourceTree = ""; }; F207983FB08AF781AE4FF881D8960FF0 /* Alignment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Alignment.swift; sourceTree = ""; }; F34BC85B23764467817891963F9FC304 /* PhotoBubbleView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PhotoBubbleView.swift; sourceTree = ""; }; - F3CDE366A58BC30ADF711EEC30F5562D /* Chatto-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Chatto-prefix.pch"; sourceTree = ""; }; F60670530F6217B4AA01EE0B7063477A /* Pods-ChattoApp-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ChattoApp-acknowledgements.plist"; sourceTree = ""; }; F7345926803B4C970357560D78597DB8 /* ChatItemDecorationAttributes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatItemDecorationAttributes.swift; sourceTree = ""; }; F7B09B7BBFF294077116E789BA62D48C /* PhotoMessageAssets.xcassets */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = folder.assetcatalog; path = PhotoMessageAssets.xcassets; sourceTree = ""; }; F8A201C1EFC6CB61F9E130E8293153B4 /* UIScreen+Scale.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIScreen+Scale.swift"; sourceTree = ""; }; F8F1E432BC15A34A52E6583F21C1D526 /* BaseMessageModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BaseMessageModel.swift; sourceTree = ""; }; FA6D3153E92F0A38E684B3D1D2436F9C /* ChattoAdditions-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ChattoAdditions-prefix.pch"; sourceTree = ""; }; + FB3F0B9729079B1E8A036EEA3B0C3E1C /* Chatto-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Chatto-prefix.pch"; sourceTree = ""; }; FD28FF28BA5E3CE8FC894E71C061E5F3 /* CGPoint+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGPoint+Additions.swift"; sourceTree = ""; }; - FFD942A947D0F30C8639C1CBAB4AF302 /* ChatItemProtocolDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ChatItemProtocolDefinitions.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0B96D432D4DE15EDE40B14E86F312EE6 /* Frameworks */ = { + 9B2813159043BB66E4F7CC6B5C8FBBB5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 77E6F472B22328E2F6962FB06D4E8475 /* Foundation.framework in Frameworks */, + 7F663761FE373B0CB90C3906DC50E832 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9B2813159043BB66E4F7CC6B5C8FBBB5 /* Frameworks */ = { + B98817E05EF24CE3E5A13C748CF9DAFD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7F663761FE373B0CB90C3906DC50E832 /* Foundation.framework in Frameworks */, + 5994C35B08BA5C89BFB59A96A28BCA0E /* Chatto.framework in Frameworks */, + 705ADC8E473A4FA09685E3A3938F71E4 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F404562FFC16518B5FBEF36D049BDC46 /* Frameworks */ = { + E26A7945162FB43401BD4587FA3ADEFE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F122757D5AE43AEA5224C57D6BC791F3 /* Chatto.framework in Frameworks */, - 826A43BDFAD7AD06AE209B47592E31D0 /* Foundation.framework in Frameworks */, + D78FBF1B215BDDD7F5B40F9F0DF73DB7 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -299,6 +301,17 @@ name = Pod; sourceTree = ""; }; + 0CC4D77D4E8849FEF1B061254727ABDB /* Placeholder */ = { + isa = PBXGroup; + children = ( + B1FA7FF4FDB6920F132A3F86CF864637 /* PhotosInputPlaceholderCell.swift */, + C03CA7139E45D8B591A159B7EA591CFD /* PhotosInputPlaceholderCellProvider.swift */, + 42841D9D846D9781CEFA4938F59760F0 /* PhotosInputPlaceholderDataProvider.swift */, + ); + name = Placeholder; + path = Placeholder; + sourceTree = ""; + }; 0DE5E08F571511CE52E70557E53273A0 /* Views */ = { isa = PBXGroup; children = ( @@ -366,6 +379,21 @@ path = "ChattoAdditions/Source/Chat Items"; sourceTree = ""; }; + 1BD9C740423E9041A302C65E0C1F43AB /* Camera */ = { + isa = PBXGroup; + children = ( + BE216F909C038FBAE3679CB0E9126AE0 /* DeviceImagePicker.swift */, + DC7294781831F5B384F58E5C00EDFE61 /* ImagePicker.swift */, + BC319BABE04FB7EE13FC04CC6841F22B /* LiveCameraCaptureSession.swift */, + 1487A45371AC8104BC0CE7C162FBF982 /* LiveCameraCell.swift */, + 0BBB172ACF8D5FC99A24F909709EF0A6 /* LiveCameraCellPresenter.swift */, + 41213A169A1327F38C02D02FF4E7EAB4 /* PhotosInputCameraPicker.swift */, + 320D17D55C07803D11384BBBA2A5ACEE /* SimulatorImagePicker.swift */, + ); + name = Camera; + path = Camera; + sourceTree = ""; + }; 22A2D6F75C1471E06162A375AB446526 /* Text */ = { isa = PBXGroup; children = ( @@ -391,33 +419,12 @@ path = ../..; sourceTree = ""; }; - 28CAADEBE59305FF0AFA515404D9D6A5 /* Support Files */ = { + 28A7EF7A9B56C49D03E6D43820AC3C9E /* Pod */ = { isa = PBXGroup; children = ( - 29247C83C1B2146FA34637DA7510391C /* Chatto.modulemap */, - 4F90FA6D4FBA6832B0032AB803E89430 /* Chatto.xcconfig */, - 55826B807503BE7DDC77A0B9310616CF /* Chatto-dummy.m */, - F3CDE366A58BC30ADF711EEC30F5562D /* Chatto-prefix.pch */, - 50A7B423BC8E6016073DE574AF7AB1F2 /* Chatto-umbrella.h */, - DC63AB949B66E4124657A68C82D45349 /* Info.plist */, + 8E21EA7E35385D3F8E558237788FEAB5 /* Chatto.podspec */, ); - name = "Support Files"; - path = "ChattoApp/Pods/Target Support Files/Chatto"; - sourceTree = ""; - }; - 2D2264A5272B8D84F1F36EB119862DC4 /* Photos */ = { - isa = PBXGroup; - children = ( - 6A352E08BEB4912F511344FF68E6BF19 /* PhotosChatInputItem.swift */, - 9D6F0E45378AD0C6B71082D352CC260B /* PhotosInputView.swift */, - 5D0430B2B18F1C6A279939FE7FEAB97C /* PhotosInputViewItemSizeCalculator.swift */, - A7C9C727136FE97562C19E9EED6E66C0 /* PhotosInputWithPlaceholdersDataProvider.swift */, - 75ACAAA5B806B24FB753C3D0F0C50E08 /* Camera */, - 8922CE3C7F3299BD29D9A8D1F19249D9 /* Photo */, - 8C9A67A4CC2E6F8D43D518281CF5E4CC /* Placeholder */, - ); - name = Photos; - path = Photos; + name = Pod; sourceTree = ""; }; 321113FA91163F5F7FAE072DC193962C /* Resources */ = { @@ -441,6 +448,34 @@ path = Views; sourceTree = ""; }; + 3847617FA3586F5912AC9FFDB812B3EA /* Chatto */ = { + isa = PBXGroup; + children = ( + BBC0872AFC21DBB1EF8C9775F215B756 /* Chatto.h */, + AB2038633747734D88B4D933A146AE67 /* ReadOnlyOrderedDictionary.swift */, + AFC940116D1FE152A8B4391C8179BAB7 /* SerialTaskQueue.swift */, + 7F865526B535C40AA043DF3C40157EBB /* Utils.swift */, + 44E25DC6EAB44EA89F4244D294547A86 /* Chat Items */, + 6BF2DE770AC7D08DE1A80ED9891247E5 /* ChatController */, + 28A7EF7A9B56C49D03E6D43820AC3C9E /* Pod */, + 51FADDDCC03124536C75D2B05F6B328B /* Support Files */, + ); + name = Chatto; + path = ../..; + sourceTree = ""; + }; + 44E25DC6EAB44EA89F4244D294547A86 /* Chat Items */ = { + isa = PBXGroup; + children = ( + 5C8247FEE16DD077AD31937F3E008A95 /* BaseChatItemPresenter.swift */, + CFAF36B42F7ABC3D09FD5F061A0D6B79 /* ChatItemCompanion.swift */, + E5DB80495DEC9A7A3F171F2C8144F441 /* ChatItemProtocolDefinitions.swift */, + E4599A7F6AEF15DFF28C49B6FF667278 /* DummyChatItemPresenter.swift */, + ); + name = "Chat Items"; + path = "Chatto/Source/Chat Items"; + sourceTree = ""; + }; 474BECE036F9982A4536AD86894B69B6 /* TextMessages */ = { isa = PBXGroup; children = ( @@ -454,6 +489,20 @@ path = TextMessages; sourceTree = ""; }; + 51FADDDCC03124536C75D2B05F6B328B /* Support Files */ = { + isa = PBXGroup; + children = ( + 1E18E8AA22C49C13E1C5CF858B738DC8 /* Chatto.modulemap */, + 1223839FD87970CC27C696E8AFC08B73 /* Chatto.xcconfig */, + A42734C8FFED903A56F2ACA651B53739 /* Chatto-dummy.m */, + FB3F0B9729079B1E8A036EEA3B0C3E1C /* Chatto-prefix.pch */, + 4F8FDFD950B2CEC7365059B707D140D1 /* Chatto-umbrella.h */, + 2B4EB484C6FA399B96990E1C79915E64 /* Info.plist */, + ); + name = "Support Files"; + path = "ChattoApp/Pods/Target Support Files/Chatto"; + sourceTree = ""; + }; 52225918B65B4DB2949B01EDA32166D4 /* PhotoMessages */ = { isa = PBXGroup; children = ( @@ -476,40 +525,39 @@ path = "ChattoAdditions/Source/UI Components"; sourceTree = ""; }; - 60AC651C802E347E1D6FEB7C30CB8F41 /* Chat Items */ = { + 6B1E362069C276E133E5223A92CBC45E /* Photo */ = { isa = PBXGroup; children = ( - 8FE7CDA883280C5BDFD7A2E6C025833A /* BaseChatItemPresenter.swift */, - 4510561EB01709E73B706E8CD931E27D /* ChatItemCompanion.swift */, - FFD942A947D0F30C8639C1CBAB4AF302 /* ChatItemProtocolDefinitions.swift */, - 14B80E0E9904F4BFCCEA00B151D33F58 /* DummyChatItemPresenter.swift */, + 40C59E85FF73F4E4F180194642C7E7EC /* PhotosInputCell.swift */, + 15D9AC49FF1CA66072C8F284D4615DEE /* PhotosInputCellProvider.swift */, + 899948B07AF10EFF958FE42E03002B4E /* PhotosInputDataProvider.swift */, ); - name = "Chat Items"; - path = "Chatto/Source/Chat Items"; + name = Photo; + path = Photo; sourceTree = ""; }; - 6DA9B8896292756837F7099D5D261180 /* Text */ = { + 6BF2DE770AC7D08DE1A80ED9891247E5 /* ChatController */ = { isa = PBXGroup; children = ( - D410A8560196ED567FD09A0BBCAAC9F8 /* Text.xcassets */, + 8EC50CE002F4C3E5F8C47AA3D6B63CA5 /* BaseChatViewController.swift */, + 26FA5B1C9839F216FBAC1C8381EA6620 /* BaseChatViewController+AccessoryViewRevealer.swift */, + 5263B9973D3B6EC8CA1C8402347E902B /* BaseChatViewController+Changes.swift */, + D7FA81C32043964F72CC0BD5E1AF4FEA /* BaseChatViewController+Presenters.swift */, + 92D473620C87E8EF86FC76C5A564AC69 /* BaseChatViewController+Scrolling.swift */, + 1D34645FF568A8A90706512A58824527 /* ChatLayoutConfiguration.swift */, + BB58E1EC8BE45CFAAFBC41198E5D35BC /* Collaborators */, ); - name = Text; - path = Text; + name = ChatController; + path = Chatto/Source/ChatController; sourceTree = ""; }; - 75ACAAA5B806B24FB753C3D0F0C50E08 /* Camera */ = { + 6DA9B8896292756837F7099D5D261180 /* Text */ = { isa = PBXGroup; children = ( - 3C3A8A70E90E0D7AF0C7506702585A4E /* ImagePicker.swift */, - E9ABAEAD42B233C4C72F4D8C62D264AC /* LiveCameraCaptureSession.swift */, - 129420675D0E892156C6D5F890C31DE9 /* LiveCameraCell.swift */, - DA258F8A88B4DE305AF692CEE5C855A7 /* LiveCameraCellPresenter.swift */, - BF479F563BA6247F15B5BA474AF80975 /* PhotosInputCameraPicker.swift */, - CD2407785B3CE07C044E5860 /* DeviceImagePicker.swift */, - CD240F278096B97B5422DDEC /* SimulatorImagePicker.swift */, + D410A8560196ED567FD09A0BBCAAC9F8 /* Text.xcassets */, ); - name = Camera; - path = Camera; + name = Text; + path = Text; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -532,32 +580,10 @@ name = Frameworks; sourceTree = ""; }; - 8922CE3C7F3299BD29D9A8D1F19249D9 /* Photo */ = { - isa = PBXGroup; - children = ( - 43B11277D4132D3470FC06F6E567361A /* PhotosInputCell.swift */, - 2E8F42B307C00B2A41B5509D17EE211A /* PhotosInputCellProvider.swift */, - DBA64E0B302B8C3DAD22C389E3F73CFB /* PhotosInputDataProvider.swift */, - ); - name = Photo; - path = Photo; - sourceTree = ""; - }; - 8C9A67A4CC2E6F8D43D518281CF5E4CC /* Placeholder */ = { - isa = PBXGroup; - children = ( - 593C30E9D0A0055838C2854296640A47 /* PhotosInputPlaceholderCell.swift */, - 663915E51C99CC0E3FF755D7D7C9B964 /* PhotosInputPlaceholderCellProvider.swift */, - D380068E3A21DDCA854A552D0681F12A /* PhotosInputPlaceholderDataProvider.swift */, - ); - name = Placeholder; - path = Placeholder; - sourceTree = ""; - }; 92F0134B58933BCDBB2DEC2938D0814F /* Development Pods */ = { isa = PBXGroup; children = ( - C55FDA764E3DB2D166DA5F96133D7211 /* Chatto */, + 3847617FA3586F5912AC9FFDB812B3EA /* Chatto */, 257642BACAAD92E7C1AD72EDAE39FD99 /* ChattoAdditions */, ); name = "Development Pods"; @@ -586,29 +612,29 @@ path = PhotoMessages; sourceTree = ""; }; - A6DFC6FE1A1B8A2218C942218A4003DE /* Products */ = { + A45F9C7674759BA2595821F733AA3F91 /* Photos */ = { isa = PBXGroup; children = ( - 0E8CD230BF38884D8498CDDAC2BD0AE7 /* Chatto.framework */, - 75A4D0F8C860BD4281E8AED08E680907 /* ChattoAdditions.framework */, - 6DAEAB5DAC1307E56BDF15E9DDC72623 /* Pods_ChattoApp.framework */, + 3476C0B5EE071FF5997DED8B07EFA11C /* PhotosChatInputItem.swift */, + 4A891FD7583480DA1F43E049418524D2 /* PhotosInputView.swift */, + C474939F7D05C999342F3B5B9F5D5168 /* PhotosInputViewItemSizeCalculator.swift */, + D89429FA94D510A5A6A77537122BBA05 /* PhotosInputWithPlaceholdersDataProvider.swift */, + 1BD9C740423E9041A302C65E0C1F43AB /* Camera */, + 6B1E362069C276E133E5223A92CBC45E /* Photo */, + 0CC4D77D4E8849FEF1B061254727ABDB /* Placeholder */, ); - name = Products; + name = Photos; + path = Photos; sourceTree = ""; }; - A736E97A92E826BFF6395274CED3155D /* Collaborators */ = { + A6DFC6FE1A1B8A2218C942218A4003DE /* Products */ = { isa = PBXGroup; children = ( - 6689FB692180AEBAC101759EAD0116C2 /* AccessoryViewRevealer.swift */, - 6E3235B63095189632DAF591C60640F6 /* BaseChatViewControllerView.swift */, - 2F938377FA02F6C0D99FD8706AC3C3D0 /* ChatCollectionViewLayout.swift */, - D9E20DA473442F4FE951198139ADCB9A /* ChatDataSourceProtocol.swift */, - 19441BE50AD243FC9F2E75C3DE5B8E80 /* ChatItemPresenterFactory.swift */, - 05D5600D8E7D22AC3E225129F527765E /* CollectionChanges.swift */, - F00A8A9ECFF12DCE30DABCE3E5E136D1 /* KeyboardTracker.swift */, + 0E8CD230BF38884D8498CDDAC2BD0AE7 /* Chatto.framework */, + 75A4D0F8C860BD4281E8AED08E680907 /* ChattoAdditions.framework */, + 6DAEAB5DAC1307E56BDF15E9DDC72623 /* Pods_ChattoApp.framework */, ); - name = Collaborators; - path = Collaborators; + name = Products; sourceTree = ""; }; AE6F80F46353E07AE954D6B1EDD9F911 /* Views */ = { @@ -636,34 +662,19 @@ path = CircleProgressIndicatorView; sourceTree = ""; }; - BA0E1940AC42B582281185CFA0A1E66F /* ChatController */ = { - isa = PBXGroup; - children = ( - DC6D20F1A27D9120A64F63AE5A503034 /* BaseChatViewController.swift */, - 425AA302DBD7925EAF5AC414D86AEA0B /* BaseChatViewController+AccessoryViewRevealer.swift */, - 46581CCBDE0B2F41FF3265FC82B1E001 /* BaseChatViewController+Changes.swift */, - C7A3114802D19936B30971AC47A85BAD /* BaseChatViewController+Presenters.swift */, - AFB8A0CFBD7C0AE7CB03BF74160D4DBA /* BaseChatViewController+Scrolling.swift */, - A736E97A92E826BFF6395274CED3155D /* Collaborators */, - ); - name = ChatController; - path = Chatto/Source/ChatController; - sourceTree = ""; - }; - C55FDA764E3DB2D166DA5F96133D7211 /* Chatto */ = { + BB58E1EC8BE45CFAAFBC41198E5D35BC /* Collaborators */ = { isa = PBXGroup; children = ( - 3ED7B54C4A2CE71FF6F698ED3A75D087 /* Chatto.h */, - A20874338A13B082557F5D7D5DAD78FE /* ReadOnlyOrderedDictionary.swift */, - 1985774D53B3A1654C7775FD6A07A399 /* SerialTaskQueue.swift */, - E7F3B7809E5A273EF73736CF423B9CB5 /* Utils.swift */, - 60AC651C802E347E1D6FEB7C30CB8F41 /* Chat Items */, - BA0E1940AC42B582281185CFA0A1E66F /* ChatController */, - F06DD6440DC2847A7D819C7E6C469E02 /* Pod */, - 28CAADEBE59305FF0AFA515404D9D6A5 /* Support Files */, + 73CF432CF510FECB05A97059F541A9C9 /* AccessoryViewRevealer.swift */, + 79432F3617D69C8DA909CFA540018DC4 /* BaseChatViewControllerView.swift */, + B1C6AC04E26A1E1DE63AD1FAFE3232E6 /* ChatCollectionViewLayout.swift */, + 87C8C12E18BF8E7E2EE26A2412E9DCFD /* ChatDataSourceProtocol.swift */, + B45107EC0B5669FFE263EEDC1376216D /* ChatItemPresenterFactory.swift */, + BA3D6A8FA7B4733B47E59765BAAE50B0 /* CollectionChanges.swift */, + 22F371B3EBB2A7B84B11B4687A5A4122 /* KeyboardTracker.swift */, ); - name = Chatto; - path = ../..; + name = Collaborators; + path = Collaborators; sourceTree = ""; }; CADDED158F05C91F72D157C51CA17C45 /* BaseMessage */ = { @@ -690,7 +701,7 @@ 2DD8E4BB9487A80F70C29231EA1E6295 /* HorizontalStackScrollView.swift */, F14F86937C99E9B9182BDC8D3D66B884 /* ReusableXibView.swift */, A500CFC58AF814D90C69A58ED2780972 /* TabInputButton.swift */, - 2D2264A5272B8D84F1F36EB119862DC4 /* Photos */, + A45F9C7674759BA2595821F733AA3F91 /* Photos */, 22A2D6F75C1471E06162A375AB446526 /* Text */, ); name = Input; @@ -764,14 +775,6 @@ path = ChattoAdditions/Source/Common; sourceTree = ""; }; - F06DD6440DC2847A7D819C7E6C469E02 /* Pod */ = { - isa = PBXGroup; - children = ( - 050EA91E2E5DB5E650DBAF3DD412C1FB /* Chatto.podspec */, - ); - name = Pod; - sourceTree = ""; - }; F33BCA37F50FA5D32BCEE6A31F3CCC65 /* Views */ = { isa = PBXGroup; children = ( @@ -793,55 +796,38 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 044A9A23330A57CF7DB42171A1A4D846 /* Headers */ = { + 030574653410EEDFEF711EDE4F23F3F0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 733ECA7D1AEA031AA153E7A49C281A19 /* Pods-ChattoApp-umbrella.h in Headers */, + E18F6A8194F510AC0B084DCA7FA9922C /* Chatto-umbrella.h in Headers */, + EB33B65CCACA9146870CEEB75CC21BC4 /* Chatto.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4C2E6440085347639274B5E55695A3CC /* Headers */ = { + 044A9A23330A57CF7DB42171A1A4D846 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6CB02D239F26C9991C816CD677715057 /* Chatto-umbrella.h in Headers */, - 71E16DAE8DC770EB8839FFCED579143E /* Chatto.h in Headers */, + 733ECA7D1AEA031AA153E7A49C281A19 /* Pods-ChattoApp-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 713CFA1E060E0E1542BF6184168B0132 /* Headers */ = { + 84EE0BA41F07C64B950A4C303254DE6E /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - ED3A9540FCF8929A92605DD482096345 /* ChattoAdditions-umbrella.h in Headers */, - D9F713EAC4BD81B407957E3E29FEDE79 /* ChattoAdditions.h in Headers */, - 6D7F13AD0766C7171AA27435010DBD51 /* CircleIconView.h in Headers */, - C5CA29B99659A34C87C587840BE8B1CA /* CircleProgressIndicatorView.h in Headers */, - 3E43C0A2E3955FC38026140E26B4E602 /* CircleProgressView.h in Headers */, + 423A4E368CA258CE72ED24F0C784C28E /* ChattoAdditions-umbrella.h in Headers */, + CAFE51A88BA6BA95E5FC6AF81F3CDA1A /* ChattoAdditions.h in Headers */, + 48D774F9DBC66F7B3328E4DF830C7E5A /* CircleIconView.h in Headers */, + 5CA864BA6C30472334EA61B8A6D9A59B /* CircleProgressIndicatorView.h in Headers */, + C69B980A6911B033AC36CE4274FE6E46 /* CircleProgressView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 0564C2782D1F2F8E464CB332E0FE7246 /* Chatto */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0C6B695FB9120E769A46CB6A2BE56E58 /* Build configuration list for PBXNativeTarget "Chatto" */; - buildPhases = ( - FC7718CCB5674C515F6F48C858A4A737 /* Sources */, - 0B96D432D4DE15EDE40B14E86F312EE6 /* Frameworks */, - 4C2E6440085347639274B5E55695A3CC /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Chatto; - productName = Chatto; - productReference = 0E8CD230BF38884D8498CDDAC2BD0AE7 /* Chatto.framework */; - productType = "com.apple.product-type.framework"; - }; 83A90C41E2F6BCB5E19B5378BEB0B42A /* Pods-ChattoApp */ = { isa = PBXNativeTarget; buildConfigurationList = 1ACE60E84B8FD1DA1F249B79678D2A4E /* Build configuration list for PBXNativeTarget "Pods-ChattoApp" */; @@ -861,25 +847,42 @@ productReference = 6DAEAB5DAC1307E56BDF15E9DDC72623 /* Pods_ChattoApp.framework */; productType = "com.apple.product-type.framework"; }; - DCD24D044DCB3D3A8BB5461EC53DE4E2 /* ChattoAdditions */ = { + CB03F082A875F222026BAF0346E84EC5 /* ChattoAdditions */ = { isa = PBXNativeTarget; - buildConfigurationList = D409FEDA817C0F3E01C4F23EB3831EDF /* Build configuration list for PBXNativeTarget "ChattoAdditions" */; + buildConfigurationList = 62615C4FF060B952092F16A0387109C5 /* Build configuration list for PBXNativeTarget "ChattoAdditions" */; buildPhases = ( - DCFDEAF29A5E7F99544415DC497AD9AA /* Sources */, - F404562FFC16518B5FBEF36D049BDC46 /* Frameworks */, - 713CFA1E060E0E1542BF6184168B0132 /* Headers */, - 45C913FEB24561DECD46D14C9989EDE8 /* Resources */, + FE39F72DDD1E07BFC79E34946C9ABE3D /* Sources */, + B98817E05EF24CE3E5A13C748CF9DAFD /* Frameworks */, + 84EE0BA41F07C64B950A4C303254DE6E /* Headers */, + D7BC6B930C80E800ECA57F259358364B /* Resources */, ); buildRules = ( ); dependencies = ( - E3A00BAC4CD0E9F1098F630E28E6C8E6 /* PBXTargetDependency */, + 2FB2BAD92DFF592B15D3A68CF071C079 /* PBXTargetDependency */, ); name = ChattoAdditions; productName = ChattoAdditions; productReference = 75A4D0F8C860BD4281E8AED08E680907 /* ChattoAdditions.framework */; productType = "com.apple.product-type.framework"; }; + F3B3A79B2EF929FE3E146E8B922BFFF3 /* Chatto */ = { + isa = PBXNativeTarget; + buildConfigurationList = D42C7EDE276331796726730D7A9655F2 /* Build configuration list for PBXNativeTarget "Chatto" */; + buildPhases = ( + 0125C5751425D917C6559C688756A3B6 /* Sources */, + E26A7945162FB43401BD4587FA3ADEFE /* Frameworks */, + 030574653410EEDFEF711EDE4F23F3F0 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Chatto; + productName = Chatto; + productReference = 0E8CD230BF38884D8498CDDAC2BD0AE7 /* Chatto.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -901,155 +904,156 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 0564C2782D1F2F8E464CB332E0FE7246 /* Chatto */, - DCD24D044DCB3D3A8BB5461EC53DE4E2 /* ChattoAdditions */, + F3B3A79B2EF929FE3E146E8B922BFFF3 /* Chatto */, + CB03F082A875F222026BAF0346E84EC5 /* ChattoAdditions */, 83A90C41E2F6BCB5E19B5378BEB0B42A /* Pods-ChattoApp */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 45C913FEB24561DECD46D14C9989EDE8 /* Resources */ = { + D7BC6B930C80E800ECA57F259358364B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - AAC97E757D1592775A9A9499FB555858 /* BaseMessageAssets.xcassets in Resources */, - 00E3F827CF29D95C20BC041DE0B3E415 /* ChatInputBar.xib in Resources */, - 59F5745760DD39E7FDE89A10CA21B948 /* CircleProgressIndicator.xcassets in Resources */, - 7D20450EADD4BAEBAC1E1028D9768995 /* PhotoMessageAssets.xcassets in Resources */, - 1B5BAA97C46FBC289D2B770A2CF26195 /* Photos.xcassets in Resources */, - 759100F5B47B2E76F5CA16E2F37532D3 /* Text.xcassets in Resources */, + 70FEFCFC2A8832EB145F3E18916D4022 /* BaseMessageAssets.xcassets in Resources */, + 17A6A1AC584AAF6D214071188CF8D320 /* ChatInputBar.xib in Resources */, + 43618A8F6880123014BCFAD6EE452F43 /* CircleProgressIndicator.xcassets in Resources */, + BCE0DE4E6A81CBFA97A854FEB12D5748 /* PhotoMessageAssets.xcassets in Resources */, + 717869C722B7C46D09556EFB33A11486 /* Photos.xcassets in Resources */, + 37E5484E69AC3C4290114C9360C25321 /* Text.xcassets in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - CDA3B34BC6D97B31FB60F315D389C2F7 /* Sources */ = { + 0125C5751425D917C6559C688756A3B6 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 93AC0348CFA081A20308C0FFA9A85A3A /* Pods-ChattoApp-dummy.m in Sources */, + E5240ACB57998CFD77EE321359242C05 /* AccessoryViewRevealer.swift in Sources */, + 9EA2120DF77F7DEFECC22032F1F58B29 /* BaseChatItemPresenter.swift in Sources */, + D6A412953E5130899000DCA9A94D49F2 /* BaseChatViewController+AccessoryViewRevealer.swift in Sources */, + 1EB3B46D4FA4A07B31843E1A5785F7B0 /* BaseChatViewController+Changes.swift in Sources */, + F4C269E8BB9AD5A1B691D7AB8A39D6CA /* BaseChatViewController+Presenters.swift in Sources */, + 2986205D8AC0CEEF268AE3E28A4878A9 /* BaseChatViewController+Scrolling.swift in Sources */, + 8DD30642274B7A93D205FD54A552B006 /* BaseChatViewController.swift in Sources */, + 5E08DBA5C1DCC7EA567AA8DC11DD64E1 /* BaseChatViewControllerView.swift in Sources */, + 425EAF6463FECAA4723451596ECA40B3 /* ChatCollectionViewLayout.swift in Sources */, + AF114E4CFA26AE52F2937237CDCD91EA /* ChatDataSourceProtocol.swift in Sources */, + 1B78F3EB05EB13125FE568781D7486FF /* ChatItemCompanion.swift in Sources */, + 69D0AB53007DF11147A1B1EC8987DF50 /* ChatItemPresenterFactory.swift in Sources */, + 7C0EFEE9B9E3DE06B84E4765ED934ED1 /* ChatItemProtocolDefinitions.swift in Sources */, + 3234AEC384AC96B20BA857B81DBFCC0C /* ChatLayoutConfiguration.swift in Sources */, + 89DF80AADDB0269D31EC805C0FD838E9 /* Chatto-dummy.m in Sources */, + 536C46DC87D180A26FB697C425647696 /* CollectionChanges.swift in Sources */, + 9FEF95A21384F801D04965CDD64C71FD /* DummyChatItemPresenter.swift in Sources */, + A3A132D4E243506251D0448F08935B93 /* KeyboardTracker.swift in Sources */, + 18CBC232D77FD725AF2592443A3CB3EA /* ReadOnlyOrderedDictionary.swift in Sources */, + 3990B9429830869037B61EB796198FAC /* SerialTaskQueue.swift in Sources */, + 02CE3BA69F02E6B00F6314F1C867BF50 /* Utils.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - DCFDEAF29A5E7F99544415DC497AD9AA /* Sources */ = { + CDA3B34BC6D97B31FB60F315D389C2F7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 28075012B4DC5D40D6B054A83AA81BF8 /* Alignment.swift in Sources */, - A06C6E4AAEF5C39720886BA18621C919 /* AnimationUtils.swift in Sources */, - D653E8F4A1DAF0E61DF020F622DBA1D1 /* BaseMessageCollectionViewCell.swift in Sources */, - 00D6D10980978A3AD87F2EFA18D5FA53 /* BaseMessageCollectionViewCellDefaultStyle.swift in Sources */, - 48592135C286A8497752C7ED03A23CEE /* BaseMessageModel.swift in Sources */, - 93CD8A20A6A2DAA0C36A20F67C103030 /* BaseMessagePresenter.swift in Sources */, - 4C1E87BDED189A0548E50B02C69062B4 /* BaseMessageViewModel.swift in Sources */, - DAD6EDFF6F4E25EFB1DC50E550732E15 /* CGFloat+Additions.swift in Sources */, - DF03B550764571CA287E0B4B8CFD5DB2 /* CGPoint+Additions.swift in Sources */, - A528EB120A5E7DC270E7E2F133D85B3C /* CGRect+Additions.swift in Sources */, - 2500D71C245FFE4D6B9BFD4A2A1EDB85 /* CGSize+Additions.swift in Sources */, - CEB217F536637B792CD39700C6C09996 /* ChatInputBar.swift in Sources */, - F0A451A28135770A80CAE3312B2E396F /* ChatInputBarAppearance.swift in Sources */, - 512A57DEB9B46A901C1FC10527041D36 /* ChatInputBarPresenter.swift in Sources */, - E087569EF5E356913098318056B77BE3 /* ChatInputItem.swift in Sources */, - DF0DD294440693888AE371BD30638C9A /* ChatInputItemView.swift in Sources */, - 6355C90A3190FD3F4F748D9A50907DDE /* ChatItemDecorationAttributes.swift in Sources */, - C888A6F89201A5B9148B199FCC3A1329 /* ChattoAdditions-dummy.m in Sources */, - A1807B0B711E646B1E57F637E3D467FF /* CircleIconView.m in Sources */, - DFB12A9A065E868FE0EE84C6126EA37C /* CircleProgressIndicatorView.m in Sources */, - 43EB2F4B3C928EC0ABDE758E9A027F61 /* CircleProgressView.m in Sources */, - CC4F915B4A3E45BBFE4F9C409C345A2F /* ExpandableTextView.swift in Sources */, - 0D505833F07BC65FEBC299D37006365D /* HorizontalStackScrollView.swift in Sources */, - 60C8B2C6A1B1CE596A82309FDB96EE56 /* ImagePicker.swift in Sources */, - 7507614804E28F304AD99EE5C8B67C43 /* LiveCameraCaptureSession.swift in Sources */, - 2CDB23CA2683F68395293EE5DBD427A8 /* LiveCameraCell.swift in Sources */, - 3E32D7EA354D45031B987D3B0BA6B1F8 /* LiveCameraCellPresenter.swift in Sources */, - E601017C14729E02A50CC61844F9FC16 /* Observable.swift in Sources */, - 3E008FC7A2FDDCCCF61C7BD94C131EBE /* PhotoBubbleView.swift in Sources */, - AA0B570656617383FE7AFCC873A3F6C0 /* PhotoMessageCollectionViewCell.swift in Sources */, - A58BD56650DE9663F4A6B51B114E8921 /* PhotoMessageCollectionViewCellDefaultStyle.swift in Sources */, - 78F46BA4780730F9A3B1D419A4DC56BF /* PhotoMessageModel.swift in Sources */, - 1C0E2D574DEAA28340343074A044380C /* PhotoMessagePresenter.swift in Sources */, - 2EDA353EE9074C181A7F628FF5255F35 /* PhotoMessagePresenterBuilder.swift in Sources */, - FD053593E7C6C6E82265C241782F45F9 /* PhotoMessageViewModel.swift in Sources */, - 8F80B5B62BFD9C705AB6108ED449CCC1 /* PhotosChatInputItem.swift in Sources */, - 9ECEBD5C0D9255BF6888EB9D5D19D77A /* PhotosInputCameraPicker.swift in Sources */, - 8B417560642B39B55AB772AAAB4A5E25 /* PhotosInputCell.swift in Sources */, - 16361DBD3920836499A58C212E9B825F /* PhotosInputCellProvider.swift in Sources */, - 0EA4A981038BAA87CFD193759A602F8F /* PhotosInputDataProvider.swift in Sources */, - 14E1077906B79E35EB6C0D452E98E102 /* PhotosInputPlaceholderCell.swift in Sources */, - ED8761914EA48870B07EF342B4C412B1 /* PhotosInputPlaceholderCellProvider.swift in Sources */, - 919F6A1D05D00F1D815A5D6E30C16822 /* PhotosInputPlaceholderDataProvider.swift in Sources */, - 0C16A79AD329A1AE31DCB63829C8C87B /* PhotosInputView.swift in Sources */, - BD92A029D5888E3E83B13232899832BB /* PhotosInputViewItemSizeCalculator.swift in Sources */, - 259AE37389BAB08398971B61C68C0202 /* PhotosInputWithPlaceholdersDataProvider.swift in Sources */, - C12D5C1C7CF2DCC15D64201569A6A107 /* ReusableXibView.swift in Sources */, - 13F170B91F743BE7E900034704945334 /* TabInputButton.swift in Sources */, - F721CCDBC314636F25FC84F9002014A3 /* TextBubbleView.swift in Sources */, - FB8866C5639D10A9D6EF04ADC4667542 /* TextChatInputItem.swift in Sources */, - 3A87BB2197D9516F6A159670B8E98C26 /* TextMessageCollectionViewCell.swift in Sources */, - A6A57EC7C8F3AA159B14477221F8C91A /* TextMessageCollectionViewCellDefaultStyle.swift in Sources */, - CC1DC524A231D132832C59A91CB5F2BC /* TextMessageModel.swift in Sources */, - 5DB4ECF73BD0118F052100A502727579 /* TextMessagePresenter.swift in Sources */, - 31157864FC8DD8494902BD87CAEC950E /* TextMessagePresenterBuilder.swift in Sources */, - 8060B6D103DA4161BF922E14847B8736 /* TextMessageViewModel.swift in Sources */, - 902FA0B2997BA4D8AA0B17164278BBA7 /* UIColor+Additions.swift in Sources */, - CABD18923698A9608DFCC1A0A27A0C80 /* UIEdgeInsets+Additions.swift in Sources */, - FA5A27A37622D781F82E51B25551880F /* UIImage+Additions.swift in Sources */, - 3FE7D49AAD12760C3809D3EF079033DF /* UIScreen+Scale.swift in Sources */, - 39FE01D5BD4A9F43AE61C39CCFC868D8 /* UIView+Additions.swift in Sources */, - D383F5FDC2D260D8358A206310B7FC68 /* ViewDefinitions.swift in Sources */, - CD240780265A33455A58308A /* DeviceImagePicker.swift in Sources */, - CD240FBFE867CEE2C20A2C71 /* SimulatorImagePicker.swift in Sources */, + 93AC0348CFA081A20308C0FFA9A85A3A /* Pods-ChattoApp-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FC7718CCB5674C515F6F48C858A4A737 /* Sources */ = { + FE39F72DDD1E07BFC79E34946C9ABE3D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1EBAAE2E59B3FDA14AAD805DFC2707D6 /* AccessoryViewRevealer.swift in Sources */, - 217914BBAE3847BF873C1386E1FAE9AA /* BaseChatItemPresenter.swift in Sources */, - 0D523E4FE6115F7A55C3AC1084204E4B /* BaseChatViewController+AccessoryViewRevealer.swift in Sources */, - E3FF292D87A07BA67A729AD36AEF5076 /* BaseChatViewController+Changes.swift in Sources */, - 0FD9575740CF2F8B25FF917D414DD453 /* BaseChatViewController+Presenters.swift in Sources */, - 010040154F5F454E72EF1468790FA4CD /* BaseChatViewController+Scrolling.swift in Sources */, - F6A0282EDBB0B7785CC58190CCFE9F8B /* BaseChatViewController.swift in Sources */, - 2F96149719263B6CB07600157780AF21 /* BaseChatViewControllerView.swift in Sources */, - 7B0EBDA75601E029EA64F03E579D0663 /* ChatCollectionViewLayout.swift in Sources */, - 1D22A8C6A20F2FE60BB35918061C3ECB /* ChatDataSourceProtocol.swift in Sources */, - FC9C847E639368AE9DCD4F4C0D745EF3 /* ChatItemCompanion.swift in Sources */, - 8867B0709DE6851C45CD27BC45D5E4E7 /* ChatItemPresenterFactory.swift in Sources */, - 33C9126C93D8B4F3D6A1543B4C98618E /* ChatItemProtocolDefinitions.swift in Sources */, - F44F9E965318C8D275A6D6F27D2BB14E /* Chatto-dummy.m in Sources */, - 532E7EF69E5BE6723F2A4EFAB7ED6607 /* CollectionChanges.swift in Sources */, - 2CB7713B0D33C9E905F429EF16FB86DF /* DummyChatItemPresenter.swift in Sources */, - 406F0C247B841E15DC8D6F0FF0420D73 /* KeyboardTracker.swift in Sources */, - 3FB5355485D2570D0EE541C1C640812F /* ReadOnlyOrderedDictionary.swift in Sources */, - 831E03B95B8F5E02ACF2250807749B41 /* SerialTaskQueue.swift in Sources */, - 3B378B2BBAC42362BDF8AB7F08688E8B /* Utils.swift in Sources */, + 36ECF3B6D22A9B26CF195921FA9FB166 /* Alignment.swift in Sources */, + FC4DA29E0DA40655AAAB6FA4F90079AC /* AnimationUtils.swift in Sources */, + FA7188EC15ECB27E3D34E079BAC86D52 /* BaseMessageCollectionViewCell.swift in Sources */, + 7C4D5F4CA2DAA84A15307B68ED914A97 /* BaseMessageCollectionViewCellDefaultStyle.swift in Sources */, + A636C4EF6A2A6F9D9EBCFA15FF972F8E /* BaseMessageModel.swift in Sources */, + 339A9E762CDD578F7DF8C8C9C5E34E97 /* BaseMessagePresenter.swift in Sources */, + D9A9FD53F50423D1D8FEA054E8B81098 /* BaseMessageViewModel.swift in Sources */, + A5617DD5238B2EDE314D6A9110CFE391 /* CGFloat+Additions.swift in Sources */, + 0E1462CEC9D2BB30016796D787FD3249 /* CGPoint+Additions.swift in Sources */, + AD34D11B6CFA8A807BCA16A1142A338D /* CGRect+Additions.swift in Sources */, + 5B2EB2FA2D00C9CA7B1B5774D6D1E6D5 /* CGSize+Additions.swift in Sources */, + 41D047F989032464108E6EE8764FC8FF /* ChatInputBar.swift in Sources */, + 11B2523F4443015EFDEA1DCCECF773D0 /* ChatInputBarAppearance.swift in Sources */, + 1A55F588D2BCAE5761C6389011C02661 /* ChatInputBarPresenter.swift in Sources */, + BFF30F4F1C7C3C91BA39B53F1A62F287 /* ChatInputItem.swift in Sources */, + D30F9E46E572C3BDF4673218FA283CDC /* ChatInputItemView.swift in Sources */, + D5BABA0BE0A5BD093648652DC808A8AD /* ChatItemDecorationAttributes.swift in Sources */, + 19B33E6CD8D93361BF336564EFDC27B9 /* ChattoAdditions-dummy.m in Sources */, + 325E12A4E947379B7B77829BBE990EAD /* CircleIconView.m in Sources */, + 123327C96E10DB97395C607A98CACEAB /* CircleProgressIndicatorView.m in Sources */, + FEA25065497E0BAE3FB16FC666C91DAC /* CircleProgressView.m in Sources */, + AD1F7BADAF279FADDC4712746786715E /* DeviceImagePicker.swift in Sources */, + 406277494EF48172137FE4D41DE545DE /* ExpandableTextView.swift in Sources */, + 0D08CE30D5143B5F68A145F915CED9A8 /* HorizontalStackScrollView.swift in Sources */, + 7EAA32B3B18209F7E9910D2A1F260361 /* ImagePicker.swift in Sources */, + 46B23101F2C9EB6C2D8D0A925C3A3E35 /* LiveCameraCaptureSession.swift in Sources */, + 5CC30B0AA5E0C72415D3C0467A8D4324 /* LiveCameraCell.swift in Sources */, + 3A524A7F6CC21ABBFD487AB542F665DC /* LiveCameraCellPresenter.swift in Sources */, + E1CC3FDDBFF4973752A92184E17B8F68 /* Observable.swift in Sources */, + 08F8014E7C34A1933EEE464F8A7FD948 /* PhotoBubbleView.swift in Sources */, + 936348BC9FA00DE4751CD9165E2D14E5 /* PhotoMessageCollectionViewCell.swift in Sources */, + F13E099F9760BDADA5EA165B3D2BD014 /* PhotoMessageCollectionViewCellDefaultStyle.swift in Sources */, + 705E7BFE90BC4F32123FD61B7D6DDE0D /* PhotoMessageModel.swift in Sources */, + F7385667FB15B42285F2739E5E192B52 /* PhotoMessagePresenter.swift in Sources */, + C89141D3D6A38A0B2522C3AAE6885F34 /* PhotoMessagePresenterBuilder.swift in Sources */, + F43492C2CEDEEA15778EE3EBAE4FA5C1 /* PhotoMessageViewModel.swift in Sources */, + 915D77F697630FFFE9B7456BD9158909 /* PhotosChatInputItem.swift in Sources */, + 60593D3B7251C8794767D33622E56259 /* PhotosInputCameraPicker.swift in Sources */, + 97E2827833D127D296B3901D29C13755 /* PhotosInputCell.swift in Sources */, + E89FC072AC9479505161CE9EB863C553 /* PhotosInputCellProvider.swift in Sources */, + A8C83B165CC00166011D78F473DE88A6 /* PhotosInputDataProvider.swift in Sources */, + 131899ACA4567508E705F077A2402BEA /* PhotosInputPlaceholderCell.swift in Sources */, + 827296B2AB1BCE4CCA8E47180866927D /* PhotosInputPlaceholderCellProvider.swift in Sources */, + B129DBB873EBB17585033BC75A427C60 /* PhotosInputPlaceholderDataProvider.swift in Sources */, + 3FFE645D7F0A109E86AC440814482B51 /* PhotosInputView.swift in Sources */, + CCDFEE7929998DB07E8FB8D20E610BF8 /* PhotosInputViewItemSizeCalculator.swift in Sources */, + 675AC2126A225E5DA52B5486BF106C4E /* PhotosInputWithPlaceholdersDataProvider.swift in Sources */, + ADA8733CB0BB2891CF2F5CA6D5BCD1B1 /* ReusableXibView.swift in Sources */, + C28C7557A9E4881AADAFFCA19436CBE3 /* SimulatorImagePicker.swift in Sources */, + 90D09BB277BF9EC20D5C035DD35271D9 /* TabInputButton.swift in Sources */, + 6E58A916AF862E96FE9E1E80E9CF1628 /* TextBubbleView.swift in Sources */, + 7C3B55D2D648098E0F561A189ADAD5B9 /* TextChatInputItem.swift in Sources */, + 0E2A38FE6272887678D5B2619CDF028F /* TextMessageCollectionViewCell.swift in Sources */, + DE5169876329E95228222EF2EA32C713 /* TextMessageCollectionViewCellDefaultStyle.swift in Sources */, + F68E941704E05913133B1FC3DC1EAE34 /* TextMessageModel.swift in Sources */, + A58FE8D84B5F1F4663AEDC149E3AE434 /* TextMessagePresenter.swift in Sources */, + 71BD18B5F73AA8E71E88803C2D9AFFDC /* TextMessagePresenterBuilder.swift in Sources */, + E0EF8F5002F1FB2CCDBFD4CB23D85CCA /* TextMessageViewModel.swift in Sources */, + 1AAD77F43DDDAE59C60718AC186CBA3D /* UIColor+Additions.swift in Sources */, + 64658EDE7621DF8D7CA77870B1060D71 /* UIEdgeInsets+Additions.swift in Sources */, + 513D3AC06D6C5D629E8D618B00F13101 /* UIImage+Additions.swift in Sources */, + 355EA957643570570C38A1A965305096 /* UIScreen+Scale.swift in Sources */, + 511CF5A6863FE5D4E5081DD49FDF685E /* UIView+Additions.swift in Sources */, + 3F6026561EF3D31C97E2F9C45648E444 /* ViewDefinitions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 6E827308370CF34C79256B8EABA2D4A7 /* PBXTargetDependency */ = { + 2FB2BAD92DFF592B15D3A68CF071C079 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Chatto; - target = 0564C2782D1F2F8E464CB332E0FE7246 /* Chatto */; - targetProxy = 919991093F4ADC46C15C3FE1FE49290F /* PBXContainerItemProxy */; + target = F3B3A79B2EF929FE3E146E8B922BFFF3 /* Chatto */; + targetProxy = 9830C72812585E9B6D4D7550B0BCA291 /* PBXContainerItemProxy */; }; - E3A00BAC4CD0E9F1098F630E28E6C8E6 /* PBXTargetDependency */ = { + 6E827308370CF34C79256B8EABA2D4A7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Chatto; - target = 0564C2782D1F2F8E464CB332E0FE7246 /* Chatto */; - targetProxy = E15D700B0C37BBB75A542999FE2533A3 /* PBXContainerItemProxy */; + target = F3B3A79B2EF929FE3E146E8B922BFFF3 /* Chatto */; + targetProxy = 919991093F4ADC46C15C3FE1FE49290F /* PBXContainerItemProxy */; }; F1550BD030CD6847B1E3C4DCF342B150 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ChattoAdditions; - target = DCD24D044DCB3D3A8BB5461EC53DE4E2 /* ChattoAdditions */; + target = CB03F082A875F222026BAF0346E84EC5 /* ChattoAdditions */; targetProxy = 06FA345DEABBFBA4C02A6207382A8FAA /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -1089,104 +1093,9 @@ }; name = Debug; }; - 43643072528A8AE057C78ED474CC4C45 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8A58C02B190EA9F6AE9FB698D29DCBC1 /* ChattoAdditions.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/ChattoAdditions/ChattoAdditions-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ChattoAdditions/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/ChattoAdditions/ChattoAdditions.modulemap"; - PRODUCT_NAME = ChattoAdditions; - 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; - }; - 531A252B777CB68E1FD986E343CC610C /* Release */ = { + 3EEA2F14360100CE5A85519BFF7BD914 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4F90FA6D4FBA6832B0032AB803E89430 /* Chatto.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/Chatto/Chatto-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Chatto/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/Chatto/Chatto.modulemap"; - PRODUCT_NAME = Chatto; - 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; - }; - AFF137C0A571AE41193CCCBD6AA4B24B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8A58C02B190EA9F6AE9FB698D29DCBC1 /* ChattoAdditions.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/ChattoAdditions/ChattoAdditions-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ChattoAdditions/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/ChattoAdditions/ChattoAdditions.modulemap"; - PRODUCT_NAME = ChattoAdditions; - 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; - }; - B263121BB873113DC023F3CB65BF89CB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4F90FA6D4FBA6832B0032AB803E89430 /* Chatto.xcconfig */; + baseConfigurationReference = 1223839FD87970CC27C696E8AFC08B73 /* Chatto.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1370,18 +1279,104 @@ }; name = Release; }; + EEBF3D454A2B7A4C72799E02D78FFA3E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8A58C02B190EA9F6AE9FB698D29DCBC1 /* ChattoAdditions.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/ChattoAdditions/ChattoAdditions-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ChattoAdditions/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/ChattoAdditions/ChattoAdditions.modulemap"; + PRODUCT_NAME = ChattoAdditions; + 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; + }; + F1AA1465A594E4AAF3EFC90A83F41339 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1223839FD87970CC27C696E8AFC08B73 /* Chatto.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/Chatto/Chatto-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Chatto/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/Chatto/Chatto.modulemap"; + PRODUCT_NAME = Chatto; + 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; + }; + F9678CF70CE3905D2398B20A016EA9D1 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8A58C02B190EA9F6AE9FB698D29DCBC1 /* ChattoAdditions.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/ChattoAdditions/ChattoAdditions-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ChattoAdditions/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/ChattoAdditions/ChattoAdditions.modulemap"; + PRODUCT_NAME = ChattoAdditions; + 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; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0C6B695FB9120E769A46CB6A2BE56E58 /* Build configuration list for PBXNativeTarget "Chatto" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B263121BB873113DC023F3CB65BF89CB /* Debug */, - 531A252B777CB68E1FD986E343CC610C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 1ACE60E84B8FD1DA1F249B79678D2A4E /* Build configuration list for PBXNativeTarget "Pods-ChattoApp" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1400,11 +1395,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D409FEDA817C0F3E01C4F23EB3831EDF /* Build configuration list for PBXNativeTarget "ChattoAdditions" */ = { + 62615C4FF060B952092F16A0387109C5 /* Build configuration list for PBXNativeTarget "ChattoAdditions" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F9678CF70CE3905D2398B20A016EA9D1 /* Debug */, + EEBF3D454A2B7A4C72799E02D78FFA3E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D42C7EDE276331796726730D7A9655F2 /* Build configuration list for PBXNativeTarget "Chatto" */ = { isa = XCConfigurationList; buildConfigurations = ( - 43643072528A8AE057C78ED474CC4C45 /* Debug */, - AFF137C0A571AE41193CCCBD6AA4B24B /* Release */, + 3EEA2F14360100CE5A85519BFF7BD914 /* Debug */, + F1AA1465A594E4AAF3EFC90A83F41339 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release;