diff --git a/MiniScanner.xcodeproj/project.pbxproj b/MiniScanner.xcodeproj/project.pbxproj index 5841e45cff2ec68d9f4b0574ebca2068ae152599..b452d23405afdb938ac67c7abc6e38072d8e79c6 100644 --- a/MiniScanner.xcodeproj/project.pbxproj +++ b/MiniScanner.xcodeproj/project.pbxproj @@ -125,6 +125,10 @@ 539D1C972C171344009DB24A /* LNExtensionExecutor in Frameworks */ = {isa = PBXBuildFile; productRef = 539D1C962C171344009DB24A /* LNExtensionExecutor */; }; 539D1C982C1713AC009DB24A /* LNExtensionExecutor in Embed Frameworks */ = {isa = PBXBuildFile; productRef = 539D1C962C171344009DB24A /* LNExtensionExecutor */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 539EF14E2C2AA43B0041AE1F /* ara.traineddata in Resources */ = {isa = PBXBuildFile; fileRef = 539EF14D2C2AA43B0041AE1F /* ara.traineddata */; }; + 53A478812C358E100073E956 /* LanguageManager-iOS in Frameworks */ = {isa = PBXBuildFile; productRef = 53A478802C358E100073E956 /* LanguageManager-iOS */; }; + 53A478842C358E6E0073E956 /* IQKeyboardManagerSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 53A478832C358E6E0073E956 /* IQKeyboardManagerSwift */; }; + 53A478872C358F4A0073E956 /* Toast in Frameworks */ = {isa = PBXBuildFile; productRef = 53A478862C358F4A0073E956 /* Toast */; }; + 53A4788A2C358FFA0073E956 /* ImageViewer_swift in Frameworks */ = {isa = PBXBuildFile; productRef = 53A478892C358FFA0073E956 /* ImageViewer_swift */; }; 53BAE0ED2C15E0890072189E /* EditViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53BAE0EB2C15E0890072189E /* EditViewController.swift */; }; 53BAE0EE2C15E0890072189E /* EditViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 53BAE0EC2C15E0890072189E /* EditViewController.xib */; }; 53BEB1422C2967E0005A3567 /* FoldersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53BEB1402C2967E0005A3567 /* FoldersViewController.swift */; }; @@ -447,8 +451,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 53A478872C358F4A0073E956 /* Toast in Frameworks */, + 53A478842C358E6E0073E956 /* IQKeyboardManagerSwift in Frameworks */, 539D1C972C171344009DB24A /* LNExtensionExecutor in Frameworks */, 539996542C2711BA00671340 /* ZLImageEditor in Frameworks */, + 53A4788A2C358FFA0073E956 /* ImageViewer_swift in Frameworks */, + 53A478812C358E100073E956 /* LanguageManager-iOS in Frameworks */, B827E5196CC419E773B843E1 /* Pods_MiniScanner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -737,6 +745,41 @@ path = ShareSheet; sourceTree = "<group>"; }; + 53A4787B2C358D070073E956 /* ClassicWalkthroughViewController */ = { + isa = PBXGroup; + children = ( + EC70253E254E1E7400BE1958 /* ClassicWalkthroughViewController.swift */, + EC70253D254E1E7400BE1958 /* ClassicWalkthroughViewController.xib */, + ); + path = ClassicWalkthroughViewController; + sourceTree = "<group>"; + }; + 53A4787C2C358D230073E956 /* WalkthroughViewController */ = { + isa = PBXGroup; + children = ( + EC70253C254E1E7400BE1958 /* WalkthroughViewController.swift */, + EC70253F254E1E7400BE1958 /* WalkthroughViewController.xib */, + ); + path = WalkthroughViewController; + sourceTree = "<group>"; + }; + 53A4787D2C358D460073E956 /* Model */ = { + isa = PBXGroup; + children = ( + EC8A9B1C254DCEC600F9AF99 /* File.swift */, + ); + path = Model; + sourceTree = "<group>"; + }; + 53A4787E2C358D5C0073E956 /* Customs */ = { + isa = PBXGroup; + children = ( + 5359841C2C14B816003EB6ED /* CustomViews */, + 53F21F862C12468900172BFC /* CustomCells */, + ); + path = Customs; + sourceTree = "<group>"; + }; 53AF29712C1098AC0046E9C1 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -951,10 +994,9 @@ EC8A9B06254DC2EE00F9AF99 /* Documents */ = { isa = PBXGroup; children = ( + 53A4787E2C358D5C0073E956 /* Customs */, + 53A4787D2C358D460073E956 /* Model */, 53BEB13F2C2967CC005A3567 /* FoldersViewController */, - 5359841C2C14B816003EB6ED /* CustomViews */, - 53F21F862C12468900172BFC /* CustomCells */, - EC8A9B1C254DCEC600F9AF99 /* File.swift */, EC0CF217254D8DF200888722 /* Documents.storyboard */, EC0CF214254D8DE900888722 /* DocumentsTableViewController.swift */, ); @@ -1044,10 +1086,8 @@ isa = PBXGroup; children = ( EC702545254E1E9E00BE1958 /* WalkthroughModel.swift */, - EC70253E254E1E7400BE1958 /* ClassicWalkthroughViewController.swift */, - EC70253D254E1E7400BE1958 /* ClassicWalkthroughViewController.xib */, - EC70253C254E1E7400BE1958 /* WalkthroughViewController.swift */, - EC70253F254E1E7400BE1958 /* WalkthroughViewController.xib */, + 53A4787B2C358D070073E956 /* ClassicWalkthroughViewController */, + 53A4787C2C358D230073E956 /* WalkthroughViewController */, ); path = Walktrough; sourceTree = "<group>"; @@ -1074,6 +1114,10 @@ packageProductDependencies = ( 539D1C962C171344009DB24A /* LNExtensionExecutor */, 539996532C2711BA00671340 /* ZLImageEditor */, + 53A478802C358E100073E956 /* LanguageManager-iOS */, + 53A478832C358E6E0073E956 /* IQKeyboardManagerSwift */, + 53A478862C358F4A0073E956 /* Toast */, + 53A478892C358FFA0073E956 /* ImageViewer_swift */, ); productName = MiniScanner; productReference = EC0CF1FA254D8BBF00888722 /* MiniScanner.app */; @@ -1113,6 +1157,10 @@ packageReferences = ( 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor" */, 539996522C2711BA00671340 /* XCRemoteSwiftPackageReference "ZLImageEditor" */, + 53A4787F2C358E100073E956 /* XCRemoteSwiftPackageReference "LanguageManager-iOS" */, + 53A478822C358E6E0073E956 /* XCRemoteSwiftPackageReference "IQKeyboardManager" */, + 53A478852C358F4A0073E956 /* XCRemoteSwiftPackageReference "Toast-Swift" */, + 53A478882C358FFA0073E956 /* XCRemoteSwiftPackageReference "ImageViewer" */, ); productRefGroup = EC0CF1FB254D8BBF00888722 /* Products */; projectDirPath = ""; @@ -1619,6 +1667,38 @@ minimumVersion = 1.2.0; }; }; + 53A4787F2C358E100073E956 /* XCRemoteSwiftPackageReference "LanguageManager-iOS" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Abedalkareem/LanguageManager-iOS"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.2.9; + }; + }; + 53A478822C358E6E0073E956 /* XCRemoteSwiftPackageReference "IQKeyboardManager" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/hackiftekhar/IQKeyboardManager.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 7.0.3; + }; + }; + 53A478852C358F4A0073E956 /* XCRemoteSwiftPackageReference "Toast-Swift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/scalessec/Toast-Swift"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.1.1; + }; + }; + 53A478882C358FFA0073E956 /* XCRemoteSwiftPackageReference "ImageViewer" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/michaelhenry/ImageViewer.swift"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 3.3.8; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -1632,6 +1712,26 @@ package = 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor" */; productName = LNExtensionExecutor; }; + 53A478802C358E100073E956 /* LanguageManager-iOS */ = { + isa = XCSwiftPackageProductDependency; + package = 53A4787F2C358E100073E956 /* XCRemoteSwiftPackageReference "LanguageManager-iOS" */; + productName = "LanguageManager-iOS"; + }; + 53A478832C358E6E0073E956 /* IQKeyboardManagerSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 53A478822C358E6E0073E956 /* XCRemoteSwiftPackageReference "IQKeyboardManager" */; + productName = IQKeyboardManagerSwift; + }; + 53A478862C358F4A0073E956 /* Toast */ = { + isa = XCSwiftPackageProductDependency; + package = 53A478852C358F4A0073E956 /* XCRemoteSwiftPackageReference "Toast-Swift" */; + productName = Toast; + }; + 53A478892C358FFA0073E956 /* ImageViewer_swift */ = { + isa = XCSwiftPackageProductDependency; + package = 53A478882C358FFA0073E956 /* XCRemoteSwiftPackageReference "ImageViewer" */; + productName = ImageViewer_swift; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = EC0CF1F2254D8BBF00888722 /* Project object */; diff --git a/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist b/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist index 9f3ce571c737d6556c0082dc8853026b4ace5a8f..fcb799cb792d33585b7c9f7a94d3147fa60af97d 100644 --- a/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ <key>MiniScanner.xcscheme_^#shared#^_</key> <dict> <key>orderHint</key> - <integer>9</integer> + <integer>3</integer> </dict> </dict> </dict> diff --git a/MiniScanner.xcworkspace/xcshareddata/swiftpm/Package.resolved b/MiniScanner.xcworkspace/xcshareddata/swiftpm/Package.resolved index b5b850f82e0d9479e97627f796b8ca1a205f5ff8..d5cf7e7d562c0f285d2211c7e7a27e3d4785ae4e 100644 --- a/MiniScanner.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/MiniScanner.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,33 @@ { + "originHash" : "174e2433b4ce7e1515d76317ce11975dbcddc241481d6428646b200fb9578ee5", "pins" : [ + { + "identity" : "imageviewer.swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/michaelhenry/ImageViewer.swift", + "state" : { + "revision" : "3274b5f549b9e4cc8ab9f3e9734ee9fc6109e8e8", + "version" : "3.3.8" + } + }, + { + "identity" : "iqkeyboardmanager", + "kind" : "remoteSourceControl", + "location" : "https://github.com/hackiftekhar/IQKeyboardManager.git", + "state" : { + "revision" : "19e111f9246b3407fe0c334dc78fa890c40d8c67", + "version" : "7.0.3" + } + }, + { + "identity" : "languagemanager-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Abedalkareem/LanguageManager-iOS", + "state" : { + "revision" : "d948455d6820b65019bc3935eb9b4aff440096b0", + "version" : "1.2.9" + } + }, { "identity" : "lnextensionexecutor", "kind" : "remoteSourceControl", @@ -9,6 +37,24 @@ "version" : "1.2.0" } }, + { + "identity" : "sdwebimage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/SDWebImage/SDWebImage", + "state" : { + "revision" : "be0bcd7823ce56629948491f2eaeaa19979514f7", + "version" : "5.19.4" + } + }, + { + "identity" : "toast-swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/scalessec/Toast-Swift", + "state" : { + "revision" : "ddccd20d6fb718448d9b179c454c561653fda7d5", + "version" : "5.1.1" + } + }, { "identity" : "zlimageeditor", "kind" : "remoteSourceControl", @@ -19,5 +65,5 @@ } } ], - "version" : 2 + "version" : 3 } diff --git a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate index ba4ea40d1ef3e9196bf7c5d65ef8f809a33f8580..7305b6b567fe33d2551efbbdb1d2286b354ffa56 100644 Binary files a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate and b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/MiniScanner/Extensions/UIViewController+Extensions.swift b/MiniScanner/Extensions/UIViewController+Extensions.swift index 77d020edcb680c0cb820b5cccd409200176083cc..8e3c6b86628a49bc6e8e428e7c56f0cc7f6e222c 100644 --- a/MiniScanner/Extensions/UIViewController+Extensions.swift +++ b/MiniScanner/Extensions/UIViewController+Extensions.swift @@ -1,40 +1,52 @@ import UIKit +import LNExtensionExecutor extension UIViewController { - - func addChildViewControllerWithView(_ childViewController: UIViewController, toView view: UIView? = nil) { - let view: UIView = view ?? self.view - childViewController.removeFromParent() - childViewController.willMove(toParent: self) - addChild(childViewController) - childViewController.didMove(toParent: self) - childViewController.view.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(childViewController.view) - view.addConstraints([ - NSLayoutConstraint(item: childViewController.view!, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: -10), - NSLayoutConstraint(item: childViewController.view!, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0), - NSLayoutConstraint(item: childViewController.view!, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0), - NSLayoutConstraint(item: childViewController.view!, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0) - ]) - view.layoutIfNeeded() - } - - func removeChildViewController(_ childViewController: UIViewController) { - childViewController.removeFromParent() - childViewController.willMove(toParent: nil) - childViewController.removeFromParent() - childViewController.didMove(toParent: nil) - childViewController.view.removeFromSuperview() - view.layoutIfNeeded() - } - - func hideKeyboardWhenTappedAround() { - let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) - tap.cancelsTouchesInView = false - view.addGestureRecognizer(tap) - } - - @objc func dismissKeyboard() { - view.endEditing(true) - } + + func addChildViewControllerWithView(_ childViewController: UIViewController, toView view: UIView? = nil) { + let view: UIView = view ?? self.view + childViewController.removeFromParent() + childViewController.willMove(toParent: self) + addChild(childViewController) + childViewController.didMove(toParent: self) + childViewController.view.translatesAutoresizingMaskIntoConstraints = false + view.addSubview(childViewController.view) + view.addConstraints([ + NSLayoutConstraint(item: childViewController.view!, attribute: .top, relatedBy: .equal, toItem: view, attribute: .top, multiplier: 1, constant: -10), + NSLayoutConstraint(item: childViewController.view!, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0), + NSLayoutConstraint(item: childViewController.view!, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0), + NSLayoutConstraint(item: childViewController.view!, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0) + ]) + view.layoutIfNeeded() + } + + func removeChildViewController(_ childViewController: UIViewController) { + childViewController.removeFromParent() + childViewController.willMove(toParent: nil) + childViewController.removeFromParent() + childViewController.didMove(toParent: nil) + childViewController.view.removeFromSuperview() + view.layoutIfNeeded() + } + + func hideKeyboardWhenTappedAround() { + let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) + tap.cancelsTouchesInView = false + view.addGestureRecognizer(tap) + } + + @objc func dismissKeyboard() { + view.endEditing(true) + } + + func directShareWith(extensionBundleIdentifier: String, payload: [Any], view: UIViewController) async { + do { + let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) + let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) + print("completed: \(completed) return items: \(returnItems)") + + } catch(let error) { + print("error: \(error.localizedDescription)") + } + } } diff --git a/MiniScanner/Helpers/Globals.swift b/MiniScanner/Helpers/Globals.swift index c785d14c9569bc9f88514b58fe79596fe7c596b5..744e223ab275111bbf4c3d35f9104e8dad472793 100644 --- a/MiniScanner/Helpers/Globals.swift +++ b/MiniScanner/Helpers/Globals.swift @@ -8,9 +8,11 @@ import Foundation import UIKit + typealias AlertViewClosure = () -> () typealias AlertViewTextClosure = (String) -> () +// Global Alert @discardableResult func alert(confirm: String, destructive: String, @@ -38,10 +40,7 @@ func alert(confirm: String, return topV } topViewController()?.present(vc, animated: false, completion: nil) - } - - - + } return vc } diff --git a/MiniScanner/Managers/PDFManager.swift b/MiniScanner/Managers/PDFManager.swift index 01beeaf06b8cc8ca2f02745089c9316afe56b295..f43635bd85fb9f0243840c9c17c693c3bd32742f 100644 --- a/MiniScanner/Managers/PDFManager.swift +++ b/MiniScanner/Managers/PDFManager.swift @@ -100,14 +100,14 @@ class PDFManager { let displayName = name == "" ? String.getDocumentName() : name let urlPDFtoSave = scannerURL.appendingPathComponent(displayName) let urlPDFtoSaveInAllDoc = allDoc.appendingPathComponent(displayName) - + if imageURLs.isEmpty { return } let document = PDFDocument() let dispatchGroup = DispatchGroup() - + var pdfPages = [PDFPage?](repeating: nil, count: imageURLs.count) - + for (index, imageURL) in imageURLs.enumerated() { dispatchGroup.enter() DispatchQueue.global().async { @@ -123,7 +123,7 @@ class PDFManager { } } } - + dispatchGroup.notify(queue: .main) { for pdfPage in pdfPages { if let pdfPage = pdfPage { @@ -153,10 +153,10 @@ class PDFManager { existingPDFDocumentObjects = loadedPDFDocumentObjects } } - + // Add the new PDFDocumentObject to the existing array existingPDFDocumentObjects.append(pdfDocumentObject) - + // Save the updated array back to UserDefaults if let encodedData = try? encoder.encode(existingPDFDocumentObjects) { defaults.set(encodedData, forKey: "pdfDocumentObjects") @@ -170,12 +170,12 @@ class PDFManager { guard let scannerURL = localFileManager?.getFolderUrl(folder: folder) else { return } let urlPDFtoSave = scannerURL.appendingPathComponent(name == "" ? String.getDocumentName() : "\(name).pdf") - + if imageURLs.isEmpty { return } let document = PDFDocument() let dispatchGroup = DispatchGroup() - + // Create an array of optional PDFPage with a size equal to the number of images var pdfPages = [PDFPage?](repeating: nil, count: imageURLs.count) @@ -210,7 +210,7 @@ class PDFManager { } catch { print(error.localizedDescription) // handle error } - + print("All images have been processed") } } @@ -235,7 +235,7 @@ class PDFManager { existingPDFDocumentObjects = loadedPDFDocumentObjects } } - + // Add the new PDFDocumentObject to the existing array for item in existingPDFDocumentObjects { if item.name.replacingOccurrences(of: ".pdf", with: "") == name { @@ -243,7 +243,7 @@ class PDFManager { item.session.add(item: newItem) } } - + // Save the updated array back to UserDefaults if let encodedData = try? encoder.encode(existingPDFDocumentObjects) { defaults.set(encodedData, forKey: "pdfDocumentObjects") @@ -341,4 +341,59 @@ class PDFManager { } return pdfDocument } + + class func printPDF(from url: URL) { + let printInfo = UIPrintInfo(dictionary:nil) + printInfo.jobName = url.lastPathComponent + printInfo.outputType = .general + + let printController = UIPrintInteractionController.shared + printController.printInfo = printInfo + + let pdfData = try? Data(contentsOf: url) + if pdfData != nil { + printController.printingItem = pdfData + } + + printController.present(animated: true, completionHandler: nil) + } + + class func sharePDF(payload: [Any], viewController: UIViewController) { + let shareController = UIActivityViewController(activityItems: payload, applicationActivities: nil) + viewController.present(shareController, animated: true, completion: nil) + + } + + class func savePDF(session: MultiPageScanSession, + folder: AppConfigurator.Folder, + fileManager: LocalFileManager?, + name: String, + completion: @escaping () -> ()) { + let items = session.scannedItems + var images = [URL]() + for index in 0..<(items.count) { + if let url = items[index].renderedImage { + images.append(url) + } + } + PDFManager.createMultiPDFPage(from: images, localFileManager: fileManager, folder: folder, name: name, session: session, { + completion() + }) + } + class func savePDFAndReturn(session: MultiPageScanSession, + folder: AppConfigurator.Folder, + fileManager: LocalFileManager?, + name: String, + completion: @escaping (URL) -> ()) { + let items = session.scannedItems + var images = [URL]() + for index in 0..<(items.count) { + if let url = items[index].renderedImage { + images.append(url) + } + } + PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: fileManager, folder: folder, name: name) { document in + completion(document) + } + } } diff --git a/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift b/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift index 5bbe5ebda9d2574e2ff9153590da4a2dfd2e7d5d..cd2a56c863ce944afd0af0846c79bac68810aa91 100644 --- a/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift +++ b/MiniScanner/Modules/DocumentPreview/DocumentPreviewViewController.swift @@ -44,39 +44,12 @@ final class DocumentPreviewViewController: UIViewController { } - private func directShareWith(extensionBundleIdentifier: String) async { - do { - let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) - let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) - print("completed: \(completed) return items: \(returnItems)") - - } catch(let error) { - print("error: \(error.localizedDescription)") - } - } - - func printPDF(from url: URL) { - let printInfo = UIPrintInfo(dictionary:nil) - printInfo.jobName = url.lastPathComponent - printInfo.outputType = .general - - let printController = UIPrintInteractionController.shared - printController.printInfo = printInfo - - let pdfData = try? Data(contentsOf: url) - if pdfData != nil { - printController.printingItem = pdfData - } - - printController.present(animated: true, completionHandler: nil) - } - @IBAction func whatsappTapped(_ sender: UIButton) { activityIndicator.startAnimating() DispatchQueue.main.async { Task { - await self.directShareWith(extensionBundleIdentifier: ShareOptions.whatsapp) + await self.directShareWith(extensionBundleIdentifier: ShareOptions.whatsapp, payload: self.payload, view: self) } self.activityIndicator.stopAnimating() } @@ -87,7 +60,7 @@ final class DocumentPreviewViewController: UIViewController { DispatchQueue.main.async { Task { - await self.directShareWith(extensionBundleIdentifier: ShareOptions.telegram) + await self.directShareWith(extensionBundleIdentifier: ShareOptions.telegram, payload: self.payload, view: self) } self.activityIndicator.stopAnimating() } @@ -97,7 +70,7 @@ final class DocumentPreviewViewController: UIViewController { activityIndicator.startAnimating() DispatchQueue.main.async { Task { - await self.directShareWith(extensionBundleIdentifier: ShareOptions.gmail) + await self.directShareWith(extensionBundleIdentifier: ShareOptions.gmail, payload: self.payload, view: self) self.activityIndicator.stopAnimating() } } @@ -105,15 +78,14 @@ final class DocumentPreviewViewController: UIViewController { @IBAction func printTapped(_ sender: UIButton) { DispatchQueue.main.async { - self.printPDF(from: self.payload[0] as! URL) + PDFManager.printPDF(from: self.payload[0] as! URL) } } @IBAction func moreTapped(_ sender: UIButton) { DispatchQueue.main.async { self.activityIndicator.startAnimating() - let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) - self.present(shareController, animated: true, completion: nil) + PDFManager.sharePDF(payload: self.payload, viewController: self) self.activityIndicator.stopAnimating() } } diff --git a/MiniScanner/Modules/Documents/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift b/MiniScanner/Modules/Documents/Customs/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift rename to MiniScanner/Modules/Documents/Customs/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.swift diff --git a/MiniScanner/Modules/Documents/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib b/MiniScanner/Modules/Documents/Customs/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib rename to MiniScanner/Modules/Documents/Customs/CustomCells/DocumentsTableViewCell/DocumentsTableViewCell.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/AllFolderTableViewCell.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/AllFolderTableViewCell.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/AllFolderTableView/CustomCells/FolderCollectionViewCell.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/CustomTabBarView/CustomTabBarView.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/CustomTabBarView/CustomTabBarView.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/CustomTabBarView/CustomTabBarView.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/CustomTabBarView/CustomTabBarView.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/CustomTabBarView/CustomTabBarView.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/KNAlert/KNAlertViewController.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/KNAlert/KNAlertViewController.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/KNAlert/KNAlertViewController.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/KNAlert/KNAlertViewController.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/KNAlert/KNAlertViewController.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/KNAlert/KNAlertViewController.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/KNAlert/KNAlertViewController.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/KNAlert/KNAlertViewController.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/SearchFilesView/SearchFilesView.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/SearchFilesView/SearchFilesView.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/SearchFilesView/SearchFilesView.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/SearchFilesView/SearchFilesView.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/SearchFilesView/SearchFilesView.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/SearchFilesView/SearchFilesView.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/SearchFilesView/SearchFilesView.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/SearchFilesView/SearchFilesView.xib diff --git a/MiniScanner/Modules/Documents/CustomViews/ShareSheet/ShareSheetViewController.swift b/MiniScanner/Modules/Documents/Customs/CustomViews/ShareSheet/ShareSheetViewController.swift similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/ShareSheet/ShareSheetViewController.swift rename to MiniScanner/Modules/Documents/Customs/CustomViews/ShareSheet/ShareSheetViewController.swift diff --git a/MiniScanner/Modules/Documents/CustomViews/ShareSheet/ShareSheetViewController.xib b/MiniScanner/Modules/Documents/Customs/CustomViews/ShareSheet/ShareSheetViewController.xib similarity index 100% rename from MiniScanner/Modules/Documents/CustomViews/ShareSheet/ShareSheetViewController.xib rename to MiniScanner/Modules/Documents/Customs/CustomViews/ShareSheet/ShareSheetViewController.xib diff --git a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift index e4eaaaeddba06a6fb1ef62218477ada102009b77..b828d037360f48dad1b86527f4112535c2f18594 100644 --- a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift +++ b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift @@ -435,16 +435,8 @@ extension DocumentsTableViewController: UINavigationControllerDelegate, UIImageP extension DocumentsTableViewController: ImageScannerControllerDelegate { func imageScannerController(_ scanner: ImageScannerController, didFinishWithSession session: MultiPageScanSession) { - var images = [URL]() - - for index in 0..<session.scannedItems.count { - if let url = session.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") if let folder = selectedFolder { - PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder) { + PDFManager.savePDF(session: session, folder: folder, fileManager: localFileManager, name: "") { scanner.dismiss(animated: true) { self.fetchViewModels() } @@ -567,19 +559,14 @@ extension DocumentsTableViewController: MultiPageScanSessionViewControllerDelega public func multiPageScanSessionViewController(_ multiPageScanSessionViewController: MultiPageScanSessionViewController, finished session: MultiPageScanSession) { - var images = [URL]() - for index in 0..<session.scannedItems.count { - if let url = session.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") if let folder = selectedFolder { - PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder) { + PDFManager.savePDF(session: session, folder: folder, fileManager: localFileManager, name: "") { self.fetchViewModels() self.navigationController?.popViewController(animated: true) + } } + } } diff --git a/MiniScanner/Modules/Documents/File.swift b/MiniScanner/Modules/Documents/Model/File.swift similarity index 100% rename from MiniScanner/Modules/Documents/File.swift rename to MiniScanner/Modules/Documents/Model/File.swift diff --git a/MiniScanner/Modules/EditViewController/EditViewController.swift b/MiniScanner/Modules/EditViewController/EditViewController.swift index 490d9bf3d6c36c27e9b038a9d1702f01e6e05cb4..dc4aa68a9caf89d4a48604c3fab82893df19cb11 100644 --- a/MiniScanner/Modules/EditViewController/EditViewController.swift +++ b/MiniScanner/Modules/EditViewController/EditViewController.swift @@ -67,6 +67,7 @@ public class EditViewController: UIViewController { banner.delegate = self updatePageLabel() } + view.addSubview(activityIndicator) continueButton.backgroundColor = .mainBlue continueButton.setTitle("Continue", for: .normal) @@ -80,6 +81,26 @@ public class EditViewController: UIViewController { } + public override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + deviceOrientationHelper.startDeviceOrientationNotifier { (deviceOrientation) in + print("orientation: \(deviceOrientation)") + self.orientationChanged(deviceOrientation: deviceOrientation) + } + } + + + public init(scanSession: MultiPageScanSession){ + self.scanSession = scanSession + super.init(nibName: nil, bundle: nil) + } + + required init?(coder aDecoder: NSCoder) { + scanSession = MultiPageScanSession() + fatalError("init(coder:) should not be called for this class") + } + + // MARK: - Methods @objc func backTapped() { if self.navigationItem.rightBarButtonItem == nil { self.navigationController?.popViewController(animated: true) @@ -114,13 +135,6 @@ public class EditViewController: UIViewController { self.present(alertController, animated: true, completion: nil) } } - public override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - deviceOrientationHelper.startDeviceOrientationNotifier { (deviceOrientation) in - print("orientation: \(deviceOrientation)") - self.orientationChanged(deviceOrientation: deviceOrientation) - } - } func configImageEditor() { ZLImageEditorConfiguration.default() @@ -215,14 +229,6 @@ public class EditViewController: UIViewController { print("Orientation changed: \(self.deviceOrientationHelper.currentDeviceOrientation.rawValue)") } - @IBAction func backIndex(_ sender: UIButton) { - if banner.pagerView.currentIndex != 0 { - banner.pagerView.scrollToItem(at: banner.pagerView.currentIndex - 1, animated: true) - selectedIndex = banner.pagerView.currentIndex - 1 - self.updatePageLabel() - } - } - func updatePageLabel() { if let session = scanSession { if let url = session.scannedItems[selectedIndex].renderedImage { @@ -232,6 +238,14 @@ public class EditViewController: UIViewController { pageIndex.textAlignment = .center } } + // MARK: - Actions + @IBAction func backIndex(_ sender: UIButton) { + if banner.pagerView.currentIndex != 0 { + banner.pagerView.scrollToItem(at: banner.pagerView.currentIndex - 1, animated: true) + selectedIndex = banner.pagerView.currentIndex - 1 + self.updatePageLabel() + } + } @IBAction func nextIndex(_ sender: UIButton) { if banner.pagerView.currentIndex != (scanSession?.scannedItems.count ?? 0) - 1 { @@ -292,43 +306,6 @@ public class EditViewController: UIViewController { } } - public init(scanSession: MultiPageScanSession){ - self.scanSession = scanSession - super.init(nibName: nil, bundle: nil) - } - - required init?(coder aDecoder: NSCoder) { - scanSession = MultiPageScanSession() - fatalError("init(coder:) should not be called for this class") - } - - private func directShareWith(extensionBundleIdentifier: String) async { - do { - let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) - let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) - print("completed: \(completed) return items: \(returnItems)") - - } catch(let error) { - print("error: \(error.localizedDescription)") - } - } - - func printPDF(from url: URL) { - let printInfo = UIPrintInfo(dictionary:nil) - printInfo.jobName = url.lastPathComponent - printInfo.outputType = .general - - let printController = UIPrintInteractionController.shared - printController.printInfo = printInfo - - let pdfData = try? Data(contentsOf: url) - if pdfData != nil { - printController.printingItem = pdfData - } - - printController.present(animated: true, completionHandler: nil) - } - @IBAction func whatsappShare(_ sender: UIButton) { self.saveFileAndShare(with: ShareOptions.whatsapp, name: "file:\(Date.now)") @@ -344,15 +321,14 @@ public class EditViewController: UIViewController { @IBAction func printTapped(_ sender: UIButton) { DispatchQueue.main.async { - self.printPDF(from: self.payload[0] as! URL) + PDFManager.printPDF(from: self.payload[0] as! URL) } } @IBAction func moreTapped(_ sender: UIButton) { DispatchQueue.main.async { self.activityIndicator.startAnimating() - let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) - self.present(shareController, animated: true, completion: nil) + PDFManager.sharePDF(payload: self.payload, viewController: self) self.activityIndicator.stopAnimating() } } @@ -493,20 +469,13 @@ extension EditViewController: BannerViewDelegate { private func saveFileAndShare(with: String, name: String) { activityIndicator.startAnimating() - - var images = [URL]() - for index in 0..<(scanSession?.scannedItems.count ?? 0) { - if let url = scanSession?.scannedItems[index].renderedImage { - images.append(url) - } - } - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + if let folder = sharedFolder, let session = scanSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: name) { document in self.payload = [document] Task { - await self.directShareWith(extensionBundleIdentifier: with) + await self.directShareWith(extensionBundleIdentifier: with, payload: self.payload, view: self) } - }) + } } } } @@ -533,56 +502,34 @@ extension EditViewController: ShareSheetViewControllerDelegate { } func printTapped() { - var images = [URL]() - for index in 0..<(scanSession?.scannedItems.count ?? 0) { - if let url = scanSession?.scannedItems[index].renderedImage { - images.append(url) + if let folder = sharedFolder, let session = scanSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: "") { document in + PDFManager.printPDF(from: document) } } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, { document in - self.printPDF(from: document) - }) - } } func moreTapped(name: String) { activityIndicator.startAnimating() - var images = [URL]() - for index in 0..<(scanSession?.scannedItems.count ?? 0) { - if let url = scanSession?.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + if let folder = sharedFolder, let session = scanSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: name) { document in self.payload = [document] - let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) - self.present(shareController, animated: true, completion: nil) + PDFManager.sharePDF(payload: self.payload, viewController: self) self.activityIndicator.stopAnimating() - - - }) + + } } } func saveTapped(name: String) { activityIndicator.startAnimating() - var images = [URL]() - for index in 0..<(scanSession?.scannedItems.count ?? 0) { - if let url = scanSession?.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = selectedFolder { - PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder, name: name, session: scanSession ?? MultiPageScanSession(), { + if let session = self.scanSession, let folder = selectedFolder { + PDFManager.savePDF(session: session, folder: folder, fileManager: localFileManager, name: name) { self.activityIndicator.stopAnimating() self.navigationController?.popViewController(animated: true) - }) + + } } } } @@ -681,7 +628,7 @@ extension EditViewController: EPSignatureDelegate { } } - +// MARK: - setupCropView extension EditViewController { @objc func setUpCropView() { @@ -692,7 +639,7 @@ extension EditViewController { croppedImage = sharedDetector.drawHighlightOverlay(forPoints: croppedImage, topLeft: detectedRectangleFeature.topLeft, topRight: detectedRectangleFeature.topRight, bottomLeft: detectedRectangleFeature.bottomLeft, bottomRight: detectedRectangleFeature.bottomRight) banner.pagerView.isUserInteractionEnabled = true self.magnetActivated() - }else{ + } else{ banner.pagerView.isUserInteractionEnabled = true self.magnetDeActivated() } diff --git a/MiniScanner/Modules/OCRViewController/OCRViewController.swift b/MiniScanner/Modules/OCRViewController/OCRViewController.swift index 970591433740ec78edd21b3bc09e7b06dedde748..7bc835835f363ff11c4889b9cea9687711fd6780 100644 --- a/MiniScanner/Modules/OCRViewController/OCRViewController.swift +++ b/MiniScanner/Modules/OCRViewController/OCRViewController.swift @@ -9,7 +9,7 @@ import UIKit import VisionKit import Vision -import Toast_Swift +import Toast class OCRViewController: UIViewController { // MARK: - Outlets diff --git a/MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController.swift b/MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController/ClassicWalkthroughViewController.swift similarity index 100% rename from MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController.swift rename to MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController/ClassicWalkthroughViewController.swift diff --git a/MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController.xib b/MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController/ClassicWalkthroughViewController.xib similarity index 100% rename from MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController.xib rename to MiniScanner/Modules/Walktrough/ClassicWalkthroughViewController/ClassicWalkthroughViewController.xib diff --git a/MiniScanner/Modules/Walktrough/WalkthroughViewController.swift b/MiniScanner/Modules/Walktrough/WalkthroughViewController/WalkthroughViewController.swift similarity index 100% rename from MiniScanner/Modules/Walktrough/WalkthroughViewController.swift rename to MiniScanner/Modules/Walktrough/WalkthroughViewController/WalkthroughViewController.swift diff --git a/MiniScanner/Modules/Walktrough/WalkthroughViewController.xib b/MiniScanner/Modules/Walktrough/WalkthroughViewController/WalkthroughViewController.xib similarity index 100% rename from MiniScanner/Modules/Walktrough/WalkthroughViewController.xib rename to MiniScanner/Modules/Walktrough/WalkthroughViewController/WalkthroughViewController.xib diff --git a/MiniScanner/Supporting Files/.DS_Store b/MiniScanner/Supporting Files/.DS_Store index 78a7ab646fb79374390768259e53bbf0dc892357..c331cc559e0e044a054d0a099e4b06abd7fa22d0 100644 Binary files a/MiniScanner/Supporting Files/.DS_Store and b/MiniScanner/Supporting Files/.DS_Store differ diff --git a/MiniScanner/Supporting Files/Assets.xcassets/.DS_Store b/MiniScanner/Supporting Files/Assets.xcassets/.DS_Store index 789ef3a6a38ca46bc4afd7c1809c6b73232efcd8..b495e97cfd6c43ceaf25ec332fc4c685d2bf15e2 100644 Binary files a/MiniScanner/Supporting Files/Assets.xcassets/.DS_Store and b/MiniScanner/Supporting Files/Assets.xcassets/.DS_Store differ diff --git a/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift b/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift index 026852950522e27a62c2cdf7b24835b14fcc8e8b..adab235d7e0888b1a3e69e2822fed950c78bba9f 100644 --- a/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift +++ b/MiniScanner/Supporting Files/CustomWeScan/Scan/ScannerViewController.swift @@ -449,21 +449,13 @@ public final class ScannerViewController: UIViewController { private func saveFileAndShare(with: String, name: String) { activityIndicator.startAnimating() - - var images = [URL]() - for index in 0..<multipageSession.scannedItems.count { - if let url = multipageSession.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + if let folder = sharedFolder, let session = multipageSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: name) { document in self.payload = [document] Task { - await self.directShareWith(extensionBundleIdentifier: with) + await self.directShareWith(extensionBundleIdentifier: with, payload: self.payload, view: self) } - }) + } } } @@ -474,18 +466,6 @@ public final class ScannerViewController: UIViewController { self.navigationController?.pushViewController(editViewController, animated: true) } - private func directShareWith(extensionBundleIdentifier: String) async { - do { - let executor = try LNExtensionExecutor(extensionBundleIdentifier: extensionBundleIdentifier) - let (completed, returnItems) = try await executor.execute(withActivityItems: payload, on: self) - print("completed: \(completed) return items: \(returnItems)") - activityIndicator.stopAnimating() - - } catch(let error) { - print("error: \(error.localizedDescription)") - } - } - } extension ScannerViewController: RectangleDetectionDelegateProtocol { @@ -498,7 +478,6 @@ extension ScannerViewController: RectangleDetectionDelegateProtocol { func didStartCapturingPicture(for captureSessionManager: CaptureSessionManager) { activityIndicator.startAnimating() - // shutterButton.isUserInteractionEnabled = false } func captureSessionManager(_ captureSessionManager: CaptureSessionManager, didCapturePicture picture: UIImage, withQuad quad: Quadrilateral?) { @@ -592,22 +571,6 @@ extension ScannerViewController: CustomTabBarViewDelegate { bottomSheetController.present(popup, on: self) } } - - func printPDF(from url: URL) { - let printInfo = UIPrintInfo(dictionary:nil) - printInfo.jobName = url.lastPathComponent - printInfo.outputType = .general - - let printController = UIPrintInteractionController.shared - printController.printInfo = printInfo - - let pdfData = try? Data(contentsOf: url) - if pdfData != nil { - printController.printingItem = pdfData - } - - printController.present(animated: true, completionHandler: nil) - } } // MARK: - ShareSheetViewControllerDelegate extension ScannerViewController: ShareSheetViewControllerDelegate, PreviewDelegate { @@ -635,56 +598,33 @@ extension ScannerViewController: ShareSheetViewControllerDelegate, PreviewDelega } func printTapped() { - var images = [URL]() - for index in 0..<multipageSession.scannedItems.count { - if let url = multipageSession.scannedItems[index].renderedImage { - images.append(url) + if let folder = sharedFolder, let session = multipageSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: "") { document in + PDFManager.printPDF(from: document) } } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, { document in - self.printPDF(from: document) - }) - } } func moreTapped(name: String) { activityIndicator.startAnimating() - var images = [URL]() - for index in 0..<multipageSession.scannedItems.count { - if let url = multipageSession.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = sharedFolder { - PDFManager.createMultiPDFPageAndReturn(from: images, localFileManager: localFileManager, folder: folder, name: name, { document in + if let folder = sharedFolder, let session = multipageSession { + PDFManager.savePDFAndReturn(session: session, folder: folder, fileManager: localFileManager, name: name) { document in self.payload = [document] - let shareController = UIActivityViewController(activityItems: self.payload, applicationActivities: nil) - self.present(shareController, animated: true, completion: nil) + PDFManager.sharePDF(payload: self.payload, viewController: self) self.activityIndicator.stopAnimating() - - - }) + } } } func saveTapped(name: String) { activityIndicator.startAnimating() - var images = [URL]() - for index in 0..<multipageSession.scannedItems.count { - if let url = multipageSession.scannedItems[index].renderedImage { - images.append(url) - } - } - print("images: \(images)") - if let folder = selectedFolder { - PDFManager.createMultiPDFPage(from: images, localFileManager: localFileManager, folder: folder, name: name,session: self.multipageSession, { + if let session = multipageSession, let folder = selectedFolder { + PDFManager.savePDF(session: session, folder: folder, fileManager: localFileManager, name: name) { self.activityIndicator.stopAnimating() self.navigationController?.popViewController(animated: true) - }) + + } } } } diff --git a/Podfile b/Podfile index 528a7a2f2081e1ac1b4da934f4c781e323aed7ff..8214d1daf040bc62cc8bbb41ac2d4d8b1c463bae 100644 --- a/Podfile +++ b/Podfile @@ -4,15 +4,8 @@ target 'MiniScanner' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! - - # Pods for MiniScanner - pod 'LanguageManager-iOS' - pod 'IQKeyboardManagerSwift' -# pod 'ImagePicker' pod 'NBBottomSheet' pod 'EPSignature' - pod 'Toast-Swift' - pod 'ImageViewer.swift', '~> 3.0' diff --git a/Podfile.lock b/Podfile.lock index 962dfd39f22fab0a1f7ee5abc8316eb80afca8d7..197ff527782a4945563d2f4f6fb999234cab6e53 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,36 +1,20 @@ PODS: - EPSignature (1.0.6) - - ImageViewer.swift (3.3.8) - - IQKeyboardManagerSwift (7.0.3) - - LanguageManager-iOS (1.2.7) - NBBottomSheet (1.2.0) - - Toast-Swift (5.1.1) DEPENDENCIES: - EPSignature - - ImageViewer.swift (~> 3.0) - - IQKeyboardManagerSwift - - LanguageManager-iOS - NBBottomSheet - - Toast-Swift SPEC REPOS: trunk: - EPSignature - - ImageViewer.swift - - IQKeyboardManagerSwift - - LanguageManager-iOS - NBBottomSheet - - Toast-Swift SPEC CHECKSUMS: EPSignature: 3fa3b520c80717b98019723faa60a41794b03fbc - ImageViewer.swift: 284cd8127d31af8e5938674fb9f8e695a4cdf6c6 - IQKeyboardManagerSwift: f9c5dc36cba16ddd2e51fa7d51c34a2e083029b5 - LanguageManager-iOS: 6b2dbb3793445827114708f0759b76e96932d7c8 NBBottomSheet: aa7a52809b2d7b193f733247b8ce391a59904372 - Toast-Swift: 7a03a532afe3a560d4044bc7c237e2864d295173 -PODFILE CHECKSUM: 9775166299988c84acdb7600ce83319349809cb9 +PODFILE CHECKSUM: 7dc47ad90dd5bf8f4d9fb5feaf1b44cbe52e897a -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift deleted file mode 100644 index ef0b892ac4f1838bd828e2ff2d54fdc1e74b8330..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift +++ /dev/null @@ -1,203 +0,0 @@ -// -// IQActiveConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal final class IQActiveConfiguration { - - private let keyboardListener: IQKeyboardListener = IQKeyboardListener() - private let textFieldViewListener: IQTextFieldViewListener = IQTextFieldViewListener() - - private var changeObservers: [AnyHashable: ConfigurationCompletion] = [:] - - @objc public enum Event: Int { - case hide - case show - case change - - var name: String { - switch self { - case .hide: - return "hide" - case .show: - return "show" - case .change: - return "change" - } - } - } - - private var lastEvent: Event = .hide - - var rootControllerConfiguration: IQRootControllerConfiguration? - - var isReady: Bool { - if textFieldViewInfo != nil, - let rootControllerConfiguration = rootControllerConfiguration { - return rootControllerConfiguration.isReady - } - return false - } - - init() { - addKeyboardListener() - addTextFieldViewListener() - } - - private func sendEvent() { - - if let textFieldViewInfo = textFieldViewInfo, - let rootControllerConfiguration = rootControllerConfiguration, - rootControllerConfiguration.isReady { - if keyboardInfo.keyboardShowing { - if lastEvent == .hide { - self.notify(event: .show, keyboardInfo: keyboardInfo, textFieldViewInfo: textFieldViewInfo) - } else { - self.notify(event: .change, keyboardInfo: keyboardInfo, textFieldViewInfo: textFieldViewInfo) - } - } else if lastEvent != .hide { - if rootControllerConfiguration.beginOrientation == rootControllerConfiguration.currentOrientation { - self.notify(event: .hide, keyboardInfo: keyboardInfo, textFieldViewInfo: textFieldViewInfo) - self.rootControllerConfiguration = nil - } else if rootControllerConfiguration.hasChanged { - animate(alongsideTransition: { - rootControllerConfiguration.restore() - }, completion: nil) - } - } - } - } - - private func updateRootController(info: IQTextFieldViewInfo?) { - - guard let info = info, - let controller: UIViewController = info.textFieldView.iq.parentContainerViewController() else { - if let rootControllerConfiguration = rootControllerConfiguration, - rootControllerConfiguration.hasChanged { - animate(alongsideTransition: { - rootControllerConfiguration.restore() - }, completion: nil) - } - rootControllerConfiguration = nil - return - } - - let newConfiguration = IQRootControllerConfiguration(rootController: controller) - - if newConfiguration.rootController.view.window != rootControllerConfiguration?.rootController.view.window || - newConfiguration.beginOrientation != rootControllerConfiguration?.beginOrientation { - - if rootControllerConfiguration?.rootController != newConfiguration.rootController { - - // If there was an old configuration but things are changed - if let rootControllerConfiguration = rootControllerConfiguration, - rootControllerConfiguration.hasChanged { - animate(alongsideTransition: { - rootControllerConfiguration.restore() - }, completion: nil) - } - } - - rootControllerConfiguration = newConfiguration - } - } -} - -@available(iOSApplicationExtension, unavailable) -extension IQActiveConfiguration { - - var keyboardInfo: IQKeyboardInfo { - return keyboardListener.keyboardInfo - } - - private func addKeyboardListener() { - keyboardListener.registerSizeChange(identifier: "IQActiveConfiguration", changeHandler: { [self] name, _ in - - if let info = textFieldViewInfo, keyboardInfo.keyboardShowing { - if let rootControllerConfiguration = rootControllerConfiguration { - let beginIsPortrait: Bool = rootControllerConfiguration.beginOrientation.isPortrait - let currentIsPortrait: Bool = rootControllerConfiguration.currentOrientation.isPortrait - if beginIsPortrait != currentIsPortrait { - updateRootController(info: info) - } - } else { - updateRootController(info: info) - } - } - - self.sendEvent() - - if name == .didHide { - updateRootController(info: nil) - } - }) - } - - public func animate(alongsideTransition transition: @escaping () -> Void, completion: (() -> Void)? = nil) { - keyboardListener.animate(alongsideTransition: transition, completion: completion) - } -} - -@available(iOSApplicationExtension, unavailable) -extension IQActiveConfiguration { - - var textFieldViewInfo: IQTextFieldViewInfo? { - return textFieldViewListener.textFieldViewInfo - } - - private func addTextFieldViewListener() { - textFieldViewListener.registerTextFieldViewChange(identifier: "IQActiveConfiguration", - changeHandler: { [self] info in - if info.name == .beginEditing { - updateRootController(info: info) - self.sendEvent() - } - }) - } -} - -@available(iOSApplicationExtension, unavailable) -extension IQActiveConfiguration { - - typealias ConfigurationCompletion = (_ event: Event, - _ keyboardInfo: IQKeyboardInfo, - _ textFieldInfo: IQTextFieldViewInfo) -> Void - - func registerChange(identifier: AnyHashable, changeHandler: @escaping ConfigurationCompletion) { - changeObservers[identifier] = changeHandler - } - - func unregisterChange(identifier: AnyHashable) { - changeObservers[identifier] = nil - } - - private func notify(event: Event, keyboardInfo: IQKeyboardInfo, textFieldViewInfo: IQTextFieldViewInfo) { - lastEvent = event - - for block in changeObservers.values { - block(event, keyboardInfo, textFieldViewInfo) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift deleted file mode 100644 index 9377c017f318b25c564e157eb1d1613ad8256a87..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift +++ /dev/null @@ -1,96 +0,0 @@ -// -// IQBarButtonItemConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -/** - IQBarButtonItemConfiguration for creating toolbar with bar button items - */ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQBarButtonItemConfiguration: NSObject { - - @objc public init(systemItem: UIBarButtonItem.SystemItem, action: Selector? = nil) { - self.systemItem = systemItem - self.image = nil - self.title = nil - self.action = action - super.init() - } - - @objc public init(image: UIImage, action: Selector? = nil) { - self.systemItem = nil - self.image = image - self.title = nil - self.action = action - super.init() - } - - @objc public init(title: String, action: Selector? = nil) { - self.systemItem = nil - self.image = nil - self.title = title - self.action = action - super.init() - } - - public let systemItem: UIBarButtonItem.SystemItem? // System Item to be used to instantiate bar button. - - @objc public let image: UIImage? // Image to show on bar button item if it's not a system item. - - @objc public let title: String? // Title to show on bar button item if it's not a system item. - - @objc public var action: Selector? // action for bar button item. Usually 'doneAction:(IQBarButtonItem*)item'. - - public override var accessibilityLabel: String? { didSet { } } // Accessibility related labels - - func apply(on oldBarButtonItem: IQBarButtonItem, target: AnyObject?) -> IQBarButtonItem { - - var newBarButtonItem: IQBarButtonItem = oldBarButtonItem - - if systemItem == nil, !oldBarButtonItem.isSystemItem { - newBarButtonItem.title = title - newBarButtonItem.accessibilityLabel = accessibilityLabel - newBarButtonItem.accessibilityIdentifier = newBarButtonItem.accessibilityLabel - newBarButtonItem.image = image - newBarButtonItem.target = target - newBarButtonItem.action = action - } else { - if let systemItem: UIBarButtonItem.SystemItem = systemItem { - newBarButtonItem = IQBarButtonItem(barButtonSystemItem: systemItem, target: target, action: action) - newBarButtonItem.isSystemItem = true - } else if let image: UIImage = image { - newBarButtonItem = IQBarButtonItem(image: image, style: .plain, target: target, action: action) - } else { - newBarButtonItem = IQBarButtonItem(title: title, style: .plain, target: target, action: action) - } - - newBarButtonItem.invocation = oldBarButtonItem.invocation - newBarButtonItem.accessibilityLabel = accessibilityLabel - newBarButtonItem.accessibilityIdentifier = oldBarButtonItem.accessibilityLabel - newBarButtonItem.isEnabled = oldBarButtonItem.isEnabled - newBarButtonItem.tag = oldBarButtonItem.tag - } - return newBarButtonItem - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift deleted file mode 100644 index 653bc2c553da0f9e8dcefa0ce328405c8a023e17..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// IQKeyboardConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQKeyboardConfiguration: NSObject { - - /** - Override the keyboardAppearance for all textField/textView. Default is NO. - */ - @objc public var overrideAppearance: Bool = false - - /** - If overrideKeyboardAppearance is YES, then all the textField keyboardAppearance is set using this property. - */ - @objc public var appearance: UIKeyboardAppearance = UIKeyboardAppearance.default -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift deleted file mode 100644 index 93aba8c64d8b0fa904678e81a07a71df25e0ea7b..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// IQRootControllerConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal struct IQRootControllerConfiguration { - - let rootController: UIViewController - let beginOrigin: CGPoint - let beginSafeAreaInsets: UIEdgeInsets - let beginOrientation: UIInterfaceOrientation - - init(rootController: UIViewController) { - self.rootController = rootController - beginOrigin = rootController.view.frame.origin - beginSafeAreaInsets = rootController.view.safeAreaInsets - - let interfaceOrientation: UIInterfaceOrientation - if let scene = rootController.view.window?.windowScene { - interfaceOrientation = scene.interfaceOrientation - } else { - interfaceOrientation = .unknown - } - - beginOrientation = interfaceOrientation - } - - var currentOrientation: UIInterfaceOrientation { - let interfaceOrientation: UIInterfaceOrientation - if let scene = rootController.view.window?.windowScene { - interfaceOrientation = scene.interfaceOrientation - } else { - interfaceOrientation = .unknown - } - return interfaceOrientation - } - - var isReady: Bool { - return rootController.view.window != nil - } - - var hasChanged: Bool { - return !rootController.view.frame.origin.equalTo(beginOrigin) - } - - @discardableResult - func restore() -> Bool { - if !rootController.view.frame.origin.equalTo(beginOrigin) { - // Setting it's new frame - var rect: CGRect = rootController.view.frame - rect.origin = beginOrigin - rootController.view.frame = rect - return true - } - return false - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift deleted file mode 100644 index 49f6f16c3c0884c9278a6ca1a9a3f70f6f33d978..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift +++ /dev/null @@ -1,94 +0,0 @@ -// -// IQScrollViewConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal struct IQScrollViewConfiguration { - let scrollView: UIScrollView - let startingContentOffset: CGPoint - let startingScrollIndicatorInsets: UIEdgeInsets - let startingContentInset: UIEdgeInsets - - private let canRestoreContentOffset: Bool - - init(scrollView: UIScrollView, canRestoreContentOffset: Bool) { - self.scrollView = scrollView - self.canRestoreContentOffset = canRestoreContentOffset - - startingContentOffset = scrollView.contentOffset - startingContentInset = scrollView.contentInset - startingScrollIndicatorInsets = scrollView.verticalScrollIndicatorInsets - } - - var hasChanged: Bool { - if scrollView.contentInset != self.startingContentInset { - return true - } - - if canRestoreContentOffset, - scrollView.iq.restoreContentOffset, - !scrollView.contentOffset.equalTo(startingContentOffset) { - return true - } - return false - } - - @discardableResult - func restore(for textFieldView: UIView?) -> Bool { - var success: Bool = false - - if scrollView.contentInset != self.startingContentInset { - scrollView.contentInset = self.startingContentInset - scrollView.layoutIfNeeded() // (Bug ID: #1996) - success = true - } - - if scrollView.verticalScrollIndicatorInsets != self.startingScrollIndicatorInsets { - scrollView.verticalScrollIndicatorInsets = self.startingScrollIndicatorInsets - } - - if canRestoreContentOffset, - scrollView.iq.restoreContentOffset, - !scrollView.contentOffset.equalTo(startingContentOffset) { - - // (Bug ID: #1365, #1508, #1541) - let stackView: UIStackView? = textFieldView?.iq.superviewOf(type: UIStackView.self, - belowView: scrollView) - // (Bug ID: #1901, #1996) - let animatedContentOffset: Bool = stackView != nil || - scrollView is UICollectionView || - scrollView is UITableView - - if animatedContentOffset { - scrollView.setContentOffset(startingContentOffset, animated: UIView.areAnimationsEnabled) - } else { - scrollView.contentOffset = startingContentOffset - } - success = true - } - - return success - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift deleted file mode 100644 index 3c6244baabe6da702a3a80a407778b4869fc30e4..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// IQToolbarConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQToolbarConfiguration: NSObject { - - /** - If YES, then uses textField's tintColor property for IQToolbar, otherwise tint color is default. Default is NO. - */ - @objc public var useTextFieldTintColor: Bool = false - - /** - This is used for toolbar.tintColor when textfield.keyboardAppearance is UIKeyboardAppearanceDefault. - If useTextFieldTintColor is YES then this property is ignored. Default is nil and uses black color. - */ - @objc public var tintColor: UIColor? - - /** - This is used for toolbar.barTintColor. Default is nil. - */ - @objc public var barTintColor: UIColor? - - /** - IQPreviousNextDisplayModeDefault: Show NextPrevious when there are more than 1 textField otherwise hide. - IQPreviousNextDisplayModeAlwaysHide: Do not show NextPrevious buttons in any case. - IQPreviousNextDisplayModeAlwaysShow: Always show nextPrevious buttons, - if there are more than 1 textField then both buttons will be visible but will be shown as disabled. - */ - @objc public var previousNextDisplayMode: IQPreviousNextDisplayMode = .default - - /** - /** - IQAutoToolbarBySubviews: Creates Toolbar according to subview's hierarchy of Textfield's in view. - IQAutoToolbarByTag: Creates Toolbar according to tag property of TextField's. - IQAutoToolbarByPosition: Creates Toolbar according to the y,x position - of textField in it's superview coordinate. - - Default is IQAutoToolbarBySubviews. - */ - AutoToolbar managing behavior. Default is IQAutoToolbarBySubviews. - */ - @objc public var manageBehavior: IQAutoToolbarManageBehavior = .bySubviews - - /** - Buttons configuration displayed on the toolbar, the selector parameter is ignored in below configuration - */ - @objc public var previousBarButtonConfiguration: IQBarButtonItemConfiguration? - @objc public var nextBarButtonConfiguration: IQBarButtonItemConfiguration? - @objc public var doneBarButtonConfiguration: IQBarButtonItemConfiguration? - - @objc public let placeholderConfiguration: IQToolbarPlaceholderConfiguration = .init() -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift deleted file mode 100644 index 5ee43870474644a57b5a1b17e15f6c73a2bd6c43..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// IQToolbarPlaceholderConfiguration.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQToolbarPlaceholderConfiguration: NSObject { - - /** - If YES, then it add the textField's placeholder text on IQToolbar. Default is YES. - */ - @objc public var showPlaceholder: Bool = true - - /** - Placeholder Font. Default is nil. - */ - @objc public var font: UIFont? - - /** - Placeholder Color. Default is nil. Which means lightGray - */ - @objc public var color: UIColor? - - /** - Placeholder Button Color when it's treated as button. Default is nil. - */ - @objc public var buttonColor: UIColor? - - /** - Placeholder accessibility Label - */ - public override var accessibilityLabel: String? { didSet { } } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift deleted file mode 100644 index a3aac5c68de2cc9dd9d7671cc6539afefaeb96fc..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift +++ /dev/null @@ -1,151 +0,0 @@ -// -// IQKeyboardManagerConstants.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import Foundation - -// MARK: IQAutoToolbarManageBehavior - -/** -`IQAutoToolbarBySubviews` -Creates Toolbar according to subview's hierarchy of Textfield's in view. - -`IQAutoToolbarByTag` -Creates Toolbar according to tag property of TextField's. - -`IQAutoToolbarByPosition` -Creates Toolbar according to the y,x position of textField in it's superview coordinate. -*/ -@available(iOSApplicationExtension, unavailable) -@objc public enum IQAutoToolbarManageBehavior: Int { - case bySubviews - case byTag - case byPosition -} - -/** - `IQPreviousNextDisplayModeDefault` - Show NextPrevious when there are more than 1 textField otherwise hide. - - `IQPreviousNextDisplayModeAlwaysHide` - Do not show NextPrevious buttons in any case. - - `IQPreviousNextDisplayModeAlwaysShow` - Always show nextPrevious buttons, - if there are more than 1 textField then both buttons will be visible but will be shown as disabled. - */ -@available(iOSApplicationExtension, unavailable) -@objc public enum IQPreviousNextDisplayMode: Int { - case `default` - case alwaysHide - case alwaysShow -} - -/** - `IQEnableModeDefault` - Pick default settings. - - `IQEnableModeEnabled` - setting is enabled. - - `IQEnableModeDisabled` - setting is disabled. - */ -@available(iOSApplicationExtension, unavailable) -@objc public enum IQEnableMode: Int { - case `default` - case enabled - case disabled -} - -/* - /---------------------------------------------------------------------------------------------------\ - \---------------------------------------------------------------------------------------------------/ - | iOS Notification Mechanism | - /---------------------------------------------------------------------------------------------------\ - \---------------------------------------------------------------------------------------------------/ - - ------------------------------------------------------------ - When UITextField become first responder - ------------------------------------------------------------ - - UITextFieldTextDidBeginEditingNotification (UITextField) - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When UITextView become first responder - ------------------------------------------------------------ - - UIKeyboardWillShowNotification - - UITextViewTextDidBeginEditingNotification (UITextView) - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When switching focus from UITextField to another UITextField - ------------------------------------------------------------ - - UITextFieldTextDidEndEditingNotification (UITextField1) - - UITextFieldTextDidBeginEditingNotification (UITextField2) - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When switching focus from UITextView to another UITextView - ------------------------------------------------------------ - - UITextViewTextDidEndEditingNotification: (UITextView1) - - UIKeyboardWillShowNotification - - UITextViewTextDidBeginEditingNotification: (UITextView2) - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When switching focus from UITextField to UITextView - ------------------------------------------------------------ - - UITextFieldTextDidEndEditingNotification (UITextField) - - UIKeyboardWillShowNotification - - UITextViewTextDidBeginEditingNotification (UITextView) - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When switching focus from UITextView to UITextField - ------------------------------------------------------------ - - UITextViewTextDidEndEditingNotification (UITextView) - - UITextFieldTextDidBeginEditingNotification (UITextField) - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - When opening/closing UIKeyboard Predictive bar - ------------------------------------------------------------ - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - ------------------------------------------------------------ - On orientation change - ------------------------------------------------------------ - - UIApplicationWillChangeStatusBarOrientationNotification - - UIKeyboardWillHideNotification - - UIKeyboardDidHideNotification - - UIApplicationDidChangeStatusBarOrientationNotification - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - UIKeyboardWillShowNotification - - UIKeyboardDidShowNotification - - */ diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift deleted file mode 100644 index 43df95fd8ac6167d6a3db3ed57da747da1eb3a8e..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift +++ /dev/null @@ -1,71 +0,0 @@ -// -// IQKeyboardManager+Debug.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// MARK: Debugging & Developer options -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @MainActor - private struct AssociatedKeys { - static var enableDebugging: Int = 0 - } - - @objc var enableDebugging: Bool { - get { - return objc_getAssociatedObject(self, &AssociatedKeys.enableDebugging) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.enableDebugging, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - @MainActor - struct Static { - static var indentation = 0 - } - - internal func showLog(_ logString: String, indentation: Int = 0) { - - guard enableDebugging else { - return - } - - if indentation < 0 { - Static.indentation = max(0, Static.indentation + indentation) - } - - var preLog: String = "IQKeyboardManager" - for _ in 0 ... Static.indentation { - preLog += "|\t" - } - - print(preLog + logString) - - if indentation > 0 { - Static.indentation += indentation - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift deleted file mode 100644 index c2cef98cd5311c570c9dcd8386c429a2f0a2226c..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift +++ /dev/null @@ -1,220 +0,0 @@ -// -// IQKeyboardManager.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// swiftlint:disable unused_setter_value -// swiftlint:disable identifier_name -// swiftlint:disable line_length -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @available(*, unavailable, renamed: "resignOnTouchOutside") - @objc var shouldResignOnTouchOutside: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "playInputClicks") - @objc var shouldPlayInputClicks: Bool { - get { false } - set { } - } - - @available(*, unavailable, message: "This feature has been removed due to few compatibility problems") - @objc func registerTextFieldViewClass(_ aClass: UIView.Type, - didBeginEditingNotificationName: String, - didEndEditingNotificationName: String) { - } - - @available(*, unavailable, message: "This feature has been removed due to few compatibility problems") - @objc func unregisterTextFieldViewClass(_ aClass: UIView.Type, - didBeginEditingNotificationName: String, - didEndEditingNotificationName: String) { - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @available(*, unavailable, renamed: "toolbarConfiguration.manageBehavior") - @objc var toolbarManageBehaviour: IQAutoToolbarManageBehavior { - get { .bySubviews } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.useTextFieldTintColor") - @objc var shouldToolbarUsesTextFieldTintColor: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.tintColor") - @objc var toolbarTintColor: UIColor? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.barTintColor") - @objc var toolbarBarTintColor: UIColor? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.previousNextDisplayMode") - @objc var previousNextDisplayMode: IQPreviousNextDisplayMode { - get { .default } - set { } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - @available(*, unavailable, renamed: "toolbarConfiguration.previousBarButtonConfiguration.image", - message: "To change, please assign a new toolbarConfiguration.previousBarButtonConfiguration") - @objc var toolbarPreviousBarButtonItemImage: UIImage? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.previousBarButtonConfiguration.title", - message: "To change, please assign a new toolbarConfiguration.previousBarButtonConfiguration") - @objc var toolbarPreviousBarButtonItemText: String? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.previousBarButtonConfiguration.accessibilityLabel", - message: "To change, please assign a new toolbarConfiguration.previousBarButtonConfiguration") - @objc var toolbarPreviousBarButtonItemAccessibilityLabel: String? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.nextBarButtonConfiguration.image", - message: "To change, please assign a new toolbarConfiguration.nextBarButtonConfiguration") - @objc var toolbarNextBarButtonItemImage: UIImage? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.nextBarButtonConfiguration.title", - message: "To change, please assign a new toolbarConfiguration.nextBarButtonConfiguration") - @objc var toolbarNextBarButtonItemText: String? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.nextBarButtonConfiguration.accessibilityLabel", - message: "To change, please assign a new toolbarConfiguration.nextBarButtonConfiguration") - @objc var toolbarNextBarButtonItemAccessibilityLabel: String? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.doneBarButtonConfiguration.image", - message: "To change, please assign a new toolbarConfiguration.doneBarButtonConfiguration") - @objc var toolbarDoneBarButtonItemImage: UIImage? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.doneBarButtonConfiguration.title", - message: "To change, please assign a new toolbarConfiguration.doneBarButtonConfiguration") - @objc var toolbarDoneBarButtonItemText: String? { - get { nil } - set { } - } - @available(*, unavailable, renamed: "toolbarConfiguration.doneBarButtonConfiguration.accessibilityLabel", - message: "To change, please assign a new toolbarConfiguration.doneBarButtonConfiguration") - @objc var toolbarDoneBarButtonItemAccessibilityLabel: String? { - get { nil } - set { } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.accessibilityLabel") - @objc var toolbarTitlBarButtonItemAccessibilityLabel: String? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.showPlaceholder") - @objc var shouldShowToolbarPlaceholder: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.font") - @objc var placeholderFont: UIFont? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.color") - @objc var placeholderColor: UIColor? { - get { nil } - set { } - } - - @available(*, unavailable, renamed: "toolbarConfiguration.placeholderConfiguration.buttonColor") - @objc var placeholderButtonColor: UIColor? { - get { nil } - set { } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @available(*, unavailable, renamed: "keyboardConfiguration.overrideAppearance") - @objc var overrideKeyboardAppearance: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "keyboardConfiguration.appearance") - @objc var keyboardAppearance: UIKeyboardAppearance { - get { .default } - set { } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - typealias SizeBlock = (_ size: CGSize) -> Void - - @available(*, unavailable, message: "This feature has been moved to IQKeyboardListener, use it directly by creating new instance") - @objc func registerKeyboardSizeChange(identifier: AnyHashable, sizeHandler: @escaping SizeBlock) {} - - @available(*, unavailable, message: "This feature has been moved to IQKeyboardListener, use it directly by creating new instance") - @objc func unregisterKeyboardSizeChange(identifier: AnyHashable) {} - - @available(*, unavailable, message: "This feature has been moved to IQKeyboardListener, use it directly by creating new instance") - @objc var keyboardShowing: Bool { false } - - @available(*, unavailable, message: "This feature has been moved to IQKeyboardListener, use it directly by creating new instance") - @objc var keyboardFrame: CGRect { .zero } -} -// swiftlint:enable unused_setter_value -// swiftlint:enable identifier_name -// swiftlint:enable line_length diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift deleted file mode 100644 index 36a18746d9134a8336453a9fec977ab042c3d858..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift +++ /dev/null @@ -1,239 +0,0 @@ -// -// IQKeyboardManager+Internal.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -internal extension IQKeyboardManager { - - /** Get all UITextField/UITextView siblings of textFieldView. */ - func responderViews() -> [UIView]? { - - guard let textFieldView: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return nil - } - - var superConsideredView: UIView? - - // If find any consider responderView in it's upper hierarchy then will get deepResponderView. - for allowedClass in toolbarPreviousNextAllowedClasses { - superConsideredView = textFieldView.iq.superviewOf(type: allowedClass) - if superConsideredView != nil { - break - } - } - - var swiftUIHostingView: UIView? - let swiftUIHostingViewName: String = "UIHostingView<" - var superView: UIView? = textFieldView.superview - while let unwrappedSuperView: UIView = superView { - - let classNameString: String = { - var name: String = "\(type(of: unwrappedSuperView.self))" - if name.hasPrefix("_") { - name.removeFirst() - } - return name - }() - - if classNameString.hasPrefix(swiftUIHostingViewName) { - swiftUIHostingView = unwrappedSuperView - break - } - - superView = unwrappedSuperView.superview - } - - // (Enhancement ID: #22) - // If there is a superConsideredView in view's hierarchy, - // then fetching all it's subview that responds. - // No sorting for superConsideredView, it's by subView position. - if let view: UIView = swiftUIHostingView { - return view.iq.deepResponderViews() - } else if let view: UIView = superConsideredView { - return view.iq.deepResponderViews() - } else { // Otherwise fetching all the siblings - - let textFields: [UIView] = textFieldView.iq.responderSiblings() - - // Sorting textFields according to behavior - switch toolbarConfiguration.manageBehavior { - // If autoToolbar behavior is bySubviews, then returning it. - case .bySubviews: return textFields - - // If autoToolbar behavior is by tag, then sorting it according to tag property. - case .byTag: return textFields.sortedByTag() - - // If autoToolbar behavior is by tag, then sorting it according to tag property. - case .byPosition: return textFields.sortedByPosition() - } - } - } - - func privateIsEnabled() -> Bool { - - var isEnabled: Bool = enable - - guard let textFieldViewInfo: IQTextFieldViewInfo = activeConfiguration.textFieldViewInfo else { - return isEnabled - } - - let enableMode: IQEnableMode = textFieldViewInfo.textFieldView.iq.enableMode - - if enableMode == .enabled { - isEnabled = true - } else if enableMode == .disabled { - isEnabled = false - } else if var textFieldViewController = textFieldViewInfo.textFieldView.iq.viewContainingController() { - - // If it is searchBar textField embedded in Navigation Bar - if textFieldViewInfo.textFieldView.iq.textFieldSearchBar() != nil, - let navController: UINavigationController = textFieldViewController as? UINavigationController, - let topController: UIViewController = navController.topViewController { - textFieldViewController = topController - } - - // If viewController is kind of enable viewController class, then assuming it's enabled. - if !isEnabled, enabledDistanceHandlingClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = true - } - - if isEnabled { - - // If viewController is kind of disabled viewController class, then assuming it's disabled. - if disabledDistanceHandlingClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = false - } - - // Special Controllers - if isEnabled { - - let classNameString: String = "\(type(of: textFieldViewController.self))" - - // _UIAlertControllerTextFieldViewController - if classNameString.contains("UIAlertController"), - classNameString.hasSuffix("TextFieldViewController") { - isEnabled = false - } - } - } - } - - return isEnabled - } - - func privateIsEnableAutoToolbar() -> Bool { - - var isEnabled: Bool = enableAutoToolbar - - guard let textFieldViewInfo: IQTextFieldViewInfo = activeConfiguration.textFieldViewInfo, - var textFieldViewController = textFieldViewInfo.textFieldView.iq.viewContainingController() else { - return isEnabled - } - - // If it is searchBar textField embedded in Navigation Bar - if textFieldViewInfo.textFieldView.iq.textFieldSearchBar() != nil, - let navController: UINavigationController = textFieldViewController as? UINavigationController, - let topController: UIViewController = navController.topViewController { - textFieldViewController = topController - } - - if !isEnabled, enabledToolbarClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = true - } - - if isEnabled { - - // If found any toolbar disabled classes then return. - if disabledToolbarClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = false - } - - // Special Controllers - if isEnabled { - - let classNameString: String = "\(type(of: textFieldViewController.self))" - - // _UIAlertControllerTextFieldViewController - if classNameString.contains("UIAlertController"), classNameString.hasSuffix("TextFieldViewController") { - isEnabled = false - } - } - } - - return isEnabled - } - - func privateResignOnTouchOutside() -> Bool { - - var isEnabled: Bool = resignOnTouchOutside - - guard let textFieldViewInfo: IQTextFieldViewInfo = activeConfiguration.textFieldViewInfo else { - return isEnabled - } - - let enableMode: IQEnableMode = textFieldViewInfo.textFieldView.iq.resignOnTouchOutsideMode - - if enableMode == .enabled { - isEnabled = true - } else if enableMode == .disabled { - isEnabled = false - } else if var textFieldViewController = textFieldViewInfo.textFieldView.iq.viewContainingController() { - - // If it is searchBar textField embedded in Navigation Bar - if textFieldViewInfo.textFieldView.iq.textFieldSearchBar() != nil, - let navController: UINavigationController = textFieldViewController as? UINavigationController, - let topController: UIViewController = navController.topViewController { - textFieldViewController = topController - } - - // If viewController is kind of enable viewController class, then assuming resignOnTouchOutside is enabled. - if !isEnabled, - enabledTouchResignedClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = true - } - - if isEnabled { - - // If viewController is kind of disable viewController class, - // then assuming resignOnTouchOutside is disable. - if disabledTouchResignedClasses.contains(where: { textFieldViewController.isKind(of: $0) }) { - isEnabled = false - } - - // Special Controllers - if isEnabled { - - let classNameString: String = "\(type(of: textFieldViewController.self))" - - // _UIAlertControllerTextFieldViewController - if classNameString.contains("UIAlertController"), - classNameString.hasSuffix("TextFieldViewController") { - isEnabled = false - } - } - } - } - return isEnabled - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift deleted file mode 100644 index d76cb9d98c1838005e8a7ef012619f193f7dc59b..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift +++ /dev/null @@ -1,718 +0,0 @@ -// -// IQKeyboardManager+Position.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// swiftlint:disable file_length -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - @MainActor - private struct AssociatedKeys { - static var movedDistance: Int = 0 - static var movedDistanceChanged: Int = 0 - static var lastScrollViewConfiguration: Int = 0 - static var startingTextViewConfiguration: Int = 0 - static var activeConfiguration: Int = 0 - } - - /** - moved distance to the top used to maintain distance between keyboard and textField. - Most of the time this will be a positive value. - */ - private(set) var movedDistance: CGFloat { - get { - return objc_getAssociatedObject(self, &AssociatedKeys.movedDistance) as? CGFloat ?? 0.0 - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.movedDistance, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - movedDistanceChanged?(movedDistance) - } - } - - /** - Will be called then movedDistance will be changed - */ - @objc var movedDistanceChanged: ((CGFloat) -> Void)? { - get { - return objc_getAssociatedObject(self, &AssociatedKeys.movedDistanceChanged) as? ((CGFloat) -> Void) - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.movedDistanceChanged, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - movedDistanceChanged?(movedDistance) - } - } - - /** Variable to save lastScrollView that was scrolled. */ - internal var lastScrollViewConfiguration: IQScrollViewConfiguration? { - get { - return objc_getAssociatedObject(self, - &AssociatedKeys.lastScrollViewConfiguration) as? IQScrollViewConfiguration - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.lastScrollViewConfiguration, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** used to adjust contentInset of UITextView. */ - internal var startingTextViewConfiguration: IQScrollViewConfiguration? { - get { - return objc_getAssociatedObject(self, - &AssociatedKeys.startingTextViewConfiguration) as? IQScrollViewConfiguration - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.startingTextViewConfiguration, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - internal func addActiveConfigurationObserver() { - activeConfiguration.registerChange(identifier: UUID().uuidString, changeHandler: { event, _, _ in - switch event { - case .show: - self.handleKeyboardTextFieldViewVisible() - case .change: - self.handleKeyboardTextFieldViewChanged() - case .hide: - self.handleKeyboardTextFieldViewHide() - } - }) - } - - @objc internal func applicationDidBecomeActive(_ notification: Notification) { - - guard privateIsEnabled(), - activeConfiguration.keyboardInfo.keyboardShowing, - activeConfiguration.isReady else { - return - } - adjustPosition() - } - - /* Adjusting RootViewController's frame according to interface orientation. */ - // swiftlint:disable cyclomatic_complexity - // swiftlint:disable function_body_length - internal func adjustPosition() { - - // We are unable to get textField object while keyboard showing on WKWebView's textField. (Bug ID: #11) - guard UIApplication.shared.applicationState == .active, - let textFieldView: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let superview: UIView = textFieldView.superview, - let rootConfiguration = activeConfiguration.rootControllerConfiguration, - let window: UIWindow = rootConfiguration.rootController.view.window else { - return - } - - showLog(">>>>> \(#function) started >>>>>", indentation: 1) - let startTime: CFTimeInterval = CACurrentMediaTime() - - let rootController: UIViewController = rootConfiguration.rootController - let textFieldViewRectInWindow: CGRect = superview.convert(textFieldView.frame, to: window) - let textFieldViewRectInRootSuperview: CGRect = superview.convert(textFieldView.frame, - to: rootController.view.superview) - - // Getting RootViewOrigin. - var rootViewOrigin: CGPoint = rootController.view.frame.origin - - let keyboardDistance: CGFloat - - do { - // Maintain keyboardDistanceFromTextField - let specialKeyboardDistanceFromTextField: CGFloat - - if let searchBar: UIView = textFieldView.iq.textFieldSearchBar() { - specialKeyboardDistanceFromTextField = searchBar.iq.distanceFromKeyboard - } else { - specialKeyboardDistanceFromTextField = textFieldView.iq.distanceFromKeyboard - } - - if specialKeyboardDistanceFromTextField == UIView.defaultKeyboardDistance { - keyboardDistance = keyboardDistanceFromTextField - } else { - keyboardDistance = specialKeyboardDistanceFromTextField - } - } - - let kbSize: CGSize - let originalKbSize: CGSize = activeConfiguration.keyboardInfo.frame.size - - do { - var kbFrame: CGRect = activeConfiguration.keyboardInfo.frame - - kbFrame.origin.y -= keyboardDistance - kbFrame.size.height += keyboardDistance - - kbFrame.origin.y -= rootConfiguration.beginSafeAreaInsets.bottom - kbFrame.size.height += rootConfiguration.beginSafeAreaInsets.bottom - - // (Bug ID: #469) (Bug ID: #381) (Bug ID: #1506) - // Calculating actual keyboard covered size respect to window, - // keyboard frame may be different when hardware keyboard is attached - let intersectRect: CGRect = kbFrame.intersection(window.frame) - - if intersectRect.isNull { - kbSize = CGSize(width: kbFrame.size.width, height: 0) - } else { - kbSize = intersectRect.size - } - } - - let statusBarHeight: CGFloat - - let navigationBarAreaHeight: CGFloat - if let navigationController: UINavigationController = rootController.navigationController { - navigationBarAreaHeight = navigationController.navigationBar.frame.maxY - } else { - statusBarHeight = window.windowScene?.statusBarManager?.statusBarFrame.height ?? 0 - navigationBarAreaHeight = statusBarHeight - } - - let isScrollableTextView: Bool - - if let textView: UIScrollView = textFieldView as? UIScrollView, - textFieldView.responds(to: #selector(getter: UITextView.isEditable)) { - isScrollableTextView = textView.isScrollEnabled - } else { - isScrollableTextView = false - } - - let directionalLayoutMargin: NSDirectionalEdgeInsets = rootController.view.directionalLayoutMargins - let topLayoutGuide: CGFloat = CGFloat.maximum(navigationBarAreaHeight, directionalLayoutMargin.top) - - // Validation of textView for case where there is a tab bar - // at the bottom or running on iPhone X and textView is at the bottom. - let bottomLayoutGuide: CGFloat = isScrollableTextView ? 0 : directionalLayoutMargin.bottom - - // Move positive = textField is hidden. - // Move negative = textField is showing. - // Calculating move position. - var moveUp: CGFloat - - do { - let visibleHeight: CGFloat = window.frame.height-kbSize.height - - let topMovement: CGFloat = textFieldViewRectInRootSuperview.minY-topLayoutGuide - let bottomMovement: CGFloat = textFieldViewRectInWindow.maxY - visibleHeight + bottomLayoutGuide - moveUp = CGFloat.minimum(topMovement, bottomMovement) - moveUp = CGFloat(Int(moveUp)) - } - - showLog("Need to move: \(moveUp), will be moving \(moveUp < 0 ? "down" : "up")") - - var superScrollView: UIScrollView? - var superView: UIScrollView? = textFieldView.iq.superviewOf(type: UIScrollView.self) - - // Getting UIScrollView whose scrolling is enabled. // (Bug ID: #285) - while let view: UIScrollView = superView { - - if view.isScrollEnabled, !view.iq.ignoreScrollingAdjustment { - superScrollView = view - break - } else { - // Getting it's superScrollView. // (Enhancement ID: #21, #24) - superView = view.iq.superviewOf(type: UIScrollView.self) - } - } - - // If there was a lastScrollView. // (Bug ID: #34) - if let lastConfiguration: IQScrollViewConfiguration = lastScrollViewConfiguration { - // If we can't find current superScrollView, then setting lastScrollView to it's original form. - if superScrollView == nil { - - if lastConfiguration.hasChanged { - if lastConfiguration.scrollView.contentInset != lastConfiguration.startingContentInset { - showLog("Restoring contentInset to: \(lastConfiguration.startingContentInset)") - } - - if lastConfiguration.scrollView.iq.restoreContentOffset, - !lastConfiguration.scrollView.contentOffset.equalTo(lastConfiguration.startingContentOffset) { - showLog("Restoring contentOffset to: \(lastConfiguration.startingContentOffset)") - } - - activeConfiguration.animate(alongsideTransition: { - lastConfiguration.restore(for: textFieldView) - }) - } - - self.lastScrollViewConfiguration = nil - } else if superScrollView != lastConfiguration.scrollView { - // If both scrollView's are different, - // then reset lastScrollView to it's original frame and setting current scrollView as last scrollView. - if lastConfiguration.hasChanged { - if lastConfiguration.scrollView.contentInset != lastConfiguration.startingContentInset { - showLog("Restoring contentInset to: \(lastConfiguration.startingContentInset)") - } - - if lastConfiguration.scrollView.iq.restoreContentOffset, - !lastConfiguration.scrollView.contentOffset.equalTo(lastConfiguration.startingContentOffset) { - showLog("Restoring contentOffset to: \(lastConfiguration.startingContentOffset)") - } - - activeConfiguration.animate(alongsideTransition: { - lastConfiguration.restore(for: textFieldView) - }) - } - - if let superScrollView = superScrollView { - let configuration = IQScrollViewConfiguration(scrollView: superScrollView, - canRestoreContentOffset: true) - self.lastScrollViewConfiguration = configuration - showLog(""" - Saving ScrollView New contentInset: \(configuration.startingContentInset) - and contentOffset: \(configuration.startingContentOffset) - """) - } else { - self.lastScrollViewConfiguration = nil - } - } - // Else the case where superScrollView == lastScrollView means we are on same scrollView - // after switching to different textField. So doing nothing, going ahead - } else if let superScrollView: UIScrollView = superScrollView { - // If there was no lastScrollView and we found a current scrollView. then setting it as lastScrollView. - - let configuration = IQScrollViewConfiguration(scrollView: superScrollView, canRestoreContentOffset: true) - self.lastScrollViewConfiguration = configuration - showLog(""" - Saving ScrollView New contentInset: \(configuration.startingContentInset) - and contentOffset: \(configuration.startingContentOffset) - """) - } - - // Special case for ScrollView. - // If we found lastScrollView then setting it's contentOffset to show textField. - if let lastScrollViewConfiguration: IQScrollViewConfiguration = lastScrollViewConfiguration { - // Saving - var lastView: UIView = textFieldView - var superScrollView: UIScrollView? = lastScrollViewConfiguration.scrollView - - while let scrollView: UIScrollView = superScrollView { - - var isContinue: Bool = false - - if moveUp > 0 { - isContinue = moveUp > (-scrollView.contentOffset.y - scrollView.contentInset.top) - - } else if let tableView: UITableView = scrollView.iq.superviewOf(type: UITableView.self) { - // Special treatment for UITableView due to their cell reusing logic - - isContinue = scrollView.contentOffset.y > 0 - - if isContinue, - let tableCell: UITableViewCell = textFieldView.iq.superviewOf(type: UITableViewCell.self), - let indexPath: IndexPath = tableView.indexPath(for: tableCell), - let previousIndexPath: IndexPath = tableView.previousIndexPath(of: indexPath) { - - let previousCellRect: CGRect = tableView.rectForRow(at: previousIndexPath) - if !previousCellRect.isEmpty { - let superview: UIView? = rootController.view.superview - let previousCellRectInRootSuperview: CGRect = tableView.convert(previousCellRect, - to: superview) - - moveUp = CGFloat.minimum(0, previousCellRectInRootSuperview.maxY - topLayoutGuide) - } - } - } else if let collectionView = scrollView.iq.superviewOf(type: UICollectionView.self) { - // Special treatment for UICollectionView due to their cell reusing logic - - isContinue = scrollView.contentOffset.y > 0 - - if isContinue, - let collectionCell = textFieldView.iq.superviewOf(type: UICollectionViewCell.self), - let indexPath: IndexPath = collectionView.indexPath(for: collectionCell), - let previousIndexPath: IndexPath = collectionView.previousIndexPath(of: indexPath), - let attributes = collectionView.layoutAttributesForItem(at: previousIndexPath) { - - let previousCellRect: CGRect = attributes.frame - if !previousCellRect.isEmpty { - let superview: UIView? = rootController.view.superview - let previousCellRectInRootSuperview: CGRect = collectionView.convert(previousCellRect, - to: superview) - - moveUp = CGFloat.minimum(0, previousCellRectInRootSuperview.maxY - topLayoutGuide) - } - } - } else { - isContinue = textFieldViewRectInRootSuperview.minY < topLayoutGuide - - if isContinue { - moveUp = CGFloat.minimum(0, textFieldViewRectInRootSuperview.minY - topLayoutGuide) - } - } - - // Looping in upper hierarchy until we don't found any scrollView then - // in it's upper hierarchy till UIWindow object. - if isContinue { - - var tempScrollView: UIScrollView? = scrollView.iq.superviewOf(type: UIScrollView.self) - var nextScrollView: UIScrollView? - while let view: UIScrollView = tempScrollView { - - if view.isScrollEnabled, !view.iq.ignoreScrollingAdjustment { - nextScrollView = view - break - } else { - tempScrollView = view.iq.superviewOf(type: UIScrollView.self) - } - } - - // Getting lastViewRect. - if let lastViewRect: CGRect = lastView.superview?.convert(lastView.frame, to: scrollView) { - - // Calculating the expected Y offset from move and scrollView's contentOffset. - let minimumMovement: CGFloat = CGFloat.minimum(scrollView.contentOffset.y, -moveUp) - var suggestedOffsetY: CGFloat = scrollView.contentOffset.y - minimumMovement - - // Rearranging the expected Y offset according to the view. - suggestedOffsetY = CGFloat.minimum(suggestedOffsetY, lastViewRect.minY) - - // [_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type - // nextScrollView == nil If processing scrollView is last scrollView in - // upper hierarchy (there is no other scrollView upper hierarchy.) - // [_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type - // suggestedOffsetY >= 0 suggestedOffsetY must be greater than in - // order to keep distance from navigationBar (Bug ID: #92) - if isScrollableTextView, - nextScrollView == nil, - suggestedOffsetY >= 0 { - - // Converting Rectangle according to window bounds. - if let superview: UIView = textFieldView.superview { - - let currentTextFieldViewRect: CGRect = superview.convert(textFieldView.frame, - to: window) - - // Calculating expected fix distance which needs to be managed from navigation bar - let expectedFixDistance: CGFloat = currentTextFieldViewRect.minY - topLayoutGuide - - // Now if expectedOffsetY (scrollView.contentOffset.y + expectedFixDistance) - // is lower than current suggestedOffsetY, which means we're in a position where - // navigationBar up and hide, then reducing suggestedOffsetY with expectedOffsetY - // (scrollView.contentOffset.y + expectedFixDistance) - let expectedOffsetY: CGFloat = scrollView.contentOffset.y + expectedFixDistance - suggestedOffsetY = CGFloat.minimum(suggestedOffsetY, expectedOffsetY) - - // Setting move to 0 because now we don't want to move any view anymore - // (All will be managed by our contentInset logic. - moveUp = 0 - } else { - // Subtracting the Y offset from the move variable, - // because we are going to change scrollView's contentOffset.y to suggestedOffsetY. - moveUp -= (suggestedOffsetY-scrollView.contentOffset.y) - } - } else { - // Subtracting the Y offset from the move variable, - // because we are going to change scrollView's contentOffset.y to suggestedOffsetY. - moveUp -= (suggestedOffsetY-scrollView.contentOffset.y) - } - - let newContentOffset: CGPoint = CGPoint(x: scrollView.contentOffset.x, y: suggestedOffsetY) - - if !scrollView.contentOffset.equalTo(newContentOffset) { - - showLog(""" - old contentOffset: \(scrollView.contentOffset) - new contentOffset: \(newContentOffset) - """) - self.showLog("Remaining Move: \(moveUp)") - - // Getting problem while using `setContentOffset:animated:`, So I used animation API. - activeConfiguration.animate(alongsideTransition: { - - // (Bug ID: #1365, #1508, #1541) - let stackView: UIStackView? = textFieldView.iq.superviewOf(type: UIStackView.self, - belowView: scrollView) - // (Bug ID: #1901, #1996) - let animatedContentOffset: Bool = stackView != nil || - scrollView is UICollectionView || - scrollView is UITableView - - if animatedContentOffset { - scrollView.setContentOffset(newContentOffset, animated: UIView.areAnimationsEnabled) - } else { - scrollView.contentOffset = newContentOffset - } - }, completion: { - - if scrollView is UITableView || scrollView is UICollectionView { - // This will update the next/previous states - self.reloadInputViews() - } - }) - } - } - - // Getting next lastView & superScrollView. - lastView = scrollView - superScrollView = nextScrollView - } else { - moveUp = 0 - break - } - } - - // Updating contentInset - let lastScrollView = lastScrollViewConfiguration.scrollView - if let lastScrollViewRect: CGRect = lastScrollView.superview?.convert(lastScrollView.frame, to: window), - !lastScrollView.iq.ignoreContentInsetAdjustment { - - var bottomInset: CGFloat = (kbSize.height)-(window.frame.height-lastScrollViewRect.maxY) - let keyboardAndSafeArea: CGFloat = keyboardDistance + rootConfiguration.beginSafeAreaInsets.bottom - var bottomScrollIndicatorInset: CGFloat = bottomInset - keyboardAndSafeArea - - // Update the insets so that the scrollView doesn't shift incorrectly - // when the offset is near the bottom of the scroll view. - bottomInset = CGFloat.maximum(lastScrollViewConfiguration.startingContentInset.bottom, bottomInset) - let startingScrollInset: UIEdgeInsets = lastScrollViewConfiguration.startingScrollIndicatorInsets - bottomScrollIndicatorInset = CGFloat.maximum(startingScrollInset.bottom, - bottomScrollIndicatorInset) - - bottomInset -= lastScrollView.safeAreaInsets.bottom - bottomScrollIndicatorInset -= lastScrollView.safeAreaInsets.bottom - - var movedInsets: UIEdgeInsets = lastScrollView.contentInset - movedInsets.bottom = bottomInset - - if lastScrollView.contentInset != movedInsets { - showLog("old ContentInset: \(lastScrollView.contentInset) new ContentInset: \(movedInsets)") - - activeConfiguration.animate(alongsideTransition: { - lastScrollView.contentInset = movedInsets - lastScrollView.layoutIfNeeded() // (Bug ID: #1996) - - var newScrollIndicatorInset: UIEdgeInsets = lastScrollView.verticalScrollIndicatorInsets - - newScrollIndicatorInset.bottom = bottomScrollIndicatorInset - lastScrollView.scrollIndicatorInsets = newScrollIndicatorInset - }) - } - } - } - // Going ahead. No else if. - - // Special case for UITextView - // (Readjusting textView.contentInset when textView hight is too big to fit on screen) - // _lastScrollView If not having inside any scrollView, now contentInset manages the full screen textView. - // [_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type - if isScrollableTextView, let textView = textFieldView as? UIScrollView { - - let keyboardYPosition: CGFloat = window.frame.height - originalKbSize.height - var rootSuperViewFrameInWindow: CGRect = window.frame - if let rootSuperview: UIView = rootController.view.superview { - rootSuperViewFrameInWindow = rootSuperview.convert(rootSuperview.bounds, to: window) - } - - let keyboardOverlapping: CGFloat = rootSuperViewFrameInWindow.maxY - keyboardYPosition - - let availableHeight: CGFloat = rootSuperViewFrameInWindow.height-topLayoutGuide-keyboardOverlapping - let textViewHeight: CGFloat = CGFloat.minimum(textView.frame.height, availableHeight) - - if textView.frame.size.height-textView.contentInset.bottom>textViewHeight { - // If frame is not change by library in past, then saving user textView properties (Bug ID: #92) - if startingTextViewConfiguration == nil { - startingTextViewConfiguration = IQScrollViewConfiguration(scrollView: textView, - canRestoreContentOffset: false) - } - - var newContentInset: UIEdgeInsets = textView.contentInset - newContentInset.bottom = textView.frame.size.height-textViewHeight - newContentInset.bottom -= textView.safeAreaInsets.bottom - - if textView.contentInset != newContentInset { - self.showLog(""" - \(textFieldView) Old UITextView.contentInset: \(textView.contentInset) - New UITextView.contentInset: \(newContentInset) - """) - - activeConfiguration.animate(alongsideTransition: { - - textView.contentInset = newContentInset - textView.layoutIfNeeded() // (Bug ID: #1996) - textView.scrollIndicatorInsets = newContentInset - }) - } - } - } - - // +Positive or zero. - if moveUp >= 0 { - - rootViewOrigin.y = CGFloat.maximum(rootViewOrigin.y - moveUp, CGFloat.minimum(0, -originalKbSize.height)) - - if !rootController.view.frame.origin.equalTo(rootViewOrigin) { - showLog("Moving Upward") - - activeConfiguration.animate(alongsideTransition: { - - var rect: CGRect = rootController.view.frame - rect.origin = rootViewOrigin - rootController.view.frame = rect - - // Animating content if needed (Bug ID: #204) - if self.layoutIfNeededOnUpdate { - // Animating content (Bug ID: #160) - rootController.view.setNeedsLayout() - rootController.view.layoutIfNeeded() - } - - let classNameString: String = "\(type(of: rootController.self))" - self.showLog("Set \(classNameString) origin to: \(rootViewOrigin)") - }) - } - - movedDistance = (rootConfiguration.beginOrigin.y-rootViewOrigin.y) - } else { // -Negative - let disturbDistance: CGFloat = rootViewOrigin.y-rootConfiguration.beginOrigin.y - - // disturbDistance Negative = frame disturbed. - // disturbDistance positive = frame not disturbed. - if disturbDistance <= 0 { - - rootViewOrigin.y -= CGFloat.maximum(moveUp, disturbDistance) - - if !rootController.view.frame.origin.equalTo(rootViewOrigin) { - showLog("Moving Downward") - // Setting adjusted rootViewRect - // Setting adjusted rootViewRect - - activeConfiguration.animate(alongsideTransition: { - - var rect: CGRect = rootController.view.frame - rect.origin = rootViewOrigin - rootController.view.frame = rect - - // Animating content if needed (Bug ID: #204) - if self.layoutIfNeededOnUpdate { - // Animating content (Bug ID: #160) - rootController.view.setNeedsLayout() - rootController.view.layoutIfNeeded() - } - - let classNameString: String = "\(type(of: rootController.self))" - self.showLog("Set \(classNameString) origin to: \(rootViewOrigin)") - }) - } - - movedDistance = (rootConfiguration.beginOrigin.y-rootViewOrigin.y) - } - } - - let elapsedTime: CFTimeInterval = CACurrentMediaTime() - startTime - showLog("<<<<< \(#function) ended: \(elapsedTime) seconds <<<<<", indentation: -1) - } - // swiftlint:enable cyclomatic_complexity - // swiftlint:enable function_body_length - - // swiftlint:disable cyclomatic_complexity - // swiftlint:disable function_body_length - internal func restorePosition() { - - // Setting rootViewController frame to it's original position. // (Bug ID: #18) - guard let configuration: IQRootControllerConfiguration = activeConfiguration.rootControllerConfiguration else { - return - } - let startTime: CFTimeInterval = CACurrentMediaTime() - showLog(">>>>> \(#function) started >>>>>", indentation: 1) - - activeConfiguration.animate(alongsideTransition: { - if configuration.hasChanged { - let classNameString: String = "\(type(of: configuration.rootController.self))" - self.showLog("Restoring \(classNameString) origin to: \(configuration.beginOrigin)") - } - configuration.restore() - - // Animating content if needed (Bug ID: #204) - if self.layoutIfNeededOnUpdate { - // Animating content (Bug ID: #160) - configuration.rootController.view.setNeedsLayout() - configuration.rootController.view.layoutIfNeeded() - } - }) - - // Restoring the contentOffset of the lastScrollView - if let textFieldView: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let lastConfiguration: IQScrollViewConfiguration = lastScrollViewConfiguration { - - activeConfiguration.animate(alongsideTransition: { - - if lastConfiguration.hasChanged { - if lastConfiguration.scrollView.contentInset != lastConfiguration.startingContentInset { - self.showLog("Restoring contentInset to: \(lastConfiguration.startingContentInset)") - } - - if lastConfiguration.scrollView.iq.restoreContentOffset, - !lastConfiguration.scrollView.contentOffset.equalTo(lastConfiguration.startingContentOffset) { - self.showLog("Restoring contentOffset to: \(lastConfiguration.startingContentOffset)") - } - - lastConfiguration.restore(for: textFieldView) - } - - // This is temporary solution. Have to implement the save and restore scrollView state - var superScrollView: UIScrollView? = lastConfiguration.scrollView - - while let scrollView: UIScrollView = superScrollView { - - let width: CGFloat = CGFloat.maximum(scrollView.contentSize.width, scrollView.frame.width) - let height: CGFloat = CGFloat.maximum(scrollView.contentSize.height, scrollView.frame.height) - let contentSize: CGSize = CGSize(width: width, height: height) - - let minimumY: CGFloat = contentSize.height - scrollView.frame.height - - if minimumY < scrollView.contentOffset.y { - - let newContentOffset: CGPoint = CGPoint(x: scrollView.contentOffset.x, y: minimumY) - if !scrollView.contentOffset.equalTo(newContentOffset) { - - // (Bug ID: #1365, #1508, #1541) - let stackView: UIStackView? = textFieldView.iq.superviewOf(type: UIStackView.self, - belowView: scrollView) - - // (Bug ID: #1901, #1996) - let animatedContentOffset: Bool = stackView != nil || - scrollView is UICollectionView || - scrollView is UITableView - - if animatedContentOffset { - scrollView.setContentOffset(newContentOffset, animated: UIView.areAnimationsEnabled) - } else { - scrollView.contentOffset = newContentOffset - } - - self.showLog("Restoring contentOffset to: \(newContentOffset)") - } - } - - superScrollView = scrollView.iq.superviewOf(type: UIScrollView.self) - } - }) - } - - self.movedDistance = 0 - let elapsedTime: CFTimeInterval = CACurrentMediaTime() - startTime - showLog("<<<<< \(#function) ended: \(elapsedTime) seconds <<<<<", indentation: -1) - } - // swiftlint:enable cyclomatic_complexity - // swiftlint:enable function_body_length -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift deleted file mode 100644 index a7b1791967c00dc3391b2f6873f1a661400b6b64..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift +++ /dev/null @@ -1,280 +0,0 @@ -// -// IQKeyboardManager+Toolbar.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - /** - Default tag for toolbar with Done button -1002. - */ - private static let kIQDoneButtonToolbarTag = -1002 - - /** - Default tag for toolbar with Previous/Next buttons -1005. - */ - private static let kIQPreviousNextButtonToolbarTag = -1005 - - // swiftlint:disable function_body_length - // swiftlint:disable cyclomatic_complexity - /** - Add toolbar if it is required to add on textFields and it's siblings. - */ - internal func addToolbarIfRequired() { - - // Either there is no inputAccessoryView or - // if accessoryView is not appropriate for current situation - // (There is Previous/Next/Done toolbar) - guard let siblings: [UIView] = responderViews(), !siblings.isEmpty, - let textField: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - textField.responds(to: #selector(setter: UITextField.inputAccessoryView)) else { - return - } - - if let inputAccessoryView: UIView = textField.inputAccessoryView { - - if inputAccessoryView.tag == IQKeyboardManager.kIQPreviousNextButtonToolbarTag || - inputAccessoryView.tag == IQKeyboardManager.kIQDoneButtonToolbarTag { - // continue - } else { - let swiftUIAccessoryName: String = "InputAccessoryHost<InputAccessoryBar>" - let classNameString: String = "\(type(of: inputAccessoryView.classForCoder))" - - // If it's SwiftUI accessory view but doesn't have a height (fake accessory view), then we should - // add our own accessoryView otherwise, keep the SwiftUI accessoryView since user has added it from code - guard classNameString.hasPrefix(swiftUIAccessoryName), inputAccessoryView.subviews.isEmpty else { - return - } - } - } - - showLog(">>>>> \(#function) started >>>>>", indentation: 1) - let startTime: CFTimeInterval = CACurrentMediaTime() - - showLog("Found \(siblings.count) responder sibling(s)") - - let rightConfiguration: IQBarButtonItemConfiguration - if let configuration: IQBarButtonItemConfiguration = toolbarConfiguration.doneBarButtonConfiguration { - rightConfiguration = configuration - rightConfiguration.action = #selector(self.doneAction(_:)) - } else { - rightConfiguration = IQBarButtonItemConfiguration(systemItem: .done, action: #selector(self.doneAction(_:))) - rightConfiguration.accessibilityLabel = "Done" - } - - let isTableCollectionView: Bool - if textField.iq.superviewOf(type: UITableView.self) != nil || - textField.iq.superviewOf(type: UICollectionView.self) != nil { - isTableCollectionView = true - } else { - isTableCollectionView = false - } - - let previousNextDisplayMode: IQPreviousNextDisplayMode = toolbarConfiguration.previousNextDisplayMode - - let havePreviousNext: Bool - switch previousNextDisplayMode { - case .default: - // If the textField is part of UITableView/UICollectionView then we should be exposing previous/next too - // Because at this time we don't know the previous or next cell if it contains another textField to move. - if isTableCollectionView { - havePreviousNext = true - } else if siblings.count <= 1 { - // If only one object is found, then adding only Done button. - havePreviousNext = false - } else { - havePreviousNext = true - } - case .alwaysShow: - havePreviousNext = true - case .alwaysHide: - havePreviousNext = false - } - - let placeholderConfig: IQToolbarPlaceholderConfiguration = toolbarConfiguration.placeholderConfiguration - if havePreviousNext { - let prevConfiguration: IQBarButtonItemConfiguration - if let configuration: IQBarButtonItemConfiguration = toolbarConfiguration.previousBarButtonConfiguration { - configuration.action = #selector(self.previousAction(_:)) - prevConfiguration = configuration - } else { - prevConfiguration = IQBarButtonItemConfiguration(image: (UIImage.keyboardPreviousImage), - action: #selector(self.previousAction(_:))) - prevConfiguration.accessibilityLabel = "Previous" - } - - let nextConfiguration: IQBarButtonItemConfiguration - if let configuration: IQBarButtonItemConfiguration = toolbarConfiguration.nextBarButtonConfiguration { - configuration.action = #selector(self.nextAction(_:)) - nextConfiguration = configuration - } else { - nextConfiguration = IQBarButtonItemConfiguration(image: (UIImage.keyboardNextImage), - action: #selector(self.nextAction(_:))) - nextConfiguration.accessibilityLabel = "Next" - } - - let titleText: String? = placeholderConfig.showPlaceholder ? textField.iq.drawingPlaceholder : nil - textField.iq.addToolbar(target: self, - previousConfiguration: prevConfiguration, - nextConfiguration: nextConfiguration, - rightConfiguration: rightConfiguration, title: titleText, - titleAccessibilityLabel: placeholderConfig.accessibilityLabel) - - // (Bug ID: #78) - textField.inputAccessoryView?.tag = IQKeyboardManager.kIQPreviousNextButtonToolbarTag - - if isTableCollectionView { - // (Bug ID: #56) - // In case of UITableView, the next/previous buttons should always be enabled. - textField.iq.toolbar.previousBarButton.isEnabled = true - textField.iq.toolbar.nextBarButton.isEnabled = true - } else { - // If firstTextField, then previous should not be enabled. - textField.iq.toolbar.previousBarButton.isEnabled = (siblings.first != textField) - // If lastTextField then next should not be enabled. - textField.iq.toolbar.nextBarButton.isEnabled = (siblings.last != textField) - } - - } else { - - let titleText: String? = placeholderConfig.showPlaceholder ? textField.iq.drawingPlaceholder : nil - textField.iq.addToolbar(target: self, rightConfiguration: rightConfiguration, - title: titleText, - titleAccessibilityLabel: placeholderConfig.accessibilityLabel) - - textField.inputAccessoryView?.tag = IQKeyboardManager.kIQDoneButtonToolbarTag // (Bug ID: #78) - } - - let toolbar: IQToolbar = textField.iq.toolbar - - // Setting toolbar tintColor // (Enhancement ID: #30) - if toolbarConfiguration.useTextFieldTintColor { - toolbar.tintColor = textField.tintColor - } else { - toolbar.tintColor = toolbarConfiguration.tintColor - } - - // Setting toolbar to keyboard. - if let textFieldView: UITextInput = textField as? UITextInput { - - // Bar style according to keyboard appearance - switch textFieldView.keyboardAppearance { - - case .dark?: - toolbar.barStyle = .black - toolbar.barTintColor = nil - default: - toolbar.barStyle = .default - toolbar.barTintColor = toolbarConfiguration.barTintColor - } - } - - // Setting toolbar title font. // (Enhancement ID: #30) - if toolbarConfiguration.placeholderConfiguration.showPlaceholder, - !textField.iq.hidePlaceholder { - - // Updating placeholder font to toolbar. //(Bug ID: #148, #272) - if toolbar.titleBarButton.title == nil || - toolbar.titleBarButton.title != textField.iq.drawingPlaceholder { - toolbar.titleBarButton.title = textField.iq.drawingPlaceholder - } - - // Setting toolbar title font. // (Enhancement ID: #30) - toolbar.titleBarButton.titleFont = toolbarConfiguration.placeholderConfiguration.font - - // Setting toolbar title color. // (Enhancement ID: #880) - toolbar.titleBarButton.titleColor = toolbarConfiguration.placeholderConfiguration.color - - // Setting toolbar button title color. // (Enhancement ID: #880) - toolbar.titleBarButton.selectableTitleColor = toolbarConfiguration.placeholderConfiguration.buttonColor - - } else { - toolbar.titleBarButton.title = nil - } - - // In case of UITableView (Special), the next/previous buttons has to be refreshed every-time. (Bug ID: #56) - - // If firstTextField, then previous should not be enabled. - textField.iq.toolbar.previousBarButton.isEnabled = (siblings.first != textField) - - // If lastTextField then next should not be enabled. - textField.iq.toolbar.nextBarButton.isEnabled = (siblings.last != textField) - - let elapsedTime: CFTimeInterval = CACurrentMediaTime() - startTime - showLog("<<<<< \(#function) ended: \(elapsedTime) seconds <<<<<", indentation: -1) - } - // swiftlint:enable function_body_length - // swiftlint:enable cyclomatic_complexity - - /** Remove any toolbar if it is IQToolbar. */ - internal func removeToolbarIfRequired() { // (Bug ID: #18) - - guard let siblings: [UIView] = responderViews(), !siblings.isEmpty, - let textField: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - textField.responds(to: #selector(setter: UITextField.inputAccessoryView)), - textField.inputAccessoryView == nil || - textField.inputAccessoryView?.tag == IQKeyboardManager.kIQPreviousNextButtonToolbarTag || - textField.inputAccessoryView?.tag == IQKeyboardManager.kIQDoneButtonToolbarTag else { - return - } - - showLog(">>>>> \(#function) started >>>>>", indentation: 1) - let startTime: CFTimeInterval = CACurrentMediaTime() - - showLog("Found \(siblings.count) responder sibling(s)") - - for view in siblings { - if let toolbar: IQToolbar = view.inputAccessoryView as? IQToolbar { - - // setInputAccessoryView: check (Bug ID: #307) - if view.responds(to: #selector(setter: UITextField.inputAccessoryView)), - toolbar.tag == IQKeyboardManager.kIQDoneButtonToolbarTag || - toolbar.tag == IQKeyboardManager.kIQPreviousNextButtonToolbarTag { - - if let textField: UITextField = view as? UITextField { - textField.inputAccessoryView = nil - } else if let textView: UITextView = view as? UITextView { - textView.inputAccessoryView = nil - } - - view.reloadInputViews() - } - } - } - - let elapsedTime: CFTimeInterval = CACurrentMediaTime() - startTime - showLog("<<<<< \(#function) ended: \(elapsedTime) seconds <<<<<", indentation: -1) - } - - /** reloadInputViews to reload toolbar buttons enable/disable state on the fly Enhancement ID #434. */ - @objc func reloadInputViews() { - - // If enabled then adding toolbar. - if privateIsEnableAutoToolbar() { - self.addToolbarIfRequired() - } else { - self.removeToolbarIfRequired() - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift deleted file mode 100644 index 5b01190ea27dd23a8754c0c4c37bb9e18b0c98d6..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift +++ /dev/null @@ -1,205 +0,0 @@ -// -// IQKeyboardManager+ToolbarActions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// MARK: Previous next button actions -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManager { - - /** - Returns YES if can navigate to previous responder textField/textView, otherwise NO. - */ - @objc var canGoPrevious: Bool { - // If it is not first textField. then it's previous object canBecomeFirstResponder. - guard let textFields: [UIView] = responderViews(), - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let index: Int = textFields.firstIndex(of: textFieldRetain), - index > 0 else { - return false - } - return true - } - - /** - Returns YES if can navigate to next responder textField/textView, otherwise NO. - */ - @objc var canGoNext: Bool { - // If it is not first textField. then it's previous object canBecomeFirstResponder. - guard let textFields: [UIView] = responderViews(), - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let index: Int = textFields.firstIndex(of: textFieldRetain), - index < textFields.count-1 else { - return false - } - return true - } - - /** - Navigate to previous responder textField/textView. - */ - @discardableResult - @objc func goPrevious() -> Bool { - - // If it is not first textField. then it's previous object becomeFirstResponder. - guard let textFields: [UIView] = responderViews(), - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let index: Int = textFields.firstIndex(of: textFieldRetain), - index > 0 else { - return false - } - - let nextTextField: UIView = textFields[index-1] - - let isAcceptAsFirstResponder: Bool = nextTextField.becomeFirstResponder() - - // If it refuses then becoming previous textFieldView as first responder again. (Bug ID: #96) - if !isAcceptAsFirstResponder { - showLog("Refuses to become first responder: \(nextTextField)") - } - - return isAcceptAsFirstResponder - } - - /** - Navigate to next responder textField/textView. - */ - @discardableResult - @objc func goNext() -> Bool { - - // If it is not first textField. then it's previous object becomeFirstResponder. - guard let textFields: [UIView] = responderViews(), - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView, - let index: Int = textFields.firstIndex(of: textFieldRetain), - index < textFields.count-1 else { - return false - } - - let nextTextField: UIView = textFields[index+1] - - let isAcceptAsFirstResponder: Bool = nextTextField.becomeFirstResponder() - - // If it refuses then becoming previous textFieldView as first responder again. (Bug ID: #96) - if !isAcceptAsFirstResponder { - showLog("Refuses to become first responder: \(nextTextField)") - } - - return isAcceptAsFirstResponder - } - - /** previousAction. */ - @objc internal func previousAction (_ barButton: IQBarButtonItem) { - - // If user wants to play input Click sound. - if playInputClicks { - // Play Input Click Sound. - UIDevice.current.playInputClick() - } - - guard canGoPrevious, - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - let isAcceptAsFirstResponder: Bool = goPrevious() - - var invocation: IQInvocation? = barButton.invocation - var sender: UIView = textFieldRetain - - // Handling search bar special case - do { - if let searchBar: UIView = textFieldRetain.iq.textFieldSearchBar() { - invocation = searchBar.iq.toolbar.previousBarButton.invocation - sender = searchBar - } - } - - if isAcceptAsFirstResponder { - invocation?.invoke(from: sender) - } - } - - /** nextAction. */ - @objc internal func nextAction (_ barButton: IQBarButtonItem) { - - // If user wants to play input Click sound. - if playInputClicks { - // Play Input Click Sound. - UIDevice.current.playInputClick() - } - - guard canGoNext, - let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - let isAcceptAsFirstResponder: Bool = goNext() - - var invocation: IQInvocation? = barButton.invocation - var sender: UIView = textFieldRetain - - // Handling search bar special case - do { - if let searchBar: UIView = textFieldRetain.iq.textFieldSearchBar() { - invocation = searchBar.iq.toolbar.nextBarButton.invocation - sender = searchBar - } - } - - if isAcceptAsFirstResponder { - invocation?.invoke(from: sender) - } - } - - /** doneAction. Resigning current textField. */ - @objc internal func doneAction (_ barButton: IQBarButtonItem) { - - // If user wants to play input Click sound. - if playInputClicks { - // Play Input Click Sound. - UIDevice.current.playInputClick() - } - - guard let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - // Resign textFieldView. - let isResignedFirstResponder: Bool = resignFirstResponder() - - var invocation: IQInvocation? = barButton.invocation - var sender: UIView = textFieldRetain - - // Handling search bar special case - do { - if let searchBar: UIView = textFieldRetain.iq.textFieldSearchBar() { - invocation = searchBar.iq.toolbar.doneBarButton.invocation - sender = searchBar - } - } - - if isResignedFirstResponder { - invocation?.invoke(from: sender) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift deleted file mode 100644 index 3850630e649e5fd2870b40497d811ca887772b8d..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift +++ /dev/null @@ -1,148 +0,0 @@ -// -// IQKeyboardManager+UIKeyboardNotification.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// MARK: UIKeyboard Notifications -@available(iOSApplicationExtension, unavailable) -internal extension IQKeyboardManager { - - func handleKeyboardTextFieldViewVisible() { - if self.activeConfiguration.rootControllerConfiguration == nil { // (Bug ID: #5) - - let rootConfiguration: IQRootControllerConfiguration? = self.activeConfiguration.rootControllerConfiguration - if let gestureConfiguration = self.rootConfigurationWhilePopGestureActive, - gestureConfiguration.rootController == rootConfiguration?.rootController { - self.activeConfiguration.rootControllerConfiguration = gestureConfiguration - } - - self.rootConfigurationWhilePopGestureActive = nil - - if let configuration = self.activeConfiguration.rootControllerConfiguration { - let classNameString: String = "\(type(of: configuration.rootController.self))" - self.showLog("Saving \(classNameString) beginning origin: \(configuration.beginOrigin)") - } - } - - setupTextFieldView() - - if !privateIsEnabled() { - restorePosition() - } else { - adjustPosition() - } - } - - func handleKeyboardTextFieldViewChanged() { - - setupTextFieldView() - - if !privateIsEnabled() { - restorePosition() - } else { - adjustPosition() - } - } - - func handleKeyboardTextFieldViewHide() { - - self.restorePosition() - self.banishTextFieldViewSetup() - - if let configuration = self.activeConfiguration.rootControllerConfiguration, - configuration.rootController.navigationController?.interactivePopGestureRecognizer?.state == .began { - self.rootConfigurationWhilePopGestureActive = configuration - } - - self.lastScrollViewConfiguration = nil - } -} - -@available(iOSApplicationExtension, unavailable) -internal extension IQKeyboardManager { - - func setupTextFieldView() { - - guard let textFieldView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - do { - if let startingConfiguration = startingTextViewConfiguration, - startingConfiguration.hasChanged { - - if startingConfiguration.scrollView.contentInset != startingConfiguration.startingContentInset { - showLog("Restoring textView.contentInset to: \(startingConfiguration.startingContentInset)") - } - - activeConfiguration.animate(alongsideTransition: { - startingConfiguration.restore(for: textFieldView) - }) - } - startingTextViewConfiguration = nil - } - - if keyboardConfiguration.overrideAppearance, - let textInput: UITextInput = textFieldView as? UITextInput, - textInput.keyboardAppearance != keyboardConfiguration.appearance { - // Setting textField keyboard appearance and reloading inputViews. - if let textFieldView: UITextField = textFieldView as? UITextField { - textFieldView.keyboardAppearance = keyboardConfiguration.appearance - } else if let textFieldView: UITextView = textFieldView as? UITextView { - textFieldView.keyboardAppearance = keyboardConfiguration.appearance - } - textFieldView.reloadInputViews() - } - - // If autoToolbar enable, then add toolbar on all the UITextField/UITextView's if required. - reloadInputViews() - - resignFirstResponderGesture.isEnabled = privateResignOnTouchOutside() - textFieldView.window?.addGestureRecognizer(resignFirstResponderGesture) // (Enhancement ID: #14) - } - - func banishTextFieldViewSetup() { - - guard let textFieldView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return - } - - // Removing gesture recognizer (Enhancement ID: #14) - textFieldView.window?.removeGestureRecognizer(resignFirstResponderGesture) - - do { - if let startingConfiguration = startingTextViewConfiguration, - startingConfiguration.hasChanged { - - if startingConfiguration.scrollView.contentInset != startingConfiguration.startingContentInset { - showLog("Restoring textView.contentInset to: \(startingConfiguration.startingContentInset)") - } - - activeConfiguration.animate(alongsideTransition: { - startingConfiguration.restore(for: textFieldView) - }) - } - startingTextViewConfiguration = nil - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift deleted file mode 100644 index 676a8bc0ea642fda64ee774d050f39eaf588e1a0..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// IQKeyboardManager+UITextFieldViewNotification.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// MARK: UITextField/UITextView Notifications -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension IQKeyboardManager { - - @MainActor - private struct AssociatedKeys { - static var rootConfigWhilePopActive: Int = 0 - } - - var rootConfigurationWhilePopGestureActive: IQRootControllerConfiguration? { - get { - return objc_getAssociatedObject(self, - &AssociatedKeys.rootConfigWhilePopActive) as? IQRootControllerConfiguration - } - set(newValue) { - objc_setAssociatedObject(self, &AssociatedKeys.rootConfigWhilePopActive, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift deleted file mode 100644 index eeaca4b3eb59080373c3a9f761f6c6f80d7888cb..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift +++ /dev/null @@ -1,331 +0,0 @@ -// -// IQKeyboardManager.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import UIKit -import CoreGraphics -import QuartzCore - -// MARK: IQToolbar tags - -// swiftlint:disable line_length -// A generic version of KeyboardManagement. (OLD DOCUMENTATION) LINK -// https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html -// https://developer.apple.com/documentation/uikit/keyboards_and_input/adjusting_your_layout_with_keyboard_layout_guide -// swiftlint:enable line_length - -/** -Code-less drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView. - Neither need to write any code nor any setup required and much more. -*/ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQKeyboardManager: NSObject { - - /** - Returns the default singleton instance. - */ - @objc public static let shared: IQKeyboardManager = .init() - - // MARK: UIKeyboard handling - - /** - Enable/disable managing distance between keyboard and textField. - Default is YES(Enabled when class loads in `+(void)load` method). - */ - @objc public var enable: Bool = false { - - didSet { - // If not enable, enable it. - if enable, !oldValue { - // If keyboard is currently showing. - if activeConfiguration.keyboardInfo.keyboardShowing { - adjustPosition() - } else { - restorePosition() - } - showLog("Enabled") - } else if !enable, oldValue { // If not disable, disable it. - restorePosition() - showLog("Disabled") - } - } - } - - /** - To set keyboard distance from textField. can't be less than zero. Default is 10.0. - */ - @objc public var keyboardDistanceFromTextField: CGFloat = 10.0 - - // MARK: IQToolbar handling - - /** - Automatic add the IQToolbar functionality. Default is YES. - */ - @objc public var enableAutoToolbar: Bool = true { - didSet { - reloadInputViews() - showLog("enableAutoToolbar: \(enableAutoToolbar ? "Yes" : "NO")") - } - } - - internal var activeConfiguration: IQActiveConfiguration = .init() - - /** - Configurations related to the toolbar display over the keyboard. - */ - @objc public let toolbarConfiguration: IQToolbarConfiguration = .init() - - /** - Configuration related to keyboard appearance - */ - @objc public let keyboardConfiguration: IQKeyboardConfiguration = .init() - - // MARK: UITextField/UITextView Next/Previous/Resign handling - - /** - Resigns Keyboard on touching outside of UITextField/View. Default is NO. - */ - @objc public var resignOnTouchOutside: Bool = false { - - didSet { - resignFirstResponderGesture.isEnabled = privateResignOnTouchOutside() - - showLog("resignOnTouchOutside: \(resignOnTouchOutside ? "Yes" : "NO")") - } - } - - /** TapGesture to resign keyboard on view's touch. - It's a readonly property and exposed only for adding/removing dependencies - if your added gesture does have collision with this one - */ - @objc public lazy var resignFirstResponderGesture: UITapGestureRecognizer = { - - let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapRecognized(_:))) - tapGesture.cancelsTouchesInView = false - tapGesture.delegate = self - - return tapGesture - }() - - /*******************************************/ - - /** - Resigns currently first responder field. - */ - @discardableResult - @objc public func resignFirstResponder() -> Bool { - - guard let textFieldRetain: UIView = activeConfiguration.textFieldViewInfo?.textFieldView else { - return false - } - - // Resigning first responder - guard textFieldRetain.resignFirstResponder() else { - showLog("Refuses to resign first responder: \(textFieldRetain)") - // If it refuses then becoming it as first responder again. (Bug ID: #96) - // If it refuses to resign then becoming it first responder again for getting notifications callback. - textFieldRetain.becomeFirstResponder() - return false - } - return true - } - - // MARK: UISound handling - - /** - If YES, then it plays inputClick sound on next/previous/done click. - */ - @objc public var playInputClicks: Bool = true - - // MARK: UIAnimation handling - - /** - If YES, then calls 'setNeedsLayout' and 'layoutIfNeeded' on any frame update of to viewController's view. - */ - @objc public var layoutIfNeededOnUpdate: Bool = false - - // MARK: Class Level disabling methods - - /** - Disable distance handling within the scope of disabled distance handling viewControllers classes. - Within this scope, 'enabled' property is ignored. Class should be kind of UIViewController. - */ - @objc public var disabledDistanceHandlingClasses: [UIViewController.Type] = [] - - /** - Enable distance handling within the scope of enabled distance handling viewControllers classes. - Within this scope, 'enabled' property is ignored. Class should be kind of UIViewController. - If same Class is added in disabledDistanceHandlingClasses list, - then enabledDistanceHandlingClasses will be ignored. - */ - @objc public var enabledDistanceHandlingClasses: [UIViewController.Type] = [] - - /** - Disable automatic toolbar creation within the scope of disabled toolbar viewControllers classes. - Within this scope, 'enableAutoToolbar' property is ignored. Class should be kind of UIViewController. - */ - @objc public var disabledToolbarClasses: [UIViewController.Type] = [] - - /** - Enable automatic toolbar creation within the scope of enabled toolbar viewControllers classes. - Within this scope, 'enableAutoToolbar' property is ignored. Class should be kind of UIViewController. - If same Class is added in disabledToolbarClasses list, then enabledToolbarClasses will be ignore. - */ - @objc public var enabledToolbarClasses: [UIViewController.Type] = [] - - /** - Allowed subclasses of UIView to add all inner textField, - this will allow to navigate between textField contains in different superview. - Class should be kind of UIView. - */ - @objc public var toolbarPreviousNextAllowedClasses: [UIView.Type] = [] - - /** - Disabled classes to ignore resignOnTouchOutside' property, Class should be kind of UIViewController. - */ - @objc public var disabledTouchResignedClasses: [UIViewController.Type] = [] - - /** - Enabled classes to forcefully enable 'resignOnTouchOutside' property. - Class should be kind of UIViewController - . If same Class is added in disabledTouchResignedClasses list, then enabledTouchResignedClasses will be ignored. - */ - @objc public var enabledTouchResignedClasses: [UIViewController.Type] = [] - - /** - if resignOnTouchOutside is enabled then you can customize the behavior - to not recognize gesture touches on some specific view subclasses. - Class should be kind of UIView. Default is [UIControl, UINavigationBar] - */ - @objc public var touchResignedGestureIgnoreClasses: [UIView.Type] = [] - - // MARK: Third Party Library support - /// Add TextField/TextView Notifications customized Notifications. - /// For example while using YYTextView https://github.com/ibireme/YYText - - /**************************************************************************************/ - - // MARK: Initialization/De-initialization - - /* Singleton Object Initialization. */ - override init() { - - super.init() - - self.addActiveConfigurationObserver() - - // Creating gesture for resignOnTouchOutside. (Enhancement ID: #14) - resignFirstResponderGesture.isEnabled = resignOnTouchOutside - - disabledDistanceHandlingClasses.append(UITableViewController.self) - disabledDistanceHandlingClasses.append(UIInputViewController.self) - disabledDistanceHandlingClasses.append(UIAlertController.self) - - disabledToolbarClasses.append(UIAlertController.self) - disabledToolbarClasses.append(UIInputViewController.self) - - disabledTouchResignedClasses.append(UIAlertController.self) - disabledTouchResignedClasses.append(UIInputViewController.self) - - toolbarPreviousNextAllowedClasses.append(UITableView.self) - toolbarPreviousNextAllowedClasses.append(UICollectionView.self) - toolbarPreviousNextAllowedClasses.append(IQPreviousNextView.self) - - touchResignedGestureIgnoreClasses.append(UIControl.self) - touchResignedGestureIgnoreClasses.append(UINavigationBar.self) - - NotificationCenter.default.addObserver(self, selector: #selector(applicationDidBecomeActive(_:)), - name: UIApplication.didBecomeActiveNotification, object: nil) - - // (Bug ID: #550) - // Loading IQToolbar, IQTitleBarButtonItem, IQBarButtonItem to fix first time keyboard appearance delay - // If you experience exception breakpoint issue at below line then try these solutions - // https://stackoverflow.com/questions/27375640/all-exception-break-point-is-stopping-for-no-reason-on-simulator - DispatchQueue.main.async { - let textField: UIView = UITextField() - textField.iq.addDone(target: nil, action: #selector(self.doneAction(_:))) - textField.iq.addPreviousNextDone(target: nil, previousAction: #selector(self.previousAction(_:)), - nextAction: #selector(self.nextAction(_:)), - doneAction: #selector(self.doneAction(_:))) - } - } - - deinit { - // Disable the keyboard manager. - enable = false - } - - // MARK: Public Methods - - /* Refreshes textField/textView position if any external changes is explicitly made by user. */ - @objc public func reloadLayoutIfNeeded() { - - guard privateIsEnabled(), - activeConfiguration.keyboardInfo.keyboardShowing, - activeConfiguration.isReady else { - return - } - adjustPosition() - } -} - -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardManager: UIGestureRecognizerDelegate { - - /** Resigning on tap gesture. (Enhancement ID: #14)*/ - @objc private func tapRecognized(_ gesture: UITapGestureRecognizer) { - - if gesture.state == .ended { - - // Resigning currently responder textField. - resignFirstResponder() - } - } - - /** Note: returning YES is guaranteed to allow simultaneous recognition. - returning NO is not guaranteed to prevent simultaneous recognition, - as the other gesture's delegate may return YES. - */ - @objc public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, - shouldRecognizeSimultaneouslyWith - otherGestureRecognizer: UIGestureRecognizer) -> Bool { - return false - } - - /** - To not detect touch events in a subclass of UIControl, - these may have added their own selector for specific work - */ - @objc public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, - shouldReceive touch: UITouch) -> Bool { - // (Bug ID: #145) - // Should not recognize gesture if the clicked view is either UIControl or UINavigationBar(<Back button etc...) - - for ignoreClass in touchResignedGestureIgnoreClasses where touch.view?.isKind(of: ignoreClass) ?? false { - return false - } - - return true - } - -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift deleted file mode 100644 index d4bad3c45adf933d3260422cb0db8431add771c1..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift +++ /dev/null @@ -1,59 +0,0 @@ -// -// IQKeyboardManagerCompatible.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import Foundation - -/// Wrapper for IQKeyboardManager compatible types. This type provides an extension point for -/// convenience methods in IQKeyboardManager. -@available(iOSApplicationExtension, unavailable) -public struct IQKeyboardManagerWrapper<Base> { - public let base: Base - public init(_ base: Base) { - self.base = base - } -} - -// swiftlint:disable identifier_name -/// Represents an object type that is compatible with IQKeyboardManager. You can use `iq` property to get a -/// value in the namespace of IQKeyboardManager. -@available(iOSApplicationExtension, unavailable) -public protocol IQKeyboardManagerCompatible { - /// Type being extended. - associatedtype Base - - /// Instance IQKeyboardManager extension point. - var iq: IQKeyboardManagerWrapper<Base> { get set } -} - -// swiftlint:disable unused_setter_value -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardManagerCompatible { - - /// Instance IQKeyboardManager extension point. - var iq: IQKeyboardManagerWrapper<Self> { - get { IQKeyboardManagerWrapper(self) } - set {} - } -} -// swiftlint:enable unused_setter_value -// swiftlint:enable identifier_name diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift deleted file mode 100644 index e8f71882d5cb83431a7b1ef696ee63849df1cec8..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// IQPlaceholderable.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import Foundation -import UIKit - -@available(iOSApplicationExtension, unavailable) -@MainActor -public protocol IQPlaceholderable: AnyObject { - - var placeholder: String? { get set } - var attributedPlaceholder: NSAttributedString? { get set } -} - -@available(iOSApplicationExtension, unavailable) -extension UITextField: IQPlaceholderable { } - -@available(iOSApplicationExtension, unavailable) -extension IQTextView: IQPlaceholderable { } diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift deleted file mode 100644 index b4e5216bec22e85d229a3f316c552e47bf05769e..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift +++ /dev/null @@ -1,208 +0,0 @@ -// -// IQTextView.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -/** @abstract UITextView with placeholder support */ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQTextView: UITextView { - - @objc required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), - name: UITextView.textDidChangeNotification, object: self) - } - - @objc override public init(frame: CGRect, textContainer: NSTextContainer?) { - super.init(frame: frame, textContainer: textContainer) - NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), - name: UITextView.textDidChangeNotification, object: self) - } - - @objc override open func awakeFromNib() { - super.awakeFromNib() - NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), - name: UITextView.textDidChangeNotification, object: self) - } - - private var placeholderInsets: UIEdgeInsets { - let top: CGFloat = self.textContainerInset.top - let left: CGFloat = self.textContainerInset.left + self.textContainer.lineFragmentPadding - let bottom: CGFloat = self.textContainerInset.bottom - let right: CGFloat = self.textContainerInset.right + self.textContainer.lineFragmentPadding - return UIEdgeInsets(top: top, left: left, bottom: bottom, right: right) - } - - private var placeholderExpectedFrame: CGRect { - let insets: UIEdgeInsets = self.placeholderInsets - let maxWidth: CGFloat = self.frame.width-insets.left-insets.right - let size: CGSize = CGSize(width: maxWidth, height: self.frame.height-insets.top-insets.bottom) - let expectedSize: CGSize = placeholderLabel.sizeThatFits(size) - - return CGRect(x: insets.left, y: insets.top, width: maxWidth, height: expectedSize.height) - } - - lazy var placeholderLabel: UILabel = { - let label = UILabel() - - label.autoresizingMask = [.flexibleWidth, .flexibleHeight] - label.lineBreakMode = .byWordWrapping - label.numberOfLines = 0 - label.font = self.font - label.textAlignment = self.textAlignment - label.backgroundColor = UIColor.clear - label.isAccessibilityElement = false - label.textColor = UIColor.placeholderText - label.alpha = 0 - self.addSubview(label) - - return label - }() - - /** @abstract To set textView's placeholder text color. */ - @IBInspectable open var placeholderTextColor: UIColor? { - - get { - return placeholderLabel.textColor - } - - set { - placeholderLabel.textColor = newValue - } - } - - /** @abstract To set textView's placeholder text. Default is nil. */ - @IBInspectable open var placeholder: String? { - - get { - return placeholderLabel.text - } - - set { - placeholderLabel.text = newValue - refreshPlaceholder() - } - } - - /** @abstract To set textView's placeholder attributed text. Default is nil. */ - open var attributedPlaceholder: NSAttributedString? { - get { - return placeholderLabel.attributedText - } - - set { - placeholderLabel.attributedText = newValue - refreshPlaceholder() - } - } - - @objc override open func layoutSubviews() { - super.layoutSubviews() - - placeholderLabel.frame = placeholderExpectedFrame - } - - @objc private func refreshPlaceholder() { - - let text: String = text ?? attributedText?.string ?? "" - if text.isEmpty { - placeholderLabel.alpha = 1 - } else { - placeholderLabel.alpha = 0 - } - } - - @objc override open var text: String! { - - didSet { - refreshPlaceholder() - } - } - - open override var attributedText: NSAttributedString! { - - didSet { - refreshPlaceholder() - } - } - - @objc override open var font: UIFont? { - - didSet { - - if let unwrappedFont: UIFont = font { - placeholderLabel.font = unwrappedFont - } else { - placeholderLabel.font = UIFont.systemFont(ofSize: 12) - } - } - } - - @objc override open var textAlignment: NSTextAlignment { - didSet { - placeholderLabel.textAlignment = textAlignment - } - } - - @objc override weak open var delegate: UITextViewDelegate? { - - get { - refreshPlaceholder() - return super.delegate - } - - set { - super.delegate = newValue - } - } - - @objc override open var intrinsicContentSize: CGSize { - guard !hasText else { - return super.intrinsicContentSize - } - - var newSize: CGSize = super.intrinsicContentSize - let placeholderInsets: UIEdgeInsets = self.placeholderInsets - newSize.height = placeholderExpectedFrame.height + placeholderInsets.top + placeholderInsets.bottom - - return newSize - } - - @objc override open func caretRect(for position: UITextPosition) -> CGRect { - var originalRect = super.caretRect(for: position) - - // When placeholder is visible and text alignment is centered - if placeholderLabel.alpha == 1 && self.textAlignment == .center { - // Calculate the width of the placeholder text - let textSize = placeholderLabel.text?.size(withAttributes: [.font: placeholderLabel.font ?? UIFont.systemFont(ofSize: UIFont.systemFontSize)]) ?? .zero - // Calculate the starting x position of the centered placeholder text - let centeredTextX = (self.bounds.size.width - textSize.width) / 2 - // Update the caret position to match the starting x position of the centered text - originalRect.origin.x = centeredTextX - } - - return originalRect - } - -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift deleted file mode 100644 index 52af9ccbf95ea9f83d277c63cdd873776153545d..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift +++ /dev/null @@ -1,120 +0,0 @@ -// -// IQBarButtonItem.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQBarButtonItem: UIBarButtonItem { - - internal static let flexibleBarButtonItem: IQBarButtonItem = IQBarButtonItem(barButtonSystemItem: .flexibleSpace, - target: nil, action: nil) - - @objc public override init() { - super.init() - initialize() - } - - @objc public required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - initialize() - } - - private func initialize() { - - let states: [UIControl.State] = [.normal, .highlighted, .disabled, .focused] - - for state in states { - - setBackgroundImage(UIImage(), for: state, barMetrics: .default) - setBackgroundImage(UIImage(), for: state, style: .plain, barMetrics: .default) - setBackButtonBackgroundImage(UIImage(), for: state, barMetrics: .default) - } - - setTitlePositionAdjustment(UIOffset(), for: .default) - setBackgroundVerticalPositionAdjustment(0, for: .default) - setBackButtonBackgroundVerticalPositionAdjustment(0, for: .default) - } - - @objc override open var tintColor: UIColor? { - didSet { - - var textAttributes: [NSAttributedString.Key: Any] = [:] - textAttributes[.foregroundColor] = tintColor - - if let attributes: [NSAttributedString.Key: Any] = titleTextAttributes(for: .normal) { - for (key, value) in attributes { - textAttributes[key] = value - } - } - - setTitleTextAttributes(textAttributes, for: .normal) - } - } - - /** - Boolean to know if it's a system item or custom item, - we are having a limitation that we cannot override a designated initializer, - so we are manually setting this property once in initialization - */ - internal var isSystemItem: Bool = false - - /** - Additional target & action to do get callback action. - Note that setting custom target & selector doesn't affect native functionality, - this is just an additional target to get a callback. - - @param target Target object. - @param action Target Selector. - */ - @objc open func setTarget(_ target: AnyObject?, action: Selector?) { - if let target: AnyObject = target, let action: Selector = action { - invocation = IQInvocation(target, action) - } else { - invocation = nil - } - } - - /** - Customized Invocation to be called when button is pressed. - invocation is internally created using setTarget:action: method. - */ - @objc open var invocation: IQInvocation? { - didSet { - // We have to put this condition here because if we override this function then - // We were getting "Cannot override '_' which has been marked unavailable" in Xcode 15 - if let titleBarButton = self as? IQTitleBarButtonItem { - - if let target = invocation?.target, let action = invocation?.action { - titleBarButton.isEnabled = true - titleBarButton.titleButton?.isEnabled = true - titleBarButton.titleButton?.addTarget(target, action: action, for: .touchUpInside) - } else { - titleBarButton.isEnabled = false - titleBarButton.titleButton?.isEnabled = false - titleBarButton.titleButton?.removeTarget(nil, action: nil, for: .touchUpInside) - } - } - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift deleted file mode 100644 index 2ba446a098106720c6fd9d43f5e9cadec57d2930..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// IQInvocation.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQInvocation: NSObject { - @objc public weak var target: AnyObject? - @objc public var action: Selector - - @objc public init(_ target: AnyObject, _ action: Selector) { - self.target = target - self.action = action - } - - @objc public func invoke(from: Any) { - if let target: AnyObject = target { - UIApplication.shared.sendAction(action, to: target, from: from, for: UIEvent()) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift deleted file mode 100644 index d841752a1aa099503125a49c787bfde35f67c012..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// IQPreviousNextView.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQPreviousNextView: UIView { -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift deleted file mode 100644 index 9c969d3f7f7afa24f67dd8eebaf3ab28dad83602..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift +++ /dev/null @@ -1,158 +0,0 @@ -// -// IQTitleBarButtonItem.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQTitleBarButtonItem: IQBarButtonItem { - - @objc open var titleFont: UIFont? { - - didSet { - if let unwrappedFont: UIFont = titleFont { - titleButton?.titleLabel?.font = unwrappedFont - } else { - titleButton?.titleLabel?.font = UIFont.systemFont(ofSize: 13) - } - } - } - - @objc override open var title: String? { - didSet { - titleButton?.setTitle(title, for: .normal) - updateAccessibility() - } - } - - /** - titleColor to be used for displaying button text when displaying title (disabled state). - */ - @objc open var titleColor: UIColor? { - - didSet { - - if let color: UIColor = titleColor { - titleButton?.setTitleColor(color, for: .disabled) - } else { - titleButton?.setTitleColor(UIColor.lightGray, for: .disabled) - } - } - } - - /** - selectableTitleColor to be used for displaying button text when button is enabled. - */ - @objc open var selectableTitleColor: UIColor? { - - didSet { - - if let color: UIColor = selectableTitleColor { - titleButton?.setTitleColor(color, for: .normal) - } else { - titleButton?.setTitleColor(UIColor.systemBlue, for: .normal) - } - } - } - - internal var titleButton: UIButton? - private var _titleView: UIView? - - override init() { - super.init() - } - - @objc public convenience init(title: String?) { - - self.init(title: nil, style: .plain, target: nil, action: nil) - - _titleView = UIView() - _titleView?.backgroundColor = UIColor.clear - - titleButton = UIButton(type: .system) - titleButton?.isAccessibilityElement = false - titleButton?.isEnabled = false - titleButton?.titleLabel?.numberOfLines = 3 - titleButton?.setTitleColor(UIColor.lightGray, for: .disabled) - titleButton?.setTitleColor(UIColor.systemBlue, for: .normal) - titleButton?.backgroundColor = UIColor.clear - titleButton?.titleLabel?.textAlignment = .center - titleButton?.setTitle(title, for: .normal) - titleFont = UIFont.systemFont(ofSize: 13.0) - titleButton?.titleLabel?.font = self.titleFont - _titleView?.addSubview(titleButton!) - - let lowPriority: UILayoutPriority = UILayoutPriority(rawValue: UILayoutPriority.defaultLow.rawValue-1) - let highPriority: UILayoutPriority = UILayoutPriority(rawValue: UILayoutPriority.defaultHigh.rawValue-1) - - _titleView?.translatesAutoresizingMaskIntoConstraints = false - _titleView?.setContentHuggingPriority(lowPriority, for: .vertical) - _titleView?.setContentHuggingPriority(lowPriority, for: .horizontal) - _titleView?.setContentCompressionResistancePriority(highPriority, for: .vertical) - _titleView?.setContentCompressionResistancePriority(highPriority, for: .horizontal) - - titleButton?.translatesAutoresizingMaskIntoConstraints = false - titleButton?.setContentHuggingPriority(lowPriority, for: .vertical) - titleButton?.setContentHuggingPriority(lowPriority, for: .horizontal) - titleButton?.setContentCompressionResistancePriority(highPriority, for: .vertical) - titleButton?.setContentCompressionResistancePriority(highPriority, for: .horizontal) - - let top: NSLayoutConstraint = NSLayoutConstraint(item: titleButton!, attribute: .top, - relatedBy: .equal, - toItem: _titleView, attribute: .top, - multiplier: 1, constant: 0) - let bottom: NSLayoutConstraint = NSLayoutConstraint(item: titleButton!, attribute: .bottom, - relatedBy: .equal, - toItem: _titleView, attribute: .bottom, - multiplier: 1, constant: 0) - let leading: NSLayoutConstraint = NSLayoutConstraint(item: titleButton!, attribute: .leading, - relatedBy: .equal, - toItem: _titleView, attribute: .leading, - multiplier: 1, constant: 0) - let trailing: NSLayoutConstraint = NSLayoutConstraint(item: titleButton!, attribute: .trailing, - relatedBy: .equal, - toItem: _titleView, attribute: .trailing, - multiplier: 1, constant: 0) - - _titleView?.addConstraints([top, bottom, leading, trailing]) - - customView = _titleView - } - - @objc required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - } - - private func updateAccessibility() { - if title == nil || title?.isEmpty == true { - isAccessibilityElement = false - accessibilityTraits = .none - } else if titleButton?.isEnabled == true { - isAccessibilityElement = true - accessibilityTraits = .button - } else { - isAccessibilityElement = true - accessibilityTraits = .staticText - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift deleted file mode 100644 index 65d692ca4d590812d9b2c4207b18df87eb195bc3..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift +++ /dev/null @@ -1,181 +0,0 @@ -// -// IQToolbar.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -/** @abstract IQToolbar for IQKeyboardManager. */ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc open class IQToolbar: UIToolbar, UIInputViewAudioFeedback { - - override init(frame: CGRect) { - super.init(frame: frame) - - initialize() - } - - @objc required public init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - - initialize() - } - - private func initialize() { - - sizeToFit() - - autoresizingMask = .flexibleWidth - self.isTranslucent = true - self.barTintColor = nil - - let positions: [UIBarPosition] = [.any, .bottom, .top, .topAttached] - - for position in positions { - - self.setBackgroundImage(nil, forToolbarPosition: position, barMetrics: .default) - self.setShadowImage(nil, forToolbarPosition: .any) - } - - // Background color - self.backgroundColor = nil - } - - /** - Additional bar buttons to show at the leading side. - */ - open var additionalLeadingItems: [UIBarButtonItem] = [] - - /** - Additional bar buttons to show at the trailing side. - */ - open var additionalTrailingItems: [UIBarButtonItem] = [] - - /** - Previous bar button of toolbar. - */ - private var privatePreviousBarButton: IQBarButtonItem? - @objc open var previousBarButton: IQBarButtonItem { - get { - if privatePreviousBarButton == nil { - privatePreviousBarButton = IQBarButtonItem(image: nil, style: .plain, target: nil, action: nil) - } - return privatePreviousBarButton! - } - - set (newValue) { - privatePreviousBarButton = newValue - } - } - - /** - Next bar button of toolbar. - */ - private var privateNextBarButton: IQBarButtonItem? - @objc open var nextBarButton: IQBarButtonItem { - get { - if privateNextBarButton == nil { - privateNextBarButton = IQBarButtonItem(image: nil, style: .plain, target: nil, action: nil) - } - return privateNextBarButton! - } - - set (newValue) { - privateNextBarButton = newValue - } - } - - /** - Title bar button of toolbar. - */ - private var privateTitleBarButton: IQTitleBarButtonItem? - @objc open var titleBarButton: IQTitleBarButtonItem { - get { - if privateTitleBarButton == nil { - privateTitleBarButton = IQTitleBarButtonItem(title: nil) - } - return privateTitleBarButton! - } - - set (newValue) { - privateTitleBarButton = newValue - } - } - - /** - Done bar button of toolbar. - */ - private var privateDoneBarButton: IQBarButtonItem? - @objc open var doneBarButton: IQBarButtonItem { - get { - if privateDoneBarButton == nil { - privateDoneBarButton = IQBarButtonItem(title: nil, style: .done, target: nil, action: nil) - } - return privateDoneBarButton! - } - - set (newValue) { - privateDoneBarButton = newValue - } - } - - /** - Fixed space bar button of toolbar. - */ - private var privateFixedSpaceBarButton: IQBarButtonItem? - @objc open var fixedSpaceBarButton: IQBarButtonItem { - get { - if privateFixedSpaceBarButton == nil { - privateFixedSpaceBarButton = IQBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) - } - privateFixedSpaceBarButton?.isSystemItem = true - privateFixedSpaceBarButton?.width = 6 - - return privateFixedSpaceBarButton! - } - - set (newValue) { - privateFixedSpaceBarButton = newValue - } - } - - @objc override open func sizeThatFits(_ size: CGSize) -> CGSize { - var sizeThatFit: CGSize = super.sizeThatFits(size) - sizeThatFit.height = 44 - return sizeThatFit - } - - @objc override open var tintColor: UIColor! { - - didSet { - if let unwrappedItems: [UIBarButtonItem] = items { - for item in unwrappedItems { - item.tintColor = tintColor - } - } - } - } - - @objc open var enableInputClicksWhenVisible: Bool { - return true - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift deleted file mode 100644 index b9ae6b11b53fd7e07c897d176fc2e6d1f0341c42..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift +++ /dev/null @@ -1,319 +0,0 @@ -// -// IQUIView+IQKeyboardToolbar.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -private struct AssociatedKeys { - static var toolbar: Int = 0 - static var hidePlaceholder: Int = 0 - static var placeholder: Int = 0 -} - -@available(iOSApplicationExtension, unavailable) -@MainActor -public extension IQKeyboardManagerWrapper where Base: UIView { - - // MARK: Toolbar - - /** - IQToolbar references for better customization control. - */ - var toolbar: IQToolbar { - var toolbar: IQToolbar? = base.inputAccessoryView as? IQToolbar - - if toolbar == nil { - toolbar = objc_getAssociatedObject(base, &AssociatedKeys.toolbar) as? IQToolbar - } - - if let unwrappedToolbar: IQToolbar = toolbar { - return unwrappedToolbar - } else { - - let width: CGFloat = base.window?.windowScene?.screen.bounds.width ?? 0 - - let frame = CGRect(origin: .zero, size: .init(width: width, height: 44)) - let newToolbar = IQToolbar(frame: frame) - - objc_setAssociatedObject(base, &AssociatedKeys.toolbar, newToolbar, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - - return newToolbar - } - } - - // MARK: Toolbar title - - /** - If `hideToolbarPlaceholder` is YES, then title will not be added to the toolbar. Default to NO. - */ - var hidePlaceholder: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.hidePlaceholder) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.hidePlaceholder, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - toolbar.titleBarButton.title = drawingPlaceholder - } - } - - /** - `toolbarPlaceholder` to override default `placeholder` text when drawing text on toolbar. - */ - var placeholder: String? { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.placeholder) as? String - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.placeholder, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - toolbar.titleBarButton.title = drawingPlaceholder - } - } - - /** - `drawingToolbarPlaceholder` will be actual text used to draw on toolbar. - This would either `placeholder` or `toolbarPlaceholder`. - */ - var drawingPlaceholder: String? { - - if hidePlaceholder { - return nil - } else if placeholder?.isEmpty == false { - return placeholder - } else if let placeholderable: IQPlaceholderable = base as? IQPlaceholderable { - - if let placeholder = placeholderable.attributedPlaceholder?.string, - !placeholder.isEmpty { - return placeholder - } else if let placeholder = placeholderable.placeholder { - return placeholder - } else { - return nil - } - } else { - return nil - } - } - - // MARK: Common - - // swiftlint:disable cyclomatic_complexity - // swiftlint:disable function_body_length - func addToolbar(target: AnyObject?, - previousConfiguration: IQBarButtonItemConfiguration? = nil, - nextConfiguration: IQBarButtonItemConfiguration? = nil, - rightConfiguration: IQBarButtonItemConfiguration? = nil, - title: String?, - titleAccessibilityLabel: String? = nil) { - - // If can't set InputAccessoryView. Then return - if base.responds(to: #selector(setter: UITextField.inputAccessoryView)) { - - // Creating a toolBar for phoneNumber keyboard - let toolbar: IQToolbar = toolbar - - var items: [UIBarButtonItem] = [] - - if let previousConfiguration: IQBarButtonItemConfiguration = previousConfiguration { - - let prev: IQBarButtonItem = previousConfiguration.apply(on: toolbar.previousBarButton, target: target) - toolbar.previousBarButton = prev - items.append(prev) - } - - if previousConfiguration != nil, nextConfiguration != nil { - - items.append(toolbar.fixedSpaceBarButton) - } - - if let nextConfiguration: IQBarButtonItemConfiguration = nextConfiguration { - - let next: IQBarButtonItem = nextConfiguration.apply(on: toolbar.nextBarButton, target: target) - toolbar.nextBarButton = next - items.append(next) - } - - if !toolbar.additionalLeadingItems.isEmpty { - items.append(contentsOf: toolbar.additionalLeadingItems) - } - - // Title bar button item - do { - // Flexible space - items.append(IQBarButtonItem.flexibleBarButtonItem) - - // Title button - toolbar.titleBarButton.title = title - toolbar.titleBarButton.accessibilityLabel = titleAccessibilityLabel - toolbar.titleBarButton.accessibilityIdentifier = titleAccessibilityLabel - - toolbar.titleBarButton.customView?.frame = .zero - - items.append(toolbar.titleBarButton) - - // Flexible space - items.append(IQBarButtonItem.flexibleBarButtonItem) - } - - if !toolbar.additionalTrailingItems.isEmpty { - items.append(contentsOf: toolbar.additionalTrailingItems) - } - - if let rightConfiguration: IQBarButtonItemConfiguration = rightConfiguration { - - let done: IQBarButtonItem = rightConfiguration.apply(on: toolbar.doneBarButton, target: target) - toolbar.doneBarButton = done - items.append(done) - } - - // Adding button to toolBar. - toolbar.items = items - - if let textInput: UITextInput = base as? UITextInput { - switch textInput.keyboardAppearance { - case .dark?: - toolbar.barStyle = .black - default: - toolbar.barStyle = .default - } - } - - // Setting toolbar to keyboard. - let reloadInputViews: Bool = base.inputAccessoryView != toolbar - if reloadInputViews { - if let textField: UITextField = base as? UITextField { - textField.inputAccessoryView = toolbar - } else if let textView: UITextView = base as? UITextView { - textView.inputAccessoryView = toolbar - } - base.reloadInputViews() - } - } - } - // swiftlint:enable function_body_length - // swiftlint:enable cyclomatic_complexity - - // MARK: Right - func addDone(target: AnyObject?, - action: Selector, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - - let title: String? = showPlaceholder ? drawingPlaceholder : nil - - addDone(target: target, action: action, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addDone(target: AnyObject?, - action: Selector, - title: String?, titleAccessibilityLabel: String? = nil) { - - let rightConfiguration = IQBarButtonItemConfiguration(systemItem: .done, action: action) - - addToolbar(target: target, rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addRightButton(target: AnyObject?, - configuration: IQBarButtonItemConfiguration, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - let title: String? = showPlaceholder ? drawingPlaceholder : nil - addRightButton(target: target, configuration: configuration, title: title, - titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addRightButton(target: AnyObject?, - configuration: IQBarButtonItemConfiguration, - title: String?, titleAccessibilityLabel: String? = nil) { - addToolbar(target: target, rightConfiguration: configuration, title: title, - titleAccessibilityLabel: titleAccessibilityLabel) - } - - // MARK: Right/Left - func addRightLeft(target: AnyObject?, - rightConfiguration: IQBarButtonItemConfiguration, leftConfiguration: IQBarButtonItemConfiguration, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - let title: String? = showPlaceholder ? drawingPlaceholder : nil - addRightLeft(target: target, - rightConfiguration: rightConfiguration, leftConfiguration: leftConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addRightLeft(target: AnyObject?, - rightConfiguration: IQBarButtonItemConfiguration, leftConfiguration: IQBarButtonItemConfiguration, - title: String?, titleAccessibilityLabel: String? = nil) { - addToolbar(target: target, - previousConfiguration: leftConfiguration, rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - // MARK: Previous/Next/Right - - func addPreviousNextRight(target: AnyObject?, - previousConfiguration: IQBarButtonItemConfiguration? = nil, - nextConfiguration: IQBarButtonItemConfiguration? = nil, - rightConfiguration: IQBarButtonItemConfiguration?, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - - let title: String? = showPlaceholder ? drawingPlaceholder : nil - addPreviousNextRight(target: target, - previousConfiguration: previousConfiguration, nextConfiguration: nextConfiguration, - rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addPreviousNextRight(target: AnyObject?, - previousConfiguration: IQBarButtonItemConfiguration? = nil, - nextConfiguration: IQBarButtonItemConfiguration? = nil, - rightConfiguration: IQBarButtonItemConfiguration?, - title: String?, titleAccessibilityLabel: String? = nil) { - - addToolbar(target: target, - previousConfiguration: previousConfiguration, nextConfiguration: nextConfiguration, - rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addPreviousNextDone(target: AnyObject?, previousAction: Selector, nextAction: Selector, doneAction: Selector, - showPlaceholder: Bool = false, titleAccessibilityLabel: String? = nil) { - let title: String? = showPlaceholder ? drawingPlaceholder : nil - addPreviousNextDone(target: target, previousAction: previousAction, nextAction: nextAction, - doneAction: doneAction, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } - - func addPreviousNextDone(target: AnyObject?, - previousAction: Selector, nextAction: Selector, doneAction: Selector, - title: String?, titleAccessibilityLabel: String? = nil) { - - let previousConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardPreviousImage, - action: previousAction) - let nextConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardNextImage, action: nextAction) - let rightConfiguration = IQBarButtonItemConfiguration(systemItem: .done, action: doneAction) - - addToolbar(target: target, previousConfiguration: previousConfiguration, - nextConfiguration: nextConfiguration, rightConfiguration: rightConfiguration, - title: title, titleAccessibilityLabel: titleAccessibilityLabel) - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift deleted file mode 100644 index 9437935b1f7b84fe2cd23a7cf3d477b808210139..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift +++ /dev/null @@ -1,228 +0,0 @@ -// -// IQUIView+IQKeyboardToolbarDeprecated.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// swiftlint:disable unused_setter_value -// swiftlint:disable line_length -// swiftlint:disable function_parameter_count -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public extension UIView { - - @available(*, unavailable, renamed: "iq.toolbar") - var keyboardToolbar: IQToolbar { - get { fatalError() } - set {} - } - - @available(*, unavailable, renamed: "iq.hidePlaceholder") - var shouldHideToolbarPlaceholder: Bool { - get { false } - set {} - } - - @available(*, unavailable, renamed: "iq.placeholder") - var toolbarPlaceholder: String? { - get { nil } - set {} - } - - @available(*, unavailable, renamed: "iq.drawingPlaceholder") - var drawingToolbarPlaceholder: String? { - get { nil } - set {} - } - - @available(*, unavailable, renamed: "iq.addToolbar(target:previousConfiguration:nextConfiguration:rightConfiguration:title:titleAccessibilityLabel:)") - func addKeyboardToolbarWithTarget(target: AnyObject?, - titleText: String?, - titleAccessibilityLabel: String? = nil, - rightBarButtonConfiguration: IQBarButtonItemConfiguration?, - previousBarButtonConfiguration: IQBarButtonItemConfiguration? = nil, - nextBarButtonConfiguration: IQBarButtonItemConfiguration? = nil) { - } - - @available(*, unavailable, renamed: "iq.addDone(target:action:showPlaceholder:titleAccessibilityLabel:)") - func addDoneOnKeyboardWithTarget(_ target: AnyObject?, - action: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addDone(target:action:title:titleAccessibilityLabel:)") - func addDoneOnKeyboardWithTarget(_ target: AnyObject?, - action: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightButton(target:configuration:showPlaceholder:titleAccessibilityLabel:)") - func addRightButtonOnKeyboardWithImage(_ image: UIImage, - target: AnyObject?, - action: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightButton(target:configuration:title:titleAccessibilityLabel:)") - func addRightButtonOnKeyboardWithImage(_ image: UIImage, - target: AnyObject?, - action: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightButton(target:configuration:showPlaceholder:titleAccessibilityLabel:)") - func addRightButtonOnKeyboardWithText(_ text: String, - target: AnyObject?, - action: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightButton(target:configuration:title:titleAccessibilityLabel:)") - func addRightButtonOnKeyboardWithText(_ text: String, - target: AnyObject?, - action: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addCancelDoneOnKeyboardWithTarget(_ target: AnyObject?, - cancelAction: Selector, - doneAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addRightLeftOnKeyboardWithTarget(_ target: AnyObject?, - leftButtonTitle: String, - rightButtonTitle: String, - leftButtonAction: Selector, - rightButtonAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addRightLeftOnKeyboardWithTarget(_ target: AnyObject?, - leftButtonImage: UIImage, - rightButtonImage: UIImage, - leftButtonAction: Selector, - rightButtonAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:title:titleAccessibilityLabel:)") - func addCancelDoneOnKeyboardWithTarget(_ target: AnyObject?, - cancelAction: Selector, - doneAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:title:titleAccessibilityLabel:)") - func addRightLeftOnKeyboardWithTarget(_ target: AnyObject?, - leftButtonTitle: String, - rightButtonTitle: String, - leftButtonAction: Selector, - rightButtonAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addRightLeft(target:rightConfiguration:leftConfiguration:title:titleAccessibilityLabel:)") - func addRightLeftOnKeyboardWithTarget(_ target: AnyObject?, - leftButtonImage: UIImage, - rightButtonImage: UIImage, - leftButtonAction: Selector, - rightButtonAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextDone(target:previousAction:nextAction:doneAction:showPlaceholder:titleAccessibilityLabel:)") - func addPreviousNextDone(_ target: AnyObject?, - previousAction: Selector, - nextAction: Selector, - doneAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextDone(target:previousAction:nextAction:doneAction:title:titleAccessibilityLabel:)") - func addPreviousNextDoneOnKeyboardWithTarget(_ target: AnyObject?, - previousAction: Selector, - nextAction: Selector, - doneAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextRight(target:previousConfiguration:nextConfiguration:rightConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addPreviousNextRightOnKeyboardWithTarget(_ target: AnyObject?, - rightButtonImage: UIImage, - previousAction: Selector, - nextAction: Selector, - rightButtonAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextRight(target:previousConfiguration:nextConfiguration:rightConfiguration:showPlaceholder:titleAccessibilityLabel:)") - func addPreviousNextRightOnKeyboardWithTarget(_ target: AnyObject?, - rightButtonTitle: String, - previousAction: Selector, - nextAction: Selector, - rightButtonAction: Selector, - shouldShowPlaceholder: Bool = false, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextRight(target:previousConfiguration:nextConfiguration:rightConfiguration:title:titleAccessibilityLabel:)") - func addPreviousNextRightOnKeyboardWithTarget(_ target: AnyObject?, - rightButtonImage: UIImage, - previousAction: Selector, - nextAction: Selector, - rightButtonAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } - - @available(*, unavailable, renamed: "iq.addPreviousNextRight(target:previousConfiguration:nextConfiguration:rightConfiguration:title:titleAccessibilityLabel:)") - func addPreviousNextRightOnKeyboardWithTarget(_ target: AnyObject?, - rightButtonTitle: String, - previousAction: Selector, - nextAction: Selector, - rightButtonAction: Selector, - titleText: String?, - titleAccessibilityLabel: String? = nil) { - } -} -// swiftlint:enable unused_setter_value -// swiftlint:enable line_length -// swiftlint:enable function_parameter_count diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift deleted file mode 100644 index b0e53a38c3b3c8afc4345021c7d42314fceaa514..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift +++ /dev/null @@ -1,115 +0,0 @@ -// -// IQKeyboardListener.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -public class IQKeyboardListener { - - private var sizeObservers: [AnyHashable: SizeCompletion] = [:] - - private(set) var keyboardInfo: IQKeyboardInfo { - didSet { - if keyboardInfo != oldValue { - sendEvent() - } - } - } - - public var keyboardShowing: Bool { - keyboardInfo.keyboardShowing - } - - public var frame: CGRect { - keyboardInfo.frame - } - - public init() { - keyboardInfo = IQKeyboardInfo(notification: nil, name: .didHide) - // Registering for keyboard notification. - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(_:)), - name: UIResponder.keyboardWillShowNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidShow(_:)), - name: UIResponder.keyboardDidShowNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide(_:)), - name: UIResponder.keyboardWillHideNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidHide(_:)), - name: UIResponder.keyboardDidHideNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillChangeFrame(_:)), - name: UIResponder.keyboardWillChangeFrameNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidChangeFrame(_:)), - name: UIResponder.keyboardDidChangeFrameNotification, object: nil) - } - - @objc private func keyboardWillShow(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .willShow) - } - - @objc private func keyboardDidShow(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .didShow) - } - - @objc private func keyboardWillHide(_ notification: Notification?) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .willHide) - } - - @objc private func keyboardDidHide(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .didHide) - } - - @objc private func keyboardWillChangeFrame(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .willChangeFrame) - } - - @objc private func keyboardDidChangeFrame(_ notification: Notification) { - keyboardInfo = IQKeyboardInfo(notification: notification, name: .didChangeFrame) - } - - public func animate(alongsideTransition transition: @escaping () -> Void, completion: (() -> Void)? = nil) { - keyboardInfo.animate(alongsideTransition: transition, completion: completion) - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQKeyboardListener { - - typealias SizeCompletion = (_ name: IQKeyboardInfo.Name, _ size: CGSize) -> Void - - func registerSizeChange(identifier: AnyHashable, changeHandler: @escaping SizeCompletion) { - sizeObservers[identifier] = changeHandler - } - - func unregisterSizeChange(identifier: AnyHashable) { - sizeObservers[identifier] = nil - } - - private func sendEvent() { - - let size: CGSize = keyboardInfo.frame.size - - for block in sizeObservers.values { - block(keyboardInfo.name, size) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift deleted file mode 100644 index 7718e81b113a274faef295e0e490db35339758f1..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift +++ /dev/null @@ -1,126 +0,0 @@ -// -// IQTextFieldViewListener.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -public class IQTextFieldViewListener { - - private var textFieldViewObservers: [AnyHashable: TextFieldViewCompletion] = [:] - -#if swift(>=5.7) - private(set) var lastTextFieldViewInfo: IQTextFieldViewInfo? -#endif - - private(set) var textFieldViewInfo: IQTextFieldViewInfo? - - public var textFieldView: UIView? { - return textFieldViewInfo?.textFieldView - } - - public init() { - // Registering for keyboard notification. - NotificationCenter.default.addObserver(self, selector: #selector(self.didBeginEditing(_:)), - name: UITextField.textDidBeginEditingNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.didEndEditing(_:)), - name: UITextField.textDidEndEditingNotification, object: nil) - - NotificationCenter.default.addObserver(self, selector: #selector(self.didBeginEditing(_:)), - name: UITextView.textDidBeginEditingNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(self.didEndEditing(_:)), - name: UITextView.textDidEndEditingNotification, object: nil) - } - - @objc private func didBeginEditing(_ notification: Notification) { - guard let info: IQTextFieldViewInfo = IQTextFieldViewInfo(notification: notification, - name: .beginEditing) else { - return - } - -#if swift(>=5.7) - - if #available(iOS 16.0, *), - let lastTextFieldViewInfo = lastTextFieldViewInfo, - let textView: UITextView = lastTextFieldViewInfo.textFieldView as? UITextView, - textView.findInteraction?.isFindNavigatorVisible == true { - // // This means the this didBeginEditing call comes due to find interaction - textFieldViewInfo = lastTextFieldViewInfo - sendEvent(info: lastTextFieldViewInfo) - } else if textFieldViewInfo != info { - textFieldViewInfo = info - lastTextFieldViewInfo = nil - sendEvent(info: info) - } else { - lastTextFieldViewInfo = nil - } -#else - if textFieldViewInfo != info { - textFieldViewInfo = info - sendEvent(info: info) - } -#endif - } - - @objc private func didEndEditing(_ notification: Notification) { - guard let info: IQTextFieldViewInfo = IQTextFieldViewInfo(notification: notification, name: .endEditing) else { - return - } - - if textFieldViewInfo != info { -#if swift(>=5.7) - if #available(iOS 16.0, *), - let textView: UITextView = info.textFieldView as? UITextView, - textView.isFindInteractionEnabled { - lastTextFieldViewInfo = textFieldViewInfo - } else { - lastTextFieldViewInfo = nil - } -#endif - textFieldViewInfo = info - sendEvent(info: info) - textFieldViewInfo = nil - } - } -} - -@available(iOSApplicationExtension, unavailable) -public extension IQTextFieldViewListener { - - typealias TextFieldViewCompletion = (_ info: IQTextFieldViewInfo) -> Void - - func registerTextFieldViewChange(identifier: AnyHashable, changeHandler: @escaping TextFieldViewCompletion) { - textFieldViewObservers[identifier] = changeHandler - } - - func unregisterSizeChange(identifier: AnyHashable) { - textFieldViewObservers[identifier] = nil - } - - private func sendEvent(info: IQTextFieldViewInfo) { - - for block in textFieldViewObservers.values { - block(info) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift deleted file mode 100644 index b06a473ee58fdf6b40fc544fc51eb0c4e5f02bcf..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift +++ /dev/null @@ -1,135 +0,0 @@ -// -// IQKeyboardInfo.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -public struct IQKeyboardInfo: Equatable { - nonisolated public static func == (lhs: Self, rhs: Self) -> Bool { - lhs.frame.equalTo(rhs.frame) - } - - @objc public enum Name: Int { - case willShow - case didShow - case willHide - case didHide - case willChangeFrame - case didChangeFrame - } - - public let name: Name - - /** To save keyboard frame. */ - public let frame: CGRect - - /** To save keyboard animation duration. */ - public let animationDuration: TimeInterval - - /** To mimic the keyboard animation */ - public let animationCurve: UIView.AnimationCurve - - public var keyboardShowing: Bool { - frame.height > 0 - } - - public init(notification: Notification?, name: Name) { - self.name = name - - let screenBounds: CGRect - if let screen: UIScreen = notification?.object as? UIScreen { - screenBounds = screen.bounds - } else { - screenBounds = UIScreen.main.bounds - } - - if let info: [AnyHashable: Any] = notification?.userInfo { - - // Getting keyboard animation. - if let curveValue: Int = info[UIResponder.keyboardAnimationCurveUserInfoKey] as? Int, - let curve: UIView.AnimationCurve = UIView.AnimationCurve(rawValue: curveValue) { - animationCurve = curve - } else { - animationCurve = .easeOut - } - - // Getting keyboard animation duration - if let duration: TimeInterval = info[UIResponder.keyboardAnimationDurationUserInfoKey] as? TimeInterval, - duration != 0.0 { - animationDuration = duration - } else { - animationDuration = 0.25 - } - - // Getting UIKeyboardSize. - if var kbFrame: CGRect = info[UIResponder.keyboardFrameEndUserInfoKey] as? CGRect { - - // If this is floating keyboard - if kbFrame.width < screenBounds.width, - kbFrame.maxY < screenBounds.height { - kbFrame.size = CGSize(width: kbFrame.size.width, height: 0) - } else { - // (Bug ID: #469) (Bug ID: #381) (Bug ID: #1506) - // Calculating actual keyboard covered size respect to window, - // keyboard frame may be different when hardware keyboard is attached - let keyboardHeight = CGFloat.maximum(screenBounds.height - kbFrame.minY, 0) - kbFrame.size = CGSize(width: kbFrame.size.width, height: keyboardHeight) - } - - frame = kbFrame - } else { - frame = CGRect(x: 0, y: screenBounds.height, width: screenBounds.width, height: 0) - } - } else { - animationCurve = .easeOut - animationDuration = 0.25 - frame = CGRect(x: 0, y: screenBounds.height, width: screenBounds.width, height: 0) - } - } - - public func animate(alongsideTransition transition: @escaping () -> Void, completion: (() -> Void)? = nil) { - -// if let timing = UIView.AnimationCurve.RawValue(exactly: animationCurve.rawValue), -// let curve = UIView.AnimationCurve(rawValue: timing) { -// let animator = UIViewPropertyAnimator(duration: animationDuration, curve: curve) { -// transition() -// } -// animator.addCompletion { _ in -// completion?() -// } -// animator.isUserInteractionEnabled = true -// animator.startAnimation() -// } else { - var animationOptions: UIView.AnimationOptions = .init(rawValue: UInt(animationCurve.rawValue << 16)) - animationOptions.formUnion(.allowUserInteraction) - animationOptions.formUnion(.beginFromCurrentState) - UIView.animate(withDuration: animationDuration, delay: 0, - options: animationOptions, - animations: transition, - completion: { _ in - completion?() - }) -// } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift deleted file mode 100644 index eb0eaf6a0eee04a06ecf7ed8729a6a27372aff1f..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// IQTextFieldViewInfo.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -public struct IQTextFieldViewInfo: Equatable { - - nonisolated public static func == (lhs: Self, rhs: Self) -> Bool { - return lhs.textFieldView == rhs.textFieldView && - lhs.name == rhs.name - } - - @MainActor - @objc public enum Name: Int { - case beginEditing - case endEditing - } - - public let name: Name - - public let textFieldView: UIView - - public init?(notification: Notification?, name: Name) { - guard let view: UIView = notification?.object as? UIView else { - return nil - } - - guard !view.iq.isAlertViewTextField() else { - return nil - } - - self.name = name - textFieldView = view - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy deleted file mode 100644 index 90211906c1b81fb9357741321167370068497009..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>NSPrivacyAccessedAPITypes</key> - <array/> - <key>NSPrivacyTrackingDomains</key> - <array/> - <key>NSPrivacyCollectedDataTypes</key> - <array/> - <key>NSPrivacyTracking</key> - <false/> -</dict> -</plist> diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift deleted file mode 100644 index 8cc195fa8e6e5da4de18245ff1bed0946ccd6ba2..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift +++ /dev/null @@ -1,154 +0,0 @@ -// -// IQKeyboardReturnKeyHandler+TextFieldDelegate.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// MARK: UITextFieldDelegate -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardReturnKeyHandler: UITextFieldDelegate { - - @objc public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldBeginEditing(_:))) { - return unwrapDelegate.textFieldShouldBeginEditing?(textField) ?? false - } - } - } - - return true - } - - @objc public func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldEndEditing(_:))) { - return unwrapDelegate.textFieldShouldEndEditing?(textField) ?? false - } - } - } - - return true - } - - @objc public func textFieldDidBeginEditing(_ textField: UITextField) { - updateReturnKeyTypeOnTextField(textField) - - var aDelegate: UITextFieldDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textField) { - aDelegate = model.textFieldDelegate - } - } - - aDelegate?.textFieldDidBeginEditing?(textField) - } - - @objc public func textFieldDidEndEditing(_ textField: UITextField) { - - var aDelegate: UITextFieldDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textField) { - aDelegate = model.textFieldDelegate - } - } - - aDelegate?.textFieldDidEndEditing?(textField) - } - - @objc public func textFieldDidEndEditing(_ textField: UITextField, reason: UITextField.DidEndEditingReason) { - - var aDelegate: UITextFieldDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textField) { - aDelegate = model.textFieldDelegate - } - } - - aDelegate?.textFieldDidEndEditing?(textField, reason: reason) - } - - @objc public func textField(_ textField: UITextField, - shouldChangeCharactersIn range: NSRange, - replacementString string: String) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - let selector: Selector = #selector(UITextFieldDelegate.textField(_:shouldChangeCharactersIn: - replacementString:)) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textField?(textField, - shouldChangeCharactersIn: range, - replacementString: string) ?? false - } - } - } - return true - } - - @objc public func textFieldShouldClear(_ textField: UITextField) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldClear(_:))) { - return unwrapDelegate.textFieldShouldClear?(textField) ?? false - } - } - } - - return true - } - - @objc public func textFieldShouldReturn(_ textField: UITextField) -> Bool { - - var isReturn: Bool = true - - if delegate == nil { - - if let unwrapDelegate: UITextFieldDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { - if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldReturn(_:))) { - isReturn = unwrapDelegate.textFieldShouldReturn?(textField) ?? false - } - } - } - - if isReturn { - goToNextResponderOrResign(textField) - return true - } else { - return goToNextResponderOrResign(textField) - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift deleted file mode 100644 index 6519cc396a16c2387291d6654c4939e31e5a12b6..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift +++ /dev/null @@ -1,347 +0,0 @@ -// -// IQKeyboardReturnKeyHandler+TextViewDelegate.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -// MARK: UITextViewDelegate -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardReturnKeyHandler: UITextViewDelegate { - - @objc public func textViewShouldBeginEditing(_ textView: UITextView) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(UITextViewDelegate.textViewShouldBeginEditing(_:))) { - return unwrapDelegate.textViewShouldBeginEditing?(textView) ?? false - } - } - } - - return true - } - - @objc public func textViewShouldEndEditing(_ textView: UITextView) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(UITextViewDelegate.textViewShouldEndEditing(_:))) { - return unwrapDelegate.textViewShouldEndEditing?(textView) ?? false - } - } - } - - return true - } - - @objc public func textViewDidBeginEditing(_ textView: UITextView) { - updateReturnKeyTypeOnTextField(textView) - - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textViewDidBeginEditing?(textView) - } - - @objc public func textViewDidEndEditing(_ textView: UITextView) { - - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textViewDidEndEditing?(textView) - } - - @objc public func textView(_ textView: UITextView, - shouldChangeTextIn range: NSRange, - replacementText text: String) -> Bool { - - var isReturn = true - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { - let selector: Selector = #selector(UITextViewDelegate.textView(_:shouldChangeTextIn:replacementText:)) - if unwrapDelegate.responds(to: selector) { - isReturn = (unwrapDelegate.textView?(textView, - shouldChangeTextIn: range, - replacementText: text)) ?? false - } - } - } - - if isReturn, text == "\n" { - isReturn = goToNextResponderOrResign(textView) - } - - return isReturn - } - - @objc public func textViewDidChange(_ textView: UITextView) { - - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textViewDidChange?(textView) - } - - @objc public func textViewDidChangeSelection(_ textView: UITextView) { - - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textViewDidChangeSelection?(textView) - } - - @objc public func textView(_ aTextView: UITextView, - shouldInteractWith URL: URL, - in characterRange: NSRange, - interaction: UITextItemInteraction) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - let selector: Selector = #selector(textView as - (UITextView, URL, NSRange, UITextItemInteraction) -> Bool) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textView?(aTextView, - shouldInteractWith: URL, - in: characterRange, - interaction: interaction) ?? false - } - } - } - - return true - } - - @objc public func textView(_ aTextView: UITextView, - shouldInteractWith textAttachment: NSTextAttachment, - in characterRange: NSRange, - interaction: UITextItemInteraction) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - let selector: Selector = #selector(textView as - (UITextView, NSTextAttachment, NSRange, UITextItemInteraction) - -> Bool) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textView?(aTextView, - shouldInteractWith: textAttachment, - in: characterRange, - interaction: interaction) ?? false - } - } - } - - return true - } - - @available(iOS, deprecated: 10.0) - @objc public func textView(_ aTextView: UITextView, - shouldInteractWith URL: URL, - in characterRange: NSRange) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(textView as (UITextView, URL, NSRange) -> Bool)) { - return unwrapDelegate.textView?(aTextView, - shouldInteractWith: URL, - in: characterRange) ?? false - } - } - } - - return true - } - - @available(iOS, deprecated: 10.0) - @objc public func textView(_ aTextView: UITextView, - shouldInteractWith textAttachment: NSTextAttachment, - in characterRange: NSRange) -> Bool { - - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(textView as (UITextView, NSTextAttachment, NSRange) -> Bool)) { - return unwrapDelegate.textView?(aTextView, - shouldInteractWith: textAttachment, - in: characterRange) ?? false - } - } - } - - return true - } -} - -#if swift(>=5.7) -@available(iOS 16.0, *) -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardReturnKeyHandler { - public func textView(_ aTextView: UITextView, - editMenuForTextIn range: NSRange, - suggestedActions: [UIMenuElement]) -> UIMenu? { - if delegate == nil { - - if let unwrapDelegate: UITextViewDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - - let selector: Selector = #selector(textView as - (UITextView, NSRange, [UIMenuElement]) -> UIMenu?) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textView?(aTextView, - editMenuForTextIn: range, - suggestedActions: suggestedActions) - } - } - } - - return nil - } - - public func textView(_ aTextView: UITextView, willPresentEditMenuWith animator: UIEditMenuInteractionAnimating) { - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(aTextView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textView?(aTextView, willPresentEditMenuWith: animator) - } - - public func textView(_ aTextView: UITextView, willDismissEditMenuWith animator: UIEditMenuInteractionAnimating) { - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(aTextView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textView?(aTextView, willDismissEditMenuWith: animator) - } -} -#endif - -#if swift(>=5.9) -@available(iOS 17.0, *) -@available(iOSApplicationExtension, unavailable) -extension IQKeyboardReturnKeyHandler { - - public func textView(_ aTextView: UITextView, - primaryActionFor textItem: UITextItem, - defaultAction: UIAction) -> UIAction? { - if delegate == nil { - - if let unwrapDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - if unwrapDelegate.responds(to: #selector(textView as (UITextView, UITextItem, UIAction) -> UIAction?)) { - return unwrapDelegate.textView?(aTextView, - primaryActionFor: textItem, - defaultAction: defaultAction) - } - } - } - - return nil - } - - public func textView(_ aTextView: UITextView, - menuConfigurationFor textItem: UITextItem, - defaultMenu: UIMenu) -> UITextItem.MenuConfiguration? { - if delegate == nil { - - if let unwrapDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { - let selector: Selector = #selector(textView as (UITextView, UITextItem, UIMenu) - -> UITextItem.MenuConfiguration?) - if unwrapDelegate.responds(to: selector) { - return unwrapDelegate.textView?(aTextView, - menuConfigurationFor: textItem, - defaultMenu: defaultMenu) - } - } - } - - return nil - } - - public func textView(_ textView: UITextView, - textItemMenuWillDisplayFor textItem: UITextItem, - animator: UIContextMenuInteractionAnimating) { - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textView?(textView, textItemMenuWillDisplayFor: textItem, animator: animator) - } - - public func textView(_ textView: UITextView, - textItemMenuWillEndFor textItem: UITextItem, - animator: UIContextMenuInteractionAnimating) { - var aDelegate: UITextViewDelegate? = delegate - - if aDelegate == nil { - - if let model = textFieldViewCachedInfo(textView) { - aDelegate = model.textViewDelegate - } - } - - aDelegate?.textView?(textView, textItemMenuWillEndFor: textItem, animator: animator) - } -} -#endif diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift deleted file mode 100644 index f1a4efecaf1a64f51762df8947bd4a2e5df555d0..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift +++ /dev/null @@ -1,261 +0,0 @@ -// -// IQKeyboardReturnKeyHandler.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -/** -Manages the return key to work like next/done in a view hierarchy. -*/ -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc public final class IQKeyboardReturnKeyHandler: NSObject { - - // MARK: Settings - - /** - Delegate of textField/textView. - */ - @objc public weak var delegate: (UITextFieldDelegate & UITextViewDelegate)? - - /** - Set the last textfield return key type. Default is UIReturnKeyDefault. - */ - @objc public var lastTextFieldReturnKeyType: UIReturnKeyType = UIReturnKeyType.default { - - didSet { - for model in textFieldInfoCache { - if let view: UIView = model.textFieldView { - updateReturnKeyTypeOnTextField(view) - } - } - } - } - - // MARK: Initialization/De-initialization - - @objc public override init() { - super.init() - } - - /** - Add all the textFields available in UIViewController's view. - */ - @objc public init(controller: UIViewController) { - super.init() - - addResponderFromView(controller.view) - } - - deinit { - -// for model in textFieldInfoCache { -// model.restore() -// } - - textFieldInfoCache.removeAll() - } - - // MARK: Private variables - private var textFieldInfoCache: [IQTextFieldViewInfoModel] = [] - - // MARK: Private Functions - internal func textFieldViewCachedInfo(_ textField: UIView) -> IQTextFieldViewInfoModel? { - - for model in textFieldInfoCache { - - if let view: UIView = model.textFieldView { - if view == textField { - return model - } - } - } - - return nil - } - - internal func updateReturnKeyTypeOnTextField(_ view: UIView) { - var superConsideredView: UIView? - - // If find any consider responderView in it's upper hierarchy then will get deepResponderView. (Bug ID: #347) - for allowedClasse in IQKeyboardManager.shared.toolbarPreviousNextAllowedClasses { - - superConsideredView = view.iq.superviewOf(type: allowedClasse) - - if superConsideredView != nil { - break - } - } - - var textFields: [UIView] = [] - - // If there is a tableView in view's hierarchy, then fetching all it's subview that responds. - if let unwrappedTableView: UIView = superConsideredView { // (Enhancement ID: #22) - textFields = unwrappedTableView.iq.deepResponderViews() - } else { // Otherwise fetching all the siblings - - textFields = view.iq.responderSiblings() - - // Sorting textFields according to behavior - switch IQKeyboardManager.shared.toolbarConfiguration.manageBehavior { - // If needs to sort it by tag - case .byTag: textFields = textFields.sortedByTag() - // If needs to sort it by Position - case .byPosition: textFields = textFields.sortedByPosition() - default: break - } - } - - if let lastView: UIView = textFields.last { - - if let textField: UITextField = view as? UITextField { - - // If it's the last textField in responder view, else next - textField.returnKeyType = (view == lastView) ? lastTextFieldReturnKeyType: UIReturnKeyType.next - } else if let textView: UITextView = view as? UITextView { - - // If it's the last textField in responder view, else next - textView.returnKeyType = (view == lastView) ? lastTextFieldReturnKeyType: UIReturnKeyType.next - } - } - } - - // MARK: Registering/Unregistering textFieldView - - /** - Should pass UITextField/UITextView instance. Assign textFieldView delegate to self, change it's returnKeyType. - - @param view UITextField/UITextView object to register. - */ - @objc public func addTextFieldView(_ view: UIView) { - - if let textField: UITextField = view as? UITextField { - let model = IQTextFieldViewInfoModel(textField: textField) - textFieldInfoCache.append(model) - textField.delegate = self - - } else if let textView: UITextView = view as? UITextView { - let model = IQTextFieldViewInfoModel(textView: textView) - textFieldInfoCache.append(model) - textView.delegate = self - } - } - - /** - Should pass UITextField/UITextView instance. Restore it's textFieldView delegate and it's returnKeyType. - - @param view UITextField/UITextView object to unregister. - */ - @objc public func removeTextFieldView(_ view: UIView) { - - if let model: IQTextFieldViewInfoModel = textFieldViewCachedInfo(view) { - model.restore() - - if let index: Int = textFieldInfoCache.firstIndex(where: { $0.textFieldView == view}) { - textFieldInfoCache.remove(at: index) - } - } - } - - /** - Add all the UITextField/UITextView responderView's. - - @param view UIView object to register all it's responder subviews. - */ - @objc public func addResponderFromView(_ view: UIView) { - - let textFields: [UIView] = view.iq.deepResponderViews() - - for textField in textFields { - - addTextFieldView(textField) - } - } - - /** - Remove all the UITextField/UITextView responderView's. - - @param view UIView object to unregister all it's responder subviews. - */ - @objc public func removeResponderFromView(_ view: UIView) { - - let textFields: [UIView] = view.iq.deepResponderViews() - - for textField in textFields { - - removeTextFieldView(textField) - } - } - - @discardableResult - internal func goToNextResponderOrResign(_ view: UIView) -> Bool { - - var superConsideredView: UIView? - - // If find any consider responderView in it's upper hierarchy then will get deepResponderView. (Bug ID: #347) - for allowedClass in IQKeyboardManager.shared.toolbarPreviousNextAllowedClasses { - - superConsideredView = view.iq.superviewOf(type: allowedClass) - - if superConsideredView != nil { - break - } - } - - var textFields: [UIView] = [] - - // If there is a tableView in view's hierarchy, then fetching all it's subview that responds. - if let unwrappedTableView: UIView = superConsideredView { // (Enhancement ID: #22) - textFields = unwrappedTableView.iq.deepResponderViews() - } else { // Otherwise fetching all the siblings - - textFields = view.iq.responderSiblings() - - // Sorting textFields according to behavior - switch IQKeyboardManager.shared.toolbarConfiguration.manageBehavior { - // If needs to sort it by tag - case .byTag: textFields = textFields.sortedByTag() - // If needs to sort it by Position - case .byPosition: textFields = textFields.sortedByPosition() - default: - break - } - } - - // Getting index of current textField. - if let index: Int = textFields.firstIndex(of: view) { - // If it is not last textField. then it's next object becomeFirstResponder. - if index < (textFields.count - 1) { - - let nextTextField: UIView = textFields[index+1] - nextTextField.becomeFirstResponder() - return false - } else { - - view.resignFirstResponder() - return true - } - } else { - return true - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift deleted file mode 100644 index 562c99c360dc5b3e27825cd61338098ae02b8a4f..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// IQTextFieldViewInfoModel.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal final class IQTextFieldViewInfoModel: NSObject { - - weak var textFieldDelegate: UITextFieldDelegate? - weak var textViewDelegate: UITextViewDelegate? - weak var textFieldView: UIView? - let originalReturnKeyType: UIReturnKeyType - - init(textField: UITextField) { - self.textFieldView = textField - self.textFieldDelegate = textField.delegate - self.originalReturnKeyType = textField.returnKeyType - } - - init(textView: UITextView) { - self.textFieldView = textView - self.textViewDelegate = textView.delegate - self.originalReturnKeyType = textView.returnKeyType - } - - func restore() { - if let textField = textFieldView as? UITextField { - textField.returnKeyType = originalReturnKeyType - textField.delegate = textFieldDelegate - } else if let textView = textFieldView as? UITextView { - textView.returnKeyType = originalReturnKeyType - textView.delegate = textViewDelegate - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift deleted file mode 100644 index 24c542a6e7b6ca6f7c20024320a293260ca71547..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// IQNSArray+Sort.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -/** -UIView.subviews sorting category. -*/ -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension Array where Element: UIView { - - /** - Returns the array by sorting the UIView's by their tag property. - */ - func sortedByTag() -> [Element] { - - return sorted(by: { (obj1: Element, obj2: Element) -> Bool in - - return (obj1.tag < obj2.tag) - }) - } - - /** - Returns the array by sorting the UIView's by their tag property. - */ - func sortedByPosition() -> [Element] { - - return sorted(by: { (obj1: Element, obj2: Element) -> Bool in - if obj1.frame.minY != obj2.frame.minY { - return obj1.frame.minY < obj2.frame.minY - } else { - return obj1.frame.minX < obj2.frame.minX - } - }) - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift deleted file mode 100644 index 7da92eaf39e03c43c4191e36e6c76ffb8e0aa95a..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// IQUICollectionView+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension UICollectionView { - - func previousIndexPath(of indexPath: IndexPath) -> IndexPath? { - var previousRow: Int = indexPath.row - 1 - var previousSection: Int = indexPath.section - - // Fixing indexPath - if previousRow < 0 { - previousSection -= 1 - if previousSection >= 0 { - previousRow = self.numberOfItems(inSection: previousSection) - 1 - } - } - - if previousRow >= 0, previousSection >= 0 { - return IndexPath(item: previousRow, section: previousSection) - } else { - return nil - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift deleted file mode 100644 index 8b8753fbd4d7bea56920a3eb08f450e26807595c..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift +++ /dev/null @@ -1,116 +0,0 @@ -// -// IQUIScrollView+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -private struct AssociatedKeys { - static var ignoreScrollingAdjustment: Int = 0 - static var ignoreContentInsetAdjustment: Int = 0 - static var restoreContentOffset: Int = 0 -} - -// swiftlint:disable identifier_name -// swiftlint:disable unused_setter_value -@available(iOSApplicationExtension, unavailable) -extension UIScrollView: IQKeyboardManagerCompatible { - - // This property is explicitly written otherwise we were having - // compilation error when archiving - public var iq: IQKeyboardManagerWrapper<UIView> { - get { IQKeyboardManagerWrapper(self) } - set {} - } -} -// swiftlint:enable unused_setter_value -// swiftlint:enable identifier_name - -@available(iOSApplicationExtension, unavailable) -@MainActor -public extension IQKeyboardManagerWrapper where Base: UIScrollView { - - /** - If YES, then scrollview will ignore scrolling (simply not scroll it) for adjusting textfield position. - Default is NO. - */ - var ignoreScrollingAdjustment: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.ignoreScrollingAdjustment) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.ignoreScrollingAdjustment, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - If YES, then scrollview will ignore content inset adjustment (simply not updating it) when keyboard is shown. - Default is NO. - */ - var ignoreContentInsetAdjustment: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.ignoreContentInsetAdjustment) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.ignoreContentInsetAdjustment, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - To set customized distance from keyboard for textField/textView. Can't be less than zero - */ - var restoreContentOffset: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.restoreContentOffset) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.restoreContentOffset, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } -} - -// swiftlint:disable unused_setter_value -@available(iOSApplicationExtension, unavailable) -@objc public extension UIScrollView { - @available(*, unavailable, renamed: "iq.ignoreScrollingAdjustment") - var shouldIgnoreScrollingAdjustment: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "iq.ignoreContentInsetAdjustment") - var shouldIgnoreContentInsetAdjustment: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "iq.restoreContentOffset") - var shouldRestoreScrollViewContentOffset: Bool { - get { false } - set { } - } -} -// swiftlint:enable unused_setter_value diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift deleted file mode 100644 index 022a94d6f42a0540110b9149b4940e7885e1e159..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// IQUITableView+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension UITableView { - - func previousIndexPath(of indexPath: IndexPath) -> IndexPath? { - var previousRow: Int = indexPath.row - 1 - var previousSection: Int = indexPath.section - - // Fixing indexPath - if previousRow < 0 { - previousSection -= 1 - if previousSection >= 0 { - previousRow = self.numberOfRows(inSection: previousSection) - 1 - } - } - - if previousRow >= 0, previousSection >= 0 { - return IndexPath(row: previousRow, section: previousSection) - } else { - return nil - } - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift deleted file mode 100644 index d108f9669e6e20040f64cc2dd79b5f6b728d9b1e..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift +++ /dev/null @@ -1,137 +0,0 @@ -// -// IQUITextFieldView+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -private struct AssociatedKeys { - static var distanceFromKeyboard: Int = 0 - static var ignoreSwitchingByNextPrevious: Int = 0 - static var enableMode: Int = 0 - static var resignOnTouchOutsideMode: Int = 0 -} - -@available(iOSApplicationExtension, unavailable) -extension UIView: IQKeyboardManagerCompatible { - - public static let defaultKeyboardDistance: CGFloat = CGFloat.greatestFiniteMagnitude -} - -@available(iOSApplicationExtension, unavailable) -@available(*, unavailable, renamed: "UIView.defaultKeyboardDistance") -public let kIQUseDefaultKeyboardDistance = CGFloat.greatestFiniteMagnitude - -/** -UIView category for managing UITextField/UITextView -*/ -@available(iOSApplicationExtension, unavailable) -@MainActor -public extension IQKeyboardManagerWrapper where Base: UIView { - - /** - To set customized distance from keyboard for textField/textView. Can't be less than zero - */ - var distanceFromKeyboard: CGFloat { - get { - if let value = objc_getAssociatedObject(base, &AssociatedKeys.distanceFromKeyboard) as? CGFloat { - return value - } else { - return UIView.defaultKeyboardDistance - } - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.distanceFromKeyboard, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - If ignoreSwitchingByNextPrevious is true then library will ignore this textField/textView - while moving to other textField/textView using keyboard toolbar next previous buttons. - Default is false - */ - var ignoreSwitchingByNextPrevious: Bool { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.ignoreSwitchingByNextPrevious) as? Bool ?? false - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.ignoreSwitchingByNextPrevious, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - Override Enable/disable managing distance between keyboard and textField behavior for this particular textField. - */ - var enableMode: IQEnableMode { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.enableMode) as? IQEnableMode ?? .default - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.enableMode, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - - /** - Override resigns Keyboard on touching outside of UITextField/View behavior for this particular textField. - */ - var resignOnTouchOutsideMode: IQEnableMode { - get { - return objc_getAssociatedObject(base, &AssociatedKeys.resignOnTouchOutsideMode) as? IQEnableMode ?? .default - } - set(newValue) { - objc_setAssociatedObject(base, &AssociatedKeys.resignOnTouchOutsideMode, - newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } -} - -// swiftlint:disable unused_setter_value -@available(iOSApplicationExtension, unavailable) -@objc public extension UIView { - @available(*, unavailable, renamed: "iq.distanceFromKeyboard") - var keyboardDistanceFromTextField: CGFloat { - get { 0 } - set { } - } - - @available(*, unavailable, renamed: "iq.ignoreSwitchingByNextPrevious") - var ignoreSwitchingByNextPrevious: Bool { - get { false } - set { } - } - - @available(*, unavailable, renamed: "iq.enableMode") - var enableMode: IQEnableMode { - get { .default } - set { } - } - - @available(*, unavailable, renamed: "iq.resignOnTouchOutsideMode") - var shouldResignOnTouchOutsideMode: IQEnableMode { - get { .default } - set { } - } -} -// swiftlint:enable unused_setter_value diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift deleted file mode 100644 index 907f51f9eacb868bf655ddb68d1d13f19c4c6f04..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift +++ /dev/null @@ -1,354 +0,0 @@ -// -// IQUIView+Hierarchy.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -/** -UIView hierarchy category. -*/ - -@available(iOSApplicationExtension, unavailable) -@MainActor -public extension IQKeyboardManagerWrapper where Base: UIView { - - // MARK: viewControllers - - /** - Returns the UIViewController object that manages the receiver. - */ - func viewContainingController() -> UIViewController? { - - var nextResponder: UIResponder? = base - - repeat { - nextResponder = nextResponder?.next - - if let viewController: UIViewController = nextResponder as? UIViewController { - return viewController - } - - } while nextResponder != nil - - return nil - } - - /** - Returns the topMost UIViewController object in hierarchy. - */ - func topMostController() -> UIViewController? { - - var controllersHierarchy: [UIViewController] = [] - - if var topController: UIViewController = base.window?.rootViewController { - controllersHierarchy.append(topController) - - while let presented: UIViewController = topController.presentedViewController { - - topController = presented - - controllersHierarchy.append(presented) - } - - var matchController: UIResponder? = viewContainingController() - - while let mController: UIViewController = matchController as? UIViewController, - !controllersHierarchy.contains(mController) { - - repeat { - matchController = matchController?.next - - } while matchController != nil && matchController is UIViewController == false - } - - return matchController as? UIViewController - - } else { - return viewContainingController() - } - } - - /** - Returns the UIViewController object that is actually the parent of this object. - Most of the time it's the viewController object which actually contains it, - but result may be different if it's viewController is added as childViewController of another viewController. - */ - func parentContainerViewController() -> UIViewController? { - - var matchController: UIViewController? = viewContainingController() - var parentContainerViewController: UIViewController? - - if var navController: UINavigationController = matchController?.navigationController { - - while let parentNav: UINavigationController = navController.navigationController { - navController = parentNav - } - - var parentController: UIViewController = navController - - while let parent: UIViewController = parentController.parent, - !(parent is UINavigationController) && - !(parent is UITabBarController) && - !(parent is UISplitViewController) { - - parentController = parent - } - - if navController == parentController { - parentContainerViewController = navController.topViewController - } else { - parentContainerViewController = parentController - } - } else if let tabController: UITabBarController = matchController?.tabBarController { - let selectedController = tabController.selectedViewController - if let navController: UINavigationController = selectedController as? UINavigationController { - parentContainerViewController = navController.topViewController - } else { - parentContainerViewController = tabController.selectedViewController - } - } else { - while let parent: UIViewController = matchController?.parent, - !(parent is UINavigationController) && - !(parent is UITabBarController) && - !(parent is UISplitViewController) { - - matchController = parent - } - - parentContainerViewController = matchController - } - - if let controller: UIViewController = parentContainerViewController?.iq_parentContainerViewController() { - return controller - } else { - return parentContainerViewController - } - } - - // MARK: Superviews/Subviews/Siblings - - /** - Returns the superView of provided class type. - - - @param classType class type of the object which is to be search in above hierarchy and return - - @param belowView view object in upper hierarchy where method should stop searching and return nil -*/ - func superviewOf<T: UIView>(type classType: T.Type, belowView: UIView? = nil) -> T? { - - var superView: UIView? = base.superview - - while let unwrappedSuperView: UIView = superView { - - if unwrappedSuperView.isKind(of: classType) { - - // If it's UIScrollView, then validating for special cases - if unwrappedSuperView is UIScrollView { - - let classNameString: String = "\(type(of: unwrappedSuperView.self))" - - // If it's not UITableViewWrapperView class, - // this is internal class which is actually manage in UITableview. - // The speciality of this class is that it's superview is UITableView. - // If it's not UITableViewCellScrollView class, - // this is internal class which is actually manage in UITableviewCell. - // The speciality of this class is that it's superview is UITableViewCell. - // If it's not _UIQueuingScrollView class, - // actually we validate for _ prefix which usually used by Apple internal classes - if !(unwrappedSuperView.superview is UITableView), - !(unwrappedSuperView.superview is UITableViewCell), - !classNameString.hasPrefix("_") { - return superView as? T - } - } else { - return superView as? T - } - } else if unwrappedSuperView == belowView { - return nil - } - - superView = unwrappedSuperView.superview - } - - return nil - } -} - -@available(iOSApplicationExtension, unavailable) -@MainActor -internal extension IQKeyboardManagerWrapper where Base: UIView { - - /** - Returns all siblings of the receiver which canBecomeFirstResponder. - */ - func responderSiblings() -> [UIView] { - - // Array of (UITextField/UITextView's). - var tempTextFields: [UIView] = [] - - // Getting all siblings - if let siblings: [UIView] = base.superview?.subviews { - for textField in siblings { - if textField == base || !textField.iq.ignoreSwitchingByNextPrevious, - textField.iq.canBecomeFirstResponder() { - tempTextFields.append(textField) - } - } - } - - return tempTextFields - } - - /** - Returns all deep subViews of the receiver which canBecomeFirstResponder. - */ - func deepResponderViews() -> [UIView] { - - // Array of (UITextField/UITextView's). - var textfields: [UIView] = [] - - for textField in base.subviews { - - if textField == base || !textField.iq.ignoreSwitchingByNextPrevious, - textField.iq.canBecomeFirstResponder() { - textfields.append(textField) - } - // Sometimes there are hidden or disabled views and textField inside them still recorded, - // so we added some more validations here (Bug ID: #458) - // Uncommented else (Bug ID: #625) - else if textField.subviews.count != 0, base.isUserInteractionEnabled, !base.isHidden, base.alpha != 0.0 { - for deepView in textField.iq.deepResponderViews() { - textfields.append(deepView) - } - } - } - - // subviews are returning in opposite order. Sorting according the frames 'y'. - return textfields.sorted(by: { (view1: UIView, view2: UIView) -> Bool in - - let frame1: CGRect = view1.convert(view1.bounds, to: base) - let frame2: CGRect = view2.convert(view2.bounds, to: base) - - if frame1.minY != frame2.minY { - return frame1.minY < frame2.minY - } else { - return frame1.minX < frame2.minX - } - }) - } - - private func canBecomeFirstResponder() -> Bool { - - var canBecomeFirstResponder: Bool = false - - if base.conforms(to: UITextInput.self) { - // Setting toolbar to keyboard. - if let textView: UITextView = base as? UITextView { - canBecomeFirstResponder = textView.isEditable - } else if let textField: UITextField = base as? UITextField { - canBecomeFirstResponder = textField.isEnabled - } - } - - if canBecomeFirstResponder { - canBecomeFirstResponder = base.isUserInteractionEnabled && - !base.isHidden && - base.alpha != 0.0 && - !isAlertViewTextField() && - textFieldSearchBar() == nil - } - - return canBecomeFirstResponder - } - - // MARK: Special TextFields - - /** - Returns searchBar if receiver object is UISearchBarTextField, otherwise return nil. - */ - func textFieldSearchBar() -> UISearchBar? { - - var responder: UIResponder? = base.next - - while let bar: UIResponder = responder { - - if let searchBar: UISearchBar = bar as? UISearchBar { - return searchBar - } else if bar is UIViewController { - break - } - - responder = bar.next - } - - return nil - } - - /** - Returns YES if the receiver object is UIAlertSheetTextField, otherwise return NO. - */ - func isAlertViewTextField() -> Bool { - - var alertViewController: UIResponder? = viewContainingController() - - var isAlertViewTextField: Bool = false - - while let controller: UIResponder = alertViewController, !isAlertViewTextField { - - if controller is UIAlertController { - isAlertViewTextField = true - break - } - - alertViewController = controller.next - } - - return isAlertViewTextField - } - - func depth() -> Int { - var depth: Int = 0 - - if let superView: UIView = base.superview { - depth = superView.iq.depth()+1 - } - - return depth - } -} - -@available(iOSApplicationExtension, unavailable) -@objc public extension UIView { - - @available(*, unavailable, renamed: "iq.viewContainingController()") - func viewContainingController() -> UIViewController? { nil } - - @available(*, unavailable, renamed: "iq.topMostController()") - func topMostController() -> UIViewController? { nil } - - @available(*, unavailable, renamed: "iq.parentContainerViewController()") - func parentContainerViewController() -> UIViewController? { nil } - - @available(*, unavailable, renamed: "iq.superviewOf(type:belowView:)") - func superviewOfClassType(_ classType: UIView.Type, belowView: UIView? = nil) -> UIView? { nil } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift deleted file mode 100644 index 7bd0792fca5735055fcd2c9c0921cb2a0119ca81..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift +++ /dev/null @@ -1,48 +0,0 @@ -// -// IQUIViewController+Additions.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -@available(iOSApplicationExtension, unavailable) -@MainActor -@objc extension UIViewController { - - /** - This method is provided to override by viewController's - if the library lifts a viewController which you doesn't want to lift. - This may happen if you have implemented side menu feature - in your app and the library try to lift the side menu controller. - Overriding this method in side menu class to return correct controller should fix the problem. - */ - open func iq_parentContainerViewController() -> UIViewController? { - return self - } -} - -@available(iOSApplicationExtension, unavailable) -@objc extension UIViewController { - @available(*, unavailable, renamed: "iq_parentContainerViewController()") - open func parentIQContainerViewController() -> UIViewController? { - return self - } -} diff --git a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift b/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift deleted file mode 100644 index fe1d1a11f583e080d3d839932d7408d72d26df4e..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift +++ /dev/null @@ -1,60 +0,0 @@ -// -// UIImage+NextPrevious.swift -// https://github.com/hackiftekhar/IQKeyboardManager -// Copyright (c) 2013-24 Iftekhar Qurashi. -// -// 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 - -/** - UIImage category methods to get next/prev images - */ -@available(iOSApplicationExtension, unavailable) -@objc public extension UIImage { - - static let keyboardPreviousImage: UIImage = { - // swiftlint:disable line_length - let base64Data: String = "iVBORw0KGgoAAAANSUhEUgAAAD8AAAAkCAYAAAA+TuKHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAGmklEQVRoBd1ZWWwbRRie2bVz27s2adPGxzqxqAQCIRA3CDVJGxpKaEtRoSAVISQQggdeQIIHeIAHkOCBFyQeKlARhaYHvUJa0ksVoIgKUKFqKWqdeG2nR1Lsdeo0h73D54iku7NO6ySOk3alyPN//+zM/81/7MyEkDl66j2eJXWK8vocTT82rTgXk/t8vqBNEI9QSp9zOeVkPJnomgs7ik5eUZQ6OxGOEEq9WcKUksdlWbqU0LRfi70ARSXv8Xi8dkE8CsJ+I1FK6BNYgCgW4A8jPtvtopFHqNeWCLbDIF6fkxQjK91O1z9IgRM59bMAFoV8YEFgka1EyBJfMhkH5L9ACFstS9IpRMDJyfoVEp918sGamoVCme0QyN3GG87wAKcTOBYA4hrJKf+VSCb+nsBnqYHVnr2ntra2mpWWH0BVu52fhRH2XSZDmsA/xensokC21Pv9T3J4wcWrq17gob1er7tEhMcJuYsfGoS3hdTweuBpxaM0iCJph8fLuX7DJMPWnI2GOzi8YOKseD4gB+RSQezMRRx5vRPEn88Sz7IIx8KHgT3FCBniWJUyke6o8/uXc3jBxIKTd7vdTsFJfkSo38NbCY/vPRsOPwt81KgLqeoBXc+sBjZsxLF4ZfgM7goqSqMRL1S7oOSrq6sdLodjH0rYfbyByPEOePwZ4CO8Liv3RCL70Wctr8+mA2NkT53P91iu92aCFYx8TU1NpbOi8gfs2R7iDYLxnXqYPg3c5Fm+Xygcbs/omXXATZGBBagQqNAe9Psf4d+ZiVwQ8qjqFVVl5dmi9ShvDEL90IieXtVDevic5ruOyYiAXYiA9YSxsZow0YnSKkKFjoAn8OAENsPGjKs9qnp5iSDuBXFLXsLjR4fSIy29vb2DU7UThW4d8n0zxjXtRVAYNaJnlocikWNTHZPvP1PPl2LLujM3cfbzwJXUyukQzxrZraptRCcbEDm60Wh4S0IE7McByVJQjf3yac+EfEm9ouxAcWu2TsS6koOplr6+vstWXf5IKBrejBR4ybIAlLpE1JE6j8eyh8h/dEKmS95e7w9sy57G+MkQ6sdYMrmiv79/gNdNR0YEbGKUvIIFQMRffRBtbkG0HQj6fHdcRafWmg55Gzy+BR5vtUzF2O96kjSH4nHNopsB0B0Ob6SEvcYvAPYS1UwQDyqLFcu5IZ/pTMUkjxfEoD/wLVY9+z02PXDL8RE9s0y9qMZNigIJcU37TZblfj7aUAMqURLXuqqq9sQHBi5NZbqpkBfh8a9BPLtDMz3wyImh9GhTLBab0uSmQfIQcNQ95pJkDVG3wtgdC1KFA+HaSodjdzKZ/Neou1Y7X/JC0K98BeIvWAdjp+jwUKN6/nyfVVd4JK4lunDrkwJhc6Gl1GGjwhqnLO3UNC2Rz8z5kKfw+EYQf5EfEKF+Wh+kDd0XYxd43WzKiIBfEAEjiIAm0zyUSFiU1XJF+feJy5evW3euR57C41+A+MumSbICY2dGmd6gnlPPWXRFABABP7llCXsA2mCcDjVAJoK4qryycsfAwEDSqOPb1yQPj38O4q/yL4F4aCiTXhqNRmMWXREBFMGjslOywUbToQeyyy4IrVVO53bUgEk/uZOSr/MHPsOd0hs8F4R6mI2ONKi9vRFeNxdyIqkddknOMhA2nyuy+wAqtEol8rbEYCLnZisneXj8UxB/00KGkUiGsqU90WiPRTeHACLgoNsp4eBDHzaagRS4RbCzle6ysq3xVIq/LiMW8ti5fYRVfMs4yFibsdgI05eqqhqy6OYBEE9qnSiCLhRB7tRHFzDR1oIasBU1wHTAMpHHjcmHIP4OzwXf8XMkk24IR6NneN18klEE97mc0gJwuN9oF+SFNlF8vNJR1YYacGVcN0Eet6XvY6Pw3rhi/Bc5fiEzShp7eiOnx7H5/IsI6EAELEIE3Gu0EymwyCbQZocktWEfMHa3MEa+zqe8KwjCB8bO/7f70kxvVGPqyRy6eQshAtpdsuTDN/9us5F0MQ4zTS5BaIsPDQ3jO+5/G+fjj82dIDF2CZeKjd3R6J8W3Y0BYFca+JJQssFqLuvSUqlmESHSiZywGzsgx+OZNFnWE4scN+I3WJshAnYjAm5FBNxptp16y+y2hICLEtOVMXJcI0xvDveGi/ofU7NxBZN0XIpuIIy0mUZkZNNZVf1kDAt6lZagEhjGnxbweh8wdbw5hOwdxHbwY/j9BpTM9xi4MGzFvZhpk3Bz8J5gkb19ym7cJr5w/wEmUjzJqoNVhwAAAABJRU5ErkJggg==" - // swiftlint:enable line_length - - // Support for RTL languages like Arabic, Persia etc... (Bug ID: #448) - if let data: Data = Data(base64Encoded: base64Data, options: .ignoreUnknownCharacters), - let image = UIImage(data: data, scale: 3)?.imageFlippedForRightToLeftLayoutDirection() { - return image - } - - return UIImage() - }() - - static let keyboardNextImage: UIImage = { - - // swiftlint:disable line_length - let base64Data: String = "iVBORw0KGgoAAAANSUhEUgAAAD8AAAAkCAYAAAA+TuKHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAGp0lEQVRoBd1ZCWhcRRiemff25WrydmOtuXbfZlMo4lEpKkppm6TpZUovC4UqKlQoUhURqQcUBcWDIkhVUCuI9SpJa+2h0VZjUawUEUUUirLNXqmxSnc32WaT7O4bv0nd5R1bc+2maR8s7z9m5v+/+f/5Z94sIf89jW73Yp/bfUuWvwLfDp/H8zhwObLYmCCaPJ6FjLJPCWNHNU1bkFVeQW/Zp2l7KWUvNmlaB3DJAhvz1ntvI5R1EUpnUUKdEifHGuvr519BwKUmj/cDYNtwARNd5/NoH4GWKIhzlFKXCSzn/xCut/jD4V9N8suPYYj4ewC+2e46f55Rwp/geExKSmdzJn2l1WrXmuSXF8MQ8XfyAeeEn9KTyV3MHwq9RTh50IqLEjJHUkh3Y13dPKvuMuApIr6bUHKP1VeE+Y8MIa09Z8/+JQlltD/+Q7VaFcW6X2VsjFmbRRnbUFFZeai/v/+cUTeDaYqIv4GlfL/NR879I3qmORwOnxG6UfCCiMbjJ51VagKdlgs+91BaKVO6oVJVD8bj8WhOPkMJn1t7jTL6gNU9pHpgKJ1q7u3tjWR1OfBCEOuPf+9Sq4YwAW3ZBqNvSqsYpeuc5WUHYolE3KSbQYzP430FwB+yuoSCFtKHaXP4z3DIqDOBFwpkwHfVThXLgrYaG6IGOAmT1pZVVHw8MDDQb9TNBLrJre0E8EdtvnAeSRPeHOwN9lh1NvCiASbgG5fqRLDJEmMHsSU6GFuDGrAfNWDAqLuUNE5uL6A2bbf5wPkZrmdaAuGw36aDIC940TAajx1HBijIgEWmjpRWS4ytrnKq+1EDEibdJWAa3dqzjLGnrKaxxvt4OtXS09v7u1WX5S8KXjRABnQ7VbUCEV+Y7SDeWAJX4dfuLCnZFzt//rxRN500jqo74NvTVptY42fTnLcGI5FTVp2R/1/womEsHj/mwgxg27vd2BH8bCrLq0rKyjoTicSgUTcdNIrbkwD+nM2WOJ3qmaVI9d9sOotgTPCiPTLgi+oqdTbOAbea+lM6xyHLK8pnVXSiCCZNuiIyjZr2GArSS1YTOKie45n0UqT6L1ZdPn5c4EVHHIS6sA3WYLZvNg6E9L9GZmwZzgEdqAFDRl0xaET8EQB/2To21ngsQ0kbIv6zVXcxftzgxQDIgM+qVbUeGbDAPCCtxbfxUhdjHdGhoWGzrnAcIr4NwHflGbGf6PqyQCj0Yx7dRUUTAi9GwQQccapOL7bBm4yjIiPqSElpC5VYRzKZLPgE4M5hK0rt67CDZDM9A+k0XxmIhE6apONgJgxejBmLxw65VHUu/LjRaANeNZQpyhJZUToGBwdHjLqp0Ij4FgB/0wocaxw7DV8F4CcmM/6kwMMQRwYcrFad87DvXW8yTKlbkZVFSmlJB3bBlEk3CQYRvxfA3wbw0Vun7BAAPqjrmfaecPjbrGyib2sKTbS/LG5F4NhGe0d+fDiTuSMSiUx6F8Bn6V343N6TB3gSyb/aHwx22+2OX2KazfF3y7VMnw4FcUvCP8lJcgRtVph0yEu8pTnRBAiv270JwN+1AscQw5zr66YKXLgyVfBijBQc2YQ0PCIY4wPH2yQPERNTYpSPRSPid0qUvY/+1mU5QjJ8PVL96FhjjEdfCPDCzggyAKnPP7cZpWQFlsZ+yPGdMPaDiK/F6fEjbKeypXVK5/pGfyTYZZFPmi0UeOHAcCZI1+Oa6JjVG0SwHbcrnZDn7sytbQSPiLdLTBJXy+Z2nKcR8U09odDhfP0mKyskeBIggaERPb0WGfC1zSFK1gDcXsitER1t6m3wrkTEbRmC5ZTRCd+MiB+wjTlFwVSrfV7zdXV15aWy0oWKvNjWgJMOfyiAIklwYXLhwfd4G/47OAxnTMVRAKec3u0PB8SkFfyxFpSCGMBHTkpWHPsU2bEEKe8xDUrJdfhKnItzgiiEXKvXWhijR9CuzNgOwHWc1+87HQ5+aJQXki4KeOGgOOFJDkdnqeJowSGlweg00vsGHJAa1UpnTJKIAF5u1AM4R8S3APgeo7zQdFHS3uikz+VSSWXVlwBo+hoUbUR0ITfVHQEcEd+K4rbbOE4xaJPhYhg4HY3GcYG4HFB/so5vBT6q53TbdAAXtooe+SzghoaGakWSu2FwflZmfWMffxjAX7XKi8VPG3gBoKam5uoKpeQEDjBz7YD4dpwUd9rlxZMUPe2Nrvf19f2dTKdasap7jHIsiR3TDdxsfxq5xtpazad5g02al+Na6plpND0zTHk8Hp+4iLyU3vwLp0orLWXqrZQAAAAASUVORK5CYII=" - // swiftlint:enable line_length - - // Support for RTL languages like Arabic, Persia etc... (Bug ID: #448) - if let data: Data = Data(base64Encoded: base64Data, options: .ignoreUnknownCharacters), - let image = UIImage(data: data, scale: 3)?.imageFlippedForRightToLeftLayoutDirection() { - return image - } - - return UIImage() - }() -} diff --git a/Pods/IQKeyboardManagerSwift/LICENSE.md b/Pods/IQKeyboardManagerSwift/LICENSE.md deleted file mode 100644 index 0c652ed425eb3620b05d30837dfaf4f85866dc2f..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2013-2023 Iftekhar Qurashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Pods/IQKeyboardManagerSwift/README.md b/Pods/IQKeyboardManagerSwift/README.md deleted file mode 100644 index 01f6f96609ae0a900c2a269cf36a1dc7d1e4f642..0000000000000000000000000000000000000000 --- a/Pods/IQKeyboardManagerSwift/README.md +++ /dev/null @@ -1,220 +0,0 @@ -<p align="center"> - <img src="https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Demo/Resources/icon.png" alt="Icon"/> -</p> -<H1 align="center">IQKeyboardManager</H1> -<p align="center"> - <img src="https://img.shields.io/github/license/hackiftekhar/IQKeyboardManager.svg" - alt="GitHub license"/> - - -[](https://travis-ci.org/hackiftekhar/IQKeyboardManager) - - -While developing iOS apps, we often run into issues where the iPhone keyboard slides up and covers the `UITextField/UITextView`. `IQKeyboardManager` allows you to prevent this issue of keyboard sliding up and covering `UITextField/UITextView` without needing you to write any code or make any additional setup. To use `IQKeyboardManager` you simply need to add source files to your project. - - -#### Key Features - -1) `**CODELESS**, Zero Lines of Code` - -2) `Works Automatically` - -3) `No More UIScrollView` - -4) `No More Subclasses` - -5) `No More Manual Work` - -6) `No More #imports` - -`IQKeyboardManager` works on all orientations, and with the toolbar. It also has nice optional features allowing you to customize the distance from the text field, behaviour of previous, next and done buttons in the keyboard toolbar, play sound when the user navigates through the form and more. - - -## Screenshot -[](http://youtu.be/6nhLw6hju2A) -[](http://youtu.be/6nhLw6hju2A) -[](http://youtu.be/6nhLw6hju2A) -[](http://youtu.be/6nhLw6hju2A) -[](http://youtu.be/6nhLw6hju2A) - -## GIF animation -[](http://youtu.be/6nhLw6hju2A) - -## Video - -<a href="http://youtu.be/WAYc2Qj-OQg" target="_blank"><img src="http://img.youtube.com/vi/WAYc2Qj-OQg/0.jpg" -alt="IQKeyboardManager Demo Video" width="480" height="360" border="10" /></a> - -## Tutorial video by @rebeloper ([#1135](https://github.com/hackiftekhar/IQKeyboardManager/issues/1135)) - -@rebeloper demonstrated two videos on how to implement **IQKeyboardManager** at it's core: - -<a href="https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v" target="_blank"><img src="https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/ThirdPartyYoutubeTutorial.jpg" -alt="Youtube Tutorial Playlist"/></a> - -https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v - -## Warning - -- **If you're planning to build SDK/library/framework and want to handle UITextField/UITextView with IQKeyboardManager then you're totally going the wrong way.** I would never suggest to add **IQKeyboardManager** as **dependency/adding/shipping** with any third-party library. Instead of adding **IQKeyboardManager** you should implement your own solution to achieve same kind of results. **IQKeyboardManager** is totally designed for projects to help developers for their convenience, it's not designed for **adding/dependency/shipping** with any **third-party library**, because **doing this could block adoption by other developers for their projects as well (who are not using IQKeyboardManager and have implemented their custom solution to handle UITextField/UITextView in the project).** -- If **IQKeyboardManager** conflicts with other **third-party library**, then it's **developer responsibility** to **enable/disable IQKeyboardManager** when **presenting/dismissing** third-party library UI. Third-party libraries are not responsible to handle IQKeyboardManager. - -## Requirements -[]() - -| | Language | Minimum iOS Target | Minimum Xcode Version | -|------------------------|----------|--------------------|-----------------------| -| IQKeyboardManager | Obj-C | iOS 11.0 | Xcode 13 | -| IQKeyboardManagerSwift | Swift | iOS 13.0 | Xcode 13 | -| Demo Project | | | Xcode 15 | - -#### Swift versions support - -| Swift | Xcode | IQKeyboardManagerSwift | -|-------------------|-------|------------------------| -| 5.9, 5.8, 5.7, 5.6| 15 | >= 7.0.0 | -| 5.5, 5.4, 5.3, 5.2, 5.1, 5.0, 4.2| 11 | >= 6.5.7 | -| 5.1, 5.0, 4.2, 4.0, 3.2, 3.0| 11 | >= 6.5.0 | -| 5.0,4.2, 4.0, 3.2, 3.0| 10.2 | >= 6.2.1 | -| 4.2, 4.0, 3.2, 3.0| 10.0 | >= 6.0.4 | -| 4.0, 3.2, 3.0 | 9.0 | 5.0.0 | - -## 7.0.0 version notes -- In this major release, a lot of variables and functions have been moved here and there. We have mentioned most of the major things in the MIGRATION GUIDE. So please take a look to make changes in your project when upgrading to this version. -- The 7.0.0 version adopted the latest Swift Concurrency/Actor feature and only available iOS 13.0 and above. -- Internal keyboard management handling have been updated with a different and better approach than legacy versions. However when adopting 7.0.0, please verify if it is working as expected in your apps, if there are any serious problems with 7.0.0 please open an issue with all the details and switch back to legacy version temporarily. - -Installation -========================== - -#### Installation with CocoaPods - -[](http://cocoadocs.org/docsets/IQKeyboardManager) - -***IQKeyboardManager (Objective-C):*** IQKeyboardManager is available through [CocoaPods](http://cocoapods.org). To install -it, simply add the following line to your Podfile: ([#9](https://github.com/hackiftekhar/IQKeyboardManager/issues/9)) - -```ruby -pod 'IQKeyboardManager' #iOS13 and later -``` - -***IQKeyboardManager (Swift):*** IQKeyboardManagerSwift is available through [CocoaPods](http://cocoapods.org). To install -it, simply add the following line to your Podfile: ([#236](https://github.com/hackiftekhar/IQKeyboardManager/issues/236)) - -*Swift 5.9, 5.8, 5.7, 5.6, 5.5 (Xcode 15)* - -```ruby -pod 'IQKeyboardManagerSwift' -``` - -*Or you can choose the version you need based on Swift support table from [Requirements](README.md#requirements)* - -```ruby -pod 'IQKeyboardManagerSwift', '6.3.0' -``` - -In AppDelegate.swift, just import IQKeyboardManagerSwift framework and enable IQKeyboardManager. - -```swift -import IQKeyboardManagerSwift - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - - IQKeyboardManager.shared.enable = true - - return true - } -} -``` - -#### Installation with Carthage - -[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. - -You can install Carthage with [Homebrew](http://brew.sh/) using the following command: - -```bash -$ brew update -$ brew install carthage -``` - -To integrate `IQKeyboardManger` or `IQKeyboardManagerSwift` into your Xcode project using Carthage, add the following line to your `Cartfile`: - -```ogdl -github "hackiftekhar/IQKeyboardManager" -``` - -Run `carthage` to build the frameworks and drag the appropriate framework (`IQKeyboardManager.framework` or `IQKeyboardManagerSwift.framework`) into your Xcode project based on your need. Make sure to add only one framework and not both. - - -#### Installation with Source Code - -[]() - - - -***IQKeyboardManager (Objective-C):*** Just ***drag and drop*** `IQKeyboardManager` directory from demo project to your project. That's it. - -***IQKeyboardManager (Swift):*** ***Drag and drop*** `IQKeyboardManagerSwift` directory from demo project to your project - -In AppDelegate.swift, just enable IQKeyboardManager. - -```swift -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - - IQKeyboardManager.shared.enable = true - - return true - } -} -``` - -#### Installation with Swift Package Manager - -[Swift Package Manager(SPM)](https://swift.org/package-manager/) is Apple's dependency manager tool. It is now supported in Xcode 11. So it can be used in all appleOS types of projects. It can be used alongside other tools like CocoaPods and Carthage as well. - -To install IQKeyboardManagerSwift package via Xcode - - * Go to File -> Swift Packages -> Add Package Dependency... - * Then search for https://github.com/hackiftekhar/IQKeyboardManager.git - * And choose the version you want - -Migration Guide -========================== -- [IQKeyboardManager 6.0.0 Migration Guide](https://github.com/hackiftekhar/IQKeyboardManager/wiki/IQKeyboardManager-6.0.0-Migration-Guide) -- [IQKeyboardManager 7.0.0 Migration Guide](https://github.com/hackiftekhar/IQKeyboardManager/wiki/IQKeyboardManager-7.0.0-Migration-Guide) - -Other Links -========================== - -- [Known Issues](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Known-Issues) -- [Manual Management Tweaks](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Manual-Management) -- [Properties and functions usage](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Properties-&-Functions) - -## Flow Diagram -[](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/IQKeyboardManagerFlowDiagram.jpg) - -If you would like to see detailed Flow diagram then check [Detailed Flow Diagram](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/v3.3.0/Screenshot/IQKeyboardManagerCFD.jpg). - - -LICENSE ---- -Distributed under the MIT License. - -Contributions ---- -Any contribution is more than welcome! You can contribute through pull requests and issues on GitHub. - -Author ---- -If you wish to contact me, email at: hack.iftekhar@gmail.com diff --git a/Pods/ImageViewer.swift/README.md b/Pods/ImageViewer.swift/README.md deleted file mode 100644 index 88f6bbaeea82a88c0f8953c4bc169d9db70e4cba..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/README.md +++ /dev/null @@ -1,141 +0,0 @@ -ImageViewer.swift -======================= - -An easy to use Image Viewer that is inspired by Facebook - -[](https://cocoapods.org/pods/ImageViewer.swift) -[](https://github.com/michaelhenry/ImageViewer.swift/actions) -[](https://cocoapods.org/pods/ImageViewer.swift) -[](https://cocoapods.org/pods/ImageViewer.swift) - - - - -# Supports - -- From iOS 10 -- Swift versions - - Swift 4.0 - - Swift 4.2 - - Swift 5.0 - -## Installation - -### CocoaPods - -Using [cocoapods](https://cocoapods.org) - -```ruby -pod 'ImageViewer.swift', '~> 3.0' -``` - -If you need remote image fetching: - -```ruby -pod 'ImageViewer.swift', '~> 3.0' -pod 'ImageViewer.swift/Fetcher', '~> 3.0' -``` - -### Carthage - -[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate Alamofire into your Xcode project using Carthage, specify it in your `Cartfile`: - -```ogdl -github "michaelhenry/ImageViewer.swift" ~> 3.2 -``` - -## How to use it - -The simplest way to to use this is by using the [imageView.setupImageViewer()](https://github.com/michaelhenry/MHFacebookImageViewer/blob/master/Example/Demo/BasicViewController.swift#L11) - - -```swift -imageView.setupImageViewer() -``` - -Example: - -```swift -import ImageViewer_swift - -let imageView = UIImageView() -imageView.image = UIImage(named: 'cat1') -... -imageView.setupImageViewer() -``` - -Or you might load it from a URL - -```swift -imageView.setupImageViewer(url: URL(string: "https://example.com/image.jpg")!) -``` - -Or you might load it with an array of images `[UIImage]` - -```swift -let images = [ - UIImage(named: "cat1"), - UIImage(named: "cat1"), - UIImage(named: "cat1") -] -imageView.setupImageViewer(images: images) -``` - -Or you might load it with an array of URL `[URL]` - -```swift -let urls = [ - URL(string: "https://example.com/your-image-1.jpg")!, - URL(string: "https://example.com/your-image-2.jpg")!, - URL(string: "https://example.com/your-image-3.jpg")! -] -imageView.setupImageViewer(urls: urls) -``` - -### How to change the layout or options that are available - -You can check this file [ImageViewerOption.swift](https://github.com/michaelhenry/ImageViewer.swift/blob/master/Sources/ImageViewerOption.swift) to see what are the available options that will fit to your needs. - -```swift -public enum ImageViewerOption { - case theme(ImageViewerTheme) - case closeIcon(UIImage) - case rightNavItemTitle(String, onTap: ((Int) -> Void)?) - case rightNavItemIcon(UIImage, onTap: ((Int) -> Void)?) -} -``` - - -You could also check the [Demo](Example) Project for more information. - - -### Easy peasy :) - -Please let me know if you have any questions. - -Cheers, -[Michael Henry Pantaleon](http://www.iamkel.net) - -Twitter: [@michaelhenry119](https://twitter.com/michaelhenry119) - -Linked in: [ken119](http://ph.linkedin.com/in/ken119) - -http://www.iamkel.net - - -# Dependency - -- [SDWebImage](https://github.com/SDWebImage/SDWebImage), for downloading and caching images. - - -# License - -MIT - -Copyright (c) 2013 Michael Henry Pantaleon (http://www.iamkel.net). All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageCarouselViewController.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageCarouselViewController.swift deleted file mode 100644 index 14ef49d82519d022cf425558ee766eb1249268f9..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageCarouselViewController.swift +++ /dev/null @@ -1,224 +0,0 @@ -import UIKit - -public protocol ImageDataSource: AnyObject { - func numberOfImages() -> Int - func imageItem(at index:Int) -> ImageItem -} - -public class ImageCarouselViewController:UIPageViewController, ImageViewerTransitionViewControllerConvertible { - - unowned var initialSourceView: UIImageView? - var sourceView: UIImageView? { - guard let vc = viewControllers?.first as? ImageViewerController else { - return nil - } - return initialIndex == vc.index ? initialSourceView : nil - } - - var targetView: UIImageView? { - guard let vc = viewControllers?.first as? ImageViewerController else { - return nil - } - return vc.imageView - } - - weak var imageDatasource:ImageDataSource? - let imageLoader:ImageLoader - - var initialIndex = 0 - - var theme:ImageViewerTheme = .light { - didSet { - navItem.leftBarButtonItem?.tintColor = theme.tintColor - backgroundView?.backgroundColor = theme.color - } - } - - var imageContentMode: UIView.ContentMode = .scaleAspectFill - var options:[ImageViewerOption] = [] - - private var onRightNavBarTapped:((Int) -> Void)? - - private(set) lazy var navBar:UINavigationBar = { - let _navBar = UINavigationBar(frame: .zero) - _navBar.isTranslucent = true - _navBar.setBackgroundImage(UIImage(), for: .default) - _navBar.shadowImage = UIImage() - return _navBar - }() - - private(set) lazy var backgroundView:UIView? = { - let _v = UIView() - _v.backgroundColor = theme.color - _v.alpha = 1.0 - return _v - }() - - private(set) lazy var navItem = UINavigationItem() - - private let imageViewerPresentationDelegate: ImageViewerTransitionPresentationManager - - public init( - sourceView:UIImageView, - imageDataSource: ImageDataSource?, - imageLoader: ImageLoader, - options:[ImageViewerOption] = [], - initialIndex:Int = 0) { - - self.initialSourceView = sourceView - self.initialIndex = initialIndex - self.options = options - self.imageDatasource = imageDataSource - self.imageLoader = imageLoader - let pageOptions = [UIPageViewController.OptionsKey.interPageSpacing: 20] - - var _imageContentMode = imageContentMode - options.forEach { - switch $0 { - case .contentMode(let contentMode): - _imageContentMode = contentMode - default: - break - } - } - imageContentMode = _imageContentMode - - self.imageViewerPresentationDelegate = ImageViewerTransitionPresentationManager(imageContentMode: imageContentMode) - super.init( - transitionStyle: .scroll, - navigationOrientation: .horizontal, - options: pageOptions) - - transitioningDelegate = imageViewerPresentationDelegate - modalPresentationStyle = .custom - modalPresentationCapturesStatusBarAppearance = true - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - private func addNavBar() { - // Add Navigation Bar - let closeBarButton = UIBarButtonItem( - title: NSLocalizedString("Close", comment: "Close button title"), - style: .plain, - target: self, - action: #selector(dismiss(_:))) - - navItem.leftBarButtonItem = closeBarButton - navItem.leftBarButtonItem?.tintColor = theme.tintColor - navBar.alpha = 0.0 - navBar.items = [navItem] - navBar.insert(to: view) - } - - private func addBackgroundView() { - guard let backgroundView = backgroundView else { return } - view.addSubview(backgroundView) - backgroundView.bindFrameToSuperview() - view.sendSubviewToBack(backgroundView) - } - - private func applyOptions() { - - options.forEach { - switch $0 { - case .theme(let theme): - self.theme = theme - case .contentMode(let contentMode): - self.imageContentMode = contentMode - case .closeIcon(let icon): - navItem.leftBarButtonItem?.image = icon - case .rightNavItemTitle(let title, let onTap): - navItem.rightBarButtonItem = UIBarButtonItem( - title: title, - style: .plain, - target: self, - action: #selector(diTapRightNavBarItem(_:))) - onRightNavBarTapped = onTap - case .rightNavItemIcon(let icon, let onTap): - navItem.rightBarButtonItem = UIBarButtonItem( - image: icon, - style: .plain, - target: self, - action: #selector(diTapRightNavBarItem(_:))) - onRightNavBarTapped = onTap - } - } - } - - override public func viewDidLoad() { - super.viewDidLoad() - - addBackgroundView() - addNavBar() - applyOptions() - - dataSource = self - - if let imageDatasource = imageDatasource { - let initialVC:ImageViewerController = .init( - index: initialIndex, - imageItem: imageDatasource.imageItem(at: initialIndex), - imageLoader: imageLoader) - setViewControllers([initialVC], direction: .forward, animated: true) - } - } - - @objc - private func dismiss(_ sender:UIBarButtonItem) { - self.dismiss(animated: true, completion: nil) - } - - deinit { - initialSourceView?.alpha = 1.0 - } - - @objc - func diTapRightNavBarItem(_ sender:UIBarButtonItem) { - guard let onTap = onRightNavBarTapped, - let _firstVC = viewControllers?.first as? ImageViewerController - else { return } - onTap(_firstVC.index) - } - - override public var preferredStatusBarStyle: UIStatusBarStyle { - if theme == .dark { - return .lightContent - } - return .default - } -} - -extension ImageCarouselViewController:UIPageViewControllerDataSource { - public func pageViewController( - _ pageViewController: UIPageViewController, - viewControllerBefore viewController: UIViewController) -> UIViewController? { - - guard let vc = viewController as? ImageViewerController else { return nil } - guard let imageDatasource = imageDatasource else { return nil } - guard vc.index > 0 else { return nil } - - let newIndex = vc.index - 1 - return ImageViewerController.init( - index: newIndex, - imageItem: imageDatasource.imageItem(at: newIndex), - imageLoader: vc.imageLoader) - } - - public func pageViewController( - _ pageViewController: UIPageViewController, - viewControllerAfter viewController: UIViewController) -> UIViewController? { - - guard let vc = viewController as? ImageViewerController else { return nil } - guard let imageDatasource = imageDatasource else { return nil } - guard vc.index <= (imageDatasource.numberOfImages() - 2) else { return nil } - - let newIndex = vc.index + 1 - return ImageViewerController.init( - index: newIndex, - imageItem: imageDatasource.imageItem(at: newIndex), - imageLoader: vc.imageLoader) - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageItem.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageItem.swift deleted file mode 100644 index ca9e1e3454bd261aa7f91d47e4305139da77de2d..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageItem.swift +++ /dev/null @@ -1,6 +0,0 @@ -import UIKit - -public enum ImageItem { - case image(UIImage?) - case url(URL, placeholder: UIImage?) -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageLoader.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageLoader.swift deleted file mode 100644 index d5b97dbf9269cfbb35f37cbb5643ee8bfb208f38..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageLoader.swift +++ /dev/null @@ -1,46 +0,0 @@ -import Foundation -#if canImport(SDWebImage) -import SDWebImage -#endif - -public protocol ImageLoader { - func loadImage(_ url: URL, placeholder: UIImage?, imageView: UIImageView, completion: @escaping (_ image: UIImage?) -> Void) -} - -public struct URLSessionImageLoader: ImageLoader { - public init() {} - - public func loadImage(_ url: URL, placeholder: UIImage?, imageView: UIImageView, completion: @escaping (UIImage?) -> Void) { - if let placeholder = placeholder { - imageView.image = placeholder - } - - DispatchQueue.global(qos: .background).async { - guard let data = try? Data(contentsOf: url), let image = UIImage(data: data) else { - completion(nil) - return - } - - DispatchQueue.main.async { - imageView.image = image - completion(image) - } - } - } -} - -#if canImport(SDWebImage) -struct SDWebImageLoader: ImageLoader { - func loadImage(_ url: URL, placeholder: UIImage?, imageView: UIImageView, completion: @escaping (UIImage?) -> Void) { - imageView.sd_setImage( - with: url, - placeholderImage: placeholder, - options: [], - progress: nil) {(img, err, type, url) in - DispatchQueue.main.async { - completion(img) - } - } - } -} -#endif diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerController.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerController.swift deleted file mode 100644 index bad0b76268590bb58daadf68eaf61dcd61b27d34..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerController.swift +++ /dev/null @@ -1,295 +0,0 @@ -import UIKit - -class ImageViewerController:UIViewController, -UIGestureRecognizerDelegate { - - var imageView: UIImageView = UIImageView(frame: .zero) - let imageLoader: ImageLoader - - var backgroundView:UIView? { - guard let _parent = parent as? ImageCarouselViewController - else { return nil} - return _parent.backgroundView - } - - var index:Int = 0 - var imageItem:ImageItem! - - var navBar:UINavigationBar? { - guard let _parent = parent as? ImageCarouselViewController - else { return nil} - return _parent.navBar - } - - // MARK: Layout Constraints - private var top:NSLayoutConstraint! - private var leading:NSLayoutConstraint! - private var trailing:NSLayoutConstraint! - private var bottom:NSLayoutConstraint! - - private var scrollView:UIScrollView! - - private var lastLocation:CGPoint = .zero - private var isAnimating:Bool = false - private var maxZoomScale:CGFloat = 1.0 - - init( - index: Int, - imageItem:ImageItem, - imageLoader: ImageLoader) { - - self.index = index - self.imageItem = imageItem - self.imageLoader = imageLoader - super.init(nibName: nil, bundle: nil) - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func loadView() { - let view = UIView() - - view.backgroundColor = .clear - self.view = view - - scrollView = UIScrollView() - scrollView.delegate = self - scrollView.showsVerticalScrollIndicator = false - - if #available(iOS 11.0, *) { - scrollView.contentInsetAdjustmentBehavior = .never - } else { - // Fallback on earlier versions - } - view.addSubview(scrollView) - scrollView.bindFrameToSuperview() - scrollView.backgroundColor = .clear - scrollView.addSubview(imageView) - - imageView.translatesAutoresizingMaskIntoConstraints = false - top = imageView.topAnchor.constraint(equalTo: scrollView.topAnchor) - leading = imageView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor) - trailing = scrollView.trailingAnchor.constraint(equalTo: imageView.trailingAnchor) - bottom = scrollView.bottomAnchor.constraint(equalTo: imageView.bottomAnchor) - - top.isActive = true - leading.isActive = true - trailing.isActive = true - bottom.isActive = true - - } - - override func viewDidLoad() { - super.viewDidLoad() - - switch imageItem { - case .image(let img): - imageView.image = img - imageView.layoutIfNeeded() - case .url(let url, let placeholder): - imageLoader.loadImage(url, placeholder: placeholder, imageView: imageView) { (image) in - DispatchQueue.main.async {[weak self] in - self?.layout() - } - } - default: - break - } - - addGestureRecognizers() - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - self.navBar?.alpha = 1.0 - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - self.navBar?.alpha = 0.0 - } - - override func viewWillLayoutSubviews() { - super.viewWillLayoutSubviews() - layout() - } - - private func layout() { - updateConstraintsForSize(view.bounds.size) - updateMinMaxZoomScaleForSize(view.bounds.size) - } - - // MARK: Add Gesture Recognizers - func addGestureRecognizers() { - - let panGesture = UIPanGestureRecognizer( - target: self, action: #selector(didPan(_:))) - panGesture.cancelsTouchesInView = false - panGesture.delegate = self - scrollView.addGestureRecognizer(panGesture) - - let pinchRecognizer = UITapGestureRecognizer( - target: self, action: #selector(didPinch(_:))) - pinchRecognizer.numberOfTapsRequired = 1 - pinchRecognizer.numberOfTouchesRequired = 2 - scrollView.addGestureRecognizer(pinchRecognizer) - - let singleTapGesture = UITapGestureRecognizer( - target: self, action: #selector(didSingleTap(_:))) - singleTapGesture.numberOfTapsRequired = 1 - singleTapGesture.numberOfTouchesRequired = 1 - scrollView.addGestureRecognizer(singleTapGesture) - - let doubleTapRecognizer = UITapGestureRecognizer( - target: self, action: #selector(didDoubleTap(_:))) - doubleTapRecognizer.numberOfTapsRequired = 2 - doubleTapRecognizer.numberOfTouchesRequired = 1 - scrollView.addGestureRecognizer(doubleTapRecognizer) - - singleTapGesture.require(toFail: doubleTapRecognizer) - } - - @objc - func didPan(_ gestureRecognizer: UIPanGestureRecognizer) { - guard - isAnimating == false, - scrollView.zoomScale == scrollView.minimumZoomScale - else { return } - - let container:UIView! = imageView - if gestureRecognizer.state == .began { - lastLocation = container.center - } - - if gestureRecognizer.state != .cancelled { - let translation: CGPoint = gestureRecognizer - .translation(in: view) - container.center = CGPoint( - x: lastLocation.x + translation.x, - y: lastLocation.y + translation.y) - } - - let diffY = view.center.y - container.center.y - backgroundView?.alpha = 1.0 - abs(diffY/view.center.y) - if gestureRecognizer.state == .ended { - if abs(diffY) > 60 { - dismiss(animated: true) - } else { - executeCancelAnimation() - } - } - } - - @objc - func didPinch(_ recognizer: UITapGestureRecognizer) { - var newZoomScale = scrollView.zoomScale / 1.5 - newZoomScale = max(newZoomScale, scrollView.minimumZoomScale) - scrollView.setZoomScale(newZoomScale, animated: true) - } - - @objc - func didSingleTap(_ recognizer: UITapGestureRecognizer) { - - let currentNavAlpha = self.navBar?.alpha ?? 0.0 - UIView.animate(withDuration: 0.235) { - self.navBar?.alpha = currentNavAlpha > 0.5 ? 0.0 : 1.0 - } - } - - @objc - func didDoubleTap(_ recognizer:UITapGestureRecognizer) { - let pointInView = recognizer.location(in: imageView) - zoomInOrOut(at: pointInView) - } - - func gestureRecognizerShouldBegin( - _ gestureRecognizer: UIGestureRecognizer) -> Bool { - guard scrollView.zoomScale == scrollView.minimumZoomScale, - let panGesture = gestureRecognizer as? UIPanGestureRecognizer - else { return false } - - let velocity = panGesture.velocity(in: scrollView) - return abs(velocity.y) > abs(velocity.x) - } - - -} - -// MARK: Adjusting the dimensions -extension ImageViewerController { - - func updateMinMaxZoomScaleForSize(_ size: CGSize) { - - let targetSize = imageView.bounds.size - if targetSize.width == 0 || targetSize.height == 0 { - return - } - - let minScale = min( - size.width/targetSize.width, - size.height/targetSize.height) - let maxScale = max( - (size.width + 1.0) / targetSize.width, - (size.height + 1.0) / targetSize.height) - - scrollView.minimumZoomScale = minScale - scrollView.zoomScale = minScale - maxZoomScale = maxScale - scrollView.maximumZoomScale = maxZoomScale * 1.1 - } - - - func zoomInOrOut(at point:CGPoint) { - let newZoomScale = scrollView.zoomScale == scrollView.minimumZoomScale - ? maxZoomScale : scrollView.minimumZoomScale - let size = scrollView.bounds.size - let w = size.width / newZoomScale - let h = size.height / newZoomScale - let x = point.x - (w * 0.5) - let y = point.y - (h * 0.5) - let rect = CGRect(x: x, y: y, width: w, height: h) - scrollView.zoom(to: rect, animated: true) - } - - func updateConstraintsForSize(_ size: CGSize) { - let yOffset = max(0, (size.height - imageView.frame.height) / 2) - top.constant = yOffset - bottom.constant = yOffset - - let xOffset = max(0, (size.width - imageView.frame.width) / 2) - leading.constant = xOffset - trailing.constant = xOffset - view.layoutIfNeeded() - } - -} - -// MARK: Animation Related stuff -extension ImageViewerController { - - private func executeCancelAnimation() { - self.isAnimating = true - UIView.animate( - withDuration: 0.237, - animations: { - self.imageView.center = self.view.center - self.backgroundView?.alpha = 1.0 - }) {[weak self] _ in - self?.isAnimating = false - } - } -} - -extension ImageViewerController:UIScrollViewDelegate { - - func viewForZooming(in scrollView: UIScrollView) -> UIView? { - return imageView - } - - func scrollViewDidZoom(_ scrollView: UIScrollView) { - updateConstraintsForSize(view.bounds.size) - } -} - diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerOption.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerOption.swift deleted file mode 100644 index 0921147ca0c65367975370207ffdcb14afab97d3..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerOption.swift +++ /dev/null @@ -1,10 +0,0 @@ -import UIKit - -public enum ImageViewerOption { - - case theme(ImageViewerTheme) - case contentMode(UIView.ContentMode) - case closeIcon(UIImage) - case rightNavItemTitle(String, onTap: ((Int) -> Void)?) - case rightNavItemIcon(UIImage, onTap: ((Int) -> Void)?) -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTheme.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTheme.swift deleted file mode 100644 index 357549d39fa9b78062962e0be364d23c29035b0a..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTheme.swift +++ /dev/null @@ -1,24 +0,0 @@ -import UIKit - -public enum ImageViewerTheme { - case light - case dark - - var color:UIColor { - switch self { - case .light: - return .white - case .dark: - return .black - } - } - - var tintColor:UIColor { - switch self { - case .light: - return .black - case .dark: - return .white - } - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift deleted file mode 100644 index 3802e66dd4c2328e27ab83cd7083382b574b4e3e..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift +++ /dev/null @@ -1,222 +0,0 @@ -// -// ImageViewerTransitionPresentationManager.swift -// ImageViewer.swift -// -// Created by Michael Henry Pantaleon on 2020/08/19. -// - -import Foundation -import UIKit - -protocol ImageViewerTransitionViewControllerConvertible { - - // The source view - var sourceView: UIImageView? { get } - - // The final view - var targetView: UIImageView? { get } -} - -final class ImageViewerTransitionPresentationAnimator:NSObject { - - let isPresenting: Bool - let imageContentMode: UIView.ContentMode - - var observation: NSKeyValueObservation? - - init(isPresenting: Bool, imageContentMode: UIView.ContentMode) { - self.isPresenting = isPresenting - self.imageContentMode = imageContentMode - super.init() - } -} - -// MARK: - UIViewControllerAnimatedTransitioning -extension ImageViewerTransitionPresentationAnimator: UIViewControllerAnimatedTransitioning { - - func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) - -> TimeInterval { - return 0.3 - } - - func animateTransition(using transitionContext: UIViewControllerContextTransitioning) { - let key: UITransitionContextViewControllerKey = isPresenting ? .to : .from - guard let controller = transitionContext.viewController(forKey: key) - else { return } - - let animationDuration = transitionDuration(using: transitionContext) - - if isPresenting { - presentAnimation( - transitionView: transitionContext.containerView, - controller: controller, - duration: animationDuration) { finished in - transitionContext.completeTransition(finished) - } - - } else { - dismissAnimation( - transitionView: transitionContext.containerView, - controller: controller, - duration: animationDuration) { finished in - transitionContext.completeTransition(finished) - } - } - } - - private func createDummyImageView(frame: CGRect, image:UIImage? = nil) - -> UIImageView { - let dummyImageView:UIImageView = UIImageView(frame: frame) - dummyImageView.clipsToBounds = true - dummyImageView.contentMode = imageContentMode - dummyImageView.alpha = 1.0 - dummyImageView.image = image - return dummyImageView - } - - private func presentAnimation( - transitionView:UIView, - controller: UIViewController, - duration: TimeInterval, - completed: @escaping((Bool) -> Void)) { - - guard - let transitionVC = controller as? ImageViewerTransitionViewControllerConvertible, - let sourceView = transitionVC.sourceView - else { return } - - sourceView.alpha = 0.0 - controller.view.alpha = 0.0 - - transitionView.addSubview(controller.view) - transitionVC.targetView?.alpha = 0.0 - transitionVC.targetView?.tintColor = sourceView.tintColor - - let dummyImageView = createDummyImageView( - frame: sourceView.frameRelativeToWindow(), - image: sourceView.image) - dummyImageView.contentMode = .scaleAspectFit - dummyImageView.tintColor = sourceView.tintColor - transitionView.addSubview(dummyImageView) - - UIView.animate(withDuration: duration, animations: { - dummyImageView.frame = UIScreen.main.bounds - controller.view.alpha = 1.0 - }) { [weak self] finished in - self?.observation = transitionVC.targetView?.observe(\.image, options: [.new, .initial]) { img, change in - if img.image != nil { - transitionVC.targetView?.alpha = 1.0 - dummyImageView.removeFromSuperview() - completed(finished) - } - } - } - } - - private func dismissAnimation( - transitionView:UIView, - controller: UIViewController, - duration:TimeInterval, - completed: @escaping((Bool) -> Void)) { - - guard - let transitionVC = controller as? ImageViewerTransitionViewControllerConvertible - else { return } - - let sourceView = transitionVC.sourceView - let targetView = transitionVC.targetView - - let dummyImageView = createDummyImageView( - frame: targetView?.frameRelativeToWindow() ?? UIScreen.main.bounds, - image: targetView?.image) - dummyImageView.tintColor = sourceView?.tintColor - transitionView.addSubview(dummyImageView) - targetView?.isHidden = true - - controller.view.alpha = 1.0 - UIView.animate(withDuration: duration, animations: { - if let sourceView = sourceView { - // return to original position - dummyImageView.frame = sourceView.frameRelativeToWindow() - } else { - // just disappear - dummyImageView.alpha = 0.0 - } - controller.view.alpha = 0.0 - }) { finished in - sourceView?.alpha = 1.0 - controller.view.removeFromSuperview() - completed(finished) - } - } -} - -final class ImageViewerTransitionPresentationController: UIPresentationController { - - override var frameOfPresentedViewInContainerView: CGRect { - var frame: CGRect = .zero - frame.size = size(forChildContentContainer: presentedViewController, - withParentContainerSize: containerView!.bounds.size) - return frame - } - - override func containerViewWillLayoutSubviews() { - presentedView?.frame = frameOfPresentedViewInContainerView - } -} - -final class ImageViewerTransitionPresentationManager: NSObject { - private let imageContentMode: UIView.ContentMode - - public init(imageContentMode: UIView.ContentMode) { - self.imageContentMode = imageContentMode - } - -} - -// MARK: - UIViewControllerTransitioningDelegate -extension ImageViewerTransitionPresentationManager: UIViewControllerTransitioningDelegate { - func presentationController( - forPresented presented: UIViewController, - presenting: UIViewController?, - source: UIViewController - ) -> UIPresentationController? { - let presentationController = ImageViewerTransitionPresentationController( - presentedViewController: presented, - presenting: presenting) - return presentationController - } - - func animationController( - forPresented presented: UIViewController, - presenting: UIViewController, - source: UIViewController - ) -> UIViewControllerAnimatedTransitioning? { - - return ImageViewerTransitionPresentationAnimator(isPresenting: true, imageContentMode: imageContentMode) - } - - func animationController( - forDismissed dismissed: UIViewController - ) -> UIViewControllerAnimatedTransitioning? { - return ImageViewerTransitionPresentationAnimator(isPresenting: false, imageContentMode: imageContentMode) - } -} - -// MARK: - UIAdaptivePresentationControllerDelegate -extension ImageViewerTransitionPresentationManager: UIAdaptivePresentationControllerDelegate { - - func adaptivePresentationStyle( - for controller: UIPresentationController, - traitCollection: UITraitCollection - ) -> UIModalPresentationStyle { - return .none - } - - func presentationController( - _ controller: UIPresentationController, - viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle - ) -> UIViewController? { - return nil - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewer_swift.h b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewer_swift.h deleted file mode 100644 index 9f726faf035397be39cc64736e48bac48f6dcdad..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/ImageViewer_swift.h +++ /dev/null @@ -1,11 +0,0 @@ -#import <Foundation/Foundation.h> - -//! Project version number for ImageViewer_swift. -FOUNDATION_EXPORT double ImageViewer_swiftVersionNumber; - -//! Project version string for ImageViewer_swift. -FOUNDATION_EXPORT const unsigned char ImageViewer_swiftVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import <ImageViewer_swift/PublicHeader.h> - - diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/SimpleImageDatasource.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/SimpleImageDatasource.swift deleted file mode 100644 index c79c9a685a5272a72b8b666a0e7b6a59a0d9c06b..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/SimpleImageDatasource.swift +++ /dev/null @@ -1,16 +0,0 @@ -class SimpleImageDatasource:ImageDataSource { - - private(set) var imageItems:[ImageItem] - - init(imageItems: [ImageItem]) { - self.imageItems = imageItems - } - - func numberOfImages() -> Int { - return imageItems.count - } - - func imageItem(at index: Int) -> ImageItem { - return imageItems[index] - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIImageView_Extensions.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIImageView_Extensions.swift deleted file mode 100644 index 3d4f7fe77bfd00516c41224fcbc2e17eab4668d9..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIImageView_Extensions.swift +++ /dev/null @@ -1,162 +0,0 @@ -import UIKit - -extension UIImageView { - - // Data holder tap recognizer - private class TapWithDataRecognizer:UITapGestureRecognizer { - weak var from:UIViewController? - var imageDatasource:ImageDataSource? - var imageLoader:ImageLoader? - var initialIndex:Int = 0 - var options:[ImageViewerOption] = [] - } - - private var vc:UIViewController? { - guard let rootVC = UIApplication.shared.keyWindow?.rootViewController - else { return nil } - return rootVC.presentedViewController != nil ? rootVC.presentedViewController : rootVC - } - - public func setupImageViewer( - options:[ImageViewerOption] = [], - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - setup( - datasource: SimpleImageDatasource(imageItems: [.image(image)]), - options: options, - from: from, - imageLoader: imageLoader) - } - - public func setupImageViewer( - url:URL, - initialIndex:Int = 0, - placeholder: UIImage? = nil, - options:[ImageViewerOption] = [], - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - let datasource = SimpleImageDatasource( - imageItems: [url].compactMap { - ImageItem.url($0, placeholder: placeholder) - }) - setup( - datasource: datasource, - initialIndex: initialIndex, - options: options, - from: from, - imageLoader: imageLoader) - } - - public func setupImageViewer( - images:[UIImage], - initialIndex:Int = 0, - options:[ImageViewerOption] = [], - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - let datasource = SimpleImageDatasource( - imageItems: images.compactMap { - ImageItem.image($0) - }) - setup( - datasource: datasource, - initialIndex: initialIndex, - options: options, - from: from, - imageLoader: imageLoader) - } - - public func setupImageViewer( - urls:[URL], - initialIndex:Int = 0, - options:[ImageViewerOption] = [], - placeholder: UIImage? = nil, - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - let datasource = SimpleImageDatasource( - imageItems: urls.compactMap { - ImageItem.url($0, placeholder: placeholder) - }) - setup( - datasource: datasource, - initialIndex: initialIndex, - options: options, - from: from, - imageLoader: imageLoader) - } - - public func setupImageViewer( - datasource:ImageDataSource, - initialIndex:Int = 0, - options:[ImageViewerOption] = [], - from:UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - setup( - datasource: datasource, - initialIndex: initialIndex, - options: options, - from: from, - imageLoader: imageLoader) - } - - private func setup( - datasource:ImageDataSource?, - initialIndex:Int = 0, - options:[ImageViewerOption] = [], - from: UIViewController? = nil, - imageLoader:ImageLoader? = nil) { - - var _tapRecognizer:TapWithDataRecognizer? - gestureRecognizers?.forEach { - if let _tr = $0 as? TapWithDataRecognizer { - // if found, just use existing - _tapRecognizer = _tr - } - } - - isUserInteractionEnabled = true - - var imageContentMode: UIView.ContentMode = .scaleAspectFill - options.forEach { - switch $0 { - case .contentMode(let contentMode): - imageContentMode = contentMode - default: - break - } - } - contentMode = imageContentMode - - clipsToBounds = true - - if _tapRecognizer == nil { - _tapRecognizer = TapWithDataRecognizer( - target: self, action: #selector(showImageViewer(_:))) - _tapRecognizer!.numberOfTouchesRequired = 1 - _tapRecognizer!.numberOfTapsRequired = 1 - } - // Pass the Data - _tapRecognizer!.imageDatasource = datasource - _tapRecognizer!.imageLoader = imageLoader - _tapRecognizer!.initialIndex = initialIndex - _tapRecognizer!.options = options - _tapRecognizer!.from = from - addGestureRecognizer(_tapRecognizer!) - } - - @objc - private func showImageViewer(_ sender:TapWithDataRecognizer) { - guard let sourceView = sender.view as? UIImageView else { return } - let imageCarousel = ImageCarouselViewController.init( - sourceView: sourceView, - imageDataSource: sender.imageDatasource, - imageLoader: sender.imageLoader ?? URLSessionImageLoader(), - options: sender.options, - initialIndex: sender.initialIndex) - let presentFromVC = sender.from ?? vc - presentFromVC?.present(imageCarousel, animated: true) - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UINavigationBar_Extensions.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UINavigationBar_Extensions.swift deleted file mode 100644 index 7d1c138d8b9a7ed604927c374db4a44753f84afc..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UINavigationBar_Extensions.swift +++ /dev/null @@ -1,19 +0,0 @@ -import UIKit - -extension UINavigationBar { - - func insert(to view: UIView) { - view.addSubview(self) - translatesAutoresizingMaskIntoConstraints = false - leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true - rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true - - if #available(iOS 11.0, *) { - topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor) - .isActive = true - } else { - topAnchor.constraint(equalTo: view.topAnchor) - .isActive = true - } - } -} diff --git a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIView_Extensions.swift b/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIView_Extensions.swift deleted file mode 100644 index 15f35ec988ec642e83d17e47a4550b232d89cd98..0000000000000000000000000000000000000000 --- a/Pods/ImageViewer.swift/Sources/ImageViewer_swift/UIView_Extensions.swift +++ /dev/null @@ -1,20 +0,0 @@ -import UIKit - -extension UIView { - func bindFrameToSuperview(top:CGFloat = 0, leading: CGFloat = 0, trailing:CGFloat = 0, bottom:CGFloat = 0) { - guard let superview = self.superview else { return } - self.translatesAutoresizingMaskIntoConstraints = false - self.topAnchor.constraint(equalTo: superview.topAnchor, constant: top).isActive = true - self.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: leading).isActive = true - superview.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: trailing).isActive = true - superview.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: bottom).isActive = true - } - - func bindFrameToSuperview(margin:CGFloat) { - bindFrameToSuperview(top: margin, leading: margin, trailing: margin, bottom: margin) - } - - func frameRelativeToWindow() -> CGRect { - return convert(bounds, to: nil) - } -} diff --git a/Pods/LanguageManager-iOS/LICENSE b/Pods/LanguageManager-iOS/LICENSE deleted file mode 100644 index 46273a97f8f642612e8cf4ef5c6783469f373323..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2017 Abedalkareem - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift deleted file mode 100644 index 1a130b78b3a6b313a4535dac67ee5d5e07880a33..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift +++ /dev/null @@ -1,13 +0,0 @@ -// -// DefaultsKeys.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -enum DefaultsKeys: String { - case selectedLanguage = "LanguageManagerSelectedLanguage" - case defaultLanguage = "LanguageManagerDefaultLanguage" -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/Languages.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/Languages.swift deleted file mode 100644 index 1ed7cc7f9b1ede25e22bf90707585d052087551b..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/Languages.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// Languages.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -public enum Languages: String { - case ar, en, nl, ja, ko, vi, ru, sv, fr, es, pt, it, de, da, fi, nb, tr, el, id, - ms, th, hi, hu, pl, cs, sk, uk, hr, ca, ro, he, ur, fa, ku, arc, sl, ml, am, zh, mn, ka, sw - case enGB = "en-GB" - case enAU = "en-AU" - case enCA = "en-CA" - case enIN = "en-IN" - case frCA = "fr-CA" - case esMX = "es-MX" - case ptBR = "pt-BR" - case zhHans = "zh-Hans" - case zhHant = "zh-Hant" - case zhHK = "zh-HK" - case es419 = "es-419" - case ptPT = "pt-PT" - case deviceLanguage -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/ViewDirection.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/ViewDirection.swift deleted file mode 100644 index 5c1d2251fcd303a4ef44726fa59914b4eb1b6492..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Constants/ViewDirection.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// ViewDirection.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -public enum ViewDirection: Int { - case fixed, leftToRight, rightToLeft -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift deleted file mode 100644 index bd9bbfe8dd6c66f7d1a9fe169dd14052c6ee2ddb..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// String+Helpers.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -public extension String { - - /// - /// Localize the current string to the selected language - /// - /// - returns: The localized string - /// - func localiz(comment: String = "") -> String { - guard let bundle = Bundle.main.path(forResource: LanguageManager.shared.currentLanguage.rawValue, - ofType: "lproj") else { - return NSLocalizedString(self, comment: comment) - } - - let langBundle = Bundle(path: bundle) - return NSLocalizedString(self, tableName: nil, bundle: langBundle!, comment: comment) - } - -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift deleted file mode 100644 index c669713883d67dddae18c457a9b9839b58316f13..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// UIButton+Direction.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import UIKit - -@IBDesignable -public extension UIButton { - /// - /// Change the direction of the image depeneding in the language, there is no return value for this variable. - /// The expectid values: - /// - /// -`fixed`: if the image must not change the direction depending on the language you need to set the value as 0. - /// - /// -`leftToRight`: if the image must change the direction depending on the language - /// and the image is left to right image then you need to set the value as 1. - /// - /// -`rightToLeft`: if the image must change the direction depending on the language - /// and the image is right to left image then you need to set the value as 2. - /// - @IBInspectable var imageDirection: Int { - get { - return direction.rawValue - } - set { - direction = ViewDirection(rawValue: newValue)! - } - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift deleted file mode 100644 index d68735afc69e4cb5d7188ff769b8c9153a163350..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// UIImageView+Direction.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import UIKit - -@IBDesignable -public extension UIImageView { - /// - /// Change the direction of the image depeneding in the language, there is no return value for this variable. - /// The expectid values: - /// - /// -`fixed`: if the image must not change the direction depending on the language you need to set the value as 0. - /// - /// -`leftToRight`: if the image must change the direction depending on the language - /// and the image is left to right image then you need to set the value as 1. - /// - /// -`rightToLeft`: if the image must change the direction depending on the language - /// and the image is right to left image then you need to set the value as 2. - /// - @IBInspectable var imageDirection: Int { - get { - return direction.rawValue - } - set { - direction = ViewDirection(rawValue: newValue)! - } - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift deleted file mode 100644 index 0d9172c7a43364478631fe192ca87850a26d24e0..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift +++ /dev/null @@ -1,44 +0,0 @@ -// -// UIView+Direction.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import UIKit - -extension UIView { - /// - /// Change the direction of the view depeneding in the language, there is no return value for this variable. - /// - /// The expectid values: - /// - /// -`fixed`: if the view must not change the direction depending on the language. - /// - /// -`leftToRight`: if the view must change the direction depending on the language - /// and the view is left to right view. - /// - /// -`rightToLeft`: if the view must change the direction depending on the language - /// and the view is right to left view. - /// - var direction: ViewDirection { - get { - fatalError(""" - There is no value return from this variable, - this variable used to change the view direction depending on the langauge - """) - } - set { - switch newValue { - case .fixed: - break - case .leftToRight where LanguageManager.shared.isRightToLeft: - transform = CGAffineTransform(scaleX: -1, y: 1) - case .rightToLeft where !LanguageManager.shared.isRightToLeft: - transform = CGAffineTransform(scaleX: -1, y: 1) - default: - break - } - } - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift deleted file mode 100644 index 0a5fed81fdafacafc5623a00e0fb29bcb4b58ed3..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift +++ /dev/null @@ -1,58 +0,0 @@ -// -// UIView+Swizzling.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import UIKit - -extension UIView { - static func localize() { - - let orginalSelector = #selector(awakeFromNib) - let swizzledSelector = #selector(swizzledAwakeFromNib) - - let orginalMethod = class_getInstanceMethod(self, orginalSelector) - let swizzledMethod = class_getInstanceMethod(self, swizzledSelector) - - let didAddMethod = class_addMethod(self, - orginalSelector, - method_getImplementation(swizzledMethod!), - method_getTypeEncoding(swizzledMethod!)) - - if didAddMethod { - class_replaceMethod(self, - swizzledSelector, - method_getImplementation(orginalMethod!), - method_getTypeEncoding(orginalMethod!)) - } else { - method_exchangeImplementations(orginalMethod!, swizzledMethod!) - } - - } - - @objc - func swizzledAwakeFromNib() { - swizzledAwakeFromNib() - - switch self { - case let txtf as UITextField: - txtf.text = txtf.text?.localiz() - txtf.placeholder = txtf.placeholder?.localiz() - case let lbl as UILabel: - lbl.text = lbl.text?.localiz() - case let tabbar as UITabBar: - tabbar.items?.forEach({ $0.title = $0.title?.localiz() }) - case let btn as UIButton: - btn.setTitle(btn.title(for: .normal)?.localiz(), for: .normal) - case let sgmnt as UISegmentedControl: - (0 ..< sgmnt.numberOfSegments) - .forEach { sgmnt.setTitle(sgmnt.titleForSegment(at: $0)?.localiz(), forSegmentAt: $0) } - case let txtv as UITextView: - txtv.text = txtv.text?.localiz() - default: - break - } - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Storage.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Storage.swift deleted file mode 100644 index 57aa59dbc3d6e05ad717a24b004b31fba6580d68..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Helpers/Storage.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// Storage.swift -// LanguageManager-iOS -// -// Created by abedalkareem omreyh on 10/11/2020. -// - -import Foundation - -class Storage { - - // MARK: - Private properties - - private var defaults: UserDefaults { - UserDefaults.standard - } - - // MARK: - Methods - - func string(forKey key: DefaultsKeys) -> String? { - defaults.string(forKey: key.rawValue) - } - - func set(_ value: String, forKey: DefaultsKeys) { - defaults.set(value, forKey: forKey.rawValue) - } -} diff --git a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Main/LanguageManager.swift b/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Main/LanguageManager.swift deleted file mode 100755 index afa115bcb2dbdeef70d46f86902933f4903db99f..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/LanguageManager-iOS/Classes/Main/LanguageManager.swift +++ /dev/null @@ -1,215 +0,0 @@ -// -// LanguageManager.swift -// -// Created by abedalkareem omreyh on 10/23/17. -// Copyright © 2017 abedlkareem omreyh. All rights reserved. -// GitHub: https://github.com/Abedalkareem/LanguageManager-iOS -// The MIT License (MIT) -// -// Copyright (c) 2017 Abedalkareem -// -// 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 class LanguageManager { - - public typealias Animation = ((UIView) -> Void) - public typealias ViewControllerFactory = ((String?) -> UIViewController) - public typealias WindowAndTitle = (UIWindow?, String?) - - // MARK: - Private properties - - private var storage = Storage() - - // MARK: - Properties - - /// - /// The singleton LanguageManager instance. - /// - public static let shared = LanguageManager() - - /// - /// Current app language. - /// *Note, This property just to get the current lanuage, - /// To set the language use: - /// `setLanguage(language:, for:, viewControllerFactory:, animation:)`* - /// - public private(set) var currentLanguage: Languages { - get { - guard let currentLang = storage.string(forKey: .selectedLanguage) else { - fatalError("Did you set the default language for the app?") - } - return Languages(rawValue: currentLang)! - } - set { - storage.set(newValue.rawValue, forKey: .selectedLanguage) - } - } - - /// - /// The default language that the app will run with first time. - /// You need to set the `defaultLanguage` in the `AppDelegate`, specifically in - /// the first line inside the `application(_:willFinishLaunchingWithOptions:)` method. - /// - public var defaultLanguage: Languages { - get { - guard let defaultLanguage = storage.string(forKey: .defaultLanguage) else { - fatalError("Did you set the default language for the app?") - } - return Languages(rawValue: defaultLanguage)! - } - set { - // swizzle the awakeFromNib from nib and localize the text in the new awakeFromNib - UIView.localize() - - let defaultLanguage = storage.string(forKey: .defaultLanguage) - guard defaultLanguage == nil else { - // If the default language has been set before, - // that means that the user opened the app before and maybe - // he changed the language so here the `currentLanguage` is being set. - setLanguage(language: currentLanguage) - return - } - - var language = newValue - if language == .deviceLanguage { - language = deviceLanguage ?? .en - } - - storage.set(language.rawValue, forKey: .defaultLanguage) - storage.set(language.rawValue, forKey: .selectedLanguage) - setLanguage(language: language) - } - } - - /// - /// The device language is deffrent than the app language, - /// to get the app language use `currentLanguage`. - /// - public var deviceLanguage: Languages? { - guard let deviceLanguage = Bundle.main.preferredLocalizations.first else { - return nil - } - return Languages(rawValue: deviceLanguage) - } - - /// The diriction of the language. - public var isRightToLeft: Bool { - return isLanguageRightToLeft(language: currentLanguage) - } - - /// The app locale to use it in dates and currency. - public var appLocale: Locale { - return Locale(identifier: currentLanguage.rawValue) - } - - // MARK: - Public Methods - - /// - /// Set the current language of the app - /// - /// - parameter language: The language that you need the app to run with. - /// - parameter windows: The windows you want to change the `rootViewController` for. if you didn't - /// set it, it will change the `rootViewController` for all the windows in the - /// scenes. - /// - parameter viewControllerFactory: A closure to make the `ViewController` for a specific `scene`, - /// you can know for which `scene` you need to make the controller you can check - /// the `title` sent to this clouser, this title is the `title` of the `scene`, - /// so if there is 5 scenes this closure will get called 5 times - /// for each scene window. - /// - parameter animation: A closure with the current view to animate to the new view controller, - /// so you need to animate the view, move it out of the screen, change the alpha, - /// or scale it down to zero. - /// - public func setLanguage(language: Languages, - for windows: [WindowAndTitle]? = nil, - viewControllerFactory: ViewControllerFactory? = nil, - animation: Animation? = nil) { - - changeCurrentLanguageTo(language) - - guard let viewControllerFactory = viewControllerFactory else { - return - } - - let windowsToChange = getWindowsToChangeFrom(windows) - - windowsToChange?.forEach({ windowAndTitle in - let (window, title) = windowAndTitle - let viewController = viewControllerFactory(title) - changeViewController(for: window, - rootViewController: viewController, - animation: animation) - }) - - } - - // MARK: - Private Methods - - private func changeCurrentLanguageTo(_ language: Languages) { - // change the dircation of the views - let semanticContentAttribute: UISemanticContentAttribute = isLanguageRightToLeft(language: language) ? - .forceRightToLeft : - .forceLeftToRight - UIView.appearance().semanticContentAttribute = semanticContentAttribute - - // set current language - currentLanguage = language - } - - private func getWindowsToChangeFrom(_ windows: [WindowAndTitle]?) -> [WindowAndTitle]? { - var windowsToChange: [WindowAndTitle]? - if let windows = windows { - windowsToChange = windows - } else { - if #available(iOS 13.0, *) { - windowsToChange = UIApplication.shared.connectedScenes - .compactMap({ $0 as? UIWindowScene }) - .map({ ($0.windows.first, $0.title) }) - } else { - windowsToChange = [(UIApplication.shared.keyWindow, nil)] - } - } - - return windowsToChange - } - - private func changeViewController(for window: UIWindow?, - rootViewController: UIViewController, - animation: Animation? = nil) { - guard let snapshot = window?.snapshotView(afterScreenUpdates: true) else { - return - } - rootViewController.view.addSubview(snapshot) - - window?.rootViewController = rootViewController - - UIView.animate(withDuration: 0.5, animations: { - animation?(snapshot) - }, completion: { _ in - snapshot.removeFromSuperview() - }) - } - - private func isLanguageRightToLeft(language: Languages) -> Bool { - return Locale.characterDirection(forLanguage: language.rawValue) == .rightToLeft - } - -} diff --git a/Pods/LanguageManager-iOS/README.md b/Pods/LanguageManager-iOS/README.md deleted file mode 100644 index 05158a72ac089f5d2ebf975c1d9a97a705e8775a..0000000000000000000000000000000000000000 --- a/Pods/LanguageManager-iOS/README.md +++ /dev/null @@ -1,105 +0,0 @@ -<p align="center"> -<img src="https://github.com/Abedalkareem/LanguageManager-iOS/blob/master/Images/logo.png?raw=true" width="150"> </center> -</p> -<br> - -A Language manager to handle changing app language without restarting the app. - -<br> - - -## ScreenShots - -<img src="https://raw.githubusercontent.com/Abedalkareem/LanguageManager-iOS/master/Images/screenrec.gif" width="450"> - - -## LanguageManager-SwiftUI - -For SwiftUI please visit the [LanguageManager-SwiftUI](https://github.com/Abedalkareem/LanguageManager-SwiftUI) - -## Usage - -<a href="http://www.youtube.com/watch?v=CuZb8nUglcg">Youtube: iOS - Support multiple languages (Localization).</a> <br> -[](http://www.youtube.com/watch?v=CuZb8nUglcg "iOS - Support multiple languages (Localization).") - -First of all, remember to add the ```Localizable.strings``` to your project, after adding the ```Localizable.strings``` file, select it then go to file inspector and below localization press localize, after that go to ```PROJECT > Localisation``` then add the languages you want to support (Arabic for example), dialog will appear to ask you which resource file you want to localize, select just the ```Localizable.strings``` file. <br> <br> -Now, go to your storyboard and add ```UILable``` and add text to it, for example ```"Hello !"```, then go to your ```Localizable.strings``` file expand it, you will find Localizable strings file for English and Arabic, for English, add this line with the string you used in the ```UILabel``` inside the storyboard <br> -```"Hello !" = "Hello !";``` <br> -and for Arabic file : <br> -```"Hello !" = "مرحبا !";``` <br> - - -<br> -After that in the `didFinishLaunchingWithOptions` method inside the `AppDelegate.swift` file, set your default language that your app will run first time - -```swift -LanguageManager.shared.defaultLanguage = .en // you can use .deviceLanguage to keep the device default language. -``` - -If you want to change the language use the ```setLanguage(language:)``` method by passing to it the new language - -```swift - @IBAction func changeLanguage(_ sender: UIButton) { - - let selectedLanguage: Languages = sender.tag == 1 ? .en : .ar - - // change the language - LanguageManager.shared.setLanguage(language: selectedLanguage) - { title -> UIViewController in - let storyboard = UIStoryboard(name: "Main", bundle: nil) - // the view controller that you want to show after changing the language - return storyboard.instantiateInitialViewController()! - } animation: { view in - // do custom animation - view.transform = CGAffineTransform(scaleX: 2, y: 2) - view.alpha = 0 - } - } -``` - -If you have an image and you want to change the direction of the image depending on the language, you can use image direction property, the property can be one of the following values: - --`fixed`: if the image must not change the direction depending on the language, you need to set the value as 0. - --`leftToRight`: if the image must change the direction depending on the language -and the image is left to right image then you need to set the value as 1. - --`rightToLeft`: if the image must change the direction depending on the language -and the image is right to left image then you need to set the value as 2. - -<img src="https://raw.githubusercontent.com/Abedalkareem/LanguageManager-iOS/master/Images/ibdesignable.png" width="450"> - -Please check the example project to see how it works. - -## Installation - -LanguageManager-iOS is available through [CocoaPods](https://cocoapods.org). To install -it, simply add the following line to your Podfile: - -```ruby -pod 'LanguageManager-iOS' -``` - -Or you can use [Carthage](https://github.com/Carthage/Carthage). - -``` -github "Abedalkareem/LanguageManager-iOS" -``` - -You can also use [Swift Package Manager](https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app). - -## Support me 🚀 - -You can support this project by: - -1- Checking my [apps](https://apps.apple.com/us/developer/id928910207). -2- Star the repo. -3- Share the repo with your friends. - -## Follow me ❤️ - -[Facebook](https://www.facebook.com/Abedalkareem.Omreyh/) | [Twitter](https://twitter.com/abedalkareemomr) | [Instagram](https://instagram.com/abedalkareemomreyh/) | [Youtube](https:/٧٦٧٦٩٦٧٠ /www.youtube.com/user/AbedalkareemOmreyh) - -## License - -Please check the license file. diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 962dfd39f22fab0a1f7ee5abc8316eb80afca8d7..197ff527782a4945563d2f4f6fb999234cab6e53 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,36 +1,20 @@ PODS: - EPSignature (1.0.6) - - ImageViewer.swift (3.3.8) - - IQKeyboardManagerSwift (7.0.3) - - LanguageManager-iOS (1.2.7) - NBBottomSheet (1.2.0) - - Toast-Swift (5.1.1) DEPENDENCIES: - EPSignature - - ImageViewer.swift (~> 3.0) - - IQKeyboardManagerSwift - - LanguageManager-iOS - NBBottomSheet - - Toast-Swift SPEC REPOS: trunk: - EPSignature - - ImageViewer.swift - - IQKeyboardManagerSwift - - LanguageManager-iOS - NBBottomSheet - - Toast-Swift SPEC CHECKSUMS: EPSignature: 3fa3b520c80717b98019723faa60a41794b03fbc - ImageViewer.swift: 284cd8127d31af8e5938674fb9f8e695a4cdf6c6 - IQKeyboardManagerSwift: f9c5dc36cba16ddd2e51fa7d51c34a2e083029b5 - LanguageManager-iOS: 6b2dbb3793445827114708f0759b76e96932d7c8 NBBottomSheet: aa7a52809b2d7b193f733247b8ce391a59904372 - Toast-Swift: 7a03a532afe3a560d4044bc7c237e2864d295173 -PODFILE CHECKSUM: 9775166299988c84acdb7600ce83319349809cb9 +PODFILE CHECKSUM: 7dc47ad90dd5bf8f4d9fb5feaf1b44cbe52e897a -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index c592913579f7df57ab796b8b80ac5fca07c7f3d1..7a6e41248e7f9e390f2d5903eb5f0b79811dbed9 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,344 +7,92 @@ objects = { /* Begin PBXBuildFile section */ - 0615219BFD2EBBE27FF41C2C8816791E /* IQTextFieldViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17005516AECC44640576DA5164FDB65E /* IQTextFieldViewInfo.swift */; }; - 0718CCD0E19136B8DB2A7D4C6585E3ED /* LanguageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 960AF11999B2A894B5169B422BF12FE4 /* LanguageManager.swift */; }; - 07F7FEADEEC19C1818C92894406EE311 /* UINavigationBar_Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E99695448BB4EA162AD177960DBEC1BB /* UINavigationBar_Extensions.swift */; }; - 08822D4E49DB8618D27BAEDED7911733 /* IQKeyboardManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 900BB5CFA6B47D29E110933244F58449 /* IQKeyboardManager+Internal.swift */; }; - 08C234F2981017EEF271582022F339F3 /* IQUIView+IQKeyboardToolbarDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9809B6990F88A273200A6FB37E4386E /* IQUIView+IQKeyboardToolbarDeprecated.swift */; }; - 0A4DB572ACD97EC492C4E93A0FFB2E47 /* IQTextFieldViewListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 414C89E33EB4D8A44D82A4E98DE5565E /* IQTextFieldViewListener.swift */; }; - 0EF056C9B77C11BF2BEF81888B17769C /* ImageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F083907BC24781499FDEE1620DB89110 /* ImageItem.swift */; }; - 103FE4EEFF1BE8BAD0FA047987AFED74 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2CF31620D028C1CCA7BA4731E81B6C9D /* IQUIView+Hierarchy.swift */; }; - 10D1A87F45AFB52D2B34D9ABA1A86105 /* UIImageView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8356D39B1D7094CE112D14AFFCB419B7 /* UIImageView+Direction.swift */; }; - 14063E1AF70EDDC9F33C8E08DCA0BEF3 /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6181C5C905D6F417E99706D739C8A3A1 /* IQPreviousNextView.swift */; }; - 154362EFC8EC0F61F54E24B09266DEB1 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1359935F9974FC169C02584D31EB3ADC /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */; }; - 15BEDD8F76A1ADF659597113D96C97CF /* UIImageView_Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7315BFBE8EBD0F2C0D6CE97F982C9069 /* UIImageView_Extensions.swift */; }; - 15F04D15A4DC87FF877C2857720F8D72 /* Toast-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BF0BFBEA7071CD62777B3661360B1AFD /* Toast-Swift-dummy.m */; }; - 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4A52BED6B36260F78D9759112FE066 /* NBBottomSheetPresentationController.swift */; }; - 1A7787DB0275CF4A44CA312DD3BA5D33 /* EPSignatureViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 42E4F8E67126057EC888EFDC10BA3DDD /* EPSignatureViewController.xib */; }; - 1C3881B0113D3219398154E16AA4413C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12E8962DF01D0F73372CED14D7E4F6D4 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */; }; - 2039598D067E7D39727311391022D3A3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - 237A96A092EA5A5B0CB41160BEA22E16 /* Toast-Swift-Toast-Swift in Resources */ = {isa = PBXBuildFile; fileRef = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */; }; - 23D11E770DF137CBF802A30E2B19C054 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - 24C699F9653980B77F44634EF44641C1 /* IQKeyboardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 392B95135956F8BFD2BD794C459E180A /* IQKeyboardInfo.swift */; }; - 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5DCAF7921EC15817545E2C255BC27D5 /* NBBottomSheetTransitioningDelegate.swift */; }; - 3452528F3B9B79AD67D45FEA174F71E4 /* IQUICollectionView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 005537FD214FB7AF75AEABD1381F2ED7 /* IQUICollectionView+Additions.swift */; }; - 34BDB069A96125DAF2FEF6FF93A3F6AF /* IQToolbarPlaceholderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 757EB6FDC52B1FC003926AA07A86E8C5 /* IQToolbarPlaceholderConfiguration.swift */; }; - 35699581E68E1E6F640C681EEDEEE2B6 /* EPSignature-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FA1E0D437A4D407F87C451B63A101490 /* EPSignature-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A125CBE2A769DCFA442C7B9188F5994 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38CBE3196BDD577B5E72BC65508A77F8 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1A9AD095397B2255EC06CD994A45C27 /* IQTextView.swift */; }; - 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - 3E21C9612D00C6B92D3FCE3589917729 /* UIView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF1A9B4B0069DCB3CD78CE9AFDFB4AB /* UIView+Direction.swift */; }; - 4017CF2B3EE45E7E579E68E6FCFBF732 /* IQKeyboardManager+UIKeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB65FF2384D17A78A0FEEC199D4B6471 /* IQKeyboardManager+UIKeyboardNotification.swift */; }; - 42B931814C7B25871333D5DA9A0E2A41 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F01860EA41E94EA9E52A6FC477110E6 /* IQKeyboardReturnKeyHandler.swift */; }; - 48A4D5E4D954CB4212E540A92570BBF0 /* UIView+Swizzling.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0668626D9926F6CE57864C747CEEF9E4 /* UIView+Swizzling.swift */; }; - 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */ = {isa = PBXBuildFile; fileRef = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; }; - 4ED2AE6187D476E7382AD69C5908A586 /* ImageViewer.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DFC2CF7F3DB84126054E7B91671C8CFC /* ImageViewer.swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 524FC16C683888AB0462F4DD6BDB5725 /* ImageLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1A2D57CBACA8ECA7983B665AA1DCBAA /* ImageLoader.swift */; }; - 54BAE903D82C39392943869866252D93 /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE11B8C15341D9CDF0972B066E0E18F9 /* IQNSArray+Sort.swift */; }; - 597994C3AE8908B1E462BC03AC8C23FB /* IQKeyboardManagerCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08503E375F5DA3F7DE5AD83AB160CF40 /* IQKeyboardManagerCompatible.swift */; }; - 59D76AD0378678CB0D3236021BF96A09 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */; }; - 5AB7C5D27CA6D49509FB1B87C95D5C9B /* Pods-MiniScanner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D35C19C362961F919BE9820991D761E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - 5F0469C5B154DC20B844EA2A9B7F8D42 /* IQPlaceholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A667127B2C277764D5CAD60BBAC94CA /* IQPlaceholderable.swift */; }; - 5F62DAE67CF97B7C42471EA91B79AA9A /* IQTextFieldViewInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0FD4D5BFC8D1FE707AEC705F835CA64 /* IQTextFieldViewInfoModel.swift */; }; - 61E476CDBAC0F819982D258267423D8F /* ImageViewerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F78BE606608A1BC48D0AB5488FEF220A /* ImageViewerController.swift */; }; - 6418A8A5D32E73D898AB155952180B0C /* LanguageManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F91C093ED7B1A58B9C59D5B85DC0374 /* LanguageManager-iOS-dummy.m */; }; - 64F33F487DE5F9FE3C20F2C3FB5AB085 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 0321B651FFD7BE92EE97707E2CD9077C /* PrivacyInfo.xcprivacy */; }; - 674C6B2E317E657D8EAD3CC73F608540 /* IQKeyboardManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0420E9FB2A54DB55ECF95432358052BB /* IQKeyboardManager+Debug.swift */; }; - 6D55C34EF7CE4718D8B2FE6CE95C5674 /* DefaultsKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5345F3CC88236EB713719B9684427DF /* DefaultsKeys.swift */; }; - 6F875A0983E3FB0E0CC0BDA6376F73E8 /* String+Localiz.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4B89D5340E9A3D93064EC99E8091E15 /* String+Localiz.swift */; }; - 701904768C60A3F9060518DD58EC2882 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83431FDB65F2866361AB9532FF025216 /* IQToolbar.swift */; }; - 733CF7F19636AFF4A97708DFDE0AE53C /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A1FFA445855E537858C2A2102D8075 /* IQKeyboardManagerSwift-dummy.m */; }; - 7586D1882B962E1E31C28CC6396668B3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */; }; - 797DF46337EAC66E47C5ADAF32515524 /* NBBottomSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 57947335957481465C8757C3D7561A44 /* NBBottomSheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B2263CFC47393D3FB5CD8D5F7EB57AD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */; }; - 8086BD2DB5F1A0CC88E4F3386570A21C /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18CBA833812BB5BA28B7D9A586E13FD6 /* IQUITextFieldView+Additions.swift */; }; - 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC5EBA409FC91D5F3514DF63A0EB302A /* NBConfiguration.swift */; }; - 82950EE4BDD57F74749742A3E1566073 /* IQKeyboardManager+UITextFieldViewNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD594C3B4E7F741A5F6879BAD9102D6D /* IQKeyboardManager+UITextFieldViewNotification.swift */; }; - 852E6AB133CF7BDE7DE7D836AE201868 /* Languages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33BE3AAA190504ECB00EE2CCC8637B5A /* Languages.swift */; }; - 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D212C85376884AB5C4668DBA49DDDF49 /* NBBottomSheetDismissalTransition.swift */; }; - 8ED2E941DF0803C8AA331D0D8C722615 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61AC252473E61EBEA2741BD3B62C44C1 /* IQBarButtonItem.swift */; }; - 8FDA28363A5E49017498FD69AAA8F59F /* IQKeyboardListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527814487B4E944AB1448A2B1F3DF1A3 /* IQKeyboardListener.swift */; }; - 907FCA3049CAAF64B579D08D339D118D /* IQBarButtonItemConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7785B233B8110C51D40D5C00B38DA9F6 /* IQBarButtonItemConfiguration.swift */; }; - 93C0AD77AB416AE90A6BD03E44A9B684 /* EPSignature-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4132102B3811026C0FA8B7512EBC2601 /* EPSignature-dummy.m */; }; - 94F893223EB4C1C0F829C17900114AFA /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAD7429B43D433D607F44E0D774B1A31 /* IQUIScrollView+Additions.swift */; }; - 98A4D0D5928A35C7DB3D9272187789A8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 840FA0B75AF62912A30DDC66B647ED98 /* CoreGraphics.framework */; }; - 9A00A25ED34A7687C62B02EBB76C1248 /* IQKeyboardConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0DB6F7515A79425490CE2C45D5814E8 /* IQKeyboardConfiguration.swift */; }; - 9E704111CAAACBF64155A576FC337323 /* LanguageManager-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F25D3C2E5BF000995E17A861BB22DD94 /* LanguageManager-iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F78D56352F7D932DCEBE416C668C7BA /* IQKeyboardManager+ToolbarActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21A8CF35A5BAD74338B110E46C3BF14 /* IQKeyboardManager+ToolbarActions.swift */; }; - A4AE2538C33D06CB8C70D5FF35A65D98 /* EPSignatureViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 800A055821CD9469429504DE4CCE6122 /* EPSignatureViewController.swift */; }; - A5E69CC013C4311C8AF52C7F7AB095C9 /* IQUITableView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8F72EB71F1ED1788133B0C5B21824E /* IQUITableView+Additions.swift */; }; - AB8B0F2C54FFDE0C5809F687C973CF12 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - AE7D065E1D48171258FD8F07F7CD592C /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22F9A10C284AAB590E7C4E7A82AC4EC7 /* IQKeyboardManagerConstants.swift */; }; - AF715064CF6458D3D89BB563DFDB00C6 /* UIButton+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A2884C9052277C44C03FFD8F25BF442 /* UIButton+Direction.swift */; }; - B1A786B1A2F11EBD1BF77305EEB710F5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */; }; - B1BFC54288364884DDEAE75027BABE1A /* IQActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = A025312E27CC4428B6F282B56E170285 /* IQActiveConfiguration.swift */; }; - B6EF20981D365C6945DA37B8D524D59C /* ImageCarouselViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C304A8D46A2901CF4AF3087887521E23 /* ImageCarouselViewController.swift */; }; - B9CF878085ABA2991A9C6F12F9B9DAB3 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46773385F05CC946146AADCD857D60A1 /* IQTitleBarButtonItem.swift */; }; - BBF6B5C579EAC85F4A26DA1F994B89E0 /* ImageViewerTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BB8B8E6B78949B39F1CAE146BA9B36 /* ImageViewerTheme.swift */; }; - C13C6459FE4D7B6CC28B9C99D34954EF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 75FCC307A8979A99234E9D57DB4070DF /* PrivacyInfo.xcprivacy */; }; - CA6D6333D723B4391BD689F68FCF23DF /* EPSignatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7ED05BB6BF7CF061D65143C8602A089 /* EPSignatureView.swift */; }; - CC25A043BA48D6042178B5B5148723B6 /* ImageViewerOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D4DC65480D7A44E964D6E47FE20D5D /* ImageViewerOption.swift */; }; - CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - CC96488C33BFB3BCEE4A665A438CAC36 /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8915E92A00CE442AA263798AD59B7BB7 /* IQUIViewController+Additions.swift */; }; - CE3D249A1D64388C72BBB40C4E5818C8 /* ImageViewer.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CBEAEBC0755D340B7F6FA4178AE27247 /* ImageViewer.swift-dummy.m */; }; - D181D49DE6D7885B2834AF4E96170171 /* Toast-Swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 35A738047E0EB5A57E08000F04795C07 /* Toast-Swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2A598E7174826A7B04036E7AC8AA3B6 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5437535C54228EA8C21A56543CF29E6 /* Storage.swift */; }; - D3D1F63C30E95311B687FA924B872C15 /* IQKeyboardManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14887AB6864ADB209F4850C2CEFE1513 /* IQKeyboardManager+Deprecated.swift */; }; - D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 25BED61676B1924AF5C8D3720E47D495 /* NBBottomSheet-dummy.m */; }; - D809C0A429034849D9AFDF320D6CC6B3 /* ImageViewerTransitionPresentationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755CF0A8E8DCD17EEC04D495FD4FD4EE /* ImageViewerTransitionPresentationManager.swift */; }; - D8322CBE73400EE4382D1A042D2D53D3 /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E98B25A00C5BD8E1CFC837B364AFF2C4 /* IQUIView+IQKeyboardToolbar.swift */; }; - D88C2EA8ACCC0DE031D9E7A768062E2C /* IQKeyboardManager+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB5D2831F4E5E4871D0F33815B0B42E9 /* IQKeyboardManager+Toolbar.swift */; }; - DCD7B925667D6834875DECB61303162A /* Pods-MiniScanner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */; }; - DE3B5070A41194C21898D92DBFFCBE4C /* IQRootControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3176DC2042D2AFEF0BA4111003347A /* IQRootControllerConfiguration.swift */; }; - E483FA24409A56AAEDF8A1DEC5F55F16 /* UIImage+NextPrevious.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C3DB226A6195FDA912228C88553462 /* UIImage+NextPrevious.swift */; }; - E8770A941545BB190D76BF7E5262797D /* IQToolbarConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CCEDF67E74AC4A5480D38D4CD3467F4 /* IQToolbarConfiguration.swift */; }; - EA280E998F6C42AE8492336F762F92D5 /* EPExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CA428D4C35A8536978E9F7F7BF2CD69 /* EPExtensions.swift */; }; - EBB5F245DBEEB13D48F09E0DD75A6C95 /* IQKeyboardManager+Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8B3FE298AA4920F9F99DFA06A8264AF /* IQKeyboardManager+Position.swift */; }; - EECD3881761258240C223D7FF03C0DD1 /* SimpleImageDatasource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0415ED93CA1C6E9CA7EC01BB2ACE70F3 /* SimpleImageDatasource.swift */; }; - F01E61A9BFB56BB44FCE5558797FAF80 /* UIView_Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA3D8A888A9CB6D2589EB69034D4EB8 /* UIView_Extensions.swift */; }; - F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBA888243160DAAFEC320F5098062E86 /* NBBottomSheetConfiguration.swift */; }; - F681FB74C756E0AAFFDC0D414EBD8FA0 /* IQScrollViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25B6571CD63C88398C6F771FBBB849F /* IQScrollViewConfiguration.swift */; }; - F7C3A4FED58118F9ADC5B4AF9A10B9FC /* ViewDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 399EBA1EABB335DCBE4EF1388CF69190 /* ViewDirection.swift */; }; - F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BC7142EB2F11A8117CF9C4CE7773D77 /* NBBottomSheetController.swift */; }; - F912129FB7C53C428FE247D6ECF633AC /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ED73ECDE4EEF35880CEFF7186CE0396 /* Toast.swift */; }; - F9DE1A3C506E506F4DA4B7714359E8D1 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C0AA180F4F800D5683FC4071F398BC1 /* IQKeyboardManager.swift */; }; - FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D993BAD38A74EE07695C9A67B6B030F5 /* NBBottomSheetPresentationTransition.swift */; }; - FB7D384E51C9E1ADAEE50C64A694BB61 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; - FD4FA33C33903D85344344979508E750 /* ImageViewer_swift.h in Headers */ = {isa = PBXBuildFile; fileRef = 37275DD2C6E89B8A1B330D98EEAA7D43 /* ImageViewer_swift.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDEFBFB34E35A4BB332264E0CACCF5D8 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 644434A62AD15BCD099A235BCC219949 /* IQInvocation.swift */; }; - FE4936BFE1B6B6A9E8136010E413A24B /* NBBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 53738E1E5D1A90F125908C4D7EE82271 /* NBBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4950EB2B8365F46BC56A064AD48BF6 /* NBBottomSheetPresentationController.swift */; }; + 1A7787DB0275CF4A44CA312DD3BA5D33 /* EPSignatureViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9311D435EB5FF3E24E7932038D65D926 /* EPSignatureViewController.xib */; }; + 29E84D1618616538382E25E994B8BAE3 /* Pods-MiniScanner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */; }; + 2A1CD6399519B60D49B7E499577EC252 /* Pods-MiniScanner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FA6383580051D555D63451B7A81EE88 /* NBBottomSheetTransitioningDelegate.swift */; }; + 35699581E68E1E6F640C681EEDEEE2B6 /* EPSignature-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8BAAC480D87C215DBF67E7EE52B0B0 /* EPSignature-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + 564CDC78EAAD3D537143C0AF32A296E8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + 5D35C19C362961F919BE9820991D761E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */; }; + 797DF46337EAC66E47C5ADAF32515524 /* NBBottomSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = EE091368FE4AA6BC0970A84D8EB62AD4 /* NBBottomSheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7B2263CFC47393D3FB5CD8D5F7EB57AD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */; }; + 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC9E338141AAC78DA68EE142D4F21C5B /* NBConfiguration.swift */; }; + 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0286553719EE7714F31E1EE269820352 /* NBBottomSheetDismissalTransition.swift */; }; + 93C0AD77AB416AE90A6BD03E44A9B684 /* EPSignature-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB35CAE22A8D6C0BE783A689D5D3541 /* EPSignature-dummy.m */; }; + A4AE2538C33D06CB8C70D5FF35A65D98 /* EPSignatureViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE267668BA96CB7E325F61FA76B6CBCD /* EPSignatureViewController.swift */; }; + CA6D6333D723B4391BD689F68FCF23DF /* EPSignatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15F9A321C9AB81F483ECE0E416A881C0 /* EPSignatureView.swift */; }; + D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 976B8085DC82710F9620DDCE5BA70A32 /* NBBottomSheet-dummy.m */; }; + EA280E998F6C42AE8492336F762F92D5 /* EPExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2569FA6CF0041F826042344C8D002A7C /* EPExtensions.swift */; }; + F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18CB03EE27978DC40D668C05314A6B0 /* NBBottomSheetConfiguration.swift */; }; + F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28B9F2046C635AE195E6439A2BAFD804 /* NBBottomSheetController.swift */; }; + FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6316686E0FE5CC7D0C42A233FD6E /* NBBottomSheetPresentationTransition.swift */; }; + FE4936BFE1B6B6A9E8136010E413A24B /* NBBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C077B03D2AE345D24123F5F0A56768B /* NBBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 3A741A805CA84A8E49872D4C96838AC8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E; - remoteInfo = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; - }; - 5A95F7AC3875947C31796EDB0B856459 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B990BD87169C76A3ED3FE8A9258D91A3; - remoteInfo = "Toast-Swift"; - }; - 6675BD8F3B1EEE8B78C450C1B94DC727 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 75F1EA88CB9544AB5CBE20DEC9A011AE; - remoteInfo = "LanguageManager-iOS"; - }; - 79663F39931A50F6454880483831F20F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3CAF5EBFE5D1550CFF58AEC93594990A; - remoteInfo = EPSignature; - }; - 8DA8415961388AABC31B257BE3AD32C9 /* PBXContainerItemProxy */ = { + EA27ADD31350A678EFD8A97FBFAC0C6A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 727C2007A89D1AD73613E3E2E22998E5; remoteInfo = NBBottomSheet; }; - AA3237DE651554C28EA760562DFF81C8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; - remoteInfo = IQKeyboardManagerSwift; - }; - D174B0FB299B16CD41E3019F93E429F4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C344E85893FCDEE5B70436E0A4A3472B; - remoteInfo = "Toast-Swift-Toast-Swift"; - }; - F1763414C63B74B894B708614A5129AE /* PBXContainerItemProxy */ = { + FA9818C323BDDC5CE32AB6B1347E6DF3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 332B68EA081CEBFDA8881E0F51713DED; - remoteInfo = ImageViewer.swift; + remoteGlobalIDString = 3CAF5EBFE5D1550CFF58AEC93594990A; + remoteInfo = EPSignature; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 005537FD214FB7AF75AEABD1381F2ED7 /* IQUICollectionView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUICollectionView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift"; sourceTree = "<group>"; }; - 0321B651FFD7BE92EE97707E2CD9077C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Toast/Resources/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; - 0415ED93CA1C6E9CA7EC01BB2ACE70F3 /* SimpleImageDatasource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SimpleImageDatasource.swift; path = Sources/ImageViewer_swift/SimpleImageDatasource.swift; sourceTree = "<group>"; }; - 0420E9FB2A54DB55ECF95432358052BB /* IQKeyboardManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Debug.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift"; sourceTree = "<group>"; }; - 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - 0668626D9926F6CE57864C747CEEF9E4 /* UIView+Swizzling.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Swizzling.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Swizzling.swift"; sourceTree = "<group>"; }; - 06BB8B8E6B78949B39F1CAE146BA9B36 /* ImageViewerTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewerTheme.swift; path = Sources/ImageViewer_swift/ImageViewerTheme.swift; sourceTree = "<group>"; }; - 08503E375F5DA3F7DE5AD83AB160CF40 /* IQKeyboardManagerCompatible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerCompatible.swift; path = IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift; sourceTree = "<group>"; }; - 0C0AA180F4F800D5683FC4071F398BC1 /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift; sourceTree = "<group>"; }; - 0CCEDF67E74AC4A5480D38D4CD3467F4 /* IQToolbarConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift; sourceTree = "<group>"; }; - 0D549B41652BBAC21AB153BD9D3B6E40 /* NBBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-prefix.pch"; sourceTree = "<group>"; }; + 0286553719EE7714F31E1EE269820352 /* NBBottomSheetDismissalTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetDismissalTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetDismissalTransition.swift; sourceTree = "<group>"; }; 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-MiniScanner-umbrella.h"; sourceTree = "<group>"; }; - 105B1722B8849106475AB5FE35F15855 /* NBBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NBBottomSheet.modulemap; sourceTree = "<group>"; }; + 0FA6383580051D555D63451B7A81EE88 /* NBBottomSheetTransitioningDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetTransitioningDelegate.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetTransitioningDelegate.swift; sourceTree = "<group>"; }; 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MiniScanner-dummy.m"; sourceTree = "<group>"; }; - 12E8962DF01D0F73372CED14D7E4F6D4 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; sourceTree = "<group>"; }; - 1359935F9974FC169C02584D31EB3ADC /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; sourceTree = "<group>"; }; - 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "Toast-Swift-Toast-Swift"; path = "Toast-Swift.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 14887AB6864ADB209F4850C2CEFE1513 /* IQKeyboardManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Deprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift"; sourceTree = "<group>"; }; - 16C65F87206DFAED7027521770B46247 /* EPSignature-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EPSignature-Info.plist"; sourceTree = "<group>"; }; - 17005516AECC44640576DA5164FDB65E /* IQTextFieldViewInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift; sourceTree = "<group>"; }; - 17C3E8DCDAA1F639684AE52919D2802D /* EPSignature.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.debug.xcconfig; sourceTree = "<group>"; }; - 18CBA833812BB5BA28B7D9A586E13FD6 /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift"; sourceTree = "<group>"; }; - 1A667127B2C277764D5CAD60BBAC94CA /* IQPlaceholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPlaceholderable.swift; path = IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift; sourceTree = "<group>"; }; + 15F9A321C9AB81F483ECE0E416A881C0 /* EPSignatureView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureView.swift; path = Pod/Classes/EPSignatureView.swift; sourceTree = "<group>"; }; + 165646F2F6EF5448EE905D7E83235E81 /* NBBottomSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.release.xcconfig; sourceTree = "<group>"; }; 21A62BB316C6336F03408E50D730FD01 /* Pods-MiniScanner.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-MiniScanner.modulemap"; sourceTree = "<group>"; }; - 22F9A10C284AAB590E7C4E7A82AC4EC7 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = "<group>"; }; - 25BED61676B1924AF5C8D3720E47D495 /* NBBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NBBottomSheet-dummy.m"; sourceTree = "<group>"; }; - 28BD1A8F01342747611B8E9AAA31F4AE /* ImageViewer.swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ImageViewer.swift-Info.plist"; sourceTree = "<group>"; }; - 2CF31620D028C1CCA7BA4731E81B6C9D /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift"; sourceTree = "<group>"; }; - 2F4A52BED6B36260F78D9759112FE066 /* NBBottomSheetPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationController.swift; sourceTree = "<group>"; }; - 31A1FFA445855E537858C2A2102D8075 /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = "<group>"; }; - 33BE3AAA190504ECB00EE2CCC8637B5A /* Languages.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Languages.swift; path = "LanguageManager-iOS/Classes/Constants/Languages.swift"; sourceTree = "<group>"; }; + 2569FA6CF0041F826042344C8D002A7C /* EPExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPExtensions.swift; path = Pod/Classes/EPExtensions.swift; sourceTree = "<group>"; }; + 28B9F2046C635AE195E6439A2BAFD804 /* NBBottomSheetController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetController.swift; sourceTree = "<group>"; }; + 2A8DF5F2709E91F83E60451BDD4CB21F /* NBBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NBBottomSheet.modulemap; sourceTree = "<group>"; }; + 2F4950EB2B8365F46BC56A064AD48BF6 /* NBBottomSheetPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationController.swift; sourceTree = "<group>"; }; 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-MiniScanner"; path = Pods_MiniScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 34C3DB226A6195FDA912228C88553462 /* UIImage+NextPrevious.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+NextPrevious.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift"; sourceTree = "<group>"; }; - 3563182E7A1BECE34BE1DBF63C4520C2 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = "<group>"; }; - 35A738047E0EB5A57E08000F04795C07 /* Toast-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-umbrella.h"; sourceTree = "<group>"; }; - 37275DD2C6E89B8A1B330D98EEAA7D43 /* ImageViewer_swift.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ImageViewer_swift.h; path = Sources/ImageViewer_swift/ImageViewer_swift.h; sourceTree = "<group>"; }; - 392B95135956F8BFD2BD794C459E180A /* IQKeyboardInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift; sourceTree = "<group>"; }; - 399EBA1EABB335DCBE4EF1388CF69190 /* ViewDirection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ViewDirection.swift; path = "LanguageManager-iOS/Classes/Constants/ViewDirection.swift"; sourceTree = "<group>"; }; 3B6258C4E2C1059AABC67D66F9314FE8 /* Pods-MiniScanner-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MiniScanner-acknowledgements.markdown"; sourceTree = "<group>"; }; + 3C53B8519BC6ACB20FAB10CD35EA45E4 /* NBBottomSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.debug.xcconfig; sourceTree = "<group>"; }; + 3CB35CAE22A8D6C0BE783A689D5D3541 /* EPSignature-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EPSignature-dummy.m"; sourceTree = "<group>"; }; 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = EPSignature; path = EPSignature.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3F570B7AD8949CD4D893BABFC492E5AC /* NBBottomSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.debug.xcconfig; sourceTree = "<group>"; }; - 4132102B3811026C0FA8B7512EBC2601 /* EPSignature-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EPSignature-dummy.m"; sourceTree = "<group>"; }; - 414C89E33EB4D8A44D82A4E98DE5565E /* IQTextFieldViewListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift; sourceTree = "<group>"; }; - 42E4F8E67126057EC888EFDC10BA3DDD /* EPSignatureViewController.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EPSignatureViewController.xib; path = Pod/Classes/EPSignatureViewController.xib; sourceTree = "<group>"; }; - 448795080C247DAF7C36FE881781B848 /* NBBottomSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.release.xcconfig; sourceTree = "<group>"; }; - 46773385F05CC946146AADCD857D60A1 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = "<group>"; }; - 49CA089DA67BE142B04058B852447756 /* ImageViewer.swift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ImageViewer.swift; path = ImageViewer_swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4BDFA192FA55BABEAA2B2318E0D18194 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = "<group>"; }; - 4C78A52926C4D71DB286DB2E918A83D2 /* Toast-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.debug.xcconfig"; sourceTree = "<group>"; }; - 4EA3D8A888A9CB6D2589EB69034D4EB8 /* UIView_Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIView_Extensions.swift; path = Sources/ImageViewer_swift/UIView_Extensions.swift; sourceTree = "<group>"; }; - 4EF1A9B4B0069DCB3CD78CE9AFDFB4AB /* UIView+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIView+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIView+Direction.swift"; sourceTree = "<group>"; }; - 4F01860EA41E94EA9E52A6FC477110E6 /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift; sourceTree = "<group>"; }; - 50D4DC65480D7A44E964D6E47FE20D5D /* ImageViewerOption.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewerOption.swift; path = Sources/ImageViewer_swift/ImageViewerOption.swift; sourceTree = "<group>"; }; - 527814487B4E944AB1448A2B1F3DF1A3 /* IQKeyboardListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift; sourceTree = "<group>"; }; - 53738E1E5D1A90F125908C4D7EE82271 /* NBBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-umbrella.h"; sourceTree = "<group>"; }; - 57947335957481465C8757C3D7561A44 /* NBBottomSheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NBBottomSheet.h; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheet.h; sourceTree = "<group>"; }; - 5EC3502DA31CDA1300AF35C0EEDA995B /* EPSignature.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.release.xcconfig; sourceTree = "<group>"; }; - 5ED73ECDE4EEF35880CEFF7186CE0396 /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Toast/Toast.swift; sourceTree = "<group>"; }; - 6181C5C905D6F417E99706D739C8A3A1 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = "<group>"; }; - 61AC252473E61EBEA2741BD3B62C44C1 /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = "<group>"; }; - 61FC27EB607964064FBFB4EF73C223F9 /* EPSignature.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EPSignature.modulemap; sourceTree = "<group>"; }; - 644434A62AD15BCD099A235BCC219949 /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = "<group>"; }; - 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "LanguageManager-iOS"; path = LanguageManager_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6707BED408DD2CD2F9C73030CA1BD766 /* LanguageManager-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "LanguageManager-iOS.modulemap"; sourceTree = "<group>"; }; - 6B3A8FDD9AAB273950ECF930388BD5D0 /* ImageViewer.swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImageViewer.swift.release.xcconfig; sourceTree = "<group>"; }; - 6BC7142EB2F11A8117CF9C4CE7773D77 /* NBBottomSheetController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetController.swift; sourceTree = "<group>"; }; - 71F05D20AA997D5AE1787F2CE525E52F /* LanguageManager-iOS-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LanguageManager-iOS-Info.plist"; sourceTree = "<group>"; }; - 728666BCFE7936C71FA476DB880E4A29 /* Toast-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Toast-Swift.modulemap"; sourceTree = "<group>"; }; - 7315BFBE8EBD0F2C0D6CE97F982C9069 /* UIImageView_Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIImageView_Extensions.swift; path = Sources/ImageViewer_swift/UIImageView_Extensions.swift; sourceTree = "<group>"; }; - 74AF036DAB58C01137D6C9CB10E6C533 /* Toast-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.release.xcconfig"; sourceTree = "<group>"; }; - 755CF0A8E8DCD17EEC04D495FD4FD4EE /* ImageViewerTransitionPresentationManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewerTransitionPresentationManager.swift; path = Sources/ImageViewer_swift/ImageViewerTransitionPresentationManager.swift; sourceTree = "<group>"; }; - 757EB6FDC52B1FC003926AA07A86E8C5 /* IQToolbarPlaceholderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarPlaceholderConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift; sourceTree = "<group>"; }; - 75FCC307A8979A99234E9D57DB4070DF /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardManagerSwift/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; - 7785B233B8110C51D40D5C00B38DA9F6 /* IQBarButtonItemConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItemConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift; sourceTree = "<group>"; }; + 55096EB5A40F7CB24180EDC9F3EC511B /* EPSignature.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.debug.xcconfig; sourceTree = "<group>"; }; + 5801546255F9EF1F65284B93A54FA593 /* NBBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-prefix.pch"; sourceTree = "<group>"; }; + 5D07C1C57799623C9E72ED017D80D19A /* EPSignature-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-prefix.pch"; sourceTree = "<group>"; }; + 63983AAB4B4FBF961A8D588A0320085A /* EPSignature.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.release.xcconfig; sourceTree = "<group>"; }; 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MiniScanner.release.xcconfig"; sourceTree = "<group>"; }; - 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 7A2884C9052277C44C03FFD8F25BF442 /* UIButton+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIButton+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIButton+Direction.swift"; sourceTree = "<group>"; }; + 7A8BAAC480D87C215DBF67E7EE52B0B0 /* EPSignature-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-umbrella.h"; sourceTree = "<group>"; }; + 7C077B03D2AE345D24123F5F0A56768B /* NBBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-umbrella.h"; sourceTree = "<group>"; }; 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MiniScanner.debug.xcconfig"; sourceTree = "<group>"; }; - 7F91C093ED7B1A58B9C59D5B85DC0374 /* LanguageManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LanguageManager-iOS-dummy.m"; sourceTree = "<group>"; }; - 800A055821CD9469429504DE4CCE6122 /* EPSignatureViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureViewController.swift; path = Pod/Classes/EPSignatureViewController.swift; sourceTree = "<group>"; }; - 83431FDB65F2866361AB9532FF025216 /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = "<group>"; }; - 8356D39B1D7094CE112D14AFFCB419B7 /* UIImageView+Direction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImageView+Direction.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/UIImageView+Direction.swift"; sourceTree = "<group>"; }; - 840FA0B75AF62912A30DDC66B647ED98 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 882DE46DEF022FCA0242F83E7F7B7F02 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; - 8915E92A00CE442AA263798AD59B7BB7 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift"; sourceTree = "<group>"; }; + 86B11CF937B3CCD0B6A6541ADF4B8C64 /* EPSignature-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EPSignature-Info.plist"; sourceTree = "<group>"; }; 89194C84FD5E62D9D2C9F2157676FF5C /* Pods-MiniScanner-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MiniScanner-acknowledgements.plist"; sourceTree = "<group>"; }; - 8B45F1E127A5460E4F1CEB650879E86E /* EPSignature-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-prefix.pch"; sourceTree = "<group>"; }; - 8C83EE9856D1BC7B5B1CF020B88300C3 /* IQKeyboardManagerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.release.xcconfig; sourceTree = "<group>"; }; - 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; path = IQKeyboardManagerSwift.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 900BB5CFA6B47D29E110933244F58449 /* IQKeyboardManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Internal.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift"; sourceTree = "<group>"; }; 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NBBottomSheet; path = NBBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 94126D4475C67118A54EAC862AD7E0CD /* LanguageManager-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.debug.xcconfig"; sourceTree = "<group>"; }; - 960AF11999B2A894B5169B422BF12FE4 /* LanguageManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LanguageManager.swift; path = "LanguageManager-iOS/Classes/Main/LanguageManager.swift"; sourceTree = "<group>"; }; - 986588FA5B8D6CC0E5530E3CECCCC3E3 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; - 9A125CBE2A769DCFA442C7B9188F5994 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = "<group>"; }; - 9CA428D4C35A8536978E9F7F7BF2CD69 /* EPExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPExtensions.swift; path = Pod/Classes/EPExtensions.swift; sourceTree = "<group>"; }; + 9311D435EB5FF3E24E7932038D65D926 /* EPSignatureViewController.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EPSignatureViewController.xib; path = Pod/Classes/EPSignatureViewController.xib; sourceTree = "<group>"; }; + 976B8085DC82710F9620DDCE5BA70A32 /* NBBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NBBottomSheet-dummy.m"; sourceTree = "<group>"; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - A025312E27CC4428B6F282B56E170285 /* IQActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQActiveConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift; sourceTree = "<group>"; }; - A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - A47BFF07791E42C6657FC3087754BAD6 /* Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Toast-Swift-Info.plist"; sourceTree = "<group>"; }; - A5345F3CC88236EB713719B9684427DF /* DefaultsKeys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultsKeys.swift; path = "LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift"; sourceTree = "<group>"; }; - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - ABA9DA8FFEEBB28AFAE5AD2CC777CB91 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; sourceTree = "<group>"; }; - AC5EBA409FC91D5F3514DF63A0EB302A /* NBConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBConfiguration.swift; sourceTree = "<group>"; }; - AD594C3B4E7F741A5F6879BAD9102D6D /* IQKeyboardManager+UITextFieldViewNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UITextFieldViewNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift"; sourceTree = "<group>"; }; + AC9E338141AAC78DA68EE142D4F21C5B /* NBConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBConfiguration.swift; sourceTree = "<group>"; }; B2968141E72EA49CC006DD4020E3386D /* Pods-MiniScanner-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MiniScanner-frameworks.sh"; sourceTree = "<group>"; }; - B909045ECCACC331FFB279B2914C204D /* ImageViewer.swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImageViewer.swift.debug.xcconfig; sourceTree = "<group>"; }; - BB669260C593F0C98A48A67C79F93654 /* ImageViewer.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ImageViewer.swift.modulemap; sourceTree = "<group>"; }; - BDA3A2057897901810C098FD336C8AF1 /* LanguageManager-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.release.xcconfig"; sourceTree = "<group>"; }; - BF0BFBEA7071CD62777B3661360B1AFD /* Toast-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Toast-Swift-dummy.m"; sourceTree = "<group>"; }; - BF3176DC2042D2AFEF0BA4111003347A /* IQRootControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQRootControllerConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift; sourceTree = "<group>"; }; - C304A8D46A2901CF4AF3087887521E23 /* ImageCarouselViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageCarouselViewController.swift; path = Sources/ImageViewer_swift/ImageCarouselViewController.swift; sourceTree = "<group>"; }; - C5437535C54228EA8C21A56543CF29E6 /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = "LanguageManager-iOS/Classes/Helpers/Storage.swift"; sourceTree = "<group>"; }; - CBEAEBC0755D340B7F6FA4178AE27247 /* ImageViewer.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ImageViewer.swift-dummy.m"; sourceTree = "<group>"; }; - D212C85376884AB5C4668DBA49DDDF49 /* NBBottomSheetDismissalTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetDismissalTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetDismissalTransition.swift; sourceTree = "<group>"; }; - D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Toast-Swift"; path = Toast_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D7ED05BB6BF7CF061D65143C8602A089 /* EPSignatureView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureView.swift; path = Pod/Classes/EPSignatureView.swift; sourceTree = "<group>"; }; - D993BAD38A74EE07695C9A67B6B030F5 /* NBBottomSheetPresentationTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationTransition.swift; sourceTree = "<group>"; }; - DB65FF2384D17A78A0FEEC199D4B6471 /* IQKeyboardManager+UIKeyboardNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UIKeyboardNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift"; sourceTree = "<group>"; }; - DFC2CF7F3DB84126054E7B91671C8CFC /* ImageViewer.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImageViewer.swift-umbrella.h"; sourceTree = "<group>"; }; - E0FD4D5BFC8D1FE707AEC705F835CA64 /* IQTextFieldViewInfoModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfoModel.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift; sourceTree = "<group>"; }; - E1A2D57CBACA8ECA7983B665AA1DCBAA /* ImageLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageLoader.swift; path = Sources/ImageViewer_swift/ImageLoader.swift; sourceTree = "<group>"; }; - E1A9AD095397B2255EC06CD994A45C27 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = "<group>"; }; - E3FFF35EA6937D981529D8ADB68D7149 /* LanguageManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-prefix.pch"; sourceTree = "<group>"; }; - E5DCAF7921EC15817545E2C255BC27D5 /* NBBottomSheetTransitioningDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetTransitioningDelegate.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetTransitioningDelegate.swift; sourceTree = "<group>"; }; - E632447E16D33D207376AF32085001C2 /* Toast-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-prefix.pch"; sourceTree = "<group>"; }; - E98B25A00C5BD8E1CFC837B364AFF2C4 /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = "<group>"; }; - E99695448BB4EA162AD177960DBEC1BB /* UINavigationBar_Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UINavigationBar_Extensions.swift; path = Sources/ImageViewer_swift/UINavigationBar_Extensions.swift; sourceTree = "<group>"; }; - EB5D2831F4E5E4871D0F33815B0B42E9 /* IQKeyboardManager+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Toolbar.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift"; sourceTree = "<group>"; }; - EBA888243160DAAFEC320F5098062E86 /* NBBottomSheetConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetConfiguration.swift; sourceTree = "<group>"; }; - ED4A8A32A2BA818D6750EA676864B21E /* IQKeyboardManagerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.debug.xcconfig; sourceTree = "<group>"; }; + BBBB6316686E0FE5CC7D0C42A233FD6E /* NBBottomSheetPresentationTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationTransition.swift; sourceTree = "<group>"; }; + CE267668BA96CB7E325F61FA76B6CBCD /* EPSignatureViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureViewController.swift; path = Pod/Classes/EPSignatureViewController.swift; sourceTree = "<group>"; }; + D18CB03EE27978DC40D668C05314A6B0 /* NBBottomSheetConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetConfiguration.swift; sourceTree = "<group>"; }; + D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + E9C78D20E2201A31400729E65C02D0EE /* EPSignature.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EPSignature.modulemap; sourceTree = "<group>"; }; + EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; ED8E7C0ED656254925E918D5509B655C /* Pods-MiniScanner-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MiniScanner-Info.plist"; sourceTree = "<group>"; }; - EE11B8C15341D9CDF0972B066E0E18F9 /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift"; sourceTree = "<group>"; }; - F083907BC24781499FDEE1620DB89110 /* ImageItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageItem.swift; path = Sources/ImageViewer_swift/ImageItem.swift; sourceTree = "<group>"; }; - F0DB6F7515A79425490CE2C45D5814E8 /* IQKeyboardConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift; sourceTree = "<group>"; }; - F21A8CF35A5BAD74338B110E46C3BF14 /* IQKeyboardManager+ToolbarActions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarActions.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift"; sourceTree = "<group>"; }; - F25B6571CD63C88398C6F771FBBB849F /* IQScrollViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQScrollViewConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift; sourceTree = "<group>"; }; - F25D3C2E5BF000995E17A861BB22DD94 /* LanguageManager-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-umbrella.h"; sourceTree = "<group>"; }; - F380A7B97D811F1D7D0159785FEB5473 /* NBBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NBBottomSheet-Info.plist"; sourceTree = "<group>"; }; - F4B89D5340E9A3D93064EC99E8091E15 /* String+Localiz.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+Localiz.swift"; path = "LanguageManager-iOS/Classes/Helpers/Extensions/String+Localiz.swift"; sourceTree = "<group>"; }; - F78BE606608A1BC48D0AB5488FEF220A /* ImageViewerController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageViewerController.swift; path = Sources/ImageViewer_swift/ImageViewerController.swift; sourceTree = "<group>"; }; - F8B3FE298AA4920F9F99DFA06A8264AF /* IQKeyboardManager+Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Position.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift"; sourceTree = "<group>"; }; - F9809B6990F88A273200A6FB37E4386E /* IQUIView+IQKeyboardToolbarDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbarDeprecated.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift"; sourceTree = "<group>"; }; - FA0AE8DAC8B9B26E60024F35F90C031C /* ImageViewer.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImageViewer.swift-prefix.pch"; sourceTree = "<group>"; }; - FA1E0D437A4D407F87C451B63A101490 /* EPSignature-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-umbrella.h"; sourceTree = "<group>"; }; - FAD7429B43D433D607F44E0D774B1A31 /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift"; sourceTree = "<group>"; }; - FF8F72EB71F1ED1788133B0C5B21824E /* IQUITableView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITableView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift"; sourceTree = "<group>"; }; + EE091368FE4AA6BC0970A84D8EB62AD4 /* NBBottomSheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NBBottomSheet.h; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheet.h; sourceTree = "<group>"; }; + F1A7A270201697B289B6FB51C01059DF /* NBBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NBBottomSheet-Info.plist"; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 2686166D750D9A28FD494C120A7ECBC7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3130A51D7DFF19A4DA7649752464E8ED /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 98A4D0D5928A35C7DB3D9272187789A8 /* CoreGraphics.framework in Frameworks */, - 23D11E770DF137CBF802A30E2B19C054 /* Foundation.framework in Frameworks */, - B1A786B1A2F11EBD1BF77305EEB710F5 /* QuartzCore.framework in Frameworks */, - 7586D1882B962E1E31C28CC6396668B3 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 4D23CB6E5CEA9796267913468D4A3CD3 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -353,29 +101,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 57B95D66C3370F069FEC3D2A767EBFBD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2039598D067E7D39727311391022D3A3 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 74614F0446C86F10EA58F6139161612E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A576A6B66E7FF54F0F06CD54397C2528 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; A84948CC16232EA7760DD790F66BA178 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -385,169 +110,79 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A8F124B5A31CA96F8BB2B1EBB150409F /* Frameworks */ = { + F878B015DE915196E6CDB414876A2B35 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB8B0F2C54FFDE0C5809F687C973CF12 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B09EAF63101BB931799B76BFC00BB24A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - FB7D384E51C9E1ADAEE50C64A694BB61 /* Foundation.framework in Frameworks */, - 59D76AD0378678CB0D3236021BF96A09 /* QuartzCore.framework in Frameworks */, + 564CDC78EAAD3D537143C0AF32A296E8 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 032D25D94DBF91B3F0ABC9D99E9FC1D9 /* NBBottomSheet */ = { + 009E190AEFA92AD872F6491697F92847 /* Resources */ = { isa = PBXGroup; children = ( - 57947335957481465C8757C3D7561A44 /* NBBottomSheet.h */, - EBA888243160DAAFEC320F5098062E86 /* NBBottomSheetConfiguration.swift */, - 6BC7142EB2F11A8117CF9C4CE7773D77 /* NBBottomSheetController.swift */, - D212C85376884AB5C4668DBA49DDDF49 /* NBBottomSheetDismissalTransition.swift */, - 2F4A52BED6B36260F78D9759112FE066 /* NBBottomSheetPresentationController.swift */, - D993BAD38A74EE07695C9A67B6B030F5 /* NBBottomSheetPresentationTransition.swift */, - E5DCAF7921EC15817545E2C255BC27D5 /* NBBottomSheetTransitioningDelegate.swift */, - AC5EBA409FC91D5F3514DF63A0EB302A /* NBConfiguration.swift */, - 9F3A59021095ECD66E140B6A8208DA34 /* Support Files */, + 9311D435EB5FF3E24E7932038D65D926 /* EPSignatureViewController.xib */, ); - name = NBBottomSheet; - path = NBBottomSheet; + name = Resources; sourceTree = "<group>"; }; - 057933695580A91C40058E7303120BF9 /* Toast-Swift */ = { + 05D8EDC9B75500E1478BF0AD8E3426C9 /* Pods */ = { isa = PBXGroup; children = ( - 5ED73ECDE4EEF35880CEFF7186CE0396 /* Toast.swift */, - 8448A62024F9FD395E1A45272F4081F3 /* Resources */, - F1C0679D23534E1B672FF4CF79D7FDE8 /* Support Files */, + 4306011EC4EE5AB5253F21F92C121EFC /* EPSignature */, + 1F8A9269A103019BDF0927EE9B4D335B /* NBBottomSheet */, ); - name = "Toast-Swift"; - path = "Toast-Swift"; + name = Pods; sourceTree = "<group>"; }; - 19FB58719A93DC5C6346185907FB98E2 /* Support Files */ = { + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { isa = PBXGroup; children = ( - 4BDFA192FA55BABEAA2B2318E0D18194 /* IQKeyboardManagerSwift.modulemap */, - 31A1FFA445855E537858C2A2102D8075 /* IQKeyboardManagerSwift-dummy.m */, - 882DE46DEF022FCA0242F83E7F7B7F02 /* IQKeyboardManagerSwift-Info.plist */, - 3563182E7A1BECE34BE1DBF63C4520C2 /* IQKeyboardManagerSwift-prefix.pch */, - 9A125CBE2A769DCFA442C7B9188F5994 /* IQKeyboardManagerSwift-umbrella.h */, - ED4A8A32A2BA818D6750EA676864B21E /* IQKeyboardManagerSwift.debug.xcconfig */, - 8C83EE9856D1BC7B5B1CF020B88300C3 /* IQKeyboardManagerSwift.release.xcconfig */, - 986588FA5B8D6CC0E5530E3CECCCC3E3 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */, + 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */, ); - name = "Support Files"; - path = "../Target Support Files/IQKeyboardManagerSwift"; + name = Frameworks; sourceTree = "<group>"; }; - 2ECD98B880F14C0DBA951963456BCED5 /* LanguageManager-iOS */ = { + 1F8A9269A103019BDF0927EE9B4D335B /* NBBottomSheet */ = { isa = PBXGroup; children = ( - A5345F3CC88236EB713719B9684427DF /* DefaultsKeys.swift */, - 960AF11999B2A894B5169B422BF12FE4 /* LanguageManager.swift */, - 33BE3AAA190504ECB00EE2CCC8637B5A /* Languages.swift */, - C5437535C54228EA8C21A56543CF29E6 /* Storage.swift */, - F4B89D5340E9A3D93064EC99E8091E15 /* String+Localiz.swift */, - 7A2884C9052277C44C03FFD8F25BF442 /* UIButton+Direction.swift */, - 8356D39B1D7094CE112D14AFFCB419B7 /* UIImageView+Direction.swift */, - 4EF1A9B4B0069DCB3CD78CE9AFDFB4AB /* UIView+Direction.swift */, - 0668626D9926F6CE57864C747CEEF9E4 /* UIView+Swizzling.swift */, - 399EBA1EABB335DCBE4EF1388CF69190 /* ViewDirection.swift */, - C5B5A18F62DDB06582A3FF48BE32AB13 /* Support Files */, + EE091368FE4AA6BC0970A84D8EB62AD4 /* NBBottomSheet.h */, + D18CB03EE27978DC40D668C05314A6B0 /* NBBottomSheetConfiguration.swift */, + 28B9F2046C635AE195E6439A2BAFD804 /* NBBottomSheetController.swift */, + 0286553719EE7714F31E1EE269820352 /* NBBottomSheetDismissalTransition.swift */, + 2F4950EB2B8365F46BC56A064AD48BF6 /* NBBottomSheetPresentationController.swift */, + BBBB6316686E0FE5CC7D0C42A233FD6E /* NBBottomSheetPresentationTransition.swift */, + 0FA6383580051D555D63451B7A81EE88 /* NBBottomSheetTransitioningDelegate.swift */, + AC9E338141AAC78DA68EE142D4F21C5B /* NBConfiguration.swift */, + B51EDF87BDDABDD39EFDF561D09C6D84 /* Support Files */, ); - name = "LanguageManager-iOS"; - path = "LanguageManager-iOS"; + name = NBBottomSheet; + path = NBBottomSheet; sourceTree = "<group>"; }; - 3835C2651F2BAB04D14D0BF78128B876 /* IQKeyboardManagerSwift */ = { + 4306011EC4EE5AB5253F21F92C121EFC /* EPSignature */ = { isa = PBXGroup; children = ( - A025312E27CC4428B6F282B56E170285 /* IQActiveConfiguration.swift */, - 61AC252473E61EBEA2741BD3B62C44C1 /* IQBarButtonItem.swift */, - 7785B233B8110C51D40D5C00B38DA9F6 /* IQBarButtonItemConfiguration.swift */, - 644434A62AD15BCD099A235BCC219949 /* IQInvocation.swift */, - F0DB6F7515A79425490CE2C45D5814E8 /* IQKeyboardConfiguration.swift */, - 392B95135956F8BFD2BD794C459E180A /* IQKeyboardInfo.swift */, - 527814487B4E944AB1448A2B1F3DF1A3 /* IQKeyboardListener.swift */, - 0C0AA180F4F800D5683FC4071F398BC1 /* IQKeyboardManager.swift */, - 0420E9FB2A54DB55ECF95432358052BB /* IQKeyboardManager+Debug.swift */, - 14887AB6864ADB209F4850C2CEFE1513 /* IQKeyboardManager+Deprecated.swift */, - 900BB5CFA6B47D29E110933244F58449 /* IQKeyboardManager+Internal.swift */, - F8B3FE298AA4920F9F99DFA06A8264AF /* IQKeyboardManager+Position.swift */, - EB5D2831F4E5E4871D0F33815B0B42E9 /* IQKeyboardManager+Toolbar.swift */, - F21A8CF35A5BAD74338B110E46C3BF14 /* IQKeyboardManager+ToolbarActions.swift */, - DB65FF2384D17A78A0FEEC199D4B6471 /* IQKeyboardManager+UIKeyboardNotification.swift */, - AD594C3B4E7F741A5F6879BAD9102D6D /* IQKeyboardManager+UITextFieldViewNotification.swift */, - 08503E375F5DA3F7DE5AD83AB160CF40 /* IQKeyboardManagerCompatible.swift */, - 22F9A10C284AAB590E7C4E7A82AC4EC7 /* IQKeyboardManagerConstants.swift */, - 4F01860EA41E94EA9E52A6FC477110E6 /* IQKeyboardReturnKeyHandler.swift */, - 1359935F9974FC169C02584D31EB3ADC /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */, - 12E8962DF01D0F73372CED14D7E4F6D4 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */, - EE11B8C15341D9CDF0972B066E0E18F9 /* IQNSArray+Sort.swift */, - 1A667127B2C277764D5CAD60BBAC94CA /* IQPlaceholderable.swift */, - 6181C5C905D6F417E99706D739C8A3A1 /* IQPreviousNextView.swift */, - BF3176DC2042D2AFEF0BA4111003347A /* IQRootControllerConfiguration.swift */, - F25B6571CD63C88398C6F771FBBB849F /* IQScrollViewConfiguration.swift */, - 17005516AECC44640576DA5164FDB65E /* IQTextFieldViewInfo.swift */, - E0FD4D5BFC8D1FE707AEC705F835CA64 /* IQTextFieldViewInfoModel.swift */, - 414C89E33EB4D8A44D82A4E98DE5565E /* IQTextFieldViewListener.swift */, - E1A9AD095397B2255EC06CD994A45C27 /* IQTextView.swift */, - 46773385F05CC946146AADCD857D60A1 /* IQTitleBarButtonItem.swift */, - 83431FDB65F2866361AB9532FF025216 /* IQToolbar.swift */, - 0CCEDF67E74AC4A5480D38D4CD3467F4 /* IQToolbarConfiguration.swift */, - 757EB6FDC52B1FC003926AA07A86E8C5 /* IQToolbarPlaceholderConfiguration.swift */, - 005537FD214FB7AF75AEABD1381F2ED7 /* IQUICollectionView+Additions.swift */, - FAD7429B43D433D607F44E0D774B1A31 /* IQUIScrollView+Additions.swift */, - FF8F72EB71F1ED1788133B0C5B21824E /* IQUITableView+Additions.swift */, - 18CBA833812BB5BA28B7D9A586E13FD6 /* IQUITextFieldView+Additions.swift */, - 2CF31620D028C1CCA7BA4731E81B6C9D /* IQUIView+Hierarchy.swift */, - E98B25A00C5BD8E1CFC837B364AFF2C4 /* IQUIView+IQKeyboardToolbar.swift */, - F9809B6990F88A273200A6FB37E4386E /* IQUIView+IQKeyboardToolbarDeprecated.swift */, - 8915E92A00CE442AA263798AD59B7BB7 /* IQUIViewController+Additions.swift */, - 34C3DB226A6195FDA912228C88553462 /* UIImage+NextPrevious.swift */, - DD1618276A12914B36D04790EC560046 /* Resources */, - 19FB58719A93DC5C6346185907FB98E2 /* Support Files */, + 2569FA6CF0041F826042344C8D002A7C /* EPExtensions.swift */, + 15F9A321C9AB81F483ECE0E416A881C0 /* EPSignatureView.swift */, + CE267668BA96CB7E325F61FA76B6CBCD /* EPSignatureViewController.swift */, + 009E190AEFA92AD872F6491697F92847 /* Resources */, + 8BBB5D6887F53A525D1A845FDC973674 /* Support Files */, ); - name = IQKeyboardManagerSwift; - path = IQKeyboardManagerSwift; - sourceTree = "<group>"; - }; - 5FAF7BEDEBF8EC038908BCC4F25D5B6F /* Products */ = { - isa = PBXGroup; - children = ( - 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */, - 49CA089DA67BE142B04058B852447756 /* ImageViewer.swift */, - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */, - 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, - 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */, - 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */, - 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */, - D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */, - 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */, - ); - name = Products; + name = EPSignature; + path = EPSignature; sourceTree = "<group>"; }; - 643FA737CF4D99DB71EC64A0705FD1DD /* Pods */ = { + 59DA5C1F72E1D5BABC43EACBA672C3BA /* iOS */ = { isa = PBXGroup; children = ( - FC05667939FD86F5E40BF5FF2D51FD34 /* EPSignature */, - BC0FD30EE9CB3C73086BCC2F7176688C /* ImageViewer.swift */, - 3835C2651F2BAB04D14D0BF78128B876 /* IQKeyboardManagerSwift */, - 2ECD98B880F14C0DBA951963456BCED5 /* LanguageManager-iOS */, - 032D25D94DBF91B3F0ABC9D99E9FC1D9 /* NBBottomSheet */, - 057933695580A91C40058E7303120BF9 /* Toast-Swift */, + EAB6F611E86A4758835A715E4B4184F6 /* Foundation.framework */, + D245E0514AAC1A2B9A6D5EA2F383E90F /* UIKit.framework */, ); - name = Pods; + name = iOS; sourceTree = "<group>"; }; 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */ = { @@ -558,122 +193,47 @@ name = "Targets Support Files"; sourceTree = "<group>"; }; - 7F904AB9460D49414EFAC8F33152234A /* Support Files */ = { + 8BBB5D6887F53A525D1A845FDC973674 /* Support Files */ = { isa = PBXGroup; children = ( - 61FC27EB607964064FBFB4EF73C223F9 /* EPSignature.modulemap */, - 4132102B3811026C0FA8B7512EBC2601 /* EPSignature-dummy.m */, - 16C65F87206DFAED7027521770B46247 /* EPSignature-Info.plist */, - 8B45F1E127A5460E4F1CEB650879E86E /* EPSignature-prefix.pch */, - FA1E0D437A4D407F87C451B63A101490 /* EPSignature-umbrella.h */, - 17C3E8DCDAA1F639684AE52919D2802D /* EPSignature.debug.xcconfig */, - 5EC3502DA31CDA1300AF35C0EEDA995B /* EPSignature.release.xcconfig */, + E9C78D20E2201A31400729E65C02D0EE /* EPSignature.modulemap */, + 3CB35CAE22A8D6C0BE783A689D5D3541 /* EPSignature-dummy.m */, + 86B11CF937B3CCD0B6A6541ADF4B8C64 /* EPSignature-Info.plist */, + 5D07C1C57799623C9E72ED017D80D19A /* EPSignature-prefix.pch */, + 7A8BAAC480D87C215DBF67E7EE52B0B0 /* EPSignature-umbrella.h */, + 55096EB5A40F7CB24180EDC9F3EC511B /* EPSignature.debug.xcconfig */, + 63983AAB4B4FBF961A8D588A0320085A /* EPSignature.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/EPSignature"; sourceTree = "<group>"; }; - 8448A62024F9FD395E1A45272F4081F3 /* Resources */ = { - isa = PBXGroup; - children = ( - 0321B651FFD7BE92EE97707E2CD9077C /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = "<group>"; - }; - 9F3A59021095ECD66E140B6A8208DA34 /* Support Files */ = { + B51EDF87BDDABDD39EFDF561D09C6D84 /* Support Files */ = { isa = PBXGroup; children = ( - 105B1722B8849106475AB5FE35F15855 /* NBBottomSheet.modulemap */, - 25BED61676B1924AF5C8D3720E47D495 /* NBBottomSheet-dummy.m */, - F380A7B97D811F1D7D0159785FEB5473 /* NBBottomSheet-Info.plist */, - 0D549B41652BBAC21AB153BD9D3B6E40 /* NBBottomSheet-prefix.pch */, - 53738E1E5D1A90F125908C4D7EE82271 /* NBBottomSheet-umbrella.h */, - 3F570B7AD8949CD4D893BABFC492E5AC /* NBBottomSheet.debug.xcconfig */, - 448795080C247DAF7C36FE881781B848 /* NBBottomSheet.release.xcconfig */, + 2A8DF5F2709E91F83E60451BDD4CB21F /* NBBottomSheet.modulemap */, + 976B8085DC82710F9620DDCE5BA70A32 /* NBBottomSheet-dummy.m */, + F1A7A270201697B289B6FB51C01059DF /* NBBottomSheet-Info.plist */, + 5801546255F9EF1F65284B93A54FA593 /* NBBottomSheet-prefix.pch */, + 7C077B03D2AE345D24123F5F0A56768B /* NBBottomSheet-umbrella.h */, + 3C53B8519BC6ACB20FAB10CD35EA45E4 /* NBBottomSheet.debug.xcconfig */, + 165646F2F6EF5448EE905D7E83235E81 /* NBBottomSheet.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/NBBottomSheet"; sourceTree = "<group>"; }; - B1B84997529E71EAC38EF71A8006F594 /* Support Files */ = { - isa = PBXGroup; - children = ( - BB669260C593F0C98A48A67C79F93654 /* ImageViewer.swift.modulemap */, - CBEAEBC0755D340B7F6FA4178AE27247 /* ImageViewer.swift-dummy.m */, - 28BD1A8F01342747611B8E9AAA31F4AE /* ImageViewer.swift-Info.plist */, - FA0AE8DAC8B9B26E60024F35F90C031C /* ImageViewer.swift-prefix.pch */, - DFC2CF7F3DB84126054E7B91671C8CFC /* ImageViewer.swift-umbrella.h */, - B909045ECCACC331FFB279B2914C204D /* ImageViewer.swift.debug.xcconfig */, - 6B3A8FDD9AAB273950ECF930388BD5D0 /* ImageViewer.swift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/ImageViewer.swift"; - sourceTree = "<group>"; - }; - BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */ = { - isa = PBXGroup; - children = ( - F9D206BABE81E6BF0B9B23880B238CC7 /* iOS */, - ); - name = Frameworks; - sourceTree = "<group>"; - }; - BC0FD30EE9CB3C73086BCC2F7176688C /* ImageViewer.swift */ = { - isa = PBXGroup; - children = ( - C304A8D46A2901CF4AF3087887521E23 /* ImageCarouselViewController.swift */, - F083907BC24781499FDEE1620DB89110 /* ImageItem.swift */, - E1A2D57CBACA8ECA7983B665AA1DCBAA /* ImageLoader.swift */, - 37275DD2C6E89B8A1B330D98EEAA7D43 /* ImageViewer_swift.h */, - F78BE606608A1BC48D0AB5488FEF220A /* ImageViewerController.swift */, - 50D4DC65480D7A44E964D6E47FE20D5D /* ImageViewerOption.swift */, - 06BB8B8E6B78949B39F1CAE146BA9B36 /* ImageViewerTheme.swift */, - 755CF0A8E8DCD17EEC04D495FD4FD4EE /* ImageViewerTransitionPresentationManager.swift */, - 0415ED93CA1C6E9CA7EC01BB2ACE70F3 /* SimpleImageDatasource.swift */, - 7315BFBE8EBD0F2C0D6CE97F982C9069 /* UIImageView_Extensions.swift */, - E99695448BB4EA162AD177960DBEC1BB /* UINavigationBar_Extensions.swift */, - 4EA3D8A888A9CB6D2589EB69034D4EB8 /* UIView_Extensions.swift */, - B1B84997529E71EAC38EF71A8006F594 /* Support Files */, - ); - name = ImageViewer.swift; - path = ImageViewer.swift; - sourceTree = "<group>"; - }; - C5B5A18F62DDB06582A3FF48BE32AB13 /* Support Files */ = { - isa = PBXGroup; - children = ( - 6707BED408DD2CD2F9C73030CA1BD766 /* LanguageManager-iOS.modulemap */, - 7F91C093ED7B1A58B9C59D5B85DC0374 /* LanguageManager-iOS-dummy.m */, - 71F05D20AA997D5AE1787F2CE525E52F /* LanguageManager-iOS-Info.plist */, - E3FFF35EA6937D981529D8ADB68D7149 /* LanguageManager-iOS-prefix.pch */, - F25D3C2E5BF000995E17A861BB22DD94 /* LanguageManager-iOS-umbrella.h */, - 94126D4475C67118A54EAC862AD7E0CD /* LanguageManager-iOS.debug.xcconfig */, - BDA3A2057897901810C098FD336C8AF1 /* LanguageManager-iOS.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/LanguageManager-iOS"; - sourceTree = "<group>"; - }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */, - 643FA737CF4D99DB71EC64A0705FD1DD /* Pods */, - 5FAF7BEDEBF8EC038908BCC4F25D5B6F /* Products */, + 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, + 05D8EDC9B75500E1478BF0AD8E3426C9 /* Pods */, + F5C3923B4670EB0FDE0960B441ABF085 /* Products */, 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */, ); sourceTree = "<group>"; }; - DD1618276A12914B36D04790EC560046 /* Resources */ = { - isa = PBXGroup; - children = ( - 75FCC307A8979A99234E9D57DB4070DF /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = "<group>"; - }; EC99F10DC5C191754BE16B2F6AC739A8 /* Pods-MiniScanner */ = { isa = PBXGroup; children = ( @@ -691,90 +251,19 @@ path = "Target Support Files/Pods-MiniScanner"; sourceTree = "<group>"; }; - F1C0679D23534E1B672FF4CF79D7FDE8 /* Support Files */ = { + F5C3923B4670EB0FDE0960B441ABF085 /* Products */ = { isa = PBXGroup; children = ( - ABA9DA8FFEEBB28AFAE5AD2CC777CB91 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */, - 728666BCFE7936C71FA476DB880E4A29 /* Toast-Swift.modulemap */, - BF0BFBEA7071CD62777B3661360B1AFD /* Toast-Swift-dummy.m */, - A47BFF07791E42C6657FC3087754BAD6 /* Toast-Swift-Info.plist */, - E632447E16D33D207376AF32085001C2 /* Toast-Swift-prefix.pch */, - 35A738047E0EB5A57E08000F04795C07 /* Toast-Swift-umbrella.h */, - 4C78A52926C4D71DB286DB2E918A83D2 /* Toast-Swift.debug.xcconfig */, - 74AF036DAB58C01137D6C9CB10E6C533 /* Toast-Swift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Toast-Swift"; - sourceTree = "<group>"; - }; - F9D206BABE81E6BF0B9B23880B238CC7 /* iOS */ = { - isa = PBXGroup; - children = ( - 840FA0B75AF62912A30DDC66B647ED98 /* CoreGraphics.framework */, - 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */, - A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */, - 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */, - ); - name = iOS; - sourceTree = "<group>"; - }; - FC05667939FD86F5E40BF5FF2D51FD34 /* EPSignature */ = { - isa = PBXGroup; - children = ( - 9CA428D4C35A8536978E9F7F7BF2CD69 /* EPExtensions.swift */, - D7ED05BB6BF7CF061D65143C8602A089 /* EPSignatureView.swift */, - 800A055821CD9469429504DE4CCE6122 /* EPSignatureViewController.swift */, - FEAC82163E4F6A3FB262494701F865DF /* Resources */, - 7F904AB9460D49414EFAC8F33152234A /* Support Files */, - ); - name = EPSignature; - path = EPSignature; - sourceTree = "<group>"; - }; - FEAC82163E4F6A3FB262494701F865DF /* Resources */ = { - isa = PBXGroup; - children = ( - 42E4F8E67126057EC888EFDC10BA3DDD /* EPSignatureViewController.xib */, + 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */, + 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */, + 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */, ); - name = Resources; + name = Products; sourceTree = "<group>"; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 116CC8963ED1B6B79A4F4C4A66B573EB /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 4ED2AE6187D476E7382AD69C5908A586 /* ImageViewer.swift-umbrella.h in Headers */, - FD4FA33C33903D85344344979508E750 /* ImageViewer_swift.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1E7BDC089B22E2F58EEE97E5CC40B0DB /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9E704111CAAACBF64155A576FC337323 /* LanguageManager-iOS-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 77150D3DA409E22AAAE3AC967B0FDC17 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9B6764F56E23F50BCA863630CB9001BF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - D181D49DE6D7885B2834AF4E96170171 /* Toast-Swift-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9C1E51FBB23B8F5AC126898FEDD00F52 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -784,11 +273,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C59973939DC99E2D619E094BE8A74971 /* Headers */ = { + BFB0ADB8D236C1B1E46AAE0FB8CFFA92 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 5AB7C5D27CA6D49509FB1B87C95D5C9B /* Pods-MiniScanner-umbrella.h in Headers */, + 2A1CD6399519B60D49B7E499577EC252 /* Pods-MiniScanner-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -803,24 +292,6 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 332B68EA081CEBFDA8881E0F51713DED /* ImageViewer.swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8651241C94D90BE69E6FFE2D39BB8C01 /* Build configuration list for PBXNativeTarget "ImageViewer.swift" */; - buildPhases = ( - 116CC8963ED1B6B79A4F4C4A66B573EB /* Headers */, - FB7FC773E10161906541E42252995885 /* Sources */, - A8F124B5A31CA96F8BB2B1EBB150409F /* Frameworks */, - 14DD49BAF7998B809B18E24666C97E03 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ImageViewer.swift; - productName = ImageViewer_swift; - productReference = 49CA089DA67BE142B04058B852447756 /* ImageViewer.swift */; - productType = "com.apple.product-type.framework"; - }; 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */ = { isa = PBXNativeTarget; buildConfigurationList = E72F7AA6A99974A3F5B74D95CB9A76A6 /* Build configuration list for PBXNativeTarget "EPSignature" */; @@ -841,22 +312,18 @@ }; 4372AB6A3C495222906A1ABFD39A4463 /* Pods-MiniScanner */ = { isa = PBXNativeTarget; - buildConfigurationList = 573C4B61987DE43DB07309DF76E91F57 /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */; + buildConfigurationList = A3FB6F9A17FD1FDA6C39D9D9B1615E6D /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */; buildPhases = ( - C59973939DC99E2D619E094BE8A74971 /* Headers */, - 85FED63764B284FB31C59CF84326CA5D /* Sources */, - 57B95D66C3370F069FEC3D2A767EBFBD /* Frameworks */, - A0352E70EC4026D4C15300F4384CCD09 /* Resources */, + BFB0ADB8D236C1B1E46AAE0FB8CFFA92 /* Headers */, + 7F5775AF8BDA90F9FB28C370A09AF51C /* Sources */, + F878B015DE915196E6CDB414876A2B35 /* Frameworks */, + 083719B11F8317BA2AB4A96F14AA4138 /* Resources */, ); buildRules = ( ); dependencies = ( - 9EE2DC39C966CF6157073047D32D3567 /* PBXTargetDependency */, - 22B96AF61476060D000F74D1FD3F42BC /* PBXTargetDependency */, - C4834FD6836AC1E1C00FD3EC69B3F24D /* PBXTargetDependency */, - CFFBF7541D02CD9E126B56101FF1B167 /* PBXTargetDependency */, - F3511CC1DE13C59E9E7A56D18C64F4A8 /* PBXTargetDependency */, - 448B4450C1BEDB745BA75EA8A688A75C /* PBXTargetDependency */, + 2385F7DC3DC83F9ADB6E096CC98947C5 /* PBXTargetDependency */, + 2157F01990E15F66B12D0872A2D2AFE0 /* PBXTargetDependency */, ); name = "Pods-MiniScanner"; productName = Pods_MiniScanner; @@ -881,96 +348,6 @@ productReference = 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */; productType = "com.apple.product-type.framework"; }; - 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3E005A95330A065B56DC3405DE620CD6 /* Build configuration list for PBXNativeTarget "LanguageManager-iOS" */; - buildPhases = ( - 1E7BDC089B22E2F58EEE97E5CC40B0DB /* Headers */, - E4E13B13EC996935352882F0DB7D948C /* Sources */, - A576A6B66E7FF54F0F06CD54397C2528 /* Frameworks */, - 3B58EC4259531E84AFA63D59D1133D3E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "LanguageManager-iOS"; - productName = LanguageManager_iOS; - productReference = 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */; - productType = "com.apple.product-type.framework"; - }; - 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3C874D3149242BE26EBEC83F2F026059 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */; - buildPhases = ( - B99E90C0A4D0714D983977A3E6D8F8A9 /* Sources */, - 2686166D750D9A28FD494C120A7ECBC7 /* Frameworks */, - AFA280B8122EDB2027C56FCD48174665 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; - productName = IQKeyboardManagerSwift; - productReference = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; - productType = "com.apple.product-type.bundle"; - }; - B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 397157E58CC1977C23EB745CC0C04035 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */; - buildPhases = ( - 77150D3DA409E22AAAE3AC967B0FDC17 /* Headers */, - 335F86AE3E21D4BDAD21A4F79F2DA8F9 /* Sources */, - 3130A51D7DFF19A4DA7649752464E8ED /* Frameworks */, - 4A72A323CCD420112722EDFB4439C184 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 4A2BD12C47A8FD3098BB4FD950BB2E7B /* PBXTargetDependency */, - ); - name = IQKeyboardManagerSwift; - productName = IQKeyboardManagerSwift; - productReference = A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */; - productType = "com.apple.product-type.framework"; - }; - B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2B1739CC185CEDE3A990F521808D3137 /* Build configuration list for PBXNativeTarget "Toast-Swift" */; - buildPhases = ( - 9B6764F56E23F50BCA863630CB9001BF /* Headers */, - 13C5F240F8D39EE11E8E48310FE556B5 /* Sources */, - B09EAF63101BB931799B76BFC00BB24A /* Frameworks */, - F7C0CC2CF9E43466CF842FCC6397F349 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 86065F13F2DC438F5A1719C5E7DD80F4 /* PBXTargetDependency */, - ); - name = "Toast-Swift"; - productName = Toast_Swift; - productReference = D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */; - productType = "com.apple.product-type.framework"; - }; - C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 46E4E17E9F82D55726E7C0308E6EE21E /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */; - buildPhases = ( - C93F80A352A36EE12F193CAD6EBC7404 /* Sources */, - 74614F0446C86F10EA58F6139161612E /* Frameworks */, - 2E6B25A0868EB909E6B174F336194BB6 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Toast-Swift-Toast-Swift"; - productName = "Toast-Swift"; - productReference = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */; - productType = "com.apple.product-type.bundle"; - }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -989,51 +366,22 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 5FAF7BEDEBF8EC038908BCC4F25D5B6F /* Products */; + productRefGroup = F5C3923B4670EB0FDE0960B441ABF085 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */, - 332B68EA081CEBFDA8881E0F51713DED /* ImageViewer.swift */, - B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */, - 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, - 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */, 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */, 4372AB6A3C495222906A1ABFD39A4463 /* Pods-MiniScanner */, - B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */, - C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 14DD49BAF7998B809B18E24666C97E03 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2E6B25A0868EB909E6B174F336194BB6 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 64F33F487DE5F9FE3C20F2C3FB5AB085 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3B58EC4259531E84AFA63D59D1133D3E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4A72A323CCD420112722EDFB4439C184 /* Resources */ = { + 083719B11F8317BA2AB4A96F14AA4138 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1045,21 +393,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A0352E70EC4026D4C15300F4384CCD09 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AFA280B8122EDB2027C56FCD48174665 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - C13C6459FE4D7B6CC28B9C99D34954EF /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; D0133C29AEDAF3E8111D05F827EE7C4E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1067,82 +400,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F7C0CC2CF9E43466CF842FCC6397F349 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 237A96A092EA5A5B0CB41160BEA22E16 /* Toast-Swift-Toast-Swift in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 13C5F240F8D39EE11E8E48310FE556B5 /* Sources */ = { + 7F5775AF8BDA90F9FB28C370A09AF51C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F912129FB7C53C428FE247D6ECF633AC /* Toast.swift in Sources */, - 15F04D15A4DC87FF877C2857720F8D72 /* Toast-Swift-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 335F86AE3E21D4BDAD21A4F79F2DA8F9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B1BFC54288364884DDEAE75027BABE1A /* IQActiveConfiguration.swift in Sources */, - 8ED2E941DF0803C8AA331D0D8C722615 /* IQBarButtonItem.swift in Sources */, - 907FCA3049CAAF64B579D08D339D118D /* IQBarButtonItemConfiguration.swift in Sources */, - FDEFBFB34E35A4BB332264E0CACCF5D8 /* IQInvocation.swift in Sources */, - 9A00A25ED34A7687C62B02EBB76C1248 /* IQKeyboardConfiguration.swift in Sources */, - 24C699F9653980B77F44634EF44641C1 /* IQKeyboardInfo.swift in Sources */, - 8FDA28363A5E49017498FD69AAA8F59F /* IQKeyboardListener.swift in Sources */, - F9DE1A3C506E506F4DA4B7714359E8D1 /* IQKeyboardManager.swift in Sources */, - 674C6B2E317E657D8EAD3CC73F608540 /* IQKeyboardManager+Debug.swift in Sources */, - D3D1F63C30E95311B687FA924B872C15 /* IQKeyboardManager+Deprecated.swift in Sources */, - 08822D4E49DB8618D27BAEDED7911733 /* IQKeyboardManager+Internal.swift in Sources */, - EBB5F245DBEEB13D48F09E0DD75A6C95 /* IQKeyboardManager+Position.swift in Sources */, - D88C2EA8ACCC0DE031D9E7A768062E2C /* IQKeyboardManager+Toolbar.swift in Sources */, - 9F78D56352F7D932DCEBE416C668C7BA /* IQKeyboardManager+ToolbarActions.swift in Sources */, - 4017CF2B3EE45E7E579E68E6FCFBF732 /* IQKeyboardManager+UIKeyboardNotification.swift in Sources */, - 82950EE4BDD57F74749742A3E1566073 /* IQKeyboardManager+UITextFieldViewNotification.swift in Sources */, - 597994C3AE8908B1E462BC03AC8C23FB /* IQKeyboardManagerCompatible.swift in Sources */, - AE7D065E1D48171258FD8F07F7CD592C /* IQKeyboardManagerConstants.swift in Sources */, - 733CF7F19636AFF4A97708DFDE0AE53C /* IQKeyboardManagerSwift-dummy.m in Sources */, - 42B931814C7B25871333D5DA9A0E2A41 /* IQKeyboardReturnKeyHandler.swift in Sources */, - 154362EFC8EC0F61F54E24B09266DEB1 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift in Sources */, - 1C3881B0113D3219398154E16AA4413C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift in Sources */, - 54BAE903D82C39392943869866252D93 /* IQNSArray+Sort.swift in Sources */, - 5F0469C5B154DC20B844EA2A9B7F8D42 /* IQPlaceholderable.swift in Sources */, - 14063E1AF70EDDC9F33C8E08DCA0BEF3 /* IQPreviousNextView.swift in Sources */, - DE3B5070A41194C21898D92DBFFCBE4C /* IQRootControllerConfiguration.swift in Sources */, - F681FB74C756E0AAFFDC0D414EBD8FA0 /* IQScrollViewConfiguration.swift in Sources */, - 0615219BFD2EBBE27FF41C2C8816791E /* IQTextFieldViewInfo.swift in Sources */, - 5F62DAE67CF97B7C42471EA91B79AA9A /* IQTextFieldViewInfoModel.swift in Sources */, - 0A4DB572ACD97EC492C4E93A0FFB2E47 /* IQTextFieldViewListener.swift in Sources */, - 38CBE3196BDD577B5E72BC65508A77F8 /* IQTextView.swift in Sources */, - B9CF878085ABA2991A9C6F12F9B9DAB3 /* IQTitleBarButtonItem.swift in Sources */, - 701904768C60A3F9060518DD58EC2882 /* IQToolbar.swift in Sources */, - E8770A941545BB190D76BF7E5262797D /* IQToolbarConfiguration.swift in Sources */, - 34BDB069A96125DAF2FEF6FF93A3F6AF /* IQToolbarPlaceholderConfiguration.swift in Sources */, - 3452528F3B9B79AD67D45FEA174F71E4 /* IQUICollectionView+Additions.swift in Sources */, - 94F893223EB4C1C0F829C17900114AFA /* IQUIScrollView+Additions.swift in Sources */, - A5E69CC013C4311C8AF52C7F7AB095C9 /* IQUITableView+Additions.swift in Sources */, - 8086BD2DB5F1A0CC88E4F3386570A21C /* IQUITextFieldView+Additions.swift in Sources */, - 103FE4EEFF1BE8BAD0FA047987AFED74 /* IQUIView+Hierarchy.swift in Sources */, - D8322CBE73400EE4382D1A042D2D53D3 /* IQUIView+IQKeyboardToolbar.swift in Sources */, - 08C234F2981017EEF271582022F339F3 /* IQUIView+IQKeyboardToolbarDeprecated.swift in Sources */, - CC96488C33BFB3BCEE4A665A438CAC36 /* IQUIViewController+Additions.swift in Sources */, - E483FA24409A56AAEDF8A1DEC5F55F16 /* UIImage+NextPrevious.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 85FED63764B284FB31C59CF84326CA5D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DCD7B925667D6834875DECB61303162A /* Pods-MiniScanner-dummy.m in Sources */, + 29E84D1618616538382E25E994B8BAE3 /* Pods-MiniScanner-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1157,270 +422,42 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B99E90C0A4D0714D983977A3E6D8F8A9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C93F80A352A36EE12F193CAD6EBC7404 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E4E13B13EC996935352882F0DB7D948C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6D55C34EF7CE4718D8B2FE6CE95C5674 /* DefaultsKeys.swift in Sources */, - 0718CCD0E19136B8DB2A7D4C6585E3ED /* LanguageManager.swift in Sources */, - 6418A8A5D32E73D898AB155952180B0C /* LanguageManager-iOS-dummy.m in Sources */, - 852E6AB133CF7BDE7DE7D836AE201868 /* Languages.swift in Sources */, - D2A598E7174826A7B04036E7AC8AA3B6 /* Storage.swift in Sources */, - 6F875A0983E3FB0E0CC0BDA6376F73E8 /* String+Localiz.swift in Sources */, - AF715064CF6458D3D89BB563DFDB00C6 /* UIButton+Direction.swift in Sources */, - 10D1A87F45AFB52D2B34D9ABA1A86105 /* UIImageView+Direction.swift in Sources */, - 3E21C9612D00C6B92D3FCE3589917729 /* UIView+Direction.swift in Sources */, - 48A4D5E4D954CB4212E540A92570BBF0 /* UIView+Swizzling.swift in Sources */, - F7C3A4FED58118F9ADC5B4AF9A10B9FC /* ViewDirection.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F504107C31E77537B61A2F14571BB10C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */, - F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */, - F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */, - 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */, - 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */, - FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */, - 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */, - 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FB7FC773E10161906541E42252995885 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B6EF20981D365C6945DA37B8D524D59C /* ImageCarouselViewController.swift in Sources */, - 0EF056C9B77C11BF2BEF81888B17769C /* ImageItem.swift in Sources */, - 524FC16C683888AB0462F4DD6BDB5725 /* ImageLoader.swift in Sources */, - CE3D249A1D64388C72BBB40C4E5818C8 /* ImageViewer.swift-dummy.m in Sources */, - 61E476CDBAC0F819982D258267423D8F /* ImageViewerController.swift in Sources */, - CC25A043BA48D6042178B5B5148723B6 /* ImageViewerOption.swift in Sources */, - BBF6B5C579EAC85F4A26DA1F994B89E0 /* ImageViewerTheme.swift in Sources */, - D809C0A429034849D9AFDF320D6CC6B3 /* ImageViewerTransitionPresentationManager.swift in Sources */, - EECD3881761258240C223D7FF03C0DD1 /* SimpleImageDatasource.swift in Sources */, - 15BEDD8F76A1ADF659597113D96C97CF /* UIImageView_Extensions.swift in Sources */, - 07F7FEADEEC19C1818C92894406EE311 /* UINavigationBar_Extensions.swift in Sources */, - F01E61A9BFB56BB44FCE5558797FAF80 /* UIView_Extensions.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 22B96AF61476060D000F74D1FD3F42BC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = IQKeyboardManagerSwift; - target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; - targetProxy = AA3237DE651554C28EA760562DFF81C8 /* PBXContainerItemProxy */; - }; - 448B4450C1BEDB745BA75EA8A688A75C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Toast-Swift"; - target = B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */; - targetProxy = 5A95F7AC3875947C31796EDB0B856459 /* PBXContainerItemProxy */; - }; - 4A2BD12C47A8FD3098BB4FD950BB2E7B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; - target = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; - targetProxy = 3A741A805CA84A8E49872D4C96838AC8 /* PBXContainerItemProxy */; - }; - 86065F13F2DC438F5A1719C5E7DD80F4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Toast-Swift-Toast-Swift"; - target = C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */; - targetProxy = D174B0FB299B16CD41E3019F93E429F4 /* PBXContainerItemProxy */; - }; - 9EE2DC39C966CF6157073047D32D3567 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = EPSignature; - target = 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */; - targetProxy = 79663F39931A50F6454880483831F20F /* PBXContainerItemProxy */; - }; - C4834FD6836AC1E1C00FD3EC69B3F24D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ImageViewer.swift; - target = 332B68EA081CEBFDA8881E0F51713DED /* ImageViewer.swift */; - targetProxy = F1763414C63B74B894B708614A5129AE /* PBXContainerItemProxy */; - }; - CFFBF7541D02CD9E126B56101FF1B167 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "LanguageManager-iOS"; - target = 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */; - targetProxy = 6675BD8F3B1EEE8B78C450C1B94DC727 /* PBXContainerItemProxy */; - }; - F3511CC1DE13C59E9E7A56D18C64F4A8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NBBottomSheet; - target = 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */; - targetProxy = 8DA8415961388AABC31B257BE3AD32C9 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 0B8ECEE9A19E3873AA2196631B3DA06C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8C83EE9856D1BC7B5B1CF020B88300C3 /* IQKeyboardManagerSwift.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; - IBSC_MODULE = IQKeyboardManagerSwift; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardManagerSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 0F8CB5C565508E62AB65834BB57034B4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0FA1FBAB3886CB709C39BA2DF5FAD314 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ED4A8A32A2BA818D6750EA676864B21E /* IQKeyboardManagerSwift.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/IQKeyboardManagerSwift"; - IBSC_MODULE = IQKeyboardManagerSwift; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - PRODUCT_NAME = IQKeyboardManagerSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 335888624B863A53F482B2E5A5CB861C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4C78A52926C4D71DB286DB2E918A83D2 /* Toast-Swift.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "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/Toast-Swift/Toast-Swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/Toast-Swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Toast-Swift/Toast-Swift.modulemap"; - PRODUCT_MODULE_NAME = Toast_Swift; - PRODUCT_NAME = Toast_Swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */, + F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */, + F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */, + 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */, + 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */, + FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */, + 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */, + 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; }; - 39440596D0B39AE8ECC2717121684FEC /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BDA3A2057897901810C098FD336C8AF1 /* LanguageManager-iOS.release.xcconfig */; - buildSettings = { - "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/LanguageManager-iOS/LanguageManager-iOS-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap"; - PRODUCT_MODULE_NAME = LanguageManager_iOS; - PRODUCT_NAME = LanguageManager_iOS; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 2157F01990E15F66B12D0872A2D2AFE0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NBBottomSheet; + target = 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */; + targetProxy = EA27ADD31350A678EFD8A97FBFAC0C6A /* PBXContainerItemProxy */; + }; + 2385F7DC3DC83F9ADB6E096CC98947C5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = EPSignature; + target = 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */; + targetProxy = FA9818C323BDDC5CE32AB6B1347E6DF3 /* PBXContainerItemProxy */; }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ 40133D3EB8F5F41DEF101CB7F221DB6B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 17C3E8DCDAA1F639684AE52919D2802D /* EPSignature.debug.xcconfig */; + baseConfigurationReference = 55096EB5A40F7CB24180EDC9F3EC511B /* EPSignature.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1452,42 +489,7 @@ }; name = Debug; }; - 4214354B215D0E0E97976853BE9BC6C8 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B909045ECCACC331FFB279B2914C204D /* ImageViewer.swift.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "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/ImageViewer.swift/ImageViewer.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap"; - PRODUCT_MODULE_NAME = ImageViewer_swift; - PRODUCT_NAME = ImageViewer_swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 4BA02157CE3459D31B18098900DBDC03 /* Release */ = { + 8697CB3C21F286E42F47DD9911761EB8 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */; buildSettings = { @@ -1525,98 +527,9 @@ }; name = Release; }; - 587F6847DBCBE9579002441D0DB73E24 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 74AF036DAB58C01137D6C9CB10E6C533 /* Toast-Swift.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "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/Toast-Swift/Toast-Swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/Toast-Swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/Toast-Swift/Toast-Swift.modulemap"; - PRODUCT_MODULE_NAME = Toast_Swift; - PRODUCT_NAME = Toast_Swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 5AC66F34D6495E28B4F94DD62C4B576D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 74AF036DAB58C01137D6C9CB10E6C533 /* Toast-Swift.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Toast-Swift"; - IBSC_MODULE = Toast_Swift; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = "Toast-Swift"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 631A35B62346118D661FD5917F1B5E3F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6B3A8FDD9AAB273950ECF930388BD5D0 /* ImageViewer.swift.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "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/ImageViewer.swift/ImageViewer.swift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap"; - PRODUCT_MODULE_NAME = ImageViewer_swift; - PRODUCT_NAME = ImageViewer_swift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 8C7488EEB2FF7D44EDD6A1FBA48C75CC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5EC3502DA31CDA1300AF35C0EEDA995B /* EPSignature.release.xcconfig */; + baseConfigurationReference = 63983AAB4B4FBF961A8D588A0320085A /* EPSignature.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1777,78 +690,9 @@ }; name = Release; }; - A73A28CEE205ACFB6072250615C7D39D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 94126D4475C67118A54EAC862AD7E0CD /* LanguageManager-iOS.debug.xcconfig */; - buildSettings = { - "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/LanguageManager-iOS/LanguageManager-iOS-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap"; - PRODUCT_MODULE_NAME = LanguageManager_iOS; - PRODUCT_NAME = LanguageManager_iOS; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B3CF11682A60F02B60820C17EE93D35E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = ED4A8A32A2BA818D6750EA676864B21E /* IQKeyboardManagerSwift.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "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/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; - PRODUCT_NAME = IQKeyboardManagerSwift; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.9; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; B89AE063F35BBC5F3358209AF37E6D16 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3F570B7AD8949CD4D893BABFC492E5AC /* NBBottomSheet.debug.xcconfig */; + baseConfigurationReference = 3C53B8519BC6ACB20FAB10CD35EA45E4 /* NBBottomSheet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1880,27 +724,11 @@ }; name = Debug; }; - C0D99FD8A2F12560912EB2607DBF6B65 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4C78A52926C4D71DB286DB2E918A83D2 /* Toast-Swift.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Toast-Swift"; - IBSC_MODULE = Toast_Swift; - INFOPLIST_FILE = "Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = "Toast-Swift"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - C15C4E31ADF19556825A2743AEF62A77 /* Release */ = { + DE6ADE9FF7EA40B8F0775290864539DD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C83EE9856D1BC7B5B1CF020B88300C3 /* IQKeyboardManagerSwift.release.xcconfig */; + baseConfigurationReference = 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1910,32 +738,32 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; - PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; - PRODUCT_NAME = IQKeyboardManagerSwift; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.9; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; F8AD79C5141E28EAE67B8011B5C3B8F5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 448795080C247DAF7C36FE881781B848 /* NBBottomSheet.release.xcconfig */; + baseConfigurationReference = 165646F2F6EF5448EE905D7E83235E81 /* NBBottomSheet.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1971,51 +799,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2B1739CC185CEDE3A990F521808D3137 /* Build configuration list for PBXNativeTarget "Toast-Swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 335888624B863A53F482B2E5A5CB861C /* Debug */, - 587F6847DBCBE9579002441D0DB73E24 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 397157E58CC1977C23EB745CC0C04035 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B3CF11682A60F02B60820C17EE93D35E /* Debug */, - C15C4E31ADF19556825A2743AEF62A77 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3C874D3149242BE26EBEC83F2F026059 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0FA1FBAB3886CB709C39BA2DF5FAD314 /* Debug */, - 0B8ECEE9A19E3873AA2196631B3DA06C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3E005A95330A065B56DC3405DE620CD6 /* Build configuration list for PBXNativeTarget "LanguageManager-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A73A28CEE205ACFB6072250615C7D39D /* Debug */, - 39440596D0B39AE8ECC2717121684FEC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 46E4E17E9F82D55726E7C0308E6EE21E /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C0D99FD8A2F12560912EB2607DBF6B65 /* Debug */, - 5AC66F34D6495E28B4F94DD62C4B576D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2025,15 +808,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 573C4B61987DE43DB07309DF76E91F57 /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0F8CB5C565508E62AB65834BB57034B4 /* Debug */, - 4BA02157CE3459D31B18098900DBDC03 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 5D7A5BCA6DF599B98DA57AB77B8B2795 /* Build configuration list for PBXNativeTarget "NBBottomSheet" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2043,11 +817,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8651241C94D90BE69E6FFE2D39BB8C01 /* Build configuration list for PBXNativeTarget "ImageViewer.swift" */ = { + A3FB6F9A17FD1FDA6C39D9D9B1615E6D /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4214354B215D0E0E97976853BE9BC6C8 /* Debug */, - 631A35B62346118D661FD5917F1B5E3F /* Release */, + DE6ADE9FF7EA40B8F0775290864539DD /* Debug */, + 8697CB3C21F286E42F47DD9911761EB8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme deleted file mode 100644 index 4a29221dfae268ee6e8c5583bce23ff114c4bc37..0000000000000000000000000000000000000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "982A68D37F5DCBC1FC1FDC0BB2F0EB8E" - BuildableName = "IQKeyboardManagerSwift.bundle" - BlueprintName = "IQKeyboardManagerSwift-IQKeyboardManagerSwift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme deleted file mode 100644 index 78a923df338709ab1b2452f0883653af55c8bbc9..0000000000000000000000000000000000000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "B490E7485944099E16C9CBD79119D1D4" - BuildableName = "IQKeyboardManagerSwift.framework" - BlueprintName = "IQKeyboardManagerSwift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImageViewer.swift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImageViewer.swift.xcscheme deleted file mode 100644 index d857409c3198ee0e351f17e5f5af5ae8969ccae6..0000000000000000000000000000000000000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImageViewer.swift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "332B68EA081CEBFDA8881E0F51713DED" - BuildableName = "ImageViewer_swift.framework" - BlueprintName = "ImageViewer.swift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/LanguageManager-iOS.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/LanguageManager-iOS.xcscheme deleted file mode 100644 index 798a93aecfec03a6dd7c9492e7e67f3c17c5ba13..0000000000000000000000000000000000000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/LanguageManager-iOS.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "75F1EA88CB9544AB5CBE20DEC9A011AE" - BuildableName = "LanguageManager_iOS.framework" - BlueprintName = "LanguageManager-iOS" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift-Toast-Swift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift-Toast-Swift.xcscheme deleted file mode 100644 index 76e73bbb10ad29a0b8980e9b95cf2847674527a5..0000000000000000000000000000000000000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift-Toast-Swift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "C344E85893FCDEE5B70436E0A4A3472B" - BuildableName = "Toast-Swift.bundle" - BlueprintName = "Toast-Swift-Toast-Swift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift.xcscheme deleted file mode 100644 index 212dab8c87db694472b2f69a763d15b32a1280ef..0000000000000000000000000000000000000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/Toast-Swift.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Scheme - LastUpgradeVersion = "1500" - version = "1.3"> - <BuildAction - parallelizeBuildables = "YES" - buildImplicitDependencies = "YES"> - <BuildActionEntries> - <BuildActionEntry - buildForTesting = "YES" - buildForRunning = "YES" - buildForProfiling = "YES" - buildForArchiving = "YES" - buildForAnalyzing = "YES"> - <BuildableReference - BuildableIdentifier = "primary" - BlueprintIdentifier = "B990BD87169C76A3ED3FE8A9258D91A3" - BuildableName = "Toast_Swift.framework" - BlueprintName = "Toast-Swift" - ReferencedContainer = "container:Pods.xcodeproj"> - </BuildableReference> - </BuildActionEntry> - </BuildActionEntries> - </BuildAction> - <TestAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - <Testables> - </Testables> - </TestAction> - <LaunchAction - buildConfiguration = "Debug" - selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" - selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - launchStyle = "0" - useCustomWorkingDirectory = "NO" - ignoresPersistentStateOnLaunch = "NO" - debugDocumentVersioning = "YES" - debugServiceExtension = "internal" - allowLocationSimulation = "YES"> - </LaunchAction> - <ProfileAction - buildConfiguration = "Release" - shouldUseLaunchSchemeArgsEnv = "YES" - savedToolIdentifier = "" - useCustomWorkingDirectory = "NO" - debugDocumentVersioning = "YES"> - </ProfileAction> - <AnalyzeAction - buildConfiguration = "Debug"> - </AnalyzeAction> - <ArchiveAction - buildConfiguration = "Release" - revealArchiveInOrganizer = "YES"> - </ArchiveAction> -</Scheme> diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist index fbd9eb39ca6987cb7f8e01d4ce50dfdbe386cac9..9edb6f88ca08b2a8f3d20e516e5d91a0e2076133 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist @@ -11,61 +11,19 @@ <key>orderHint</key> <integer>0</integer> </dict> - <key>IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>3</integer> - </dict> - <key>IQKeyboardManagerSwift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>2</integer> - </dict> - <key>ImageViewer.swift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>1</integer> - </dict> - <key>LanguageManager-iOS.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>4</integer> - </dict> <key>NBBottomSheet.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>5</integer> + <integer>1</integer> </dict> <key>Pods-MiniScanner.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>6</integer> - </dict> - <key>Toast-Swift-Toast-Swift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>8</integer> - </dict> - <key>Toast-Swift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>7</integer> + <integer>2</integer> </dict> </dict> <key>SuppressBuildableAutocreation</key> diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist deleted file mode 100644 index 1281ca3be803661e3c1c804f38865e43379cbf42..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>7.0.3</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m deleted file mode 100644 index 7937f277d30f87beed9e1e92ba58f2f01608104e..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_IQKeyboardManagerSwift : NSObject -@end -@implementation PodsDummy_IQKeyboardManagerSwift -@end diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch deleted file mode 100644 index beb2a2441835aeaf9ee2ba30c557a8f2b6e4363f..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h deleted file mode 100644 index e95b39874bbe3fc2be4ce9f42fcb100a12af5cff..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double IQKeyboardManagerSwiftVersionNumber; -FOUNDATION_EXPORT const unsigned char IQKeyboardManagerSwiftVersionString[]; - diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig deleted file mode 100644 index 1472651271f5f0bd8f5e5df8ea2d4c4d5840cf6a..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.debug.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/IQKeyboardManagerSwift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap deleted file mode 100644 index 6d9b3439a7656f1df8a00bf5b6d506b72251efb8..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module IQKeyboardManagerSwift { - umbrella header "IQKeyboardManagerSwift-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig b/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig deleted file mode 100644 index 1472651271f5f0bd8f5e5df8ea2d4c4d5840cf6a..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.release.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "Foundation" -framework "QuartzCore" -framework "UIKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/IQKeyboardManagerSwift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist b/Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist deleted file mode 100644 index 394246f9397b9b1cbe4fc9963496a9a3ffd27f43..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/IQKeyboardManagerSwift/ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>BNDL</string> - <key>CFBundleShortVersionString</key> - <string>7.0.3</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist deleted file mode 100644 index ed3fafccf9ccb1e9e19cb091a568f7bb12b9c4d9..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>3.3.8</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-dummy.m b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-dummy.m deleted file mode 100644 index 2a36e87184f85dd7a43634f7ea1d73de1819861e..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_ImageViewer_swift : NSObject -@end -@implementation PodsDummy_ImageViewer_swift -@end diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch deleted file mode 100644 index beb2a2441835aeaf9ee2ba30c557a8f2b6e4363f..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-umbrella.h b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-umbrella.h deleted file mode 100644 index 704bc6babbc70025dc23199962d57656c3337bf3..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "ImageViewer_swift.h" - -FOUNDATION_EXPORT double ImageViewer_swiftVersionNumber; -FOUNDATION_EXPORT const unsigned char ImageViewer_swiftVersionString[]; - diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.debug.xcconfig b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.debug.xcconfig deleted file mode 100644 index 8ffb994587dc173485a057c1954767e2d20abca4..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/ImageViewer.swift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap deleted file mode 100644 index 8681a66718d1e96e0e638526c7f027604ab35b71..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module ImageViewer_swift { - umbrella header "ImageViewer.swift-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.release.xcconfig b/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.release.xcconfig deleted file mode 100644 index 8ffb994587dc173485a057c1954767e2d20abca4..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImageViewer.swift/ImageViewer.swift.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/ImageViewer.swift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist deleted file mode 100644 index b58bca3977529a6b08e0d9ca701078c106e54df5..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>1.2.7</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-dummy.m b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-dummy.m deleted file mode 100644 index d91438aace6f78c35c43b4c4b0e05d876abd3894..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_LanguageManager_iOS : NSObject -@end -@implementation PodsDummy_LanguageManager_iOS -@end diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch deleted file mode 100644 index beb2a2441835aeaf9ee2ba30c557a8f2b6e4363f..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-umbrella.h b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-umbrella.h deleted file mode 100644 index 5613e4887ca09d6d586cea9d36abea6d707857cc..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double LanguageManager_iOSVersionNumber; -FOUNDATION_EXPORT const unsigned char LanguageManager_iOSVersionString[]; - diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.debug.xcconfig b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.debug.xcconfig deleted file mode 100644 index 154e1a36d49a04372770fd6c816857d456e474c8..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.debug.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/LanguageManager-iOS -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap deleted file mode 100644 index 4b5ef1cfeff93f0159f1e55d27f9a1c75e8992e3..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module LanguageManager_iOS { - umbrella header "LanguageManager-iOS-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.release.xcconfig b/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.release.xcconfig deleted file mode 100644 index 154e1a36d49a04372770fd6c816857d456e474c8..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/LanguageManager-iOS/LanguageManager-iOS.release.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/LanguageManager-iOS -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown index ec648807da2c832c710adf35b9cc5d7408fc60bb..2387ad333ac693fbe18191bfbf1d54a5697aa579 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown @@ -24,68 +24,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## IQKeyboardManagerSwift - -MIT License - -Copyright (c) 2013-2023 Iftekhar Qurashi - -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. - - -## ImageViewer.swift - -Copyright (c) 2013 Michael Henry Pantaleon (http://www.iamkel.net). All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -## LanguageManager-iOS - -The MIT License (MIT) - -Copyright (c) 2017 Abedalkareem - -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. - - ## NBBottomSheet MIT License @@ -110,28 +48,4 @@ 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. - -## Toast-Swift - -Copyright (c) 2015-2024 Charles Scalesse. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist index 73ba9c7691ca99ef0b803f7257dce17b736a1ec1..3a2a0b7dd82da5dedf54e92b96b1a53f06bd6ff1 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist @@ -45,86 +45,6 @@ THE SOFTWARE. <key>FooterText</key> <string>MIT License -Copyright (c) 2013-2023 Iftekhar Qurashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>IQKeyboardManagerSwift</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>Copyright (c) 2013 Michael Henry Pantaleon (http://www.iamkel.net). All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>ImageViewer.swift</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>The MIT License (MIT) - -Copyright (c) 2017 Abedalkareem - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>LanguageManager-iOS</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> - <dict> - <key>FooterText</key> - <string>MIT License - Copyright (c) 2018 Nicolas Bichon Permission is hereby granted, free of charge, to any person obtaining a copy @@ -152,36 +72,6 @@ SOFTWARE. <key>Type</key> <string>PSGroupSpecifier</string> </dict> - <dict> - <key>FooterText</key> - <string>Copyright (c) 2015-2024 Charles Scalesse. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -</string> - <key>License</key> - <string>MIT</string> - <key>Title</key> - <string>Toast-Swift</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> <dict> <key>FooterText</key> <string>Generated by CocoaPods - https://cocoapods.org</string> diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist index db7e6482e988a94e12bd2d0af1696846cbf5601e..2688999a5e4ed363ecef8043dab8d11123631742 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-input-files.xcfilelist @@ -1,7 +1,3 @@ ${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh ${BUILT_PRODUCTS_DIR}/EPSignature/EPSignature.framework -${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework -${BUILT_PRODUCTS_DIR}/ImageViewer.swift/ImageViewer_swift.framework -${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework -${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework -${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework \ No newline at end of file +${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist index b7730787cae96d4ade877f5dc098cfc6a8b5470f..46dc42c0c9d3b0ffd1faebbcfa6323c18c52f80d 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Debug-output-files.xcfilelist @@ -1,6 +1,2 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EPSignature.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImageViewer_swift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LanguageManager_iOS.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NBBottomSheet.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast_Swift.framework \ No newline at end of file +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NBBottomSheet.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist index db7e6482e988a94e12bd2d0af1696846cbf5601e..2688999a5e4ed363ecef8043dab8d11123631742 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-input-files.xcfilelist @@ -1,7 +1,3 @@ ${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh ${BUILT_PRODUCTS_DIR}/EPSignature/EPSignature.framework -${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework -${BUILT_PRODUCTS_DIR}/ImageViewer.swift/ImageViewer_swift.framework -${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework -${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework -${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework \ No newline at end of file +${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist index b7730787cae96d4ade877f5dc098cfc6a8b5470f..46dc42c0c9d3b0ffd1faebbcfa6323c18c52f80d 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-Release-output-files.xcfilelist @@ -1,6 +1,2 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EPSignature.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImageViewer_swift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LanguageManager_iOS.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NBBottomSheet.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Toast_Swift.framework \ No newline at end of file +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/NBBottomSheet.framework \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh index e30f02ab717b8761566fbadbcfe8b28d06fbd65a..5aa34112bb399869b9ac3f7ac4df7f8d4e2bd78d 100755 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh @@ -177,19 +177,11 @@ code_sign_if_enabled() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/EPSignature/EPSignature.framework" - install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/ImageViewer.swift/ImageViewer_swift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework" install_framework "${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/EPSignature/EPSignature.framework" - install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/ImageViewer.swift/ImageViewer_swift.framework" - install_framework "${BUILT_PRODUCTS_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework" install_framework "${BUILT_PRODUCTS_DIR}/NBBottomSheet/NBBottomSheet.framework" - install_framework "${BUILT_PRODUCTS_DIR}/Toast-Swift/Toast_Swift.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig index 6a65574105c1caec334833048e8ce9a077568f95..f8d7344f36f8524bf35dcc4c628a7ad33d3edf99 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature/EPSignature.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift/ImageViewer_swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift/Toast_Swift.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature/EPSignature.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "EPSignature" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImageViewer_swift" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "Toast_Swift" -framework "UIKit" +LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift +OTHER_LDFLAGS = $(inherited) -framework "EPSignature" -framework "Foundation" -framework "NBBottomSheet" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig index 6a65574105c1caec334833048e8ce9a077568f95..f8d7344f36f8524bf35dcc4c628a7ad33d3edf99 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig @@ -1,11 +1,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature/EPSignature.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/ImageViewer.swift/ImageViewer_swift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS/LanguageManager_iOS.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift/Toast_Swift.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/EPSignature/EPSignature.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet/NBBottomSheet.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) /usr/lib/swift '@executable_path/Frameworks' '@loader_path/Frameworks' -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift $(SDKROOT)/usr/lib/swift -OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "EPSignature" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImageViewer_swift" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "Toast_Swift" -framework "UIKit" +LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift +OTHER_LDFLAGS = $(inherited) -framework "EPSignature" -framework "Foundation" -framework "NBBottomSheet" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Pods/Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist b/Pods/Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist deleted file mode 100644 index 5b2072cf79d6c8a96409cc42cd331d604d44ee20..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/Toast-Swift/ResourceBundle-Toast-Swift-Toast-Swift-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>BNDL</string> - <key>CFBundleShortVersionString</key> - <string>5.1.1</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>1</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist b/Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist deleted file mode 100644 index 021370d14ce342b9ab2dcfb6b23d63e2b70823ad..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>CFBundleDevelopmentRegion</key> - <string>${PODS_DEVELOPMENT_LANGUAGE}</string> - <key>CFBundleExecutable</key> - <string>${EXECUTABLE_NAME}</string> - <key>CFBundleIdentifier</key> - <string>${PRODUCT_BUNDLE_IDENTIFIER}</string> - <key>CFBundleInfoDictionaryVersion</key> - <string>6.0</string> - <key>CFBundleName</key> - <string>${PRODUCT_NAME}</string> - <key>CFBundlePackageType</key> - <string>FMWK</string> - <key>CFBundleShortVersionString</key> - <string>5.1.1</string> - <key>CFBundleSignature</key> - <string>????</string> - <key>CFBundleVersion</key> - <string>${CURRENT_PROJECT_VERSION}</string> - <key>NSPrincipalClass</key> - <string></string> -</dict> -</plist> diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m b/Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m deleted file mode 100644 index 2962aa47f9457457080500441782fe05f2360c15..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_Toast_Swift : NSObject -@end -@implementation PodsDummy_Toast_Swift -@end diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch b/Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch deleted file mode 100644 index beb2a2441835aeaf9ee2ba30c557a8f2b6e4363f..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h b/Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h deleted file mode 100644 index 8abdfa083e6c6b6e818c6dedcba8f36615d92563..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import <UIKit/UIKit.h> -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double Toast_SwiftVersionNumber; -FOUNDATION_EXPORT const unsigned char Toast_SwiftVersionString[]; - diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig b/Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig deleted file mode 100644 index 8c4b186740bdc213c4e3f793f13e679d0527b866..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift.debug.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "QuartzCore" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Toast-Swift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap b/Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap deleted file mode 100644 index af3db9f59a054af4a44ad6189a191e617c095ed7..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Toast_Swift { - umbrella header "Toast-Swift-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig b/Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig deleted file mode 100644 index 8c4b186740bdc213c4e3f793f13e679d0527b866..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/Toast-Swift/Toast-Swift.release.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "QuartzCore" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/Toast-Swift -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Toast-Swift/LICENSE b/Pods/Toast-Swift/LICENSE deleted file mode 100644 index 6b3b9822fb9f872c40370ceb197bc6a623d03991..0000000000000000000000000000000000000000 --- a/Pods/Toast-Swift/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2015-2024 Charles Scalesse. - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Pods/Toast-Swift/README.md b/Pods/Toast-Swift/README.md deleted file mode 100644 index e7ae83162e31fcb8e9f08082222024ad7f4662d9..0000000000000000000000000000000000000000 --- a/Pods/Toast-Swift/README.md +++ /dev/null @@ -1,143 +0,0 @@ -Toast-Swift -============= - -[](http://cocoadocs.org/docsets/Toast-Swift) -[](https://github.com/Carthage/Carthage) - -Toast-Swift is a Swift extension that adds toast notifications to the `UIView` object class. It is intended to be simple, lightweight, and easy to use. Most toast notifications can be triggered with a single line of code. - -**Toast-Swift is a native Swift port of [Toast for iOS](https://github.com/scalessec/Toast "Toast for iOS").** - -Screenshots ---------- - - - -Basic Examples ---------- -```swift -// basic usage -self.view.makeToast("This is a piece of toast") - -// toast with a specific duration and position -self.view.makeToast("This is a piece of toast", duration: 3.0, position: .top) - -// toast presented with multiple options and with a completion closure -self.view.makeToast("This is a piece of toast", duration: 2.0, point: CGPoint(x: 110.0, y: 110.0), title: "Toast Title", image: UIImage(named: "toast.png")) { didTap in - if didTap { - print("completion from tap") - } else { - print("completion without tap") - } -} - -// display toast with an activity spinner -self.view.makeToastActivity(.center) - -// display any view as toast -self.view.showToast(myView) - -// immediately hides all toast views in self.view -self.view.hideAllToasts() -``` - -But wait, there's more! ---------- -```swift -// create a new style -var style = ToastStyle() - -// this is just one of many style options -style.messageColor = .blue - -// present the toast with the new style -self.view.makeToast("This is a piece of toast", duration: 3.0, position: .bottom, style: style) - -// or perhaps you want to use this style for all toasts going forward? -// just set the shared style and there's no need to provide the style again -ToastManager.shared.style = style -self.view.makeToast("This is a piece of toast") // now uses the shared style - -// toggle "tap to dismiss" functionality -ToastManager.shared.isTapToDismissEnabled = true - -// toggle queueing behavior -ToastManager.shared.isQueueEnabled = true -``` - -See the demo project for more examples. - - -Setup Instructions ------------------- - -[CocoaPods](http://cocoapods.org) ------------------- - -To integrate Toast-Swift into your Xcode project using CocoaPods, specify it in your `Podfile`: - -```ruby -pod 'Toast-Swift', '~> 5.1.0' -``` - -and in your code add `import Toast_Swift`. - -[Carthage](https://github.com/Carthage/Carthage) ------------------- - -To integrate Toast-Swift into your Xcode project using Carthage, specify it in your `Cartfile`: - -```ogdl -github "scalessec/Toast-Swift" ~> 5.1.0 -``` - -Run `carthage update` to build the framework and drag the built `ToastSwiftFramework.framework` into your Xcode project. - -and in your code add `import ToastSwiftFramework`. - -[Swift Package Manager](https://swift.org/package-manager/) ------------------- - -When using Xcode 11 or later, you can install `Toast` by going to your Project settings > `Swift Packages` and add the repository by providing the GitHub URL. Alternatively, you can go to `File` > `Swift Packages` > `Add Package Dependencies...` - -Manually ------------------- - -1. Add `Toast.swift` to your project. -2. Grab yourself a cold 🍺. - -Compatibility ------------------- -* Version `5.x.x` requires Swift 5 and Xcode 10.2 or later. -* Version `4.x.x` requires Swift 4.2 and Xcode 10. -* Version `3.x.x` requires Swift 4 and Xcode 9. -* Version `2.x.x` requires Swift 3 and Xcode 8. -* Version `1.4.x` requires Swift 2.2 and Xcode 7.3. -* Version `1.0.0` can be used with Swift 2.1 and earlier versions of Xcode. - -Privacy ------------ -Toast-Swift does not collect any data. A [privacy manifest](Toast/Resources/PrivacyInfo.xcprivacy) is provided with the library. See [Apple's documentation](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files) for related details. - -MIT License ------------ - Copyright (c) 2015-2024 Charles Scalesse. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy b/Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy deleted file mode 100644 index 3421b1621ec47885be769795ecc8ea1770b58279..0000000000000000000000000000000000000000 --- a/Pods/Toast-Swift/Toast/Resources/PrivacyInfo.xcprivacy +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> -<plist version="1.0"> -<dict> - <key>NSPrivacyTracking</key> - <false/> - <key>NSPrivacyCollectedDataTypes</key> - <array/> - <key>NSPrivacyTrackingDomains</key> - <array/> - <key>NSPrivacyAccessedAPITypes</key> - <array/> -</dict> -</plist> \ No newline at end of file diff --git a/Pods/Toast-Swift/Toast/Toast.swift b/Pods/Toast-Swift/Toast/Toast.swift deleted file mode 100644 index 5b4dd05c0a416492f0c8ef47d0df57104a56063e..0000000000000000000000000000000000000000 --- a/Pods/Toast-Swift/Toast/Toast.swift +++ /dev/null @@ -1,797 +0,0 @@ -// -// Toast.swift -// Toast-Swift -// -// Copyright (c) 2015-2024 Charles Scalesse. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -import UIKit -import ObjectiveC - -/** - Toast is a Swift extension that adds toast notifications to the `UIView` object class. - It is intended to be simple, lightweight, and easy to use. Most toast notifications - can be triggered with a single line of code. - - The `makeToast` methods create a new view and then display it as toast. - - The `showToast` methods display any view as toast. - - */ -public extension UIView { - - /** - Keys used for associated objects. - */ - private struct ToastKeys { - static var timer = malloc(1) - static var duration = malloc(1) - static var point = malloc(1) - static var completion = malloc(1) - static var activeToasts = malloc(1) - static var activityView = malloc(1) - static var queue = malloc(1) - } - - /** - Swift closures can't be directly associated with objects via the - Objective-C runtime, so the (ugly) solution is to wrap them in a - class that can be used with associated objects. - */ - private class ToastCompletionWrapper { - let completion: ((Bool) -> Void)? - - init(_ completion: ((Bool) -> Void)?) { - self.completion = completion - } - } - - private enum ToastError: Error { - case missingParameters - } - - private var activeToasts: NSMutableArray { - get { - if let activeToasts = objc_getAssociatedObject(self, &ToastKeys.activeToasts) as? NSMutableArray { - return activeToasts - } else { - let activeToasts = NSMutableArray() - objc_setAssociatedObject(self, &ToastKeys.activeToasts, activeToasts, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - return activeToasts - } - } - } - - private var queue: NSMutableArray { - get { - if let queue = objc_getAssociatedObject(self, &ToastKeys.queue) as? NSMutableArray { - return queue - } else { - let queue = NSMutableArray() - objc_setAssociatedObject(self, &ToastKeys.queue, queue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - return queue - } - } - } - - // MARK: - Make Toast Methods - - /** - Creates and presents a new toast view. - - @param message The message to be displayed - @param duration The toast duration - @param position The toast's position - @param title The title - @param image The image - @param style The style. The shared style will be used when nil - @param completion The completion closure, executed after the toast view disappears. - didTap will be `true` if the toast view was dismissed from a tap. - */ - func makeToast(_ message: String?, duration: TimeInterval = ToastManager.shared.duration, position: ToastPosition = ToastManager.shared.position, title: String? = nil, image: UIImage? = nil, style: ToastStyle = ToastManager.shared.style, completion: ((_ didTap: Bool) -> Void)? = nil) { - do { - let toast = try toastViewForMessage(message, title: title, image: image, style: style) - showToast(toast, duration: duration, position: position, completion: completion) - } catch ToastError.missingParameters { - print("Error: message, title, and image are all nil") - } catch {} - } - - /** - Creates a new toast view and presents it at a given center point. - - @param message The message to be displayed - @param duration The toast duration - @param point The toast's center point - @param title The title - @param image The image - @param style The style. The shared style will be used when nil - @param completion The completion closure, executed after the toast view disappears. - didTap will be `true` if the toast view was dismissed from a tap. - */ - func makeToast(_ message: String?, duration: TimeInterval = ToastManager.shared.duration, point: CGPoint, title: String?, image: UIImage?, style: ToastStyle = ToastManager.shared.style, completion: ((_ didTap: Bool) -> Void)?) { - do { - let toast = try toastViewForMessage(message, title: title, image: image, style: style) - showToast(toast, duration: duration, point: point, completion: completion) - } catch ToastError.missingParameters { - print("Error: message, title, and image cannot all be nil") - } catch {} - } - - // MARK: - Show Toast Methods - - /** - Displays any view as toast at a provided position and duration. The completion closure - executes when the toast view completes. `didTap` will be `true` if the toast view was - dismissed from a tap. - - @param toast The view to be displayed as toast - @param duration The notification duration - @param position The toast's position - @param completion The completion block, executed after the toast view disappears. - didTap will be `true` if the toast view was dismissed from a tap. - */ - func showToast(_ toast: UIView, duration: TimeInterval = ToastManager.shared.duration, position: ToastPosition = ToastManager.shared.position, completion: ((_ didTap: Bool) -> Void)? = nil) { - let point = position.centerPoint(forToast: toast, inSuperview: self) - showToast(toast, duration: duration, point: point, completion: completion) - } - - /** - Displays any view as toast at a provided center point and duration. The completion closure - executes when the toast view completes. `didTap` will be `true` if the toast view was - dismissed from a tap. - - @param toast The view to be displayed as toast - @param duration The notification duration - @param point The toast's center point - @param completion The completion block, executed after the toast view disappears. - didTap will be `true` if the toast view was dismissed from a tap. - */ - func showToast(_ toast: UIView, duration: TimeInterval = ToastManager.shared.duration, point: CGPoint, completion: ((_ didTap: Bool) -> Void)? = nil) { - objc_setAssociatedObject(toast, &ToastKeys.completion, ToastCompletionWrapper(completion), .OBJC_ASSOCIATION_RETAIN_NONATOMIC); - - if ToastManager.shared.isQueueEnabled, activeToasts.count > 0 { - objc_setAssociatedObject(toast, &ToastKeys.duration, NSNumber(value: duration), .OBJC_ASSOCIATION_RETAIN_NONATOMIC); - objc_setAssociatedObject(toast, &ToastKeys.point, NSValue(cgPoint: point), .OBJC_ASSOCIATION_RETAIN_NONATOMIC); - - queue.add(toast) - } else { - showToast(toast, duration: duration, point: point) - } - } - - // MARK: - Hide Toast Methods - - /** - Hides the active toast. If there are multiple toasts active in a view, this method - hides the oldest toast (the first of the toasts to have been presented). - - @see `hideAllToasts()` to remove all active toasts from a view. - - @warning This method has no effect on activity toasts. Use `hideToastActivity` to - hide activity toasts. - - */ - func hideToast() { - guard let activeToast = activeToasts.firstObject as? UIView else { return } - hideToast(activeToast) - } - - /** - Hides an active toast. - - @param toast The active toast view to dismiss. Any toast that is currently being displayed - on the screen is considered active. - - @warning this does not clear a toast view that is currently waiting in the queue. - */ - func hideToast(_ toast: UIView) { - guard activeToasts.contains(toast) else { return } - hideToast(toast, fromTap: false) - } - - /** - Hides all toast views. - - @param includeActivity If `true`, toast activity will also be hidden. Default is `false`. - @param clearQueue If `true`, removes all toast views from the queue. Default is `true`. - */ - func hideAllToasts(includeActivity: Bool = false, clearQueue: Bool = true) { - if clearQueue { - clearToastQueue() - } - - activeToasts.compactMap { $0 as? UIView } - .forEach { hideToast($0) } - - if includeActivity { - hideToastActivity() - } - } - - /** - Removes all toast views from the queue. This has no effect on toast views that are - active. Use `hideAllToasts(clearQueue:)` to hide the active toasts views and clear - the queue. - */ - func clearToastQueue() { - queue.removeAllObjects() - } - - // MARK: - Activity Methods - - /** - Creates and displays a new toast activity indicator view at a specified position. - - @warning Only one toast activity indicator view can be presented per superview. Subsequent - calls to `makeToastActivity(position:)` will be ignored until `hideToastActivity()` is called. - - @warning `makeToastActivity(position:)` works independently of the `showToast` methods. Toast - activity views can be presented and dismissed while toast views are being displayed. - `makeToastActivity(position:)` has no effect on the queueing behavior of the `showToast` methods. - - @param position The toast's position - */ - func makeToastActivity(_ position: ToastPosition) { - // sanity - guard objc_getAssociatedObject(self, &ToastKeys.activityView) as? UIView == nil else { return } - - let toast = createToastActivityView() - let point = position.centerPoint(forToast: toast, inSuperview: self) - makeToastActivity(toast, point: point) - } - - /** - Creates and displays a new toast activity indicator view at a specified position. - - @warning Only one toast activity indicator view can be presented per superview. Subsequent - calls to `makeToastActivity(position:)` will be ignored until `hideToastActivity()` is called. - - @warning `makeToastActivity(position:)` works independently of the `showToast` methods. Toast - activity views can be presented and dismissed while toast views are being displayed. - `makeToastActivity(position:)` has no effect on the queueing behavior of the `showToast` methods. - - @param point The toast's center point - */ - func makeToastActivity(_ point: CGPoint) { - // sanity - guard objc_getAssociatedObject(self, &ToastKeys.activityView) as? UIView == nil else { return } - - let toast = createToastActivityView() - makeToastActivity(toast, point: point) - } - - /** - Dismisses the active toast activity indicator view. - */ - func hideToastActivity() { - if let toast = objc_getAssociatedObject(self, &ToastKeys.activityView) as? UIView { - UIView.animate(withDuration: ToastManager.shared.style.fadeDuration, delay: 0.0, options: [.curveEaseIn, .beginFromCurrentState], animations: { - toast.alpha = 0.0 - }) { _ in - toast.removeFromSuperview() - objc_setAssociatedObject(self, &ToastKeys.activityView, nil, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - } - } - } - - // MARK: - Helper Methods - - /** - Returns `true` if a toast view or toast activity view is actively being displayed. - */ - func isShowingToast() -> Bool { - return activeToasts.count > 0 || objc_getAssociatedObject(self, &ToastKeys.activityView) != nil - } - - // MARK: - Private Activity Methods - - private func makeToastActivity(_ toast: UIView, point: CGPoint) { - toast.alpha = 0.0 - toast.center = point - - objc_setAssociatedObject(self, &ToastKeys.activityView, toast, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - - self.addSubview(toast) - - UIView.animate(withDuration: ToastManager.shared.style.fadeDuration, delay: 0.0, options: .curveEaseOut, animations: { - toast.alpha = 1.0 - }) - } - - private func createToastActivityView() -> UIView { - let style = ToastManager.shared.style - - let activityView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: style.activitySize.width, height: style.activitySize.height)) - activityView.backgroundColor = style.activityBackgroundColor - activityView.autoresizingMask = [.flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin] - activityView.layer.cornerRadius = style.cornerRadius - - if style.displayShadow { - activityView.layer.shadowColor = style.shadowColor.cgColor - activityView.layer.shadowOpacity = style.shadowOpacity - activityView.layer.shadowRadius = style.shadowRadius - activityView.layer.shadowOffset = style.shadowOffset - } - - let activityIndicatorView = UIActivityIndicatorView(style: .whiteLarge) - activityIndicatorView.center = CGPoint(x: activityView.bounds.size.width / 2.0, y: activityView.bounds.size.height / 2.0) - activityView.addSubview(activityIndicatorView) - activityIndicatorView.color = style.activityIndicatorColor - activityIndicatorView.startAnimating() - - return activityView - } - - // MARK: - Private Show/Hide Methods - - private func showToast(_ toast: UIView, duration: TimeInterval, point: CGPoint) { - toast.center = point - toast.alpha = 0.0 - - if ToastManager.shared.isTapToDismissEnabled { - let recognizer = UITapGestureRecognizer(target: self, action: #selector(UIView.handleToastTapped(_:))) - toast.addGestureRecognizer(recognizer) - toast.isUserInteractionEnabled = true - toast.isExclusiveTouch = true - } - - activeToasts.add(toast) - self.addSubview(toast) - - let timer = Timer(timeInterval: duration, target: self, selector: #selector(UIView.toastTimerDidFinish(_:)), userInfo: toast, repeats: false) - objc_setAssociatedObject(toast, &ToastKeys.timer, timer, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) - - UIView.animate(withDuration: ToastManager.shared.style.fadeDuration, delay: 0.0, options: [.curveEaseOut, .allowUserInteraction], animations: { - toast.alpha = 1.0 - }) { _ in - guard let timer = objc_getAssociatedObject(toast, &ToastKeys.timer) as? Timer else { return } - RunLoop.main.add(timer, forMode: .common) - } - - UIAccessibility.post(notification: .screenChanged, argument: toast) - } - - private func hideToast(_ toast: UIView, fromTap: Bool) { - if let timer = objc_getAssociatedObject(toast, &ToastKeys.timer) as? Timer { - timer.invalidate() - } - - UIView.animate(withDuration: ToastManager.shared.style.fadeDuration, delay: 0.0, options: [.curveEaseIn, .beginFromCurrentState], animations: { - toast.alpha = 0.0 - }) { _ in - toast.removeFromSuperview() - self.activeToasts.remove(toast) - - if let wrapper = objc_getAssociatedObject(toast, &ToastKeys.completion) as? ToastCompletionWrapper, let completion = wrapper.completion { - completion(fromTap) - } - - if let nextToast = self.queue.firstObject as? UIView, let duration = objc_getAssociatedObject(nextToast, &ToastKeys.duration) as? NSNumber, let point = objc_getAssociatedObject(nextToast, &ToastKeys.point) as? NSValue { - self.queue.removeObject(at: 0) - self.showToast(nextToast, duration: duration.doubleValue, point: point.cgPointValue) - } - } - } - - // MARK: - Events - - @objc - private func handleToastTapped(_ recognizer: UITapGestureRecognizer) { - guard let toast = recognizer.view else { return } - hideToast(toast, fromTap: true) - } - - @objc - private func toastTimerDidFinish(_ timer: Timer) { - guard let toast = timer.userInfo as? UIView else { return } - hideToast(toast) - } - - // MARK: - Toast Construction - - /** - Creates a new toast view with any combination of message, title, and image. - The look and feel is configured via the style. Unlike the `makeToast` methods, - this method does not present the toast view automatically. One of the `showToast` - methods must be used to present the resulting view. - - @warning if message, title, and image are all nil, this method will throw - `ToastError.missingParameters` - - @param message The message to be displayed - @param title The title - @param image The image - @param style The style. The shared style will be used when nil - @throws `ToastError.missingParameters` when message, title, and image are all nil - @return The newly created toast view - */ - func toastViewForMessage(_ message: String?, title: String?, image: UIImage?, style: ToastStyle) throws -> UIView { - // sanity - guard message != nil || title != nil || image != nil else { - throw ToastError.missingParameters - } - - var messageLabel: UILabel? - var titleLabel: UILabel? - var imageView: UIImageView? - - let wrapperView = UIView() - wrapperView.backgroundColor = style.backgroundColor - wrapperView.autoresizingMask = [.flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin] - wrapperView.layer.cornerRadius = style.cornerRadius - - if style.displayShadow { - wrapperView.layer.shadowColor = style.shadowColor.cgColor - wrapperView.layer.shadowOpacity = style.shadowOpacity - wrapperView.layer.shadowRadius = style.shadowRadius - wrapperView.layer.shadowOffset = style.shadowOffset - } - - if let image = image { - imageView = UIImageView(image: image) - imageView?.contentMode = .scaleAspectFit - imageView?.frame = CGRect(x: style.horizontalPadding, y: style.verticalPadding, width: style.imageSize.width, height: style.imageSize.height) - } - - var imageRect = CGRect.zero - - if let imageView = imageView { - imageRect.origin.x = style.horizontalPadding - imageRect.origin.y = style.verticalPadding - imageRect.size.width = imageView.bounds.size.width - imageRect.size.height = imageView.bounds.size.height - } - - if let title = title { - titleLabel = UILabel() - titleLabel?.numberOfLines = style.titleNumberOfLines - titleLabel?.font = style.titleFont - titleLabel?.textAlignment = style.titleAlignment - titleLabel?.lineBreakMode = .byTruncatingTail - titleLabel?.textColor = style.titleColor - titleLabel?.backgroundColor = UIColor.clear - titleLabel?.text = title; - - let maxTitleSize = CGSize(width: (self.bounds.size.width * style.maxWidthPercentage) - imageRect.size.width, height: self.bounds.size.height * style.maxHeightPercentage) - let titleSize = titleLabel?.sizeThatFits(maxTitleSize) - if let titleSize = titleSize { - titleLabel?.frame = CGRect(x: 0.0, y: 0.0, width: titleSize.width, height: titleSize.height) - } - } - - if let message = message { - messageLabel = UILabel() - messageLabel?.text = message - messageLabel?.numberOfLines = style.messageNumberOfLines - messageLabel?.font = style.messageFont - messageLabel?.textAlignment = style.messageAlignment - messageLabel?.lineBreakMode = .byTruncatingTail; - messageLabel?.textColor = style.messageColor - messageLabel?.backgroundColor = UIColor.clear - - let maxMessageSize = CGSize(width: (self.bounds.size.width * style.maxWidthPercentage) - imageRect.size.width, height: self.bounds.size.height * style.maxHeightPercentage) - let messageSize = messageLabel?.sizeThatFits(maxMessageSize) - if let messageSize = messageSize { - let actualWidth = min(messageSize.width, maxMessageSize.width) - let actualHeight = min(messageSize.height, maxMessageSize.height) - messageLabel?.frame = CGRect(x: 0.0, y: 0.0, width: actualWidth, height: actualHeight) - } - } - - var titleRect = CGRect.zero - - if let titleLabel = titleLabel { - titleRect.origin.x = imageRect.origin.x + imageRect.size.width + style.horizontalPadding - titleRect.origin.y = style.verticalPadding - titleRect.size.width = titleLabel.bounds.size.width - titleRect.size.height = titleLabel.bounds.size.height - } - - var messageRect = CGRect.zero - - if let messageLabel = messageLabel { - messageRect.origin.x = imageRect.origin.x + imageRect.size.width + style.horizontalPadding - messageRect.origin.y = titleRect.origin.y + titleRect.size.height + style.verticalPadding - messageRect.size.width = messageLabel.bounds.size.width - messageRect.size.height = messageLabel.bounds.size.height - } - - let longerWidth = max(titleRect.size.width, messageRect.size.width) - let longerX = max(titleRect.origin.x, messageRect.origin.x) - let wrapperWidth = max((imageRect.size.width + (style.horizontalPadding * 2.0)), (longerX + longerWidth + style.horizontalPadding)) - - let textMaxY = messageRect.size.height <= 0.0 && titleRect.size.height > 0.0 ? titleRect.maxY : messageRect.maxY - let wrapperHeight = max((textMaxY + style.verticalPadding), (imageRect.size.height + (style.verticalPadding * 2.0))) - - wrapperView.frame = CGRect(x: 0.0, y: 0.0, width: wrapperWidth, height: wrapperHeight) - - if let titleLabel = titleLabel { - titleRect.size.width = longerWidth - titleLabel.frame = titleRect - wrapperView.addSubview(titleLabel) - } - - if let messageLabel = messageLabel { - messageRect.size.width = longerWidth - messageLabel.frame = messageRect - wrapperView.addSubview(messageLabel) - } - - if let imageView = imageView { - wrapperView.addSubview(imageView) - } - - return wrapperView - } - -} - -// MARK: - Toast Style - -/** - `ToastStyle` instances define the look and feel for toast views created via the - `makeToast` methods as well for toast views created directly with - `toastViewForMessage(message:title:image:style:)`. - - @warning `ToastStyle` offers relatively simple styling options for the default - toast view. If you require a toast view with more complex UI, it probably makes more - sense to create your own custom UIView subclass and present it with the `showToast` - methods. -*/ -public struct ToastStyle { - - public init() {} - - /** - The background color. Default is `.black` at 80% opacity. - */ - public var backgroundColor: UIColor = UIColor.black.withAlphaComponent(0.8) - - /** - The title color. Default is `UIColor.whiteColor()`. - */ - public var titleColor: UIColor = .white - - /** - The message color. Default is `.white`. - */ - public var messageColor: UIColor = .white - - /** - A percentage value from 0.0 to 1.0, representing the maximum width of the toast - view relative to it's superview. Default is 0.8 (80% of the superview's width). - */ - public var maxWidthPercentage: CGFloat = 0.8 { - didSet { - maxWidthPercentage = max(min(maxWidthPercentage, 1.0), 0.0) - } - } - - /** - A percentage value from 0.0 to 1.0, representing the maximum height of the toast - view relative to it's superview. Default is 0.8 (80% of the superview's height). - */ - public var maxHeightPercentage: CGFloat = 0.8 { - didSet { - maxHeightPercentage = max(min(maxHeightPercentage, 1.0), 0.0) - } - } - - /** - The spacing from the horizontal edge of the toast view to the content. When an image - is present, this is also used as the padding between the image and the text. - Default is 10.0. - - */ - public var horizontalPadding: CGFloat = 10.0 - - /** - The spacing from the vertical edge of the toast view to the content. When a title - is present, this is also used as the padding between the title and the message. - Default is 10.0. On iOS11+, this value is added added to the `safeAreaInset.top` - and `safeAreaInsets.bottom`. - */ - public var verticalPadding: CGFloat = 10.0 - - /** - The corner radius. Default is 10.0. - */ - public var cornerRadius: CGFloat = 10.0; - - /** - The title font. Default is `.boldSystemFont(16.0)`. - */ - public var titleFont: UIFont = .boldSystemFont(ofSize: 16.0) - - /** - The message font. Default is `.systemFont(ofSize: 16.0)`. - */ - public var messageFont: UIFont = .systemFont(ofSize: 16.0) - - /** - The title text alignment. Default is `NSTextAlignment.Left`. - */ - public var titleAlignment: NSTextAlignment = .left - - /** - The message text alignment. Default is `NSTextAlignment.Left`. - */ - public var messageAlignment: NSTextAlignment = .left - - /** - The maximum number of lines for the title. The default is 0 (no limit). - */ - public var titleNumberOfLines = 0 - - /** - The maximum number of lines for the message. The default is 0 (no limit). - */ - public var messageNumberOfLines = 0 - - /** - Enable or disable a shadow on the toast view. Default is `false`. - */ - public var displayShadow = false - - /** - The shadow color. Default is `.black`. - */ - public var shadowColor: UIColor = .black - - /** - A value from 0.0 to 1.0, representing the opacity of the shadow. - Default is 0.8 (80% opacity). - */ - public var shadowOpacity: Float = 0.8 { - didSet { - shadowOpacity = max(min(shadowOpacity, 1.0), 0.0) - } - } - - /** - The shadow radius. Default is 6.0. - */ - public var shadowRadius: CGFloat = 6.0 - - /** - The shadow offset. The default is 4 x 4. - */ - public var shadowOffset = CGSize(width: 4.0, height: 4.0) - - /** - The image size. The default is 80 x 80. - */ - public var imageSize = CGSize(width: 80.0, height: 80.0) - - /** - The size of the toast activity view when `makeToastActivity(position:)` is called. - Default is 100 x 100. - */ - public var activitySize = CGSize(width: 100.0, height: 100.0) - - /** - The fade in/out animation duration. Default is 0.2. - */ - public var fadeDuration: TimeInterval = 0.2 - - /** - Activity indicator color. Default is `.white`. - */ - public var activityIndicatorColor: UIColor = .white - - /** - Activity background color. Default is `.black` at 80% opacity. - */ - public var activityBackgroundColor: UIColor = UIColor.black.withAlphaComponent(0.8) - -} - -// MARK: - Toast Manager - -/** - `ToastManager` provides general configuration options for all toast - notifications. Backed by a singleton instance. -*/ -public class ToastManager { - - /** - The `ToastManager` singleton instance. - - */ - public static let shared = ToastManager() - - /** - The shared style. Used whenever toastViewForMessage(message:title:image:style:) is called - with with a nil style. - - */ - public var style = ToastStyle() - - /** - Enables or disables tap to dismiss on toast views. Default is `true`. - - */ - public var isTapToDismissEnabled = true - - /** - Enables or disables queueing behavior for toast views. When `true`, - toast views will appear one after the other. When `false`, multiple toast - views will appear at the same time (potentially overlapping depending - on their positions). This has no effect on the toast activity view, - which operates independently of normal toast views. Default is `false`. - - */ - public var isQueueEnabled = false - - /** - The default duration. Used for the `makeToast` and - `showToast` methods that don't require an explicit duration. - Default is 3.0. - - */ - public var duration: TimeInterval = 3.0 - - /** - Sets the default position. Used for the `makeToast` and - `showToast` methods that don't require an explicit position. - Default is `ToastPosition.Bottom`. - - */ - public var position: ToastPosition = .bottom - -} - -// MARK: - ToastPosition - -public enum ToastPosition { - case top - case center - case bottom - - fileprivate func centerPoint(forToast toast: UIView, inSuperview superview: UIView) -> CGPoint { - let topPadding: CGFloat = ToastManager.shared.style.verticalPadding + superview.csSafeAreaInsets.top - let bottomPadding: CGFloat = ToastManager.shared.style.verticalPadding + superview.csSafeAreaInsets.bottom - - switch self { - case .top: - return CGPoint(x: superview.bounds.size.width / 2.0, y: (toast.frame.size.height / 2.0) + topPadding) - case .center: - return CGPoint(x: superview.bounds.size.width / 2.0, y: superview.bounds.size.height / 2.0) - case .bottom: - return CGPoint(x: superview.bounds.size.width / 2.0, y: (superview.bounds.size.height - (toast.frame.size.height / 2.0)) - bottomPadding) - } - } -} - -// MARK: - Private UIView Extensions - -private extension UIView { - - var csSafeAreaInsets: UIEdgeInsets { - if #available(iOS 11.0, *) { - return self.safeAreaInsets - } else { - return .zero - } - } - -}