diff --git a/.DS_Store b/.DS_Store index 9ec06f17cc82872370c33c1c489d0d7b508bdd5b..3e26a52fff5438edeb18fcee98f3ad011b7b4b11 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/MiniScanner.xcodeproj/project.pbxproj b/MiniScanner.xcodeproj/project.pbxproj index 8d84442290ed3438c672ee64742fb323e2c5a519..a5b3754b478b8fb33c26f9ddc1cde619b98229c2 100644 --- a/MiniScanner.xcodeproj/project.pbxproj +++ b/MiniScanner.xcodeproj/project.pbxproj @@ -124,6 +124,7 @@ 539D1C8C2C16E97F009DB24A /* ShareSheetViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 539D1C8A2C16E97F009DB24A /* ShareSheetViewController.xib */; }; 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 */; }; 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 */; }; @@ -169,7 +170,7 @@ 53F21F9F2C1377B900172BFC /* Tajawal-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 53F21F982C1377B900172BFC /* Tajawal-Regular.ttf */; }; 53F21FA02C1377B900172BFC /* Tajawal-Medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 53F21F992C1377B900172BFC /* Tajawal-Medium.ttf */; }; 53F21FA12C1377B900172BFC /* Tajawal-Black.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 53F21F9A2C1377B900172BFC /* Tajawal-Black.ttf */; }; - 89A104FC06BB7828A032A87D /* Pods_MiniScanner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AAD7D3C1EDFE9561694F861 /* Pods_MiniScanner.framework */; }; + B827E5196CC419E773B843E1 /* Pods_MiniScanner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9A37DC9F9A8E3AF632DFB98 /* Pods_MiniScanner.framework */; }; EC0CF1FE254D8BBF00888722 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0CF1FD254D8BBF00888722 /* AppDelegate.swift */; }; EC0CF200254D8BBF00888722 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0CF1FF254D8BBF00888722 /* SceneDelegate.swift */; }; EC0CF207254D8BC000888722 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC0CF206254D8BC000888722 /* Assets.xcassets */; }; @@ -350,6 +351,8 @@ 539D1C862C164F92009DB24A /* CustomTabBarView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CustomTabBarView.xib; sourceTree = "<group>"; }; 539D1C892C16E97F009DB24A /* ShareSheetViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheetViewController.swift; sourceTree = "<group>"; }; 539D1C8A2C16E97F009DB24A /* ShareSheetViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ShareSheetViewController.xib; sourceTree = "<group>"; }; + 539EF14D2C2AA43B0041AE1F /* ara.traineddata */ = {isa = PBXFileReference; lastKnownFileType = file; path = ara.traineddata; sourceTree = "<group>"; }; + 539EF14F2C2AA6CC0041AE1F /* TesseractOCR.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TesseractOCR.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 53BAE0EB2C15E0890072189E /* EditViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditViewController.swift; sourceTree = "<group>"; }; 53BAE0EC2C15E0890072189E /* EditViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EditViewController.xib; sourceTree = "<group>"; }; 53BEB1402C2967E0005A3567 /* FoldersViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FoldersViewController.swift; sourceTree = "<group>"; }; @@ -400,9 +403,8 @@ 53F21F982C1377B900172BFC /* Tajawal-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tajawal-Regular.ttf"; sourceTree = "<group>"; }; 53F21F992C1377B900172BFC /* Tajawal-Medium.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tajawal-Medium.ttf"; sourceTree = "<group>"; }; 53F21F9A2C1377B900172BFC /* Tajawal-Black.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Tajawal-Black.ttf"; sourceTree = "<group>"; }; - 66158525AF6802C8915A4F1D /* Pods-MiniScanner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MiniScanner.release.xcconfig"; path = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig"; sourceTree = "<group>"; }; - 7AAD7D3C1EDFE9561694F861 /* Pods_MiniScanner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MiniScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C1C7039C762C26A931475E2D /* Pods-MiniScanner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MiniScanner.debug.xcconfig"; path = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig"; sourceTree = "<group>"; }; + E8AF4FB39674DF589D719DCF /* Pods-MiniScanner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MiniScanner.release.xcconfig"; path = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig"; sourceTree = "<group>"; }; + E9A37DC9F9A8E3AF632DFB98 /* Pods_MiniScanner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MiniScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EC0CF1FA254D8BBF00888722 /* MiniScanner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MiniScanner.app; sourceTree = BUILT_PRODUCTS_DIR; }; EC0CF1FD254D8BBF00888722 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; EC0CF1FF254D8BBF00888722 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; }; @@ -437,6 +439,7 @@ ECA1FAA3254DEB140081F00B /* CustomPDFView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomPDFView.swift; sourceTree = "<group>"; }; ECD43ED525A7BA9500B5A3F2 /* ThemeManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemeManager.swift; sourceTree = "<group>"; }; ECE9BBA9254E295900D45E43 /* Date+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+Extensions.swift"; sourceTree = "<group>"; }; + EE0067603E6B4BAB4693026E /* Pods-MiniScanner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MiniScanner.debug.xcconfig"; path = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.debug.xcconfig"; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -444,9 +447,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 89A104FC06BB7828A032A87D /* Pods_MiniScanner.framework in Frameworks */, 539D1C972C171344009DB24A /* LNExtensionExecutor in Frameworks */, 539996542C2711BA00671340 /* ZLImageEditor in Frameworks */, + B827E5196CC419E773B843E1 /* Pods_MiniScanner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -737,7 +740,8 @@ 53AF29712C1098AC0046E9C1 /* Frameworks */ = { isa = PBXGroup; children = ( - 7AAD7D3C1EDFE9561694F861 /* Pods_MiniScanner.framework */, + 539EF14F2C2AA6CC0041AE1F /* TesseractOCR.framework */, + E9A37DC9F9A8E3AF632DFB98 /* Pods_MiniScanner.framework */, ); name = Frameworks; sourceTree = "<group>"; @@ -885,8 +889,8 @@ 98E49D3F46C8E62718825860 /* Pods */ = { isa = PBXGroup; children = ( - C1C7039C762C26A931475E2D /* Pods-MiniScanner.debug.xcconfig */, - 66158525AF6802C8915A4F1D /* Pods-MiniScanner.release.xcconfig */, + EE0067603E6B4BAB4693026E /* Pods-MiniScanner.debug.xcconfig */, + E8AF4FB39674DF589D719DCF /* Pods-MiniScanner.release.xcconfig */, ); path = Pods; sourceTree = "<group>"; @@ -991,6 +995,7 @@ EC8A9B0C254DC30800F9AF99 /* Supporting Files */ = { isa = PBXGroup; children = ( + 539EF14D2C2AA43B0041AE1F /* ara.traineddata */, 539996592C27130000671340 /* SnapKit */, 539996552C27124B00671340 /* FontChooserContainerView.swift */, 539996562C27124B00671340 /* ImageStickerContainerView.swift */, @@ -1054,12 +1059,12 @@ isa = PBXNativeTarget; buildConfigurationList = EC0CF20E254D8BC000888722 /* Build configuration list for PBXNativeTarget "MiniScanner" */; buildPhases = ( - 9E6ED0FFF4C8D3D328F1DFFF /* [CP] Check Pods Manifest.lock */, + 99D7B11C31AD286E9B8AA5BB /* [CP] Check Pods Manifest.lock */, EC0CF1F6254D8BBF00888722 /* Sources */, EC0CF1F7254D8BBF00888722 /* Frameworks */, EC0CF1F8254D8BBF00888722 /* Resources */, 53AF29742C1098AC0046E9C1 /* Embed Frameworks */, - 4A21A25BEE5D3ECADCE2DC21 /* [CP] Embed Pods Frameworks */, + DA60922C848B730E3FD79E2B /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -1106,8 +1111,8 @@ ); mainGroup = EC0CF1F1254D8BBF00888722; packageReferences = ( - 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor" */, - 539996522C2711BA00671340 /* XCRemoteSwiftPackageReference "ZLImageEditor" */, + 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor.git" */, + 539996522C2711BA00671340 /* XCRemoteSwiftPackageReference "ZLImageEditor.git" */, ); productRefGroup = EC0CF1FB254D8BBF00888722 /* Products */; projectDirPath = ""; @@ -1149,6 +1154,7 @@ 53014FAE2C11A8E80071CE39 /* rotate@2x.png in Resources */, 53014FB32C11A8E80071CE39 /* flash@3x.png in Resources */, 53CD5F622C15A6210010424B /* SettingViewController.xib in Resources */, + 539EF14E2C2AA43B0041AE1F /* ara.traineddata in Resources */, 53F21F9E2C1377B900172BFC /* Tajawal-ExtraLight.ttf in Resources */, 539996352C26D41300671340 /* OCRViewController.xib in Resources */, 53014FB22C11A8E80071CE39 /* flashUnavailable@3x.png in Resources */, @@ -1172,43 +1178,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 4A21A25BEE5D3ECADCE2DC21 /* [CP] Embed Pods Frameworks */ = { + 99D7B11C31AD286E9B8AA5BB /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-MiniScanner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 9E6ED0FFF4C8D3D328F1DFFF /* [CP] Check Pods Manifest.lock */ = { + DA60922C848B730E3FD79E2B /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-MiniScanner-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -1517,7 +1523,7 @@ }; EC0CF20F254D8BC000888722 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C1C7039C762C26A931475E2D /* Pods-MiniScanner.debug.xcconfig */; + baseConfigurationReference = EE0067603E6B4BAB4693026E /* Pods-MiniScanner.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -1546,7 +1552,7 @@ }; EC0CF210254D8BC000888722 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 66158525AF6802C8915A4F1D /* Pods-MiniScanner.release.xcconfig */; + baseConfigurationReference = E8AF4FB39674DF589D719DCF /* Pods-MiniScanner.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -1597,7 +1603,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 539996522C2711BA00671340 /* XCRemoteSwiftPackageReference "ZLImageEditor" */ = { + 539996522C2711BA00671340 /* XCRemoteSwiftPackageReference "ZLImageEditor.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/longitachi/ZLImageEditor.git"; requirement = { @@ -1605,7 +1611,7 @@ minimumVersion = 2.0.2; }; }; - 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor" */ = { + 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor.git" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/LeoNatan/LNExtensionExecutor.git"; requirement = { @@ -1618,12 +1624,12 @@ /* Begin XCSwiftPackageProductDependency section */ 539996532C2711BA00671340 /* ZLImageEditor */ = { isa = XCSwiftPackageProductDependency; - package = 539996522C2711BA00671340 /* XCRemoteSwiftPackageReference "ZLImageEditor" */; + package = 539996522C2711BA00671340 /* XCRemoteSwiftPackageReference "ZLImageEditor.git" */; productName = ZLImageEditor; }; 539D1C962C171344009DB24A /* LNExtensionExecutor */ = { isa = XCSwiftPackageProductDependency; - package = 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor" */; + package = 539D1C952C171344009DB24A /* XCRemoteSwiftPackageReference "LNExtensionExecutor.git" */; productName = LNExtensionExecutor; }; /* End XCSwiftPackageProductDependency section */ diff --git a/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist b/MiniScanner.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist index 3f44a91747422c5817f74dc1bdea18f80b8378cd..3efba6c8f2248a00a4e7e15d0b784416f0d27c9b 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>10</integer> + <integer>8</integer> </dict> </dict> </dict> diff --git a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate index 4ebdf391b22d71d5fb55a93dbb32af7762d475a6..362a247d73d21ea7262c77f54a657aa3330b97f5 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.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 338e54539d97191c4c802184c4f7a9ce89dae6a6..216ee44a169a423c337b1cc8c733a132117605a0 100644 --- a/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/MiniScanner.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -3,38 +3,4 @@ uuid = "270C854E-19C5-4254-A77F-7774BFB2FDA6" type = "0" version = "2.0"> - <Breakpoints> - <BreakpointProxy - BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> - <BreakpointContent - uuid = "4E444672-FB4E-4DEC-B2D5-635B3D9E1DC5" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - filePath = "MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "47" - endingLineNumber = "47" - landmarkName = "collectionView(_:cellForItemAt:)" - landmarkType = "7"> - </BreakpointContent> - </BreakpointProxy> - <BreakpointProxy - BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint"> - <BreakpointContent - uuid = "80A1F694-1CE3-4C25-8DC7-1DDB8615DBF4" - shouldBeEnabled = "Yes" - ignoreCount = "0" - continueAfterRunningActions = "No" - filePath = "MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift" - startingColumnNumber = "9223372036854775807" - endingColumnNumber = "9223372036854775807" - startingLineNumber = "48" - endingLineNumber = "48" - landmarkName = "collectionView(_:cellForItemAt:)" - landmarkType = "7"> - </BreakpointContent> - </BreakpointProxy> - </Breakpoints> </Bucket> diff --git a/MiniScanner/.DS_Store b/MiniScanner/.DS_Store index 36235e49965c28f0914f34d17e2768ee4d2e4cc4..a82a063c98fd6eb88f4e73738a5284827dfc68e6 100644 Binary files a/MiniScanner/.DS_Store and b/MiniScanner/.DS_Store differ diff --git a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift index acab3a080f3fecc373d575a237258108f4858df2..18ba42ae05acf9df0093319cce0050eff4f1346b 100644 --- a/MiniScanner/Modules/Documents/DocumentsTableViewController.swift +++ b/MiniScanner/Modules/Documents/DocumentsTableViewController.swift @@ -34,7 +34,7 @@ final class DocumentsTableViewController: UIViewController, UITableViewDelegate, var options:ImageScannerOptions! var scannedItem = ScannedItem(originalImage: UIImage()) var images: [UIImage] = [] - + // private let noDocumentsimageView = UIImageView(image: UIImage(named: "box")) private var renameAlertController: UIAlertController? private var renameFileName: String? @@ -132,8 +132,17 @@ final class DocumentsTableViewController: UIViewController, UITableViewDelegate, } @objc private func openSettings() { - let settings = SettingViewController() - self.navigationController?.pushViewController(settings, animated: false) + if #available(iOS 16.0, *) { + let liveScan = DataScannerViewController(recognizedDataTypes: [.text()], + qualityLevel: .balanced, + isHighlightingEnabled: true) + liveScan.delegate = self + try? liveScan.startScanning() + self.present(liveScan, animated: true) + } else { + let settings = SettingViewController() + self.navigationController?.pushViewController(settings, animated: false) + } } func extractImage(from pdfDocument: PDFDocument, at pageIndex: Int) -> ScannedItem? { @@ -237,7 +246,9 @@ final class DocumentsTableViewController: UIViewController, UITableViewDelegate, let move = UIContextualAction(style: .normal, title: "Move".localized) { [weak self] (_, _, completionHandler) in - self?.moveto() + if let viewModel = self?.isSearching == true ? self?.searchedViewModel[indexPath.row] : self?.viewModels[indexPath.row] { + self?.moveto(file: viewModel) + } completionHandler(true) } @@ -311,8 +322,11 @@ final class DocumentsTableViewController: UIViewController, UITableViewDelegate, present(renameAlertController!, animated: true) } - func moveto() { - let foldersViewController = FoldersViewController() + func moveto(file: File) { + let foldersViewController = FoldersViewController() + foldersViewController.selectedFolder = self.selectedFolder + foldersViewController.movedFile = file + foldersViewController.delegate = self self.present(foldersViewController, animated: true) } @@ -354,6 +368,16 @@ final class DocumentsTableViewController: UIViewController, UITableViewDelegate, } } + private func delete(file fileURL: URL) { + do { + try self.localFileManager?.filesManager.removeItem(at: fileURL) + try self.localFileManager?.removeThumbnail(for: fileURL) + self.tableView.reloadData() + } catch { + return + } + } + } @@ -481,7 +505,7 @@ extension DocumentsTableViewController: PHPickerViewControllerDelegate { images.removeAll() picker.dismiss(animated: true) { let dispatchGroup = DispatchGroup() - + for result in results { dispatchGroup.enter() // Enter the group before each task result.itemProvider.loadObject(ofClass: UIImage.self) { (object, error) in @@ -495,7 +519,7 @@ extension DocumentsTableViewController: PHPickerViewControllerDelegate { } } } - + dispatchGroup.notify(queue: .main) { if !self.images.isEmpty { if let folder = self.selectedFolder { @@ -543,3 +567,32 @@ extension DocumentsTableViewController: UIPageViewControllerDataSource { return pageViewControllers[index + 1] } } + +@available(iOS 16.0, *) +extension DocumentsTableViewController: DataScannerViewControllerDelegate { + func dataScanner(_ dataScanner: DataScannerViewController, didTapOn item: RecognizedItem) { + switch item { + case .text(let text): + print(text.transcript) + default: + break + } + } + +} + +extension DocumentsTableViewController: FoldersViewControllerDelegate { + func move(file: File, from: [AppConfigurator.Folder], to: AppConfigurator.Folder) { + delete(file: file.fileURL) + guard let saveUrl = localFileManager?.getFolderUrl(folder: to) else { return } + let urlPDFtoSaveInAllDoc = saveUrl.appendingPathComponent(file.displayName) + + do { + try file.pdfDocument?.dataRepresentation()?.write(to: urlPDFtoSaveInAllDoc) + self.selectedFolder = to + fetchViewModels() + } catch { + print(error.localizedDescription) // handle error + } + } +} diff --git a/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift b/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift index c9ac734bc43453af86e04b9b630722f0b730d43e..fdbc867ccd32e3aaf01aaf34f774a8d788c6f4d6 100644 --- a/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift +++ b/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.swift @@ -7,6 +7,9 @@ // import UIKit +protocol FoldersViewControllerDelegate { + func move(file: File, from: [AppConfigurator.Folder], to: AppConfigurator.Folder) +} class FoldersViewController: UIViewController { // MARK: - Outlets @@ -14,7 +17,15 @@ class FoldersViewController: UIViewController { @IBOutlet weak var collectionView: UICollectionView! // MARK: - Properties var folders: [AppConfigurator.Folder] = [] - + var selectedFolder: AppConfigurator.Folder? + private var localFileManager: LocalFileManager? + private var sortType: SortyFileType = .date + var movedFile: File? + private var displayedFolders: [AppConfigurator.Folder] = [] + private var isSearching: Bool = false + private var searchedItems: [AppConfigurator.Folder] = [] + var delegate: FoldersViewControllerDelegate? + private var containerFolders: [AppConfigurator.Folder] = [] // MARK: - LifeCycle override func viewDidLoad() { super.viewDidLoad() @@ -22,8 +33,32 @@ class FoldersViewController: UIViewController { } func setupUI() { + searchBar.delegate = self + localFileManager = LocalFileManager() folders = AppConfigurator().getFolders() + var newFolders = [AppConfigurator.Folder]() + + for folder in folders { + guard let directoryURL = localFileManager?.getFolderUrl(folder: folder), + let viewModels = localFileManager?.filesForDirectory(directoryURL, sortType: sortType) else { continue } + + var containsMovedFile = false + for viewModel in viewModels { + if viewModel.displayName == movedFile?.displayName { + containsMovedFile = true + containerFolders.append(folder) + break + } + } + + if !containsMovedFile { + newFolders.append(folder) + } + } + + folders = newFolders + let layout = UICollectionViewFlowLayout() layout.scrollDirection = .vertical layout.minimumLineSpacing = 10 @@ -34,21 +69,30 @@ class FoldersViewController: UIViewController { collectionView.dataSource = self collectionView.reloadData() } - + } + // MARK: - UICollectionViewDelegate extension FoldersViewController: UICollectionViewDataSource, UICollectionViewDelegate { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - folders.count + isSearching ? searchedItems.count : folders.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FolderSelectCollectionViewCell", for: indexPath) as? FolderSelectCollectionViewCell { - cell.set(title: folders[indexPath.row].name) + cell.set(title: isSearching ? searchedItems[indexPath.row].name : folders[indexPath.row].name) return cell } return UICollectionViewCell() } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + if let file = movedFile { + self.dismiss(animated: true) { + self.delegate?.move(file: file, from: self.containerFolders, to: self.isSearching ? self.searchedItems[indexPath.row] : self.folders[indexPath.row]) + } + } + } } // MARK: - UICollectionViewDelegateFlowLayout @@ -59,3 +103,18 @@ extension FoldersViewController: UICollectionViewDelegateFlowLayout { return CGSize(width: itemWidth, height: itemHeight) } } + + +extension FoldersViewController: UISearchBarDelegate { + func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { + if searchText != "" { + isSearching = true + searchedItems = folders.filter { $0.name.contains(searchText) } + collectionView.reloadData() + } + else { + isSearching = false + collectionView.reloadData() + } + } +} diff --git a/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.xib b/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.xib index 7bdec4b4cf34103b4e3148aefd191ea9aa04c1be..487f2f321b310f1a9a47762d80aec0db1049de1f 100644 --- a/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.xib +++ b/MiniScanner/Modules/Documents/FoldersViewController/FoldersViewController.xib @@ -8,6 +8,11 @@ <capability name="System colors in document resources" minToolsVersion="11.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> + <customFonts key="customFonts"> + <array key="Poppins-Medium.ttf"> + <string>Poppins-Medium</string> + </array> + </customFonts> <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="FoldersViewController" customModule="MiniScanner" customModuleProvider="target"> <connections> @@ -22,7 +27,7 @@ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <searchBar contentMode="redraw" translatesAutoresizingMaskIntoConstraints="NO" id="Vw9-tr-5Rv"> - <rect key="frame" x="0.0" y="30" width="393" height="56"/> + <rect key="frame" x="30" y="75.333333333333329" width="333" height="55.999999999999986"/> <constraints> <constraint firstAttribute="height" constant="56" id="LJ5-Df-Ouq"/> </constraints> @@ -32,7 +37,7 @@ </connections> </searchBar> <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="xai-MU-NO0"> - <rect key="frame" x="30" y="116" width="333" height="672"/> + <rect key="frame" x="30" y="161.33333333333331" width="333" height="626.66666666666674"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="H9g-xI-Rth"> <size key="itemSize" width="128" height="128"/> @@ -41,19 +46,33 @@ <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> </collectionViewFlowLayout> </collectionView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Move to " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="El4-Rm-ri5"> + <rect key="frame" x="158" y="30" width="77" height="25.333333333333329"/> + <fontDescription key="fontDescription" name="Poppins-Medium" family="Poppins" pointSize="18"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> </subviews> <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> + <constraint firstItem="El4-Rm-ri5" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="30" id="61p-IZ-Tw8"/> <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="xai-MU-NO0" secondAttribute="trailing" constant="30" id="Qmd-Pl-yGg"/> + <constraint firstItem="El4-Rm-ri5" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="VuG-6y-8sw"/> <constraint firstItem="fnl-2z-Ty3" firstAttribute="bottom" secondItem="xai-MU-NO0" secondAttribute="bottom" constant="30" id="ZCL-lv-z1N"/> <constraint firstItem="Vw9-tr-5Rv" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="30" id="cLb-W2-9rG"/> - <constraint firstItem="Vw9-tr-5Rv" firstAttribute="trailing" secondItem="fnl-2z-Ty3" secondAttribute="trailing" id="eBW-Q9-d5Z"/> + <constraint firstItem="Vw9-tr-5Rv" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="30" id="lCA-UO-UUw"/> <constraint firstItem="xai-MU-NO0" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" constant="30" id="ofy-5c-0LJ"/> <constraint firstItem="xai-MU-NO0" firstAttribute="top" secondItem="Vw9-tr-5Rv" secondAttribute="bottom" constant="30" id="ozZ-aY-dBk"/> - <constraint firstItem="Vw9-tr-5Rv" firstAttribute="leading" secondItem="fnl-2z-Ty3" secondAttribute="leading" id="rM9-I7-Bnn"/> + <constraint firstItem="Vw9-tr-5Rv" firstAttribute="top" secondItem="El4-Rm-ri5" secondAttribute="bottom" constant="20" id="xQj-cD-3QH"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="Vw9-tr-5Rv" secondAttribute="trailing" constant="30" id="yrh-G3-Va3"/> </constraints> - <point key="canvasLocation" x="140" y="20"/> + <variation key="default"> + <mask key="constraints"> + <exclude reference="cLb-W2-9rG"/> + </mask> + </variation> + <point key="canvasLocation" x="139.69465648854961" y="19.718309859154932"/> </view> </objects> <resources> diff --git a/MiniScanner/Supporting Files/AppDelegate.swift b/MiniScanner/Supporting Files/AppDelegate.swift index c06e46735e19a8aeaaf2c4d854c68629ba901459..eda1335b3374049e496bf7f123f093857805f228 100644 --- a/MiniScanner/Supporting Files/AppDelegate.swift +++ b/MiniScanner/Supporting Files/AppDelegate.swift @@ -86,7 +86,7 @@ struct AppConfigurator { case AllDocument = "AllDocument" } - struct Folder: Codable { + struct Folder: Codable, Hashable { var name: String var savedName: String var isSelected: Bool diff --git a/MiniScanner/Supporting Files/ara.traineddata b/MiniScanner/Supporting Files/ara.traineddata new file mode 100644 index 0000000000000000000000000000000000000000..42e5c4b387e45f0e54213ce6964543dd6fc6aea0 Binary files /dev/null and b/MiniScanner/Supporting Files/ara.traineddata differ diff --git a/Podfile b/Podfile index 2557d8f6d86a57e9ea861288722e7a4d5082a660..1690cba0d7967ac560e9f296d765321f2e12c51f 100644 --- a/Podfile +++ b/Podfile @@ -4,11 +4,11 @@ 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 'ImagePicker' pod 'NBBottomSheet' pod 'EPSignature' pod 'Toast-Swift' diff --git a/Podfile.lock b/Podfile.lock index 79ed5f60bda519fcd7b164df0fc04c2cad81b9c0..d506ecc33d77a46377f82c23cb46a7b058c8a547 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -1,6 +1,5 @@ PODS: - EPSignature (1.0.6) - - ImagePicker (3.2.0) - IQKeyboardManagerSwift (7.0.3) - LanguageManager-iOS (1.2.7) - NBBottomSheet (1.2.0) @@ -8,7 +7,6 @@ PODS: DEPENDENCIES: - EPSignature - - ImagePicker - IQKeyboardManagerSwift - LanguageManager-iOS - NBBottomSheet @@ -17,7 +15,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - EPSignature - - ImagePicker - IQKeyboardManagerSwift - LanguageManager-iOS - NBBottomSheet @@ -25,12 +22,11 @@ SPEC REPOS: SPEC CHECKSUMS: EPSignature: 3fa3b520c80717b98019723faa60a41794b03fbc - ImagePicker: 1d950bbb2422548ed58791b4ec7f42fe42920511 IQKeyboardManagerSwift: f9c5dc36cba16ddd2e51fa7d51c34a2e083029b5 LanguageManager-iOS: 6b2dbb3793445827114708f0759b76e96932d7c8 NBBottomSheet: aa7a52809b2d7b193f733247b8ce391a59904372 Toast-Swift: 7a03a532afe3a560d4044bc7c237e2864d295173 -PODFILE CHECKSUM: 66130dd3e292a1567692b85953ac3e758e13868f +PODFILE CHECKSUM: 5fcfa5eb2c11dab017c8fd62f9cc986570b31f34 COCOAPODS: 1.14.3 diff --git a/Pods/ImagePicker/Images/AUTO@3x.png b/Pods/ImagePicker/Images/AUTO@3x.png deleted file mode 100644 index c0b0ca60d651973fcd9e0a9b5c30d62c52b36731..0000000000000000000000000000000000000000 Binary files a/Pods/ImagePicker/Images/AUTO@3x.png and /dev/null differ diff --git a/Pods/ImagePicker/Images/OFF@3x.png b/Pods/ImagePicker/Images/OFF@3x.png deleted file mode 100644 index c0b0ca60d651973fcd9e0a9b5c30d62c52b36731..0000000000000000000000000000000000000000 Binary files a/Pods/ImagePicker/Images/OFF@3x.png and /dev/null differ diff --git a/Pods/ImagePicker/Images/ON@3x.png b/Pods/ImagePicker/Images/ON@3x.png deleted file mode 100644 index 4f6dbf9b4e10893aa26e576667e414452362ceeb..0000000000000000000000000000000000000000 Binary files a/Pods/ImagePicker/Images/ON@3x.png and /dev/null differ diff --git a/Pods/ImagePicker/Images/cameraIcon@3x.png b/Pods/ImagePicker/Images/cameraIcon@3x.png deleted file mode 100644 index bd146fcc4f3970804f6b7c054a203270d75f41e5..0000000000000000000000000000000000000000 Binary files a/Pods/ImagePicker/Images/cameraIcon@3x.png and /dev/null differ diff --git a/Pods/ImagePicker/Images/focusIcon@3x.png b/Pods/ImagePicker/Images/focusIcon@3x.png deleted file mode 100644 index a0c2400c3417a23dd4b4a958ad627388c98e2880..0000000000000000000000000000000000000000 Binary files a/Pods/ImagePicker/Images/focusIcon@3x.png and /dev/null differ diff --git a/Pods/ImagePicker/Images/selectedImageGallery@3x.png b/Pods/ImagePicker/Images/selectedImageGallery@3x.png deleted file mode 100644 index 45595cee5238772747a2d3df821024a9cf67ab4d..0000000000000000000000000000000000000000 Binary files a/Pods/ImagePicker/Images/selectedImageGallery@3x.png and /dev/null differ diff --git a/Pods/ImagePicker/Images/video@3x.png b/Pods/ImagePicker/Images/video@3x.png deleted file mode 100644 index bede1c67cb08114b31201fa125e08bf9f08d3287..0000000000000000000000000000000000000000 Binary files a/Pods/ImagePicker/Images/video@3x.png and /dev/null differ diff --git a/Pods/ImagePicker/LICENSE.md b/Pods/ImagePicker/LICENSE.md deleted file mode 100644 index 65e9840763a469adb9866f507cf8fa87498fba54..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/LICENSE.md +++ /dev/null @@ -1,22 +0,0 @@ -Licensed under the **MIT** license - -> Copyright (c) 2015 Hyper Interaktiv AS -> -> 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/ImagePicker/README.md b/Pods/ImagePicker/README.md deleted file mode 100644 index e608ebdc3e9614cbcd3d3b5f6eeae41b4f4ece3d..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/README.md +++ /dev/null @@ -1,98 +0,0 @@ - - -[](https://github.com/Carthage/Carthage) -[](http://cocoadocs.org/docsets/ImagePicker) -[](http://cocoadocs.org/docsets/ImagePicker) - -## Description - -<img src="https://github.com/hyperoslo/ImagePicker/blob/master/Resources/ImagePickerIcon.png" alt="ImagePicker Icon" align="right" /> - -**ImagePicker** is an all-in-one camera solution for your iOS app. It lets your users select images from the library and take pictures at the same time. As a developer you get notified of all the user interactions and get the beautiful UI for free, out of the box, it's just that simple. - -**ImagePicker** has been optimized to give a great user experience, it passes around referenced images instead of the image itself which makes it less memory consuming. This is what makes it smooth as butter. - -## Usage - -**ImagePicker** works as a normal controller, just instantiate it and present it. - -```swift -let imagePickerController = ImagePickerController() -imagePickerController.delegate = self -present(imagePickerController, animated: true, completion: nil) -``` - -**ImagePicker** has three delegate methods that will inform you what the users are up to: - -```swift -func wrapperDidPress(_ imagePicker: ImagePickerController, images: [UIImage]) -func doneButtonDidPress(_ imagePicker: ImagePickerController, images: [UIImage]) -func cancelButtonDidPress(_ imagePicker: ImagePickerController) -``` - -**ImagePicker** supports limiting the amount of images that can be selected, it defaults -to zero, which means that the user can select as many images as he/she wants. - -```swift -let imagePickerController = ImagePickerController() -imagePickerController.imageLimit = 5 -``` - -### Optional bonus - -##### Configuration - -You can inject `Configuration` instance to ImagePicker, which allows you to configure text, colors, fonts and camera features - -```swift -var configuration = Configuration() -configuration.doneButtonTitle = "Finish" -configuration.noImagesTitle = "Sorry! There are no images here!" -configuration.recordLocation = false - -let imagePicker = ImagePickerController(configuration: configuration) -``` - -##### Resolve assets - -As said before, **ImagePicker** works with referenced images, that is really powerful because it lets you download the asset and choose the size you want. If you want to change the default implementation, just add a variable in your controller. - -```swift -public var imageAssets: [UIImage] { - return AssetManager.resolveAssets(imagePicker.stack.assets) -} -``` - -And when you call any delegate method that returns images, add in the first line: - -```swift -let images = imageAssets -``` - -## Installation - -**ImagePicker** is available through [CocoaPods](http://cocoapods.org). To install -it, simply add the following line to your Podfile: - -```ruby -pod 'ImagePicker' -``` - -**ImagePicker** is also available through [Carthage](https://github.com/Carthage/Carthage). -To install just write into your Cartfile: - -```ruby -github "hyperoslo/ImagePicker" -``` - -## Author - -[Hyper](http://hyper.no) made this with ❤️ - -## Contribute - -We would love you to contribute to **ImagePicker**, check the [CONTRIBUTING](https://github.com/hyperoslo/ImagePicker/blob/master/CONTRIBUTING.md) file for more info. - -## License - -**ImagePicker** is available under the MIT license. See the [LICENSE](https://github.com/hyperoslo/ImagePicker/blob/master/LICENSE.md) file for more info. diff --git a/Pods/ImagePicker/Source/AssetManager.swift b/Pods/ImagePicker/Source/AssetManager.swift deleted file mode 100644 index 1f50d068ea2fdda35eec12703eef4158e15aee29..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/AssetManager.swift +++ /dev/null @@ -1,69 +0,0 @@ -import Foundation -import UIKit -import Photos - -open class AssetManager { - - public static func getImage(_ name: String) -> UIImage { - let traitCollection = UITraitCollection(displayScale: 3) - var bundle = Bundle(for: AssetManager.self) - - if let resource = bundle.resourcePath, let resourceBundle = Bundle(path: resource + "/ImagePicker.bundle") { - bundle = resourceBundle - } - - return UIImage(named: name, in: bundle, compatibleWith: traitCollection) ?? UIImage() - } - - public static func fetch(withConfiguration configuration: Configuration1, _ completion: @escaping (_ assets: [PHAsset]) -> Void) { - guard PHPhotoLibrary.authorizationStatus() == .authorized else { return } - - DispatchQueue.global(qos: .background).async { - let fetchResult = configuration.allowVideoSelection - ? PHAsset.fetchAssets(with: PHFetchOptions()) - : PHAsset.fetchAssets(with: .image, options: PHFetchOptions()) - - if fetchResult.count > 0 { - var assets = [PHAsset]() - fetchResult.enumerateObjects({ object, _, _ in - assets.insert(object, at: 0) - }) - - DispatchQueue.main.async { - completion(assets) - } - } - } - } - - public static func resolveAsset(_ asset: PHAsset, size: CGSize = CGSize(width: 720, height: 1280), shouldPreferLowRes: Bool = false, completion: @escaping (_ image: UIImage?) -> Void) { - let imageManager = PHImageManager.default() - let requestOptions = PHImageRequestOptions() - requestOptions.deliveryMode = shouldPreferLowRes ? .fastFormat : .highQualityFormat - requestOptions.isNetworkAccessAllowed = true - - imageManager.requestImage(for: asset, targetSize: size, contentMode: .aspectFill, options: requestOptions) { image, info in - if let info = info, info["PHImageFileUTIKey"] == nil { - DispatchQueue.main.async(execute: { - completion(image) - }) - } - } - } - - public static func resolveAssets(_ assets: [PHAsset], size: CGSize = CGSize(width: 720, height: 1280)) -> [UIImage] { - let imageManager = PHImageManager.default() - let requestOptions = PHImageRequestOptions() - requestOptions.isSynchronous = true - - var images = [UIImage]() - for asset in assets { - imageManager.requestImage(for: asset, targetSize: size, contentMode: .aspectFill, options: requestOptions) { image, _ in - if let image = image { - images.append(image) - } - } - } - return images - } -} diff --git a/Pods/ImagePicker/Source/BottomView/BottomContainerView.swift b/Pods/ImagePicker/Source/BottomView/BottomContainerView.swift deleted file mode 100644 index 57e62a2cfd281e1fc31991aca0e773cae5c5d031..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/BottomView/BottomContainerView.swift +++ /dev/null @@ -1,128 +0,0 @@ -import UIKit - -protocol BottomContainerViewDelegate: class { - - func pickerButtonDidPress() - func doneButtonDidPress() - func cancelButtonDidPress() - func imageStackViewDidPress() -} - -open class BottomContainerView: UIView { - - struct Dimensions { - static let height: CGFloat = 101 - } - - var configuration = Configuration1() - - lazy var pickerButton: ButtonPicker = { [unowned self] in - let pickerButton = ButtonPicker(configuration: self.configuration) - pickerButton.setTitleColor(UIColor.white, for: UIControl.State()) - pickerButton.delegate = self - pickerButton.numberLabel.isHidden = !self.configuration.showsImageCountLabel - - return pickerButton - }() - - lazy var borderPickerButton: UIView = { - let view = UIView() - view.backgroundColor = UIColor.clear - view.layer.borderColor = UIColor.white.cgColor - view.layer.borderWidth = ButtonPicker.Dimensions.borderWidth - view.layer.cornerRadius = ButtonPicker.Dimensions.buttonBorderSize / 2 - - return view - }() - - open lazy var doneButton: UIButton = { [unowned self] in - let button = UIButton() - button.setTitle(self.configuration.cancelButtonTitle, for: UIControl.State()) - button.titleLabel?.font = self.configuration.doneButton - button.addTarget(self, action: #selector(doneButtonDidPress(_:)), for: .touchUpInside) - - return button - }() - - lazy var stackView = ImageStackView(frame: CGRect(x: 0, y: 0, width: 80, height: 80)) - - lazy var topSeparator: UIView = { [unowned self] in - let view = UIView() - view.backgroundColor = self.configuration.backgroundColor - - return view - }() - - lazy var tapGestureRecognizer: UITapGestureRecognizer = { [unowned self] in - let gesture = UITapGestureRecognizer() - gesture.addTarget(self, action: #selector(handleTapGestureRecognizer(_:))) - - return gesture - }() - - weak var delegate: BottomContainerViewDelegate? - var pastCount = 0 - - // MARK: Initializers - - public init(configuration: Configuration1? = nil) { - if let configuration = configuration { - self.configuration = configuration - } - super.init(frame: .zero) - configure() - } - - public required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - func configure() { - [borderPickerButton, pickerButton, doneButton, stackView, topSeparator].forEach { - addSubview($0) - $0.translatesAutoresizingMaskIntoConstraints = false - } - - backgroundColor = configuration.backgroundColor - stackView.accessibilityLabel = "Image stack" - stackView.addGestureRecognizer(tapGestureRecognizer) - - setupConstraints() - } - - // MARK: - Action methods - - @objc func doneButtonDidPress(_ button: UIButton) { - if button.currentTitle == configuration.cancelButtonTitle { - delegate?.cancelButtonDidPress() - } else { - delegate?.doneButtonDidPress() - } - } - - @objc func handleTapGestureRecognizer(_ recognizer: UITapGestureRecognizer) { - delegate?.imageStackViewDidPress() - } - - fileprivate func animateImageView(_ imageView: UIImageView) { - imageView.transform = CGAffineTransform(scaleX: 0, y: 0) - - UIView.animate(withDuration: 0.3, animations: { - imageView.transform = CGAffineTransform(scaleX: 1.05, y: 1.05) - }, completion: { _ in - UIView.animate(withDuration: 0.2, animations: { - imageView.transform = CGAffineTransform.identity - }) - }) - } -} - -// MARK: - ButtonPickerDelegate methods - -@available(iOS 15.0, *) -extension BottomContainerView: ButtonPickerDelegate { - - func buttonDidPress() { - delegate?.pickerButtonDidPress() - } -} diff --git a/Pods/ImagePicker/Source/BottomView/ButtonPicker.swift b/Pods/ImagePicker/Source/BottomView/ButtonPicker.swift deleted file mode 100644 index e9dbb318c85705b0360e61edc978e0462c23b55f..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/BottomView/ButtonPicker.swift +++ /dev/null @@ -1,104 +0,0 @@ -import UIKit - -protocol ButtonPickerDelegate: class { - - func buttonDidPress() -} - -class ButtonPicker: UIButton { - - struct Dimensions { - static let borderWidth: CGFloat = 2 - static let buttonSize: CGFloat = 58 - static let buttonBorderSize: CGFloat = 68 - } - - var configuration1 = Configuration1() - - lazy var numberLabel: UILabel = { [unowned self] in - let label = UILabel() - label.translatesAutoresizingMaskIntoConstraints = false - label.font = self.configuration1.numberLabelFont - - return label - }() - - weak var delegate: ButtonPickerDelegate? - - // MARK: - Initializers - - public init(configuration: Configuration1? = nil) { - if let configuration = configuration { - self.configuration1 = configuration - } - super.init(frame: .zero) - configure() - } - - override init(frame: CGRect) { - super.init(frame: frame) - configure() - } - - func configure() { - addSubview(numberLabel) - - subscribe() - setupButton() - setupConstraints() - } - - deinit { - NotificationCenter.default.removeObserver(self) - } - - func subscribe() { - NotificationCenter.default.addObserver(self, - selector: #selector(recalculatePhotosCount(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.imageDidPush), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(recalculatePhotosCount(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.imageDidDrop), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(recalculatePhotosCount(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.stackDidReload), - object: nil) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - // MARK: - Configuration - - func setupButton() { - backgroundColor = UIColor.white - layer.cornerRadius = Dimensions.buttonSize / 2 - accessibilityLabel = "Take photo" - addTarget(self, action: #selector(pickerButtonDidPress(_:)), for: .touchUpInside) - addTarget(self, action: #selector(pickerButtonDidHighlight(_:)), for: .touchDown) - } - - // MARK: - Actions - - @objc func recalculatePhotosCount(_ notification: Notification) { - guard let sender = notification.object as? ImageStack else { return } - numberLabel.text = sender.assets.isEmpty ? "" : String(sender.assets.count) - } - - @objc func pickerButtonDidPress(_ button: UIButton) { - backgroundColor = UIColor.white - numberLabel.textColor = UIColor.black - numberLabel.sizeToFit() - delegate?.buttonDidPress() - } - - @objc func pickerButtonDidHighlight(_ button: UIButton) { - numberLabel.textColor = UIColor.white - backgroundColor = UIColor(red: 0.3, green: 0.3, blue: 0.3, alpha: 1) - } -} diff --git a/Pods/ImagePicker/Source/BottomView/ImageStack.swift b/Pods/ImagePicker/Source/BottomView/ImageStack.swift deleted file mode 100644 index ec591a074cb70e77736a5bf254879f9e4b57b76a..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/BottomView/ImageStack.swift +++ /dev/null @@ -1,33 +0,0 @@ -import UIKit -import Photos - -open class ImageStack { - - public struct Notifications { - public static let imageDidPush = "imageDidPush" - public static let imageDidDrop = "imageDidDrop" - public static let stackDidReload = "stackDidReload" - } - - open var assets = [PHAsset]() - fileprivate let imageKey = "image" - - open func pushAsset(_ asset: PHAsset) { - assets.append(asset) - NotificationCenter.default.post(name: Notification.Name(rawValue: Notifications.imageDidPush), object: self, userInfo: [imageKey: asset]) - } - - open func dropAsset(_ asset: PHAsset) { - assets = assets.filter {$0 != asset} - NotificationCenter.default.post(name: Notification.Name(rawValue: Notifications.imageDidDrop), object: self, userInfo: [imageKey: asset]) - } - - open func resetAssets(_ assetsArray: [PHAsset]) { - assets = assetsArray - NotificationCenter.default.post(name: Notification.Name(rawValue: Notifications.stackDidReload), object: self, userInfo: nil) - } - - open func containsAsset(_ asset: PHAsset) -> Bool { - return assets.contains(asset) - } -} diff --git a/Pods/ImagePicker/Source/BottomView/StackView.swift b/Pods/ImagePicker/Source/BottomView/StackView.swift deleted file mode 100644 index 9402c8ba969e15bcf15f272e0de2f663594a052a..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/BottomView/StackView.swift +++ /dev/null @@ -1,174 +0,0 @@ -import UIKit -import Photos - -protocol ImageStackViewDelegate: class { - func imageStackViewDidPress() -} - -class ImageStackView: UIView { - - struct Dimensions { - static let imageSize: CGFloat = 58 - } - - weak var delegate: ImageStackViewDelegate? - - lazy var activityView: UIActivityIndicatorView = { - let view = UIActivityIndicatorView() - view.alpha = 0.0 - - return view - }() - - var views: [UIImageView] = { - var array = [UIImageView]() - for _ in 0...3 { - let view = UIImageView() - view.layer.cornerRadius = 3 - view.layer.borderColor = UIColor.white.cgColor - view.layer.borderWidth = 1 - view.contentMode = .scaleAspectFill - view.clipsToBounds = true - view.alpha = 0 - array.append(view) - } - return array - }() - - // MARK: - Initializers - - override init(frame: CGRect) { - super.init(frame: frame) - - subscribe() - - views.forEach { addSubview($0) } - addSubview(activityView) - views.first?.alpha = 1 - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - deinit { - NotificationCenter.default.removeObserver(self) - } - - // MARK: - Helpers - - func subscribe() { - NotificationCenter.default.addObserver(self, - selector: #selector(imageDidPush(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.imageDidPush), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(imageStackDidChangeContent(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.imageDidDrop), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(imageStackDidChangeContent(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.stackDidReload), - object: nil) - } - - override func layoutSubviews() { - let step: CGFloat = -3.0 - let scale: CGFloat = 0.8 - let viewSize = CGSize(width: frame.width * scale, - height: frame.height * scale) - - let offset = -step * CGFloat(views.count) - var origin = CGPoint(x: offset, y: offset) - - for view in views { - origin.x += step - origin.y += step - view.frame = CGRect(origin: origin, size: viewSize) - } - } - - func startLoader() { - if let firstVisibleView = views.filter({ $0.alpha == 1.0 }).last { - activityView.frame.origin.x = firstVisibleView.center.x - activityView.frame.origin.y = firstVisibleView.center.y - } - - activityView.startAnimating() - UIView.animate(withDuration: 0.3, animations: { - self.activityView.alpha = 1.0 - }) - } -} - -extension ImageStackView { - - @objc func imageDidPush(_ notification: Notification) { - let emptyView = views.filter { $0.image == nil }.first - - if let emptyView = emptyView { - animateImageView(emptyView) - } - - if let sender = notification.object as? ImageStack { - renderViews(sender.assets) - activityView.stopAnimating() - } - } - - @objc func imageStackDidChangeContent(_ notification: Notification) { - if let sender = notification.object as? ImageStack { - renderViews(sender.assets) - activityView.stopAnimating() - } - } - - @objc func renderViews(_ assets: [PHAsset]) { - if let firstView = views.first, assets.isEmpty { - views.forEach { - $0.image = nil - $0.alpha = 0 - } - - firstView.alpha = 1 - return - } - - let photos = Array(assets.suffix(4)) - - for (index, view) in views.enumerated() { - if index <= photos.count - 1 { - AssetManager.resolveAsset(photos[index], size: CGSize(width: Dimensions.imageSize, height: Dimensions.imageSize)) { image in - view.image = image - } - view.alpha = 1 - } else { - view.image = nil - view.alpha = 0 - } - - if index == photos.count { - UIView.animate(withDuration: 0.3, animations: { - self.activityView.frame.origin = CGPoint(x: view.center.x + 3, y: view.center.x + 3) - }) - } - } - } - - fileprivate func animateImageView(_ imageView: UIImageView) { - imageView.transform = CGAffineTransform(scaleX: 0, y: 0) - - UIView.animate(withDuration: 0.3, animations: { - imageView.transform = CGAffineTransform(scaleX: 1.05, y: 1.05) - }, completion: { _ in - UIView.animate(withDuration: 0.2, animations: { () -> Void in - self.activityView.alpha = 0.0 - imageView.transform = CGAffineTransform.identity - }, completion: { _ in - self.activityView.stopAnimating() - }) - }) - } -} diff --git a/Pods/ImagePicker/Source/CameraView/CameraMan.swift b/Pods/ImagePicker/Source/CameraView/CameraMan.swift deleted file mode 100644 index 8714823f6f9df000df844b1a43783b3c722964f3..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/CameraView/CameraMan.swift +++ /dev/null @@ -1,250 +0,0 @@ -import Foundation -import AVFoundation -import PhotosUI - -protocol CameraManDelegate: class { - func cameraManNotAvailable(_ cameraMan: CameraMan) - func cameraManDidStart(_ cameraMan: CameraMan) - func cameraMan(_ cameraMan: CameraMan, didChangeInput input: AVCaptureDeviceInput) -} - -class CameraMan { - weak var delegate: CameraManDelegate? - - let session = AVCaptureSession() - let queue = DispatchQueue(label: "no.hyper.ImagePicker.Camera.SessionQueue") - - var backCamera: AVCaptureDeviceInput? - var frontCamera: AVCaptureDeviceInput? - var stillImageOutput: AVCaptureStillImageOutput? - var startOnFrontCamera: Bool = false - - deinit { - stop() - } - - // MARK: - Setup - - func setup(_ startOnFrontCamera: Bool = false) { - self.startOnFrontCamera = startOnFrontCamera - checkPermission() - } - - func setupDevices() { - // Input - AVCaptureDevice - .devices() - .filter { - return $0.hasMediaType(AVMediaType.video) - }.forEach { - switch $0.position { - case .front: - self.frontCamera = try? AVCaptureDeviceInput(device: $0) - case .back: - self.backCamera = try? AVCaptureDeviceInput(device: $0) - default: - break - } - } - - // Output - stillImageOutput = AVCaptureStillImageOutput() - stillImageOutput?.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] - } - - func addInput(_ input: AVCaptureDeviceInput) { - configurePreset(input) - - if session.canAddInput(input) { - session.addInput(input) - - DispatchQueue.main.async { - self.delegate?.cameraMan(self, didChangeInput: input) - } - } - } - - // MARK: - Permission - - func checkPermission() { - let status = AVCaptureDevice.authorizationStatus(for: AVMediaType.video) - - switch status { - case .authorized: - start() - case .notDetermined: - requestPermission() - default: - delegate?.cameraManNotAvailable(self) - } - } - - func requestPermission() { - AVCaptureDevice.requestAccess(for: AVMediaType.video) { granted in - DispatchQueue.main.async { - if granted { - self.start() - } else { - self.delegate?.cameraManNotAvailable(self) - } - } - } - } - - // MARK: - Session - - var currentInput: AVCaptureDeviceInput? { - return session.inputs.first as? AVCaptureDeviceInput - } - - fileprivate func start() { - // Devices - setupDevices() - - guard let input = (self.startOnFrontCamera) ? frontCamera ?? backCamera : backCamera, let output = stillImageOutput else { return } - - addInput(input) - - if session.canAddOutput(output) { - session.addOutput(output) - } - - queue.async { - self.session.startRunning() - - DispatchQueue.main.async { - self.delegate?.cameraManDidStart(self) - } - } - } - - func stop() { - self.session.stopRunning() - } - - func switchCamera(_ completion: (() -> Void)? = nil) { - guard let currentInput = currentInput - else { - completion?() - return - } - - queue.async { - guard let input = (currentInput == self.backCamera) ? self.frontCamera : self.backCamera - else { - DispatchQueue.main.async { - completion?() - } - return - } - - self.configure { - self.session.removeInput(currentInput) - self.addInput(input) - } - - DispatchQueue.main.async { - completion?() - } - } - } - - func takePhoto(_ previewLayer: AVCaptureVideoPreviewLayer, location: CLLocation?, completion: (() -> Void)? = nil) { - guard let connection = stillImageOutput?.connection(with: AVMediaType.video) else { return } - - connection.videoOrientation = Helper.videoOrientation() - - queue.async { - self.stillImageOutput?.captureStillImageAsynchronously(from: connection) { buffer, error in - guard let buffer = buffer, error == nil && CMSampleBufferIsValid(buffer), - let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer), - let image = UIImage(data: imageData) - else { - DispatchQueue.main.async { - completion?() - } - return - } - - self.savePhoto(image, location: location, completion: completion) - } - } - } - - func savePhoto(_ image: UIImage, location: CLLocation?, completion: (() -> Void)? = nil) { - PHPhotoLibrary.shared().performChanges({ - let request = PHAssetChangeRequest.creationRequestForAsset(from: image) - request.creationDate = Date() - request.location = location - }, completionHandler: { (_, _) in - DispatchQueue.main.async { - completion?() - } - }) - } - - func flash(_ mode: AVCaptureDevice.FlashMode) { - guard let device = currentInput?.device, device.isFlashModeSupported(mode) else { return } - - queue.async { - self.lock { - device.flashMode = mode - } - } - } - - func focus(_ point: CGPoint) { - guard let device = currentInput?.device, device.isFocusModeSupported(AVCaptureDevice.FocusMode.locked) else { return } - - queue.async { - self.lock { - device.focusPointOfInterest = point - } - } - } - - func zoom(_ zoomFactor: CGFloat) { - guard let device = currentInput?.device, device.position == .back else { return } - - queue.async { - self.lock { - device.videoZoomFactor = zoomFactor - } - } - } - - // MARK: - Lock - - func lock(_ block: () -> Void) { - if let device = currentInput?.device, (try? device.lockForConfiguration()) != nil { - block() - device.unlockForConfiguration() - } - } - - // MARK: - Configure - func configure(_ block: () -> Void) { - session.beginConfiguration() - block() - session.commitConfiguration() - } - - // MARK: - Preset - - func configurePreset(_ input: AVCaptureDeviceInput) { - for asset in preferredPresets() { - if input.device.supportsSessionPreset(AVCaptureSession.Preset(rawValue: asset)) && self.session.canSetSessionPreset(AVCaptureSession.Preset(rawValue: asset)) { - self.session.sessionPreset = AVCaptureSession.Preset(rawValue: asset) - return - } - } - } - - func preferredPresets() -> [String] { - return [ - AVCaptureSession.Preset.high.rawValue, - AVCaptureSession.Preset.high.rawValue, - AVCaptureSession.Preset.low.rawValue - ] - } -} diff --git a/Pods/ImagePicker/Source/CameraView/CameraView.swift b/Pods/ImagePicker/Source/CameraView/CameraView.swift deleted file mode 100644 index 766a8c616ec51d95d2abde1c6d5a8223b3403d53..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/CameraView/CameraView.swift +++ /dev/null @@ -1,323 +0,0 @@ -import UIKit -import AVFoundation -import PhotosUI - -protocol CameraViewDelegate: class { - - func setFlashButtonHidden(_ hidden: Bool) - func imageToLibrary() - func cameraNotAvailable() -} - -class CameraView: UIViewController, CLLocationManagerDelegate, CameraManDelegate { - - var configuration = Configuration1() - - lazy var blurView: UIVisualEffectView = { [unowned self] in - let effect = UIBlurEffect(style: .dark) - let blurView = UIVisualEffectView(effect: effect) - - return blurView - }() - - lazy var focusImageView: UIImageView = { [unowned self] in - let imageView = UIImageView() - imageView.image = AssetManager.getImage("focusIcon") - imageView.backgroundColor = UIColor.clear - imageView.frame = CGRect(x: 0, y: 0, width: 110, height: 110) - imageView.alpha = 0 - - return imageView - }() - - lazy var capturedImageView: UIView = { [unowned self] in - let view = UIView() - view.backgroundColor = UIColor.black - view.alpha = 0 - - return view - }() - - lazy var containerView: UIView = { - let view = UIView() - view.alpha = 0 - - return view - }() - - lazy var noCameraLabel: UILabel = { [unowned self] in - let label = UILabel() - label.font = self.configuration.noCameraFont - label.textColor = self.configuration.noCameraColor - label.text = self.configuration.noCameraTitle - label.sizeToFit() - - return label - }() - - lazy var noCameraButton: UIButton = { [unowned self] in - let button = UIButton(type: .system) - let title = NSAttributedString(string: self.configuration.settingsTitle, - attributes: [ - NSAttributedString.Key.font: self.configuration.settingsFont, - NSAttributedString.Key.foregroundColor: self.configuration.settingsColor - ]) - - button.setAttributedTitle(title, for: UIControl.State()) - button.contentEdgeInsets = UIEdgeInsets(top: 5.0, left: 10.0, bottom: 5.0, right: 10.0) - button.sizeToFit() - button.layer.borderColor = self.configuration.settingsColor.cgColor - button.layer.borderWidth = 1 - button.layer.cornerRadius = 4 - button.addTarget(self, action: #selector(settingsButtonDidTap), for: .touchUpInside) - - return button - }() - - lazy var tapGestureRecognizer: UITapGestureRecognizer = { [unowned self] in - let gesture = UITapGestureRecognizer() - gesture.addTarget(self, action: #selector(tapGestureRecognizerHandler(_:))) - - return gesture - }() - - lazy var pinchGestureRecognizer: UIPinchGestureRecognizer = { [unowned self] in - let gesture = UIPinchGestureRecognizer() - gesture.addTarget(self, action: #selector(pinchGestureRecognizerHandler(_:))) - - return gesture - }() - - let cameraMan = CameraMan() - - var previewLayer: AVCaptureVideoPreviewLayer? - weak var delegate: CameraViewDelegate? - var animationTimer: Timer? - var locationManager: LocationManager? - var startOnFrontCamera: Bool = false - - private let minimumZoomFactor: CGFloat = 1.0 - private let maximumZoomFactor: CGFloat = 3.0 - - private var currentZoomFactor: CGFloat = 1.0 - private var previousZoomFactor: CGFloat = 1.0 - - public init(configuration: Configuration1? = nil) { - if let configuration = configuration { - self.configuration = configuration - } - super.init(nibName: nil, bundle: nil) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewDidLoad() { - super.viewDidLoad() - - if configuration.recordLocation { - locationManager = LocationManager() - } - - view.backgroundColor = configuration.mainColor - - view.addSubview(containerView) - containerView.addSubview(blurView) - - [focusImageView, capturedImageView].forEach { - view.addSubview($0) - } - - view.addGestureRecognizer(tapGestureRecognizer) - - if configuration.allowPinchToZoom { - view.addGestureRecognizer(pinchGestureRecognizer) - } - - cameraMan.delegate = self - cameraMan.setup(self.startOnFrontCamera) - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - previewLayer?.connection?.videoOrientation = .portrait - locationManager?.startUpdatingLocation() - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - locationManager?.stopUpdatingLocation() - } - - func setupPreviewLayer() { - let layer = AVCaptureVideoPreviewLayer(session: cameraMan.session) - - layer.backgroundColor = configuration.mainColor.cgColor - layer.autoreverses = true - layer.videoGravity = AVLayerVideoGravity.resizeAspectFill - - view.layer.insertSublayer(layer, at: 0) - layer.frame = view.layer.frame - view.clipsToBounds = true - - previewLayer = layer - } - - // MARK: - Layout - - override func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - - let centerX = view.bounds.width / 2 - - noCameraLabel.center = CGPoint(x: centerX, - y: view.bounds.height / 2 - 80) - - noCameraButton.center = CGPoint(x: centerX, - y: noCameraLabel.frame.maxY + 20) - - blurView.frame = view.bounds - containerView.frame = view.bounds - capturedImageView.frame = view.bounds - } - - // MARK: - Actions - - @objc func settingsButtonDidTap() { - DispatchQueue.main.async { - if let settingsURL = URL(string: UIApplication.openSettingsURLString) { - UIApplication.shared.openURL(settingsURL) - } - } - } - - // MARK: - Camera actions - - func rotateCamera() { - UIView.animate(withDuration: 0.3, animations: { - self.containerView.alpha = 1 - }, completion: { _ in - self.cameraMan.switchCamera { - UIView.animate(withDuration: 0.7, animations: { - self.containerView.alpha = 0 - }) - } - }) - } - - func flashCamera(_ title: String) { - let mapping: [String: AVCaptureDevice.FlashMode] = [ - "ON": .on, - "OFF": .off - ] - - cameraMan.flash(mapping[title] ?? .auto) - } - - func takePicture(_ completion: @escaping () -> Void) { - guard let previewLayer = previewLayer else { return } - - UIView.animate(withDuration: 0.1, animations: { - self.capturedImageView.alpha = 1 - }, completion: { _ in - UIView.animate(withDuration: 0.1, animations: { - self.capturedImageView.alpha = 0 - }) - }) - - cameraMan.takePhoto(previewLayer, location: locationManager?.latestLocation) { - completion() - self.delegate?.imageToLibrary() - } - } - - // MARK: - Timer methods - - @objc func timerDidFire() { - UIView.animate(withDuration: 0.3, animations: { [unowned self] in - self.focusImageView.alpha = 0 - }, completion: { _ in - self.focusImageView.transform = CGAffineTransform.identity - }) - } - - // MARK: - Camera methods - - func focusTo(_ point: CGPoint) { - let convertedPoint = CGPoint(x: point.x / UIScreen.main.bounds.width, - y: point.y / UIScreen.main.bounds.height) - - cameraMan.focus(convertedPoint) - - focusImageView.center = point - UIView.animate(withDuration: 0.5, animations: { - self.focusImageView.alpha = 1 - self.focusImageView.transform = CGAffineTransform(scaleX: 0.6, y: 0.6) - }, completion: { _ in - self.animationTimer = Timer.scheduledTimer(timeInterval: 1, target: self, - selector: #selector(CameraView.timerDidFire), userInfo: nil, repeats: false) - }) - } - - func zoomTo(_ zoomFactor: CGFloat) { - guard let device = cameraMan.currentInput?.device else { return } - - let maximumDeviceZoomFactor = device.activeFormat.videoMaxZoomFactor - let newZoomFactor = previousZoomFactor * zoomFactor - currentZoomFactor = min(maximumZoomFactor, max(minimumZoomFactor, min(newZoomFactor, maximumDeviceZoomFactor))) - - cameraMan.zoom(currentZoomFactor) - } - - // MARK: - Tap - - @objc func tapGestureRecognizerHandler(_ gesture: UITapGestureRecognizer) { - let touch = gesture.location(in: view) - - focusImageView.transform = CGAffineTransform.identity - animationTimer?.invalidate() - focusTo(touch) - } - - // MARK: - Pinch - - @objc func pinchGestureRecognizerHandler(_ gesture: UIPinchGestureRecognizer) { - switch gesture.state { - case .began: - fallthrough - case .changed: - zoomTo(gesture.scale) - case .ended: - zoomTo(gesture.scale) - previousZoomFactor = currentZoomFactor - default: break - } - } - - // MARK: - Private helpers - - func showNoCamera(_ show: Bool) { - [noCameraButton, noCameraLabel].forEach { - show ? view.addSubview($0) : $0.removeFromSuperview() - } - } - - // CameraManDelegate - func cameraManNotAvailable(_ cameraMan: CameraMan) { - showNoCamera(true) - focusImageView.isHidden = true - delegate?.cameraNotAvailable() - } - - func cameraMan(_ cameraMan: CameraMan, didChangeInput input: AVCaptureDeviceInput) { - if !configuration.flashButtonAlwaysHidden { - delegate?.setFlashButtonHidden(!input.device.hasFlash) - } - } - - func cameraManDidStart(_ cameraMan: CameraMan) { - setupPreviewLayer() - } -} diff --git a/Pods/ImagePicker/Source/Configuration.swift b/Pods/ImagePicker/Source/Configuration.swift deleted file mode 100644 index b1a35a5515a0364db87fef4aa811f10e73f87f98..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/Configuration.swift +++ /dev/null @@ -1,111 +0,0 @@ -import AVFoundation -import UIKit - -@objc public class Configuration1: NSObject { - - // MARK: Colors - - @objc public var backgroundColor = UIColor(red: 0.15, green: 0.19, blue: 0.24, alpha: 1) - @objc public var gallerySeparatorColor = UIColor.black.withAlphaComponent(0.6) - @objc public var mainColor = UIColor(red: 0.09, green: 0.11, blue: 0.13, alpha: 1) - @objc public var noImagesColor = UIColor(red: 0.86, green: 0.86, blue: 0.86, alpha: 1) - @objc public var noCameraColor = UIColor(red: 0.86, green: 0.86, blue: 0.86, alpha: 1) - @objc public var settingsColor = UIColor.white - @objc public var bottomContainerColor = UIColor(red: 0.09, green: 0.11, blue: 0.13, alpha: 1) - - // MARK: Fonts - - @objc public var numberLabelFont = UIFont.systemFont(ofSize: 19, weight: UIFont.Weight.bold) - @objc public var doneButton = UIFont.systemFont(ofSize: 19, weight: UIFont.Weight.medium) - @objc public var flashButton = UIFont.systemFont(ofSize: 12, weight: UIFont.Weight.medium) - @objc public var noImagesFont = UIFont.systemFont(ofSize: 18, weight: UIFont.Weight.medium) - @objc public var noCameraFont = UIFont.systemFont(ofSize: 18, weight: UIFont.Weight.medium) - @objc public var settingsFont = UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.medium) - - // MARK: Titles - - @objc public var OKButtonTitle = "OK" - @objc public var cancelButtonTitle = "Cancel" - @objc public var doneButtonTitle = "Done" - @objc public var noImagesTitle = "No images available" - @objc public var noCameraTitle = "Camera is not available" - @objc public var settingsTitle = "Settings" - @objc public var requestPermissionTitle = "Permission denied" - @objc public var requestPermissionMessage = "Please, allow the application to access to your photo library." - - // MARK: Dimensions - - @objc public var cellSpacing: CGFloat = 2 - @objc public var indicatorWidth: CGFloat = 41 - @objc public var indicatorHeight: CGFloat = 8 - - // MARK: Custom behaviour - - @objc public var canRotateCamera = true - @objc public var collapseCollectionViewWhileShot = true - @objc public var recordLocation = true - @objc public var allowMultiplePhotoSelection = true - @objc public var allowVideoSelection = false - @objc public var showsImageCountLabel = true - @objc public var flashButtonAlwaysHidden = false - @objc public var managesAudioSession = true - @objc public var allowPinchToZoom = true - @objc public var allowedOrientations = UIInterfaceOrientationMask.all - @objc public var allowVolumeButtonsToTakePicture = true - @objc public var useLowResolutionPreviewImage = false - - // MARK: Images - @objc public var indicatorView: UIView = { - let view = UIView() - view.backgroundColor = UIColor.white.withAlphaComponent(0.6) - view.layer.cornerRadius = 4 - view.translatesAutoresizingMaskIntoConstraints = false - return view - }() - - override public init() {} -} - -// MARK: - Orientation -extension Configuration1 { - - @objc public var rotationTransform: CGAffineTransform { - let currentOrientation = UIDevice.current.orientation - - // check if current orientation is allowed - switch currentOrientation { - case .portrait: - if allowedOrientations.contains(.portrait) { - Helper.previousOrientation = currentOrientation - } - case .portraitUpsideDown: - if allowedOrientations.contains(.portraitUpsideDown) { - Helper.previousOrientation = currentOrientation - } - case .landscapeLeft: - if allowedOrientations.contains(.landscapeLeft) { - Helper.previousOrientation = currentOrientation - } - case .landscapeRight: - if allowedOrientations.contains(.landscapeRight) { - Helper.previousOrientation = currentOrientation - } - default: break - } - - // set default orientation if current orientation is not allowed - if Helper.previousOrientation == .unknown { - if allowedOrientations.contains(.portrait) { - Helper.previousOrientation = .portrait - } else if allowedOrientations.contains(.landscapeLeft) { - Helper.previousOrientation = .landscapeLeft - } else if allowedOrientations.contains(.landscapeRight) { - Helper.previousOrientation = .landscapeRight - } else if allowedOrientations.contains(.portraitUpsideDown) { - Helper.previousOrientation = .portraitUpsideDown - } - } - - return Helper.getTransform(fromDeviceOrientation: Helper.previousOrientation) - } -} diff --git a/Pods/ImagePicker/Source/Extensions/ConstraintsSetup.swift b/Pods/ImagePicker/Source/Extensions/ConstraintsSetup.swift deleted file mode 100644 index 119877feca6b228ad77c24698203488de1899135..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/Extensions/ConstraintsSetup.swift +++ /dev/null @@ -1,190 +0,0 @@ -import UIKit - -// MARK: - BottomContainer autolayout - -extension BottomContainerView { - - func setupConstraints() { - - for attribute: NSLayoutConstraint.Attribute in [.centerX, .centerY] { - addConstraint(NSLayoutConstraint(item: pickerButton, attribute: attribute, - relatedBy: .equal, toItem: self, attribute: attribute, - multiplier: 1, constant: 0)) - - addConstraint(NSLayoutConstraint(item: borderPickerButton, attribute: attribute, - relatedBy: .equal, toItem: self, attribute: attribute, - multiplier: 1, constant: 0)) - } - - for attribute: NSLayoutConstraint.Attribute in [.width, .left, .top] { - addConstraint(NSLayoutConstraint(item: topSeparator, attribute: attribute, - relatedBy: .equal, toItem: self, attribute: attribute, - multiplier: 1, constant: 0)) - } - - for attribute: NSLayoutConstraint.Attribute in [.width, .height] { - addConstraint(NSLayoutConstraint(item: pickerButton, attribute: attribute, - relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, - multiplier: 1, constant: ButtonPicker.Dimensions.buttonSize)) - - addConstraint(NSLayoutConstraint(item: borderPickerButton, attribute: attribute, - relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, - multiplier: 1, constant: ButtonPicker.Dimensions.buttonBorderSize)) - - addConstraint(NSLayoutConstraint(item: stackView, attribute: attribute, - relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, - multiplier: 1, constant: ImageStackView.Dimensions.imageSize)) - } - - addConstraint(NSLayoutConstraint(item: doneButton, attribute: .centerY, - relatedBy: .equal, toItem: self, attribute: .centerY, - multiplier: 1, constant: 0)) - - addConstraint(NSLayoutConstraint(item: stackView, attribute: .centerY, - relatedBy: .equal, toItem: self, attribute: .centerY, - multiplier: 1, constant: -2)) - - let screenSize = Helper.screenSizeForOrientation() - - addConstraint(NSLayoutConstraint(item: doneButton, attribute: .centerX, - relatedBy: .equal, toItem: self, attribute: .right, - multiplier: 1, constant: -(screenSize.width - (ButtonPicker.Dimensions.buttonBorderSize + screenSize.width)/2)/2)) - - addConstraint(NSLayoutConstraint(item: stackView, attribute: .centerX, - relatedBy: .equal, toItem: self, attribute: .left, - multiplier: 1, constant: screenSize.width/4 - ButtonPicker.Dimensions.buttonBorderSize/3)) - - addConstraint(NSLayoutConstraint(item: topSeparator, attribute: .height, - relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, - multiplier: 1, constant: 1)) - } -} - -// MARK: - TopView autolayout - -extension TopView { - - func setupConstraints() { - addConstraint(NSLayoutConstraint(item: flashButton, attribute: .left, - relatedBy: .equal, toItem: self, attribute: .left, - multiplier: 1, constant: Dimensions.leftOffset)) - - addConstraint(NSLayoutConstraint(item: flashButton, attribute: .centerY, - relatedBy: .equal, toItem: self, attribute: .centerY, - multiplier: 1, constant: 0)) - - addConstraint(NSLayoutConstraint(item: flashButton, attribute: .width, - relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, - multiplier: 1, constant: 55)) - - if configuration.canRotateCamera { - addConstraint(NSLayoutConstraint(item: rotateCamera, attribute: .right, - relatedBy: .equal, toItem: self, attribute: .right, - multiplier: 1, constant: Dimensions.rightOffset)) - - addConstraint(NSLayoutConstraint(item: rotateCamera, attribute: .centerY, - relatedBy: .equal, toItem: self, attribute: .centerY, - multiplier: 1, constant: 0)) - - addConstraint(NSLayoutConstraint(item: rotateCamera, attribute: .width, - relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, - multiplier: 1, constant: 55)) - - addConstraint(NSLayoutConstraint(item: rotateCamera, attribute: .height, - relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, - multiplier: 1, constant: 55)) - } - } -} - -// MARK: - Controller autolayout - -extension ImagePickerController { - - func setupConstraints() { - let attributes: [NSLayoutConstraint.Attribute] = [.bottom, .right, .width] - let topViewAttributes: [NSLayoutConstraint.Attribute] = [.left, .width] - - for attribute in attributes { - view.addConstraint(NSLayoutConstraint(item: bottomContainer, attribute: attribute, - relatedBy: .equal, toItem: view, attribute: attribute, - multiplier: 1, constant: 0)) - } - - for attribute: NSLayoutConstraint.Attribute in [.left, .top, .width] { - view.addConstraint(NSLayoutConstraint(item: cameraController.view!, attribute: attribute, - relatedBy: .equal, toItem: view, attribute: attribute, - multiplier: 1, constant: 0)) - } - - for attribute in topViewAttributes { - view.addConstraint(NSLayoutConstraint(item: topView, attribute: attribute, - relatedBy: .equal, toItem: self.view, attribute: attribute, - multiplier: 1, constant: 0)) - } - - if #available(iOS 11.0, *) { - view.addConstraint(NSLayoutConstraint(item: topView, attribute: .top, - relatedBy: .equal, toItem: view.safeAreaLayoutGuide, - attribute: .top, - multiplier: 1, constant: 0)) - } else { - view.addConstraint(NSLayoutConstraint(item: topView, attribute: .top, - relatedBy: .equal, toItem: view, - attribute: .top, - multiplier: 1, constant: 0)) - } - - if #available(iOS 11.0, *) { - let heightPadding = UIApplication.shared.keyWindow!.safeAreaInsets.bottom - view.addConstraint(NSLayoutConstraint(item: bottomContainer, attribute: .height, - relatedBy: .equal, toItem: nil, - attribute: .notAnAttribute, - multiplier: 1, - constant: BottomContainerView.Dimensions.height + heightPadding)) - } else { - view.addConstraint(NSLayoutConstraint(item: bottomContainer, attribute: .height, - relatedBy: .equal, toItem: nil, - attribute: .notAnAttribute, - multiplier: 1, - constant: BottomContainerView.Dimensions.height)) - } - - view.addConstraint(NSLayoutConstraint(item: topView, attribute: .height, - relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, - multiplier: 1, constant: TopView.Dimensions.height)) - - view.addConstraint(NSLayoutConstraint(item: cameraController.view!, attribute: .height, - relatedBy: .equal, toItem: view, attribute: .height, - multiplier: 1, constant: -BottomContainerView.Dimensions.height)) - } -} - -extension ImageGalleryViewCell { - - func setupConstraints() { - - for attribute: NSLayoutConstraint.Attribute in [.width, .height, .centerX, .centerY] { - addConstraint(NSLayoutConstraint(item: imageView, attribute: attribute, - relatedBy: .equal, toItem: self, attribute: attribute, - multiplier: 1, constant: 0)) - - addConstraint(NSLayoutConstraint(item: selectedImageView, attribute: attribute, - relatedBy: .equal, toItem: self, attribute: attribute, - multiplier: 1, constant: 0)) - } - } -} - -extension ButtonPicker { - - func setupConstraints() { - let attributes: [NSLayoutConstraint.Attribute] = [.centerX, .centerY] - - for attribute in attributes { - addConstraint(NSLayoutConstraint(item: numberLabel, attribute: attribute, - relatedBy: .equal, toItem: self, attribute: attribute, - multiplier: 1, constant: 0)) - } - } -} diff --git a/Pods/ImagePicker/Source/Helper.swift b/Pods/ImagePicker/Source/Helper.swift deleted file mode 100644 index 780950f95930957db879e6071973eb5587b6ffce..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/Helper.swift +++ /dev/null @@ -1,47 +0,0 @@ -import UIKit -import AVFoundation - -struct Helper { - - static var previousOrientation = UIDeviceOrientation.unknown - - static func getTransform(fromDeviceOrientation orientation: UIDeviceOrientation) -> CGAffineTransform { - switch orientation { - case .landscapeLeft: - return CGAffineTransform(rotationAngle: CGFloat.pi * 0.5) - case .landscapeRight: - return CGAffineTransform(rotationAngle: -(CGFloat.pi * 0.5)) - case .portraitUpsideDown: - return CGAffineTransform(rotationAngle: CGFloat.pi) - default: - return CGAffineTransform.identity - } - } - - static func getVideoOrientation(fromDeviceOrientation orientation: UIDeviceOrientation) -> AVCaptureVideoOrientation { - switch orientation { - case .landscapeLeft: - return .landscapeRight - case .landscapeRight: - return .landscapeLeft - case .portraitUpsideDown: - return .portraitUpsideDown - default: - return .portrait - } - } - - static func videoOrientation() -> AVCaptureVideoOrientation { - return getVideoOrientation(fromDeviceOrientation: previousOrientation) - } - - static func screenSizeForOrientation() -> CGSize { - switch UIDevice.current.orientation { - case .landscapeLeft, .landscapeRight: - return CGSize(width: UIScreen.main.bounds.height, - height: UIScreen.main.bounds.width) - default: - return UIScreen.main.bounds.size - } - } -} diff --git a/Pods/ImagePicker/Source/ImageGallery/ImageGalleryLayout.swift b/Pods/ImagePicker/Source/ImageGallery/ImageGalleryLayout.swift deleted file mode 100644 index 5d31a44b95187d9935036b9e19e99d25847a54cb..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/ImageGallery/ImageGalleryLayout.swift +++ /dev/null @@ -1,30 +0,0 @@ -import UIKit - -class ImageGalleryLayout: UICollectionViewFlowLayout { - - let configuration: Configuration1 - - init(configuration: Configuration1) { - self.configuration = configuration - super.init() - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? { - guard let attributes = super.layoutAttributesForElements(in: rect) else { - return super.layoutAttributesForElements(in: rect) - } - - let newAttributes = attributes.map({ (attribute) -> UICollectionViewLayoutAttributes in - // swiftlint:disable force_cast - let newAttribute = attribute.copy() as! UICollectionViewLayoutAttributes - newAttribute.transform = configuration.rotationTransform - return newAttribute - }) - - return newAttributes - } -} diff --git a/Pods/ImagePicker/Source/ImageGallery/ImageGalleryView.swift b/Pods/ImagePicker/Source/ImageGallery/ImageGalleryView.swift deleted file mode 100644 index 1bb72be7e2cedcdd714e8b9172d2c3d242296ea8..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/ImageGallery/ImageGalleryView.swift +++ /dev/null @@ -1,255 +0,0 @@ -import UIKit -import Photos - -private func < <T: Comparable>(lhs: T?, rhs: T?) -> Bool { - switch (lhs, rhs) { - case let (someLhs?, someRhs?): - return someLhs < someRhs - case (nil, _?): - return true - default: - return false - } -} - -protocol ImageGalleryPanGestureDelegate: class { - - func panGestureDidStart() - func panGestureDidChange(_ translation: CGPoint) - func panGestureDidEnd(_ translation: CGPoint, velocity: CGPoint) -} - -open class ImageGalleryView: UIView { - - struct Dimensions { - static let galleryHeight: CGFloat = 160 - static let galleryBarHeight: CGFloat = 24 - } - - var configuration1 = Configuration1() - - lazy open var collectionView: UICollectionView = { [unowned self] in - let collectionView = UICollectionView(frame: CGRect.zero, - collectionViewLayout: self.collectionViewLayout) - collectionView.translatesAutoresizingMaskIntoConstraints = false - collectionView.backgroundColor = self.configuration1.mainColor - collectionView.showsHorizontalScrollIndicator = false - collectionView.dataSource = self - collectionView.delegate = self - - return collectionView - }() - - lazy var collectionViewLayout: UICollectionViewLayout = { [unowned self] in - let layout = ImageGalleryLayout(configuration: self.configuration1) - layout.scrollDirection = .horizontal - layout.minimumInteritemSpacing = self.configuration1.cellSpacing - layout.minimumLineSpacing = 2 - layout.sectionInset = UIEdgeInsets.zero - - return layout - }() - - lazy var topSeparator: UIView = { [unowned self] in - let view = UIView() - view.translatesAutoresizingMaskIntoConstraints = false - view.addGestureRecognizer(self.panGestureRecognizer) - view.backgroundColor = self.configuration1.gallerySeparatorColor - - return view - }() - - lazy var panGestureRecognizer: UIPanGestureRecognizer = { [unowned self] in - let gesture = UIPanGestureRecognizer() - gesture.addTarget(self, action: #selector(handlePanGestureRecognizer(_:))) - - return gesture - }() - - open lazy var noImagesLabel: UILabel = { [unowned self] in - let label = UILabel() - label.font = self.configuration1.noImagesFont - label.textColor = self.configuration1.noImagesColor - label.text = self.configuration1.noImagesTitle - label.alpha = 0 - label.sizeToFit() - self.addSubview(label) - - return label - }() - - open lazy var selectedStack = ImageStack() - lazy var assets = [PHAsset]() - - weak var delegate: ImageGalleryPanGestureDelegate? - var collectionSize: CGSize? - var shouldTransform = false - var imagesBeforeLoading = 0 - var fetchResult: PHFetchResult<AnyObject>? - var imageLimit = 0 - - // MARK: - Initializers - - public init(configuration: Configuration1? = nil) { - if let configuration = configuration { - self.configuration1 = configuration - } - super.init(frame: .zero) - configure() - } - - override init(frame: CGRect) { - super.init(frame: frame) - configure() - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - func configure() { - backgroundColor = configuration1.mainColor - - collectionView.register(ImageGalleryViewCell.self, - forCellWithReuseIdentifier: CollectionView.reusableIdentifier) - - [collectionView, topSeparator].forEach { addSubview($0) } - - topSeparator.addSubview(configuration1.indicatorView) - - imagesBeforeLoading = 0 - fetchPhotos() - } - - // MARK: - Layout - - open override func layoutSubviews() { - super.layoutSubviews() - updateNoImagesLabel() - } - - func updateFrames() { - let totalWidth = UIScreen.main.bounds.width - frame.size.width = totalWidth - let collectionFrame = frame.height == Dimensions.galleryBarHeight ? 100 + Dimensions.galleryBarHeight : frame.height - topSeparator.frame = CGRect(x: 0, y: 0, width: totalWidth, height: Dimensions.galleryBarHeight) - topSeparator.autoresizingMask = [.flexibleLeftMargin, .flexibleRightMargin, .flexibleWidth] - configuration1.indicatorView.frame = CGRect(x: (totalWidth - configuration1.indicatorWidth) / 2, y: (topSeparator.frame.height - configuration1.indicatorHeight) / 2, - width: configuration1.indicatorWidth, height: configuration1.indicatorHeight) - collectionView.frame = CGRect(x: 0, y: topSeparator.frame.height, width: totalWidth, height: collectionFrame - topSeparator.frame.height) - collectionSize = CGSize(width: collectionView.frame.height, height: collectionView.frame.height) - noImagesLabel.center = CGPoint(x: bounds.width / 2, y: (bounds.height + Dimensions.galleryBarHeight) / 2) - - collectionView.reloadData() - } - - func updateNoImagesLabel() { - let height = bounds.height - let threshold = Dimensions.galleryBarHeight * 2 - - UIView.animate(withDuration: 0.25, animations: { - if threshold > height || self.collectionView.alpha != 0 { - self.noImagesLabel.alpha = 0 - } else { - self.noImagesLabel.center = CGPoint(x: self.bounds.width / 2, y: (height + Dimensions.galleryBarHeight) / 2) - self.noImagesLabel.alpha = (height > threshold) ? 1 : (height - Dimensions.galleryBarHeight) / threshold - } - }) - } - - // MARK: - Photos handler - - func fetchPhotos(_ completion: (() -> Void)? = nil) { - AssetManager.fetch(withConfiguration: configuration1) { assets in - self.assets.removeAll() - self.assets.append(contentsOf: assets) - self.collectionView.reloadData() - - completion?() - } - } - - // MARK: - Pan gesture recognizer - - @objc func handlePanGestureRecognizer(_ gesture: UIPanGestureRecognizer) { - guard let superview = superview else { return } - - let translation = gesture.translation(in: superview) - let velocity = gesture.velocity(in: superview) - - switch gesture.state { - case .began: - delegate?.panGestureDidStart() - case .changed: - delegate?.panGestureDidChange(translation) - case .ended: - delegate?.panGestureDidEnd(translation, velocity: velocity) - default: break - } - } - - func displayNoImagesMessage(_ hideCollectionView: Bool) { - collectionView.alpha = hideCollectionView ? 0 : 1 - updateNoImagesLabel() - } -} - -// MARK: CollectionViewFlowLayout delegate methods - -extension ImageGalleryView: UICollectionViewDelegateFlowLayout { - - public func collectionView(_ collectionView: UICollectionView, - layout collectionViewLayout: UICollectionViewLayout, - sizeForItemAt indexPath: IndexPath) -> CGSize { - guard let collectionSize = collectionSize else { return CGSize.zero } - - return collectionSize - } -} - -// MARK: CollectionView delegate methods - -extension ImageGalleryView: UICollectionViewDelegate { - - public func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - guard let cell = collectionView.cellForItem(at: indexPath) - as? ImageGalleryViewCell else { return } - if configuration1.allowMultiplePhotoSelection == false { - // Clear selected photos array - for asset in self.selectedStack.assets { - self.selectedStack.dropAsset(asset) - } - // Animate deselecting photos for any selected visible cells - guard let visibleCells = collectionView.visibleCells as? [ImageGalleryViewCell] else { return } - for cell in visibleCells where cell.selectedImageView.image != nil { - UIView.animate(withDuration: 0.2, animations: { - cell.selectedImageView.transform = CGAffineTransform(scaleX: 0.1, y: 0.1) - }, completion: { _ in - cell.selectedImageView.image = nil - }) - } - } - - let asset = assets[(indexPath as NSIndexPath).row] - - AssetManager.resolveAsset(asset, size: CGSize(width: 100, height: 100), shouldPreferLowRes: configuration1.useLowResolutionPreviewImage) { image in - guard image != nil else { return } - - if cell.selectedImageView.image != nil { - UIView.animate(withDuration: 0.2, animations: { - cell.selectedImageView.transform = CGAffineTransform(scaleX: 0.1, y: 0.1) - }, completion: { _ in - cell.selectedImageView.image = nil - }) - self.selectedStack.dropAsset(asset) - } else if self.imageLimit == 0 || self.imageLimit > self.selectedStack.assets.count { - cell.selectedImageView.image = AssetManager.getImage("selectedImageGallery") - cell.selectedImageView.transform = CGAffineTransform(scaleX: 0, y: 0) - UIView.animate(withDuration: 0.2, animations: { - cell.selectedImageView.transform = CGAffineTransform.identity - }) - self.selectedStack.pushAsset(asset) - } - } - } -} diff --git a/Pods/ImagePicker/Source/ImageGallery/ImageGalleryViewCell.swift b/Pods/ImagePicker/Source/ImageGallery/ImageGalleryViewCell.swift deleted file mode 100644 index c385318ec4d142a4f022068a3a881756483eef2f..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/ImageGallery/ImageGalleryViewCell.swift +++ /dev/null @@ -1,49 +0,0 @@ -import UIKit - -class ImageGalleryViewCell: UICollectionViewCell { - - lazy var imageView = UIImageView() - lazy var selectedImageView = UIImageView() - private var videoInfoView: VideoInfoView - - private let videoInfoBarHeight: CGFloat = 15 - var duration: TimeInterval? { - didSet { - if let duration = duration, duration > 0 { - self.videoInfoView.duration = duration - self.videoInfoView.isHidden = false - } else { - self.videoInfoView.isHidden = true - } - } - } - - override init(frame: CGRect) { - let videoBarFrame = CGRect(x: 0, y: frame.height - self.videoInfoBarHeight, - width: frame.width, height: self.videoInfoBarHeight) - videoInfoView = VideoInfoView(frame: videoBarFrame) - super.init(frame: frame) - - for view in [imageView, selectedImageView, videoInfoView] as [UIView] { - view.contentMode = .scaleAspectFill - view.translatesAutoresizingMaskIntoConstraints = false - view.clipsToBounds = true - contentView.addSubview(view) - } - - isAccessibilityElement = true - accessibilityLabel = "Photo" - - setupConstraints() - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - // MARK: - Configuration - - func configureCell(_ image: UIImage) { - imageView.image = image - } -} diff --git a/Pods/ImagePicker/Source/ImageGallery/ImageGalleryViewDataSource.swift b/Pods/ImagePicker/Source/ImageGallery/ImageGalleryViewDataSource.swift deleted file mode 100644 index 9a186c45e9324bab91b75eb5399164bbdc480c8d..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/ImageGallery/ImageGalleryViewDataSource.swift +++ /dev/null @@ -1,47 +0,0 @@ -import UIKit - -extension ImageGalleryView: UICollectionViewDataSource { - - struct CollectionView { - static let reusableIdentifier = "imagesReusableIdentifier" - } - - public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - displayNoImagesMessage(assets.isEmpty) - return assets.count - } - - public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: CollectionView.reusableIdentifier, - for: indexPath) as? ImageGalleryViewCell else { return UICollectionViewCell() } - - let asset = assets[(indexPath as NSIndexPath).row] - - AssetManager.resolveAsset(asset, size: CGSize(width: 160, height: 240), shouldPreferLowRes: configuration1.useLowResolutionPreviewImage) { image in - if let image = image { - cell.configureCell(image) - - if (indexPath as NSIndexPath).row == 0 && self.shouldTransform { - cell.transform = CGAffineTransform(scaleX: 0, y: 0) - - UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: UIView.AnimationOptions(), animations: { - cell.transform = CGAffineTransform.identity - }) { _ in } - - self.shouldTransform = false - } - - if self.selectedStack.containsAsset(asset) { - cell.selectedImageView.image = AssetManager.getImage("selectedImageGallery") - cell.selectedImageView.alpha = 1 - cell.selectedImageView.transform = CGAffineTransform.identity - } else { - cell.selectedImageView.image = nil - } - cell.duration = asset.duration - } - } - - return cell - } -} diff --git a/Pods/ImagePicker/Source/ImageGallery/VideoInfoView.swift b/Pods/ImagePicker/Source/ImageGallery/VideoInfoView.swift deleted file mode 100644 index c3cf5569490c052de55e37aab7b77eea59c1e178..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/ImageGallery/VideoInfoView.swift +++ /dev/null @@ -1,52 +0,0 @@ -import UIKit - -class VideoInfoView: UIView { - - var duration: TimeInterval? { - didSet { - videoInfoLabel.text = dateFormatter.string(from: duration ?? 0) - } - } - - private lazy var videoIcon: UIImageView = { - var videoIcon = UIImageView(image: AssetManager.getImage("video")) - videoIcon.frame = CGRect(x: 3, - y: 0, - width: self.bounds.height, - height: self.bounds.height) - videoIcon.contentMode = .scaleAspectFit - return videoIcon - }() - - private lazy var videoInfoLabel: UILabel = { - let videoInfoLabel = UILabel(frame: CGRect(x: 0, - y: 0, - width: self.bounds.width - 5, - height: self.bounds.height)) - videoInfoLabel.font = UIFont.systemFont(ofSize: 10) - videoInfoLabel.textColor = .white - videoInfoLabel.textAlignment = .right - videoInfoLabel.text = self.dateFormatter.string(from: self.duration ?? 0) - return videoInfoLabel - }() - - private lazy var dateFormatter: DateComponentsFormatter = { - let formatter = DateComponentsFormatter() - formatter.zeroFormattingBehavior = .pad - formatter.allowedUnits = [.hour, .minute, .second] - formatter.unitsStyle = .positional - return formatter - }() - - override init(frame: CGRect) { - super.init(frame: frame) - - backgroundColor = UIColor(white: 0, alpha: 0.5) - addSubview(self.videoIcon) - addSubview(self.videoInfoLabel) - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } -} diff --git a/Pods/ImagePicker/Source/ImagePickerController.swift b/Pods/ImagePicker/Source/ImagePickerController.swift deleted file mode 100644 index ad5561b1dd8a83c99896e5489988a460fd4308a2..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/ImagePickerController.swift +++ /dev/null @@ -1,541 +0,0 @@ -import UIKit -import MediaPlayer -import Photos - -@objc public protocol ImagePickerDelegate: NSObjectProtocol { - - func wrapperDidPress(_ imagePicker: ImagePickerController, images: [UIImage]) - func doneButtonDidPress(_ imagePicker: ImagePickerController, images: [UIImage]) - func cancelButtonDidPress(_ imagePicker: ImagePickerController) -} - -open class ImagePickerController: UIViewController { - - let configuration: Configuration1 - - struct GestureConstants { - static let maximumHeight: CGFloat = 200 - static let minimumHeight: CGFloat = 125 - static let velocity: CGFloat = 100 - } - - open lazy var galleryView: ImageGalleryView = { [unowned self] in - let galleryView = ImageGalleryView(configuration: self.configuration) - galleryView.delegate = self - galleryView.selectedStack = self.stack - galleryView.collectionView.layer.anchorPoint = CGPoint(x: 0, y: 0) - galleryView.imageLimit = self.imageLimit - - return galleryView - }() - - open lazy var bottomContainer: BottomContainerView = { [unowned self] in - let view = BottomContainerView(configuration: self.configuration) - view.backgroundColor = self.configuration.bottomContainerColor - view.delegate = self - - return view - }() - - open lazy var topView: TopView = { [unowned self] in - let view = TopView(configuration: self.configuration) - view.backgroundColor = UIColor.clear - view.delegate = self - - return view - }() - - lazy var cameraController: CameraView = { [unowned self] in - let controller = CameraView(configuration: self.configuration) - controller.delegate = self - controller.startOnFrontCamera = self.startOnFrontCamera - - return controller - }() - - lazy var panGestureRecognizer: UIPanGestureRecognizer = { [unowned self] in - let gesture = UIPanGestureRecognizer() - gesture.addTarget(self, action: #selector(panGestureRecognizerHandler(_:))) - - return gesture - }() - - lazy var volumeView: MPVolumeView = { [unowned self] in - let view = MPVolumeView() - view.frame = CGRect(x: 0, y: 0, width: 1, height: 1) - - return view - }() - - var volume = AVAudioSession.sharedInstance().outputVolume - - @objc open weak var delegate: ImagePickerDelegate? - open var stack = ImageStack() - open var imageLimit = 0 - open var preferredImageSize: CGSize? - open var startOnFrontCamera = false - var totalSize: CGSize { return UIScreen.main.bounds.size } - var initialFrame: CGRect? - var initialContentOffset: CGPoint? - var numberOfCells: Int? - var statusBarHidden = true - - fileprivate var isTakingPicture = false - open var doneButtonTitle: String? { - didSet { - if let doneButtonTitle = doneButtonTitle { - bottomContainer.doneButton.setTitle(doneButtonTitle, for: UIControl.State()) - } - } - } - - // MARK: - Initialization - - @objc public required init(configuration: Configuration1 = Configuration1()) { - self.configuration = configuration - super.init(nibName: nil, bundle: nil) - } - - public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { - self.configuration = Configuration1() - super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) - } - - public required init?(coder aDecoder: NSCoder) { - self.configuration = Configuration1() - super.init(coder: aDecoder) - } - - // MARK: - View lifecycle - - open override func viewDidLoad() { - super.viewDidLoad() - - for subview in [cameraController.view, galleryView, bottomContainer, topView] { - view.addSubview(subview!) - subview?.translatesAutoresizingMaskIntoConstraints = false - } - - view.addSubview(volumeView) - view.sendSubviewToBack(volumeView) - - view.backgroundColor = UIColor.white - view.backgroundColor = configuration.mainColor - - cameraController.view.addGestureRecognizer(panGestureRecognizer) - - subscribe() - setupConstraints() - } - - open override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - - if configuration.managesAudioSession { - _ = try? AVAudioSession.sharedInstance().setActive(true) - } - - statusBarHidden = UIApplication.shared.isStatusBarHidden - - self.handleRotation(nil) - } - - open override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - let galleryHeight: CGFloat = UIScreen.main.nativeBounds.height == 960 - ? ImageGalleryView.Dimensions.galleryBarHeight : GestureConstants.minimumHeight - - galleryView.collectionView.transform = CGAffineTransform.identity - galleryView.collectionView.contentInset = UIEdgeInsets.zero - - galleryView.frame = CGRect(x: 0, - y: totalSize.height - bottomContainer.frame.height - galleryHeight, - width: totalSize.width, - height: galleryHeight) - galleryView.updateFrames() - checkStatus() - - initialFrame = galleryView.frame - initialContentOffset = galleryView.collectionView.contentOffset - - applyOrientationTransforms() - - UIAccessibility.post(notification: UIAccessibility.Notification.screenChanged, argument: bottomContainer) - } - - open func resetAssets() { - self.stack.resetAssets([]) - } - - func checkStatus() { - let currentStatus = PHPhotoLibrary.authorizationStatus() - guard currentStatus != .authorized else { return } - - if currentStatus == .notDetermined { hideViews() } - - PHPhotoLibrary.requestAuthorization { (authorizationStatus) -> Void in - DispatchQueue.main.async { - if authorizationStatus == .denied { - self.presentAskPermissionAlert() - } else if authorizationStatus == .authorized { - self.permissionGranted() - } - } - } - } - - func presentAskPermissionAlert() { - let alertController = UIAlertController(title: configuration.requestPermissionTitle, message: configuration.requestPermissionMessage, preferredStyle: .alert) - - let alertAction = UIAlertAction(title: configuration.OKButtonTitle, style: .default) { _ in - if let settingsURL = URL(string: UIApplication.openSettingsURLString) { - UIApplication.shared.openURL(settingsURL) - } - } - - let cancelAction = UIAlertAction(title: configuration.cancelButtonTitle, style: .cancel) { _ in - self.dismiss(animated: true, completion: nil) - } - - alertController.addAction(alertAction) - alertController.addAction(cancelAction) - - present(alertController, animated: true, completion: nil) - } - - func hideViews() { - enableGestures(false) - } - - func permissionGranted() { - galleryView.fetchPhotos() - enableGestures(true) - } - - // MARK: - Notifications - - deinit { - if configuration.managesAudioSession { - _ = try? AVAudioSession.sharedInstance().setActive(false) - } - - NotificationCenter.default.removeObserver(self) - } - - func subscribe() { - NotificationCenter.default.addObserver(self, - selector: #selector(adjustButtonTitle(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.imageDidPush), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(adjustButtonTitle(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.imageDidDrop), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(dismissIfNeeded), - name: NSNotification.Name(rawValue: ImageStack.Notifications.imageDidDrop), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(didReloadAssets(_:)), - name: NSNotification.Name(rawValue: ImageStack.Notifications.stackDidReload), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(volumeChanged(_:)), - name: NSNotification.Name(rawValue: "AVSystemController_SystemVolumeDidChangeNotification"), - object: nil) - - NotificationCenter.default.addObserver(self, - selector: #selector(handleRotation(_:)), - name: UIDevice.orientationDidChangeNotification, - object: nil) - } - - @objc func didReloadAssets(_ notification: Notification) { - adjustButtonTitle(notification) - galleryView.collectionView.reloadData() - galleryView.collectionView.setContentOffset(CGPoint.zero, animated: false) - } - - @objc func volumeChanged(_ notification: Notification) { - guard configuration.allowVolumeButtonsToTakePicture, - let slider = volumeView.subviews.filter({ $0 is UISlider }).first as? UISlider, - let userInfo = (notification as NSNotification).userInfo, - let changeReason = userInfo["AVSystemController_AudioVolumeChangeReasonNotificationParameter"] as? String, changeReason == "ExplicitVolumeChange" else { return } - - slider.setValue(volume, animated: false) - takePicture() - } - - @objc func adjustButtonTitle(_ notification: Notification) { - guard let sender = notification.object as? ImageStack else { return } - - let title = !sender.assets.isEmpty ? - configuration.doneButtonTitle : configuration.cancelButtonTitle - bottomContainer.doneButton.setTitle(title, for: UIControl.State()) - } - - @objc func dismissIfNeeded() { - // If only one image is requested and a push occures, automatically dismiss the ImagePicker - if imageLimit == 1 { - doneButtonDidPress() - } - } - - // MARK: - Helpers - - open override var prefersStatusBarHidden: Bool { - return statusBarHidden - } - - open func collapseGalleryView(_ completion: (() -> Void)?) { - galleryView.collectionViewLayout.invalidateLayout() - UIView.animate(withDuration: 0.3, animations: { - self.updateGalleryViewFrames(self.galleryView.topSeparator.frame.height) - self.galleryView.collectionView.transform = CGAffineTransform.identity - self.galleryView.collectionView.contentInset = UIEdgeInsets.zero - }, completion: { _ in - completion?() - }) - } - - open func showGalleryView() { - galleryView.collectionViewLayout.invalidateLayout() - UIView.animate(withDuration: 0.3, animations: { - self.updateGalleryViewFrames(GestureConstants.minimumHeight) - self.galleryView.collectionView.transform = CGAffineTransform.identity - self.galleryView.collectionView.contentInset = UIEdgeInsets.zero - }) - } - - open func expandGalleryView() { - galleryView.collectionViewLayout.invalidateLayout() - - UIView.animate(withDuration: 0.3, animations: { - self.updateGalleryViewFrames(GestureConstants.maximumHeight) - - let scale = (GestureConstants.maximumHeight - ImageGalleryView.Dimensions.galleryBarHeight) / (GestureConstants.minimumHeight - ImageGalleryView.Dimensions.galleryBarHeight) - self.galleryView.collectionView.transform = CGAffineTransform(scaleX: scale, y: scale) - - let value = self.view.frame.width * (scale - 1) / scale - self.galleryView.collectionView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: value) - }) - } - - func updateGalleryViewFrames(_ constant: CGFloat) { - galleryView.frame.origin.y = totalSize.height - bottomContainer.frame.height - constant - galleryView.frame.size.height = constant - } - - func enableGestures(_ enabled: Bool) { - galleryView.alpha = enabled ? 1 : 0 - bottomContainer.pickerButton.isEnabled = enabled - bottomContainer.tapGestureRecognizer.isEnabled = enabled - topView.flashButton.isEnabled = enabled - topView.rotateCamera.isEnabled = configuration.canRotateCamera - } - - fileprivate func isBelowImageLimit() -> Bool { - return (imageLimit == 0 || imageLimit > galleryView.selectedStack.assets.count) - } - - fileprivate func takePicture() { - guard isBelowImageLimit() && !isTakingPicture else { return } - isTakingPicture = true - bottomContainer.pickerButton.isEnabled = false - bottomContainer.stackView.startLoader() - let action: () -> Void = { [weak self] in - guard let `self` = self else { return } - self.cameraController.takePicture { self.isTakingPicture = false } - } - - if configuration.collapseCollectionViewWhileShot { - collapseGalleryView(action) - } else { - action() - } - } -} - -// MARK: - Action methods - -extension ImagePickerController: BottomContainerViewDelegate { - - func pickerButtonDidPress() { - takePicture() - } - - func doneButtonDidPress() { - var images: [UIImage] - if let preferredImageSize = preferredImageSize { - images = AssetManager.resolveAssets(stack.assets, size: preferredImageSize) - } else { - images = AssetManager.resolveAssets(stack.assets) - } - - delegate?.doneButtonDidPress(self, images: images) - } - - func cancelButtonDidPress() { - delegate?.cancelButtonDidPress(self) - } - - func imageStackViewDidPress() { - var images: [UIImage] - if let preferredImageSize = preferredImageSize { - images = AssetManager.resolveAssets(stack.assets, size: preferredImageSize) - } else { - images = AssetManager.resolveAssets(stack.assets) - } - - delegate?.wrapperDidPress(self, images: images) - } -} - -extension ImagePickerController: CameraViewDelegate { - - func setFlashButtonHidden(_ hidden: Bool) { - if configuration.flashButtonAlwaysHidden { - topView.flashButton.isHidden = hidden - } - } - - func imageToLibrary() { - guard let collectionSize = galleryView.collectionSize else { return } - - galleryView.fetchPhotos { - guard let asset = self.galleryView.assets.first else { return } - if self.configuration.allowMultiplePhotoSelection == false { - self.stack.assets.removeAll() - } - self.stack.pushAsset(asset) - } - - galleryView.shouldTransform = true - bottomContainer.pickerButton.isEnabled = true - - UIView.animate(withDuration: 0.3, animations: { - self.galleryView.collectionView.transform = CGAffineTransform(translationX: collectionSize.width, y: 0) - }, completion: { _ in - self.galleryView.collectionView.transform = CGAffineTransform.identity - }) - } - - func cameraNotAvailable() { - topView.flashButton.isHidden = true - topView.rotateCamera.isHidden = true - bottomContainer.pickerButton.isEnabled = false - } - - // MARK: - Rotation - - open override var supportedInterfaceOrientations: UIInterfaceOrientationMask { - return .portrait - } - - @objc public func handleRotation(_ note: Notification?) { - applyOrientationTransforms() - } - - func applyOrientationTransforms() { - let rotate = configuration.rotationTransform - - UIView.animate(withDuration: 0.25, animations: { - [self.topView.rotateCamera, self.bottomContainer.pickerButton, - self.bottomContainer.stackView, self.bottomContainer.doneButton].forEach { - $0.transform = rotate - } - - self.galleryView.collectionViewLayout.invalidateLayout() - - let translate: CGAffineTransform - if Helper.previousOrientation.isLandscape { - translate = CGAffineTransform(translationX: -20, y: 15) - } else { - translate = CGAffineTransform.identity - } - - self.topView.flashButton.transform = rotate.concatenating(translate) - }) - } -} - -// MARK: - TopView delegate methods - -extension ImagePickerController: TopViewDelegate { - - func flashButtonDidPress(_ title: String) { - cameraController.flashCamera(title) - } - - func rotateDeviceDidPress() { - cameraController.rotateCamera() - } -} - -// MARK: - Pan gesture handler - -extension ImagePickerController: ImageGalleryPanGestureDelegate { - - func panGestureDidStart() { - guard let collectionSize = galleryView.collectionSize else { return } - - initialFrame = galleryView.frame - initialContentOffset = galleryView.collectionView.contentOffset - if let contentOffset = initialContentOffset { numberOfCells = Int(contentOffset.x / collectionSize.width) } - } - - @objc func panGestureRecognizerHandler(_ gesture: UIPanGestureRecognizer) { - let translation = gesture.translation(in: view) - let velocity = gesture.velocity(in: view) - - if gesture.location(in: view).y > galleryView.frame.origin.y - 25 { - gesture.state == .began ? panGestureDidStart() : panGestureDidChange(translation) - } - - if gesture.state == .ended { - panGestureDidEnd(translation, velocity: velocity) - } - } - - func panGestureDidChange(_ translation: CGPoint) { - guard let initialFrame = initialFrame else { return } - - let galleryHeight = initialFrame.height - translation.y - - if galleryHeight >= GestureConstants.maximumHeight { return } - - if galleryHeight <= ImageGalleryView.Dimensions.galleryBarHeight { - updateGalleryViewFrames(ImageGalleryView.Dimensions.galleryBarHeight) - } else if galleryHeight >= GestureConstants.minimumHeight { - let scale = (galleryHeight - ImageGalleryView.Dimensions.galleryBarHeight) / (GestureConstants.minimumHeight - ImageGalleryView.Dimensions.galleryBarHeight) - galleryView.collectionView.transform = CGAffineTransform(scaleX: scale, y: scale) - galleryView.frame.origin.y = initialFrame.origin.y + translation.y - galleryView.frame.size.height = initialFrame.height - translation.y - - let value = view.frame.width * (scale - 1) / scale - galleryView.collectionView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: value) - } else { - galleryView.frame.origin.y = initialFrame.origin.y + translation.y - galleryView.frame.size.height = initialFrame.height - translation.y - } - - galleryView.updateNoImagesLabel() - } - - func panGestureDidEnd(_ translation: CGPoint, velocity: CGPoint) { - guard let initialFrame = initialFrame else { return } - let galleryHeight = initialFrame.height - translation.y - if galleryView.frame.height < GestureConstants.minimumHeight && velocity.y < 0 { - showGalleryView() - } else if velocity.y < -GestureConstants.velocity { - expandGalleryView() - } else if velocity.y > GestureConstants.velocity || galleryHeight < GestureConstants.minimumHeight { - collapseGalleryView(nil) - } - } -} diff --git a/Pods/ImagePicker/Source/LocationManager.swift b/Pods/ImagePicker/Source/LocationManager.swift deleted file mode 100644 index 4141c56d10c3369b0e29efb45fec2cadf2af92d4..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/LocationManager.swift +++ /dev/null @@ -1,37 +0,0 @@ -import Foundation -import CoreLocation - -class LocationManager: NSObject, CLLocationManagerDelegate { - var locationManager = CLLocationManager() - var latestLocation: CLLocation? - - override init() { - super.init() - locationManager.delegate = self - locationManager.desiredAccuracy = kCLLocationAccuracyBest - locationManager.requestWhenInUseAuthorization() - } - - func startUpdatingLocation() { - locationManager.startUpdatingLocation() - } - - func stopUpdatingLocation() { - locationManager.stopUpdatingLocation() - } - - // MARK: - CLLocationManagerDelegate - - func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { - // Pick the location with best (= smallest value) horizontal accuracy - latestLocation = locations.sorted { $0.horizontalAccuracy < $1.horizontalAccuracy }.first - } - - func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { - if status == .authorizedAlways || status == .authorizedWhenInUse { - locationManager.startUpdatingLocation() - } else { - locationManager.stopUpdatingLocation() - } - } -} diff --git a/Pods/ImagePicker/Source/TopView/TopView.swift b/Pods/ImagePicker/Source/TopView/TopView.swift deleted file mode 100644 index 27ffad2d6613a0c6fdd1469b247edb13df767b23..0000000000000000000000000000000000000000 --- a/Pods/ImagePicker/Source/TopView/TopView.swift +++ /dev/null @@ -1,119 +0,0 @@ -import UIKit - -protocol TopViewDelegate: class { - - func flashButtonDidPress(_ title: String) - func rotateDeviceDidPress() -} - -open class TopView: UIView { - - struct Dimensions { - static let leftOffset: CGFloat = 11 - static let rightOffset: CGFloat = 7 - static let height: CGFloat = 34 - } - - var configuration = Configuration1() - - var currentFlashIndex = 0 - let flashButtonTitles = ["AUTO", "ON", "OFF"] - - open lazy var flashButton: UIButton = { [unowned self] in - let button = UIButton() - button.setImage(AssetManager.getImage("AUTO"), for: UIControl.State()) - button.setTitle("AUTO", for: UIControl.State()) - button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 4, bottom: 0, right: 0) - button.setTitleColor(UIColor.white, for: UIControl.State()) - button.setTitleColor(UIColor.white, for: .highlighted) - button.titleLabel?.font = self.configuration.flashButton - button.addTarget(self, action: #selector(flashButtonDidPress(_:)), for: .touchUpInside) - button.contentHorizontalAlignment = .left - button.accessibilityLabel = "Flash mode is auto" - button.accessibilityHint = "Double-tap to change flash mode" - - return button - }() - - open lazy var rotateCamera: UIButton = { [unowned self] in - let button = UIButton() - button.accessibilityLabel = "" - button.accessibilityHint = "Double-tap to rotate camera" - button.setImage(AssetManager.getImage("cameraIcon"), for: UIControl.State()) - button.addTarget(self, action: #selector(rotateCameraButtonDidPress(_:)), for: .touchUpInside) - button.imageView?.contentMode = .center - - return button - }() - - weak var delegate: TopViewDelegate? - - // MARK: - Initializers - - public init(configuration: Configuration1? = nil) { - if let configuration = configuration { - self.configuration = configuration - } - super.init(frame: .zero) - configure() - } - - override public init(frame: CGRect) { - super.init(frame: frame) - configure() - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - func configure() { - var buttons: [UIButton] = [flashButton] - - if configuration.canRotateCamera { - buttons.append(rotateCamera) - } - - for button in buttons { - button.layer.shadowColor = UIColor.black.cgColor - button.layer.shadowOpacity = 0.5 - button.layer.shadowOffset = CGSize(width: 0, height: 1) - button.layer.shadowRadius = 1 - button.translatesAutoresizingMaskIntoConstraints = false - addSubview(button) - } - - flashButton.isHidden = configuration.flashButtonAlwaysHidden - - setupConstraints() - } - - // MARK: - Action methods - - @objc func flashButtonDidPress(_ button: UIButton) { - currentFlashIndex += 1 - currentFlashIndex = currentFlashIndex % flashButtonTitles.count - - switch currentFlashIndex { - case 1: - button.setTitleColor(UIColor(red: 0.98, green: 0.98, blue: 0.45, alpha: 1), for: UIControl.State()) - button.setTitleColor(UIColor(red: 0.52, green: 0.52, blue: 0.24, alpha: 1), for: .highlighted) - - default: - button.setTitleColor(UIColor.white, for: UIControl.State()) - button.setTitleColor(UIColor.white, for: .highlighted) - } - - let newTitle = flashButtonTitles[currentFlashIndex] - - button.setImage(AssetManager.getImage(newTitle), for: UIControl.State()) - button.setTitle(newTitle, for: UIControl.State()) - button.accessibilityLabel = "Flash mode is \(newTitle)" - - delegate?.flashButtonDidPress(newTitle) - } - - @objc func rotateCameraButtonDidPress(_ button: UIButton) { - delegate?.rotateDeviceDidPress() - } -} diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 79ed5f60bda519fcd7b164df0fc04c2cad81b9c0..d506ecc33d77a46377f82c23cb46a7b058c8a547 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -1,6 +1,5 @@ PODS: - EPSignature (1.0.6) - - ImagePicker (3.2.0) - IQKeyboardManagerSwift (7.0.3) - LanguageManager-iOS (1.2.7) - NBBottomSheet (1.2.0) @@ -8,7 +7,6 @@ PODS: DEPENDENCIES: - EPSignature - - ImagePicker - IQKeyboardManagerSwift - LanguageManager-iOS - NBBottomSheet @@ -17,7 +15,6 @@ DEPENDENCIES: SPEC REPOS: trunk: - EPSignature - - ImagePicker - IQKeyboardManagerSwift - LanguageManager-iOS - NBBottomSheet @@ -25,12 +22,11 @@ SPEC REPOS: SPEC CHECKSUMS: EPSignature: 3fa3b520c80717b98019723faa60a41794b03fbc - ImagePicker: 1d950bbb2422548ed58791b4ec7f42fe42920511 IQKeyboardManagerSwift: f9c5dc36cba16ddd2e51fa7d51c34a2e083029b5 LanguageManager-iOS: 6b2dbb3793445827114708f0759b76e96932d7c8 NBBottomSheet: aa7a52809b2d7b193f733247b8ce391a59904372 Toast-Swift: 7a03a532afe3a560d4044bc7c237e2864d295173 -PODFILE CHECKSUM: 66130dd3e292a1567692b85953ac3e758e13868f +PODFILE CHECKSUM: 5fcfa5eb2c11dab017c8fd62f9cc986570b31f34 COCOAPODS: 1.14.3 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 66e10a30380c53ba06aa31b4ed3b75d49ac7866f..8266018d89682ffd2d2392a9ffb5c22321f064ed 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -7,388 +7,307 @@ objects = { /* Begin PBXBuildFile section */ - 028F3BD1F76536182769D7FA2BB26457 /* ImageStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2535688320A12B11FEFD58EC6052A8EC /* ImageStack.swift */; }; - 0615219BFD2EBBE27FF41C2C8816791E /* IQTextFieldViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5870D384ABFCBE6207143C2A72B72A10 /* IQTextFieldViewInfo.swift */; }; - 0718CCD0E19136B8DB2A7D4C6585E3ED /* LanguageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B432D00858E45B771C11A35D09EB42E4 /* LanguageManager.swift */; }; - 08822D4E49DB8618D27BAEDED7911733 /* IQKeyboardManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFB6EC836300F1DEEAA4CEFAA33ABD19 /* IQKeyboardManager+Internal.swift */; }; - 08C234F2981017EEF271582022F339F3 /* IQUIView+IQKeyboardToolbarDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AB029201A3484CB5BCAD15F2FCF9081 /* IQUIView+IQKeyboardToolbarDeprecated.swift */; }; - 0A4DB572ACD97EC492C4E93A0FFB2E47 /* IQTextFieldViewListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2DD5AE6CACB8DAC2D9D1E1A2922DA90 /* IQTextFieldViewListener.swift */; }; - 0D92995ED774F4E8488DE6D1F4D4CC87 /* Pods-MiniScanner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */; }; - 1021FCA162D086E55DE8D6926F8DA215 /* ImageGalleryViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B74B1A80F0A0EEE7527DE8AFD0E7F1C3 /* ImageGalleryViewCell.swift */; }; - 103FE4EEFF1BE8BAD0FA047987AFED74 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43390028C811A47BDDF45824B3D30D31 /* IQUIView+Hierarchy.swift */; }; - 10D1A87F45AFB52D2B34D9ABA1A86105 /* UIImageView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 636AE2E4AB62093E1592CE359392C841 /* UIImageView+Direction.swift */; }; - 14063E1AF70EDDC9F33C8E08DCA0BEF3 /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AEA6851BD7FCB59C627DE1A0633609F /* IQPreviousNextView.swift */; }; - 14FA8541FCF824824EBDDBD21B712DE8 /* focusIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C84B26F8ADEC27A386D60E255400321A /* focusIcon@3x.png */; }; - 154362EFC8EC0F61F54E24B09266DEB1 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F068A96AEF12780439B98393629BB16 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */; }; - 15F04D15A4DC87FF877C2857720F8D72 /* Toast-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DF01277275CD2AEE06E328B287C97A3 /* Toast-Swift-dummy.m */; }; - 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00F287BEEDC27E1135AF1D47204F754B /* NBBottomSheetPresentationController.swift */; }; - 1948830F0F143F2897657B9D75895EFA /* VideoInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D029ABFAB048D5C70B1F219BF60BFDA /* VideoInfoView.swift */; }; - 1A7787DB0275CF4A44CA312DD3BA5D33 /* EPSignatureViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 72FC8142B933D42EE5AE712DAD741DF8 /* EPSignatureViewController.xib */; }; - 1BBD42E84E62842B6EA186CEF24BBF45 /* ImagePicker-ImagePicker in Resources */ = {isa = PBXBuildFile; fileRef = 97AA160F23F0CBEDDAF212103E762FC7 /* ImagePicker-ImagePicker */; }; - 1BBED45FEDD4AF437A762909E4937019 /* CameraMan.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF51C6ED55BE3234DDC00FD344A09E7D /* CameraMan.swift */; }; - 1C3881B0113D3219398154E16AA4413C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FAA5D0DE773CB6BFF7370F07A06C5B1 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */; }; - 1D5090C638CFC6ABA603A73B2D890CC7 /* Helper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A297F21753E5B662FDC26D1C7BFAD0BD /* Helper.swift */; }; - 237A96A092EA5A5B0CB41160BEA22E16 /* Toast-Swift-Toast-Swift in Resources */ = {isa = PBXBuildFile; fileRef = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */; }; - 23D11E770DF137CBF802A30E2B19C054 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - 24C699F9653980B77F44634EF44641C1 /* IQKeyboardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC4598F509A748A174B923F7BFFD6A1D /* IQKeyboardInfo.swift */; }; - 267C4C6C182CC853990C78F13C5318CE /* TopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEA5D36999FB7EC130573BBE1118B86C /* TopView.swift */; }; - 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 620668AA976F0F6ED19180B8B4D83AB8 /* NBBottomSheetTransitioningDelegate.swift */; }; - 3452528F3B9B79AD67D45FEA174F71E4 /* IQUICollectionView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AFFC5763F85A742954048A03D39913F /* IQUICollectionView+Additions.swift */; }; - 34BDB069A96125DAF2FEF6FF93A3F6AF /* IQToolbarPlaceholderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C34C9F75E166049F8D6E200F86B613 /* IQToolbarPlaceholderConfiguration.swift */; }; - 35699581E68E1E6F640C681EEDEEE2B6 /* EPSignature-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 011B51599E04A9236E034DD068DF591E /* EPSignature-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A9E56248E01438AF8F27428F420DBAA /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3806469B2739BBFA16083760004ED9B4 /* ImageGalleryViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E835F0288DF1D878316C17BB12366979 /* ImageGalleryViewDataSource.swift */; }; - 38CBE3196BDD577B5E72BC65508A77F8 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D690195157D5AFC3FC7A71E3B59E3E56 /* IQTextView.swift */; }; - 38FD95DCC2D02D5B78BE9AEE48DBDF25 /* ConstraintsSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = E02C761871BEF1BBDE11B72CCC3696C6 /* ConstraintsSetup.swift */; }; - 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - 3E21C9612D00C6B92D3FCE3589917729 /* UIView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76694372E1865C4FA3EEFDDBC4161F06 /* UIView+Direction.swift */; }; - 4017CF2B3EE45E7E579E68E6FCFBF732 /* IQKeyboardManager+UIKeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3E9B3A77CAD85B61F751BBDFCB21D18 /* IQKeyboardManager+UIKeyboardNotification.swift */; }; - 40D3B7212B9FC40CE3445143938A5679 /* AUTO@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8ED32688AB72481EF3CAB7EB874E8EC6 /* AUTO@3x.png */; }; - 42592EF79D0A81B77812AC496508ACAA /* cameraIcon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = DA35CA28C5083B4CFE5AC4A0693E74DE /* cameraIcon@3x.png */; }; - 42B931814C7B25871333D5DA9A0E2A41 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 875F53B09AC722ED6ADABA1C1EDC5C20 /* IQKeyboardReturnKeyHandler.swift */; }; - 48A4D5E4D954CB4212E540A92570BBF0 /* UIView+Swizzling.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8EF4D9DBCE2C1D02B24E978469E6051 /* UIView+Swizzling.swift */; }; - 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */ = {isa = PBXBuildFile; fileRef = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; }; - 50374D59C8ED3AE3E41C30F25859F981 /* ImagePickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9BF6D173974B97A3F1EB34546FCA901 /* ImagePickerController.swift */; }; - 54BAE903D82C39392943869866252D93 /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4722380FB0C679720105FF9E1A5A523B /* IQNSArray+Sort.swift */; }; - 557A1655974B507ED20F35CF59C65BAF /* OFF@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F4415550D8B9EC49233840893C1C9537 /* OFF@3x.png */; }; - 570139F7C036A8C0C2E2A79828C91040 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - 597994C3AE8908B1E462BC03AC8C23FB /* IQKeyboardManagerCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5E1C76F4CB18ED77389CE7FE78F467D /* IQKeyboardManagerCompatible.swift */; }; - 59D76AD0378678CB0D3236021BF96A09 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE6749FC108D414ECB83B77EF11BD86 /* QuartzCore.framework */; }; - 5D35C19C362961F919BE9820991D761E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - 5F0469C5B154DC20B844EA2A9B7F8D42 /* IQPlaceholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2B15DF05BBBE3351036FCCAC9F00846 /* IQPlaceholderable.swift */; }; - 5F62DAE67CF97B7C42471EA91B79AA9A /* IQTextFieldViewInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C55F11056F0351DE08666B753849E48 /* IQTextFieldViewInfoModel.swift */; }; - 6418A8A5D32E73D898AB155952180B0C /* LanguageManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 16878922AD64BAC3738BB1DCCEE573DD /* LanguageManager-iOS-dummy.m */; }; - 674C6B2E317E657D8EAD3CC73F608540 /* IQKeyboardManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 650E6F717733EACCA5E65EC3FCDBDE02 /* IQKeyboardManager+Debug.swift */; }; - 6D55C34EF7CE4718D8B2FE6CE95C5674 /* DefaultsKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = C868C23A49BC6026FFF1C097909C6AEF /* DefaultsKeys.swift */; }; - 6F875A0983E3FB0E0CC0BDA6376F73E8 /* String+Localiz.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E815AC0CA5BEA17DC867985BB80CA99 /* String+Localiz.swift */; }; - 6F9D8C942D968A408F1B9370EC7F7B29 /* Pods-MiniScanner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6FAA62F8C663AAEDAB170956E9A298CC /* ImageGalleryLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53D1259E91ED2A6A6554FD25A148FAEA /* ImageGalleryLayout.swift */; }; - 701904768C60A3F9060518DD58EC2882 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DE64C21ED9D81A56EF0DA1C351E53C /* IQToolbar.swift */; }; - 733CF7F19636AFF4A97708DFDE0AE53C /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 69023DD29D363BEF415F3723F1169699 /* IQKeyboardManagerSwift-dummy.m */; }; - 743ED1DCEC16DC2E7FAD8FBDD276EC8F /* ImagePicker-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A683468C7D2939968FC170A715B5467 /* ImagePicker-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7586D1882B962E1E31C28CC6396668B3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C63F26DA7ECAFB44B0A5DD0BC0E2F89 /* UIKit.framework */; }; - 784DF7F278DC988FEEECB999A9ADFCBB /* BottomContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C777330D77AC4AEF2F650AC082FC0D20 /* BottomContainerView.swift */; }; - 797DF46337EAC66E47C5ADAF32515524 /* NBBottomSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = C3DAC0D16E8B9CDAB1C46438A1918609 /* NBBottomSheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7B2263CFC47393D3FB5CD8D5F7EB57AD /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C63F26DA7ECAFB44B0A5DD0BC0E2F89 /* UIKit.framework */; }; - 7DB7E0E519A315B78D72BF7C63C64E30 /* ButtonPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30D3BA93828D8AA79B12971D4417E3E7 /* ButtonPicker.swift */; }; - 8086BD2DB5F1A0CC88E4F3386570A21C /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4309F47E646E6968CACD8832ABE22099 /* IQUITextFieldView+Additions.swift */; }; - 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2647160AB4F12734D43B806D373E9312 /* NBConfiguration.swift */; }; - 82950EE4BDD57F74749742A3E1566073 /* IQKeyboardManager+UITextFieldViewNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AF49D9ABCB15DBD7FCBE47C06871EDE /* IQKeyboardManager+UITextFieldViewNotification.swift */; }; - 829A79A8C324697D5A619C029AEB0063 /* CameraView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B17A5CFD871FCE0F4206503722AC57FF /* CameraView.swift */; }; - 852E6AB133CF7BDE7DE7D836AE201868 /* Languages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B7B31E6C5B5F1EC637FFE5C5B3C83C3 /* Languages.swift */; }; - 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 002E7885D97E14840BB1694FDAC680C3 /* NBBottomSheetDismissalTransition.swift */; }; - 8ED2E941DF0803C8AA331D0D8C722615 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C36106C5881CE608080384E70EA21E2C /* IQBarButtonItem.swift */; }; - 8FDA28363A5E49017498FD69AAA8F59F /* IQKeyboardListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A8E9A2C8F405661496F405E14CEB2E1 /* IQKeyboardListener.swift */; }; - 907FCA3049CAAF64B579D08D339D118D /* IQBarButtonItemConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB89DB4BC3C06D3ACF9248E1A8CB0A32 /* IQBarButtonItemConfiguration.swift */; }; - 93C0AD77AB416AE90A6BD03E44A9B684 /* EPSignature-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A5FF8ED8FBE20522184DB1B88647020 /* EPSignature-dummy.m */; }; - 94F893223EB4C1C0F829C17900114AFA /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92F6E344FAB0C5DAE4F05104C2C68571 /* IQUIScrollView+Additions.swift */; }; - 98A4D0D5928A35C7DB3D9272187789A8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F3DF46AD6E25D68DB361974528992221 /* CoreGraphics.framework */; }; - 9A00A25ED34A7687C62B02EBB76C1248 /* IQKeyboardConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AF1DD944BBBCC3E4B6F8FB70B1C9E9 /* IQKeyboardConfiguration.swift */; }; - 9A07A2503A858418B33E94591CE13F17 /* video@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = EB9573491019BC299A7C3CBE4C3D37FF /* video@3x.png */; }; - 9E704111CAAACBF64155A576FC337323 /* LanguageManager-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B4FB0B2061538AF85A645E46144C165E /* LanguageManager-iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F78D56352F7D932DCEBE416C668C7BA /* IQKeyboardManager+ToolbarActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45FB65D90C5FCEB09C0B16E99E9CB1EB /* IQKeyboardManager+ToolbarActions.swift */; }; - A4AE2538C33D06CB8C70D5FF35A65D98 /* EPSignatureViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81B80CF746340952D1957D5CCC583D36 /* EPSignatureViewController.swift */; }; - A5E69CC013C4311C8AF52C7F7AB095C9 /* IQUITableView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 039EA7048499C3BC1CBB4E8FAB74BB40 /* IQUITableView+Additions.swift */; }; - AE7D065E1D48171258FD8F07F7CD592C /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD60A987631255EE6EF4DF3C13D75F14 /* IQKeyboardManagerConstants.swift */; }; - AF715064CF6458D3D89BB563DFDB00C6 /* UIButton+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C2F550BD6A5440BADC14D7B43F94713 /* UIButton+Direction.swift */; }; - B0E87F4E370B3A0CD14B50D219AE7B0B /* StackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E732367DAF4C72D47A9D2609A0D2EAD7 /* StackView.swift */; }; - B1A786B1A2F11EBD1BF77305EEB710F5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EE6749FC108D414ECB83B77EF11BD86 /* QuartzCore.framework */; }; - B1BFC54288364884DDEAE75027BABE1A /* IQActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 455ED137864B3625C8C1DC4EA799A433 /* IQActiveConfiguration.swift */; }; - B7E0FCF3222880B9CDBABD576D3D348A /* ON@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 92BD73655367FDAF60480520BD5C7C1F /* ON@3x.png */; }; - B9CF878085ABA2991A9C6F12F9B9DAB3 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AFA769CF0850AC9B2C312D9D737E578 /* IQTitleBarButtonItem.swift */; }; - BD0139B5F1C96514CB66C4310AAF1DF5 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56B28C4E9F718651E6E1B010F31566EB /* AVFoundation.framework */; }; - C1BDE472EF622F6F59660C63EAF16578 /* selectedImageGallery@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 87EF02E7A8E36E8A8DBB71DE89ED96B0 /* selectedImageGallery@3x.png */; }; - CA6D6333D723B4391BD689F68FCF23DF /* EPSignatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BD6019163583EA6526F0ACBFDA0511E /* EPSignatureView.swift */; }; - CA8CFC49D2338D41DA4E83F941867CEB /* ImagePicker-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EA6E885F82FC51E2B5754170A5C9BFF /* ImagePicker-dummy.m */; }; - CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - CC96488C33BFB3BCEE4A665A438CAC36 /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8E57D2900050797926440B9E5CFBB20 /* IQUIViewController+Additions.swift */; }; - D181D49DE6D7885B2834AF4E96170171 /* Toast-Swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EF7D783EF1D563B4F4FD4F1F0C419D93 /* Toast-Swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2A598E7174826A7B04036E7AC8AA3B6 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061AAD17D23877A1F03301246A85EF54 /* Storage.swift */; }; - D3A3B25E1A86845B4E10D35D8FD06ED9 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 019B0871D5ADD52194BB016FE08B66F5 /* PrivacyInfo.xcprivacy */; }; - D3D1F63C30E95311B687FA924B872C15 /* IQKeyboardManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE59A1597022F0861A65AB781A04460 /* IQKeyboardManager+Deprecated.swift */; }; - D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0CB553D4A98EA08E4217623F5288340 /* NBBottomSheet-dummy.m */; }; - D4BB4D928CB44E6CE753BEA14E5AC918 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - D8322CBE73400EE4382D1A042D2D53D3 /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0315AFEFCB0BFF084FA3C5E469C5C301 /* IQUIView+IQKeyboardToolbar.swift */; }; - D88C2EA8ACCC0DE031D9E7A768062E2C /* IQKeyboardManager+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27B7276332D112636983C2AD6107C243 /* IQKeyboardManager+Toolbar.swift */; }; - DE3B5070A41194C21898D92DBFFCBE4C /* IQRootControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89DB66B29E28AD378856BF11E7EE9A37 /* IQRootControllerConfiguration.swift */; }; - E483FA24409A56AAEDF8A1DEC5F55F16 /* UIImage+NextPrevious.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6FD3B67AA484E2ABE3D0DB152EB7D99 /* UIImage+NextPrevious.swift */; }; - E8770A941545BB190D76BF7E5262797D /* IQToolbarConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7951FB92CEF55E571958C0480194A1A7 /* IQToolbarConfiguration.swift */; }; - EA280E998F6C42AE8492336F762F92D5 /* EPExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C7CD2DA0F4475F09E37093AD32524B /* EPExtensions.swift */; }; - EBB5F245DBEEB13D48F09E0DD75A6C95 /* IQKeyboardManager+Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB7EC43BFC9C3B66643A06CC90583727 /* IQKeyboardManager+Position.swift */; }; - ECFE64B0759EFA4F555994B6CDCED624 /* AssetManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36C5D6D838BB40C4C60BCEC9700237DB /* AssetManager.swift */; }; - F2AF558F96F3C43C3E4C747E45E5637C /* LocationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FB53955023E1BA00913DC99F1A9600E /* LocationManager.swift */; }; - F2ED9C9337B84D1E42E67BF7F7DAD72C /* Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C815920F622C0A64C028E765DFA19DE9 /* Configuration.swift */; }; - F41974A73F0409847E3272A90832366C /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F44C091B448CFD1D03576A3232F205BC /* PrivacyInfo.xcprivacy */; }; - F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDB80757CE3795FC91CDB7A65C1075C2 /* NBBottomSheetConfiguration.swift */; }; - F681FB74C756E0AAFFDC0D414EBD8FA0 /* IQScrollViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 643C568373D83E0D0E40D73444B3A917 /* IQScrollViewConfiguration.swift */; }; - F7C3A4FED58118F9ADC5B4AF9A10B9FC /* ViewDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BDB1CC7C25473E29D4F8FB6945AE100 /* ViewDirection.swift */; }; - F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F38BC60F94AF6CF593ADA0BC8B5408FB /* NBBottomSheetController.swift */; }; - F912129FB7C53C428FE247D6ECF633AC /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55CB6C34A690CC87CCB70DDB216EAC51 /* Toast.swift */; }; - F9DE1A3C506E506F4DA4B7714359E8D1 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10670E8341C2F0D77BC4D00A7AFBBA00 /* IQKeyboardManager.swift */; }; - FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3535FAD2227224788FF4549088FA2DBE /* NBBottomSheetPresentationTransition.swift */; }; - FB7D384E51C9E1ADAEE50C64A694BB61 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */; }; - FDEFBFB34E35A4BB332264E0CACCF5D8 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD2F833515731616C366DD163491D01C /* IQInvocation.swift */; }; - FE4936BFE1B6B6A9E8136010E413A24B /* NBBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EC19D9CE4EB77DF2E4C44BEB17C0B656 /* NBBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FF8C6AC907C8F4B527F9A0CBDBCC7F92 /* ImageGalleryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D86875C465CBABD7848556B410E7D9CC /* ImageGalleryView.swift */; }; + 0615219BFD2EBBE27FF41C2C8816791E /* IQTextFieldViewInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0766760940C9B62A291EB666599B5479 /* IQTextFieldViewInfo.swift */; }; + 0718CCD0E19136B8DB2A7D4C6585E3ED /* LanguageManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C70354264EBD9A0C43D54A0D7EBBB470 /* LanguageManager.swift */; }; + 08822D4E49DB8618D27BAEDED7911733 /* IQKeyboardManager+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94602A05BE1EF7E035D9BD82455EF9E2 /* IQKeyboardManager+Internal.swift */; }; + 08C234F2981017EEF271582022F339F3 /* IQUIView+IQKeyboardToolbarDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81422785FEDCA76B23BEBE33FBE48048 /* IQUIView+IQKeyboardToolbarDeprecated.swift */; }; + 0A4DB572ACD97EC492C4E93A0FFB2E47 /* IQTextFieldViewListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC8C7270B8273684812DC662CC38F2C /* IQTextFieldViewListener.swift */; }; + 103FE4EEFF1BE8BAD0FA047987AFED74 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78BCC6448A82711A55D3865734C80264 /* IQUIView+Hierarchy.swift */; }; + 10D1A87F45AFB52D2B34D9ABA1A86105 /* UIImageView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D2433C36515ECA778B349FF2D909633 /* UIImageView+Direction.swift */; }; + 14063E1AF70EDDC9F33C8E08DCA0BEF3 /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 150EFA98B5EDC822B6728C45D76FE799 /* IQPreviousNextView.swift */; }; + 154362EFC8EC0F61F54E24B09266DEB1 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B46AC0A20BBB01930BFCCC5E37F2F451 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */; }; + 15F04D15A4DC87FF877C2857720F8D72 /* Toast-Swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FE12EE55D455A9D0F04D9E6DCB8FE9B /* Toast-Swift-dummy.m */; }; + 178BF9CAADACBF4E8FE49574A848C12A /* NBBottomSheetPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 702164D0BDDC3907F55DB3E8BE73EA03 /* NBBottomSheetPresentationController.swift */; }; + 1A7787DB0275CF4A44CA312DD3BA5D33 /* EPSignatureViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D71B21045286C6B16ED9793C58B47041 /* EPSignatureViewController.xib */; }; + 1C3881B0113D3219398154E16AA4413C /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20120C7D84560D27F6FC713DD0368421 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */; }; + 1D9697229D2BB639F45F2E5A5AA84339 /* Pods-MiniScanner-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */; }; + 237A96A092EA5A5B0CB41160BEA22E16 /* Toast-Swift.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift.bundle */; }; + 23D11E770DF137CBF802A30E2B19C054 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; + 24C699F9653980B77F44634EF44641C1 /* IQKeyboardInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF231B964B348386B23E59D755E8A81 /* IQKeyboardInfo.swift */; }; + 256D9C5C2905D4E4DA041339C2D33728 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; + 3402A26F7BBA359E410BEB33C8B74254 /* NBBottomSheetTransitioningDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D56C207A827BE75EB57DC333DFC2D9C8 /* NBBottomSheetTransitioningDelegate.swift */; }; + 3452528F3B9B79AD67D45FEA174F71E4 /* IQUICollectionView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CEBCD8EA2B9046F420A29A1A687597B /* IQUICollectionView+Additions.swift */; }; + 34BDB069A96125DAF2FEF6FF93A3F6AF /* IQToolbarPlaceholderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1E67E5BD993F832C7791655439CBF14 /* IQToolbarPlaceholderConfiguration.swift */; }; + 35699581E68E1E6F640C681EEDEEE2B6 /* EPSignature-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 531D677F08B7E2CFA4CBF534C4C55EFD /* EPSignature-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FB7E701BB1FC9B4BE62552942C8F54 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 38CBE3196BDD577B5E72BC65508A77F8 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0D8CA658598BC5E5BFF3518C247B1F2 /* IQTextView.swift */; }; + 3CCAA73182C09F77A88AFFA24E96DBB6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; + 3E21C9612D00C6B92D3FCE3589917729 /* UIView+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD661BC03E3F956312BD660BD1FF57EE /* UIView+Direction.swift */; }; + 4017CF2B3EE45E7E579E68E6FCFBF732 /* IQKeyboardManager+UIKeyboardNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFA3AF1F82CCB77673CACA3B5A32888B /* IQKeyboardManager+UIKeyboardNotification.swift */; }; + 406C6D43D8E8BF47FCD42AACC6212AB3 /* Pods-MiniScanner-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 42B931814C7B25871333D5DA9A0E2A41 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462CB364BFCE2B191C63492A6B662E5B /* IQKeyboardReturnKeyHandler.swift */; }; + 48A4D5E4D954CB4212E540A92570BBF0 /* UIView+Swizzling.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA58205EF34D92711DF7A266FDAD9F7C /* UIView+Swizzling.swift */; }; + 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift.bundle */; }; + 54BAE903D82C39392943869866252D93 /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 382D6986B99DE2D1543422ADC1D9B60B /* IQNSArray+Sort.swift */; }; + 597994C3AE8908B1E462BC03AC8C23FB /* IQKeyboardManagerCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C2143A4B7A557FBD7CA3440E5319559 /* IQKeyboardManagerCompatible.swift */; }; + 59D76AD0378678CB0D3236021BF96A09 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */; }; + 5D35C19C362961F919BE9820991D761E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; + 5F0469C5B154DC20B844EA2A9B7F8D42 /* IQPlaceholderable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EA778C1A13BBCFE2D514A6B0D88C76A /* IQPlaceholderable.swift */; }; + 5F62DAE67CF97B7C42471EA91B79AA9A /* IQTextFieldViewInfoModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4E42215E2916410502485DE4719CAB8 /* IQTextFieldViewInfoModel.swift */; }; + 6418A8A5D32E73D898AB155952180B0C /* LanguageManager-iOS-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5970C908E4FF8C4F6F5D5A9D69FD432B /* LanguageManager-iOS-dummy.m */; }; + 674C6B2E317E657D8EAD3CC73F608540 /* IQKeyboardManager+Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = 985AE78F65B613BDBBD6509AAE1F19BA /* IQKeyboardManager+Debug.swift */; }; + 6D55C34EF7CE4718D8B2FE6CE95C5674 /* DefaultsKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 516EE0B0F6F3A10B785BFC763F530BF1 /* DefaultsKeys.swift */; }; + 6F875A0983E3FB0E0CC0BDA6376F73E8 /* String+Localiz.swift in Sources */ = {isa = PBXBuildFile; fileRef = D472E05BA7D0AFDCAFAB140105E59394 /* String+Localiz.swift */; }; + 701904768C60A3F9060518DD58EC2882 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D118C91CB28B3EF79E1634FC9815653C /* IQToolbar.swift */; }; + 733CF7F19636AFF4A97708DFDE0AE53C /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D695DEAF5B6A470CDBCE0B1046ADF52F /* IQKeyboardManagerSwift-dummy.m */; }; + 7586D1882B962E1E31C28CC6396668B3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */; }; + 797DF46337EAC66E47C5ADAF32515524 /* NBBottomSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 99D088CB852CC61E29DC663D635BEB8C /* 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 = DF034BB8B2512B8EA119A5C741CFA5DF /* IQUITextFieldView+Additions.swift */; }; + 8234444617FD513B81095D920BFA796B /* NBConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7318B0F18B2B4F2970C621C894910C24 /* NBConfiguration.swift */; }; + 82950EE4BDD57F74749742A3E1566073 /* IQKeyboardManager+UITextFieldViewNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = E02344BCF20299F40462A9EF0715E6D7 /* IQKeyboardManager+UITextFieldViewNotification.swift */; }; + 852E6AB133CF7BDE7DE7D836AE201868 /* Languages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8898E92696478C2E203DA9FF2D49D46A /* Languages.swift */; }; + 8EAF267614A5AB6196921C15E719AE35 /* NBBottomSheetDismissalTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71AAEA9E8B8FD808443EB047E117EA68 /* NBBottomSheetDismissalTransition.swift */; }; + 8ED2E941DF0803C8AA331D0D8C722615 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24312A9D8468633C2B0A5CA86CCB97C0 /* IQBarButtonItem.swift */; }; + 8FDA28363A5E49017498FD69AAA8F59F /* IQKeyboardListener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 498E53AE9E1500AB2F22931F74EB83BD /* IQKeyboardListener.swift */; }; + 907FCA3049CAAF64B579D08D339D118D /* IQBarButtonItemConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = D151AC46468E6AF2CA49AA3EE9E20A86 /* IQBarButtonItemConfiguration.swift */; }; + 936474D511253F7D3A4B2D4539134319 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = FD105623E1AC2089DCD82B81ABAC6681 /* PrivacyInfo.xcprivacy */; }; + 93C0AD77AB416AE90A6BD03E44A9B684 /* EPSignature-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B08170D3C75D19D3A9A1B2968C5D90D5 /* EPSignature-dummy.m */; }; + 94F893223EB4C1C0F829C17900114AFA /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B36745B931F093E7529DE09BDC78AE4A /* IQUIScrollView+Additions.swift */; }; + 98A4D0D5928A35C7DB3D9272187789A8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 840FA0B75AF62912A30DDC66B647ED98 /* CoreGraphics.framework */; }; + 9A00A25ED34A7687C62B02EBB76C1248 /* IQKeyboardConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = E37025353CFD3DD938B700595A711CA3 /* IQKeyboardConfiguration.swift */; }; + 9E704111CAAACBF64155A576FC337323 /* LanguageManager-iOS-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F4B6BDF8AA83C87CAF8C6F18016820 /* LanguageManager-iOS-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F78D56352F7D932DCEBE416C668C7BA /* IQKeyboardManager+ToolbarActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 411EC506553E059075331960D49EE0E2 /* IQKeyboardManager+ToolbarActions.swift */; }; + A4AE2538C33D06CB8C70D5FF35A65D98 /* EPSignatureViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E9F90D162DAF7075E6BA80720501DF8 /* EPSignatureViewController.swift */; }; + A5E69CC013C4311C8AF52C7F7AB095C9 /* IQUITableView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEF3FB465FF0E85DFC73E8982D4649C9 /* IQUITableView+Additions.swift */; }; + AE7D065E1D48171258FD8F07F7CD592C /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA1AE20769613307BAC355F4FC6BD2C0 /* IQKeyboardManagerConstants.swift */; }; + AF715064CF6458D3D89BB563DFDB00C6 /* UIButton+Direction.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E5C4FB5D9C42994C48EE2E2DB723AD /* UIButton+Direction.swift */; }; + B1A786B1A2F11EBD1BF77305EEB710F5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */; }; + B1BFC54288364884DDEAE75027BABE1A /* IQActiveConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 502158A68AC16423EDBFBECD42685B26 /* IQActiveConfiguration.swift */; }; + B9CF878085ABA2991A9C6F12F9B9DAB3 /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3CDBC5C81BC0C65F60AE4D75BC5C96F /* IQTitleBarButtonItem.swift */; }; + CA6D6333D723B4391BD689F68FCF23DF /* EPSignatureView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3868CC20E2F6791F42F820E416ABF552 /* EPSignatureView.swift */; }; + CC897E71556348377B4C31307E208C80 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; + CC96488C33BFB3BCEE4A665A438CAC36 /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8A5C458DECC3C78726780DD36BD6003 /* IQUIViewController+Additions.swift */; }; + D181D49DE6D7885B2834AF4E96170171 /* Toast-Swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 243828A9D7CB356BFFFC68453A862E27 /* Toast-Swift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2A598E7174826A7B04036E7AC8AA3B6 /* Storage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10353A8431D7A21D5751FEFA11877E0D /* Storage.swift */; }; + D3D1F63C30E95311B687FA924B872C15 /* IQKeyboardManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC65AF45782D2C10227405DB2D984159 /* IQKeyboardManager+Deprecated.swift */; }; + D46F90A0F6FC8F1D2AA4129BC2A934DD /* NBBottomSheet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B642426F16C7875456972C1FCB260BB /* NBBottomSheet-dummy.m */; }; + D5C60EA45AA7DFAD2BDD3500400D8E55 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 5352EC4E0DCF477B021D750C08791E9C /* PrivacyInfo.xcprivacy */; }; + D8322CBE73400EE4382D1A042D2D53D3 /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18F5E3B58AC439F8F8E394C6875E7659 /* IQUIView+IQKeyboardToolbar.swift */; }; + D88C2EA8ACCC0DE031D9E7A768062E2C /* IQKeyboardManager+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96FEDB7CA06B32CDF55BB41EB7BCF833 /* IQKeyboardManager+Toolbar.swift */; }; + DE3B5070A41194C21898D92DBFFCBE4C /* IQRootControllerConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 774A5370A6664518873531AA3A4C74A3 /* IQRootControllerConfiguration.swift */; }; + E483FA24409A56AAEDF8A1DEC5F55F16 /* UIImage+NextPrevious.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEDBEDD581B959BEE278279AD90EC4A6 /* UIImage+NextPrevious.swift */; }; + E8770A941545BB190D76BF7E5262797D /* IQToolbarConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBB7C0C9E7233FBBC87782D9D07B207A /* IQToolbarConfiguration.swift */; }; + EA280E998F6C42AE8492336F762F92D5 /* EPExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2794065EF846C76C4810B97DB721D0CC /* EPExtensions.swift */; }; + EBB5F245DBEEB13D48F09E0DD75A6C95 /* IQKeyboardManager+Position.swift in Sources */ = {isa = PBXBuildFile; fileRef = A28E47609991E47A50918D04532237A8 /* IQKeyboardManager+Position.swift */; }; + F56475ACE1A1CFE322DBFA35CDA1A204 /* NBBottomSheetConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FFE3D11AD2655FC409E743B2CD5F00D /* NBBottomSheetConfiguration.swift */; }; + F681FB74C756E0AAFFDC0D414EBD8FA0 /* IQScrollViewConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2047B7CCEC04ACE26A24EE18FCB2C7B2 /* IQScrollViewConfiguration.swift */; }; + F7C3A4FED58118F9ADC5B4AF9A10B9FC /* ViewDirection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4259858DBB56E10DFA44E0F96DA73037 /* ViewDirection.swift */; }; + F7E2900D9AF732C627F184A258F48DF0 /* NBBottomSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86E1A3B4D4B3FD7A01AC2B0FBB18F0C4 /* NBBottomSheetController.swift */; }; + F912129FB7C53C428FE247D6ECF633AC /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B88E23BCE3E921E2C4B6CA4D2371CD1 /* Toast.swift */; }; + F9DE1A3C506E506F4DA4B7714359E8D1 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 742638E41A4961FAA1DB7E7647DC0DFB /* IQKeyboardManager.swift */; }; + FB0A76B10B5927494469B16B28CF2B9A /* NBBottomSheetPresentationTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E7C6B223E5098341952DCEB74D18D42 /* NBBottomSheetPresentationTransition.swift */; }; + FB7D384E51C9E1ADAEE50C64A694BB61 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */; }; + FDEFBFB34E35A4BB332264E0CACCF5D8 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0AF49C259B40140D9FECD9EB646B5AAC /* IQInvocation.swift */; }; + FE4936BFE1B6B6A9E8136010E413A24B /* NBBottomSheet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2924E68B9548AA280015C5C93780584B /* NBBottomSheet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 1F245D5023512CA13BF131DF3BE2F569 /* PBXContainerItemProxy */ = { + 1A0FF17F30C645BA28AEC25F294F8478 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 614D1818852890AC7D3CDF68D512C370; - remoteInfo = "ImagePicker-ImagePicker"; - }; - 20C35DA82C85CF6788DD8065BC481B9E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C344E85893FCDEE5B70436E0A4A3472B; - remoteInfo = "Toast-Swift-Toast-Swift"; - }; - 3F00138FAC4ECA9E49CEABF22BD19BE1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E; - remoteInfo = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; + remoteGlobalIDString = 75F1EA88CB9544AB5CBE20DEC9A011AE; + remoteInfo = "LanguageManager-iOS"; }; - A29E541340C3A517481C239535FE1FFC /* PBXContainerItemProxy */ = { + 1BAE0F5A5F69E6929067AA1E681B69FE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 01CB8D6098C21E12CE735619344DE81E; - remoteInfo = ImagePicker; + remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; + remoteInfo = IQKeyboardManagerSwift; }; - C205777C53E1CE623400BA653BE42F72 /* PBXContainerItemProxy */ = { + 265A00EE6B5BB96B3AC8FC0C13BA90B9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B490E7485944099E16C9CBD79119D1D4; - remoteInfo = IQKeyboardManagerSwift; + remoteGlobalIDString = 3CAF5EBFE5D1550CFF58AEC93594990A; + remoteInfo = EPSignature; }; - DC00E61911BECBD44AD03666ABE5766F /* PBXContainerItemProxy */ = { + 408B5A906043361A78BF7FA8B9F9254F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 75F1EA88CB9544AB5CBE20DEC9A011AE; - remoteInfo = "LanguageManager-iOS"; + remoteGlobalIDString = C344E85893FCDEE5B70436E0A4A3472B; + remoteInfo = "Toast-Swift-Toast-Swift"; }; - DF9BB083B1ADDADD655B884FB3F1206F /* PBXContainerItemProxy */ = { + 4D0E33AD6195F9EE17056A6B846B0183 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B990BD87169C76A3ED3FE8A9258D91A3; - remoteInfo = "Toast-Swift"; + remoteGlobalIDString = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E; + remoteInfo = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; }; - E5994A8B30F194C0AE4142C721F4D444 /* PBXContainerItemProxy */ = { + 6CE140EA6796A6463750B03A97D4646C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 727C2007A89D1AD73613E3E2E22998E5; remoteInfo = NBBottomSheet; }; - EDA903FA148D63AAD0DCB3E2E76E5F9E /* PBXContainerItemProxy */ = { + 7A64926938BE39B1B50E2DC0BE40E5CB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 3CAF5EBFE5D1550CFF58AEC93594990A; - remoteInfo = EPSignature; + remoteGlobalIDString = B990BD87169C76A3ED3FE8A9258D91A3; + remoteInfo = "Toast-Swift"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 002E7885D97E14840BB1694FDAC680C3 /* NBBottomSheetDismissalTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetDismissalTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetDismissalTransition.swift; sourceTree = "<group>"; }; - 00F287BEEDC27E1135AF1D47204F754B /* NBBottomSheetPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationController.swift; sourceTree = "<group>"; }; - 011B51599E04A9236E034DD068DF591E /* EPSignature-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-umbrella.h"; sourceTree = "<group>"; }; - 019B0871D5ADD52194BB016FE08B66F5 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Toast/Resources/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; - 0315AFEFCB0BFF084FA3C5E469C5C301 /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = "<group>"; }; - 039EA7048499C3BC1CBB4E8FAB74BB40 /* IQUITableView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITableView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift"; sourceTree = "<group>"; }; - 03DD32D0BF8FB60836D128D957D391C9 /* Toast-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.release.xcconfig"; sourceTree = "<group>"; }; - 061AAD17D23877A1F03301246A85EF54 /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = "LanguageManager-iOS/Classes/Helpers/Storage.swift"; sourceTree = "<group>"; }; - 099E4FB694B786AC923DF85EB9E89F83 /* NBBottomSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.release.xcconfig; sourceTree = "<group>"; }; - 0A5FF8ED8FBE20522184DB1B88647020 /* EPSignature-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EPSignature-dummy.m"; sourceTree = "<group>"; }; + 01FB7E701BB1FC9B4BE62552942C8F54 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; 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; }; + 0766760940C9B62A291EB666599B5479 /* IQTextFieldViewInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift; sourceTree = "<group>"; }; + 0AF49C259B40140D9FECD9EB646B5AAC /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = "<group>"; }; + 0B540D7EB497DDDE9DD9B89449ED9181 /* LanguageManager-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.debug.xcconfig"; sourceTree = "<group>"; }; + 0D2433C36515ECA778B349FF2D909633 /* 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>"; }; 0E8A070B594D65627DD64F5ABC65D271 /* Pods-MiniScanner-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-MiniScanner-umbrella.h"; sourceTree = "<group>"; }; - 0EE59A1597022F0861A65AB781A04460 /* IQKeyboardManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Deprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift"; sourceTree = "<group>"; }; - 0FAA5D0DE773CB6BFF7370F07A06C5B1 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; sourceTree = "<group>"; }; - 10670E8341C2F0D77BC4D00A7AFBBA00 /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift; sourceTree = "<group>"; }; - 1168F8939304BC5B34EB1B73835CD86F /* ImagePicker-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImagePicker-prefix.pch"; sourceTree = "<group>"; }; + 0E9F90D162DAF7075E6BA80720501DF8 /* EPSignatureViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureViewController.swift; path = Pod/Classes/EPSignatureViewController.swift; sourceTree = "<group>"; }; + 0EA778C1A13BBCFE2D514A6B0D88C76A /* IQPlaceholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPlaceholderable.swift; path = IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift; sourceTree = "<group>"; }; + 10353A8431D7A21D5751FEFA11877E0D /* Storage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Storage.swift; path = "LanguageManager-iOS/Classes/Helpers/Storage.swift"; sourceTree = "<group>"; }; 123ADF4A6B2F1DEBA5B7482D4983B685 /* Pods-MiniScanner-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-MiniScanner-dummy.m"; 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; }; - 16878922AD64BAC3738BB1DCCEE573DD /* LanguageManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LanguageManager-iOS-dummy.m"; sourceTree = "<group>"; }; - 19DE64C21ED9D81A56EF0DA1C351E53C /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = "<group>"; }; - 1AB029201A3484CB5BCAD15F2FCF9081 /* IQUIView+IQKeyboardToolbarDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbarDeprecated.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift"; sourceTree = "<group>"; }; - 1C63F26DA7ECAFB44B0A5DD0BC0E2F89 /* 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; }; + 13FD39576595D8A884BF5166065C5236 /* Toast-Swift.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Toast-Swift.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; + 150EFA98B5EDC822B6728C45D76FE799 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = "<group>"; }; + 18F5E3B58AC439F8F8E394C6875E7659 /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = "<group>"; }; + 1E7C6B223E5098341952DCEB74D18D42 /* NBBottomSheetPresentationTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationTransition.swift; sourceTree = "<group>"; }; + 1FE12EE55D455A9D0F04D9E6DCB8FE9B /* Toast-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Toast-Swift-dummy.m"; sourceTree = "<group>"; }; + 20120C7D84560D27F6FC713DD0368421 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextViewDelegate.swift"; sourceTree = "<group>"; }; + 2047B7CCEC04ACE26A24EE18FCB2C7B2 /* IQScrollViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQScrollViewConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift; sourceTree = "<group>"; }; 21A62BB316C6336F03408E50D730FD01 /* Pods-MiniScanner.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-MiniScanner.modulemap"; sourceTree = "<group>"; }; - 2535688320A12B11FEFD58EC6052A8EC /* ImageStack.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageStack.swift; path = Source/BottomView/ImageStack.swift; sourceTree = "<group>"; }; - 2647160AB4F12734D43B806D373E9312 /* NBConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBConfiguration.swift; sourceTree = "<group>"; }; - 2664332FE4E7E587B561586179AD8085 /* LanguageManager-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "LanguageManager-iOS.modulemap"; sourceTree = "<group>"; }; - 27B7276332D112636983C2AD6107C243 /* IQKeyboardManager+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Toolbar.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift"; sourceTree = "<group>"; }; - 2EE6749FC108D414ECB83B77EF11BD86 /* 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; }; - 2FB53955023E1BA00913DC99F1A9600E /* LocationManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LocationManager.swift; path = Source/LocationManager.swift; sourceTree = "<group>"; }; - 30D3BA93828D8AA79B12971D4417E3E7 /* ButtonPicker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ButtonPicker.swift; path = Source/BottomView/ButtonPicker.swift; sourceTree = "<group>"; }; - 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-MiniScanner"; path = Pods_MiniScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3535FAD2227224788FF4549088FA2DBE /* NBBottomSheetPresentationTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationTransition.swift; sourceTree = "<group>"; }; - 36C5D6D838BB40C4C60BCEC9700237DB /* AssetManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssetManager.swift; path = Source/AssetManager.swift; sourceTree = "<group>"; }; - 3A8E9A2C8F405661496F405E14CEB2E1 /* IQKeyboardListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift; sourceTree = "<group>"; }; - 3AFA769CF0850AC9B2C312D9D737E578 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = "<group>"; }; + 24312A9D8468633C2B0A5CA86CCB97C0 /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = "<group>"; }; + 243828A9D7CB356BFFFC68453A862E27 /* Toast-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-umbrella.h"; sourceTree = "<group>"; }; + 2794065EF846C76C4810B97DB721D0CC /* EPExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPExtensions.swift; path = Pod/Classes/EPExtensions.swift; sourceTree = "<group>"; }; + 2924E68B9548AA280015C5C93780584B /* NBBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-umbrella.h"; sourceTree = "<group>"; }; + 2A6CE2B40BA4423932E91631C1579E93 /* NBBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NBBottomSheet.modulemap; sourceTree = "<group>"; }; + 2A814EDEC6572ABC3F94BA0E7E889D8B /* NBBottomSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.debug.xcconfig; sourceTree = "<group>"; }; + 2D8C8F6F7FEBBAAFDD7D9BAB6EDF2584 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; + 3438B9790556194C521D4C9806D29C85 /* Pods_MiniScanner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MiniScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 382D6986B99DE2D1543422ADC1D9B60B /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift"; sourceTree = "<group>"; }; + 3868CC20E2F6791F42F820E416ABF552 /* EPSignatureView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureView.swift; path = Pod/Classes/EPSignatureView.swift; sourceTree = "<group>"; }; + 3AC3F6B5BDFF6DF235232F2C31772054 /* NBBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NBBottomSheet-Info.plist"; sourceTree = "<group>"; }; 3B6258C4E2C1059AABC67D66F9314FE8 /* Pods-MiniScanner-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-MiniScanner-acknowledgements.markdown"; sourceTree = "<group>"; }; - 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = EPSignature; path = EPSignature.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4309F47E646E6968CACD8832ABE22099 /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift"; sourceTree = "<group>"; }; - 43390028C811A47BDDF45824B3D30D31 /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift"; sourceTree = "<group>"; }; - 455ED137864B3625C8C1DC4EA799A433 /* IQActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQActiveConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift; sourceTree = "<group>"; }; - 45FB65D90C5FCEB09C0B16E99E9CB1EB /* IQKeyboardManager+ToolbarActions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarActions.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift"; sourceTree = "<group>"; }; - 4722380FB0C679720105FF9E1A5A523B /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQNSArray+Sort.swift"; sourceTree = "<group>"; }; - 4A12290BE7726329C06345F8A5C10597 /* ImagePicker.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImagePicker.debug.xcconfig; sourceTree = "<group>"; }; - 4B7B31E6C5B5F1EC637FFE5C5B3C83C3 /* Languages.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Languages.swift; path = "LanguageManager-iOS/Classes/Constants/Languages.swift"; sourceTree = "<group>"; }; - 528C94E48744BA710AEDE265867A380F /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; - 53D1259E91ED2A6A6554FD25A148FAEA /* ImageGalleryLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryLayout.swift; path = Source/ImageGallery/ImageGalleryLayout.swift; sourceTree = "<group>"; }; - 55C7CD2DA0F4475F09E37093AD32524B /* EPExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPExtensions.swift; path = Pod/Classes/EPExtensions.swift; sourceTree = "<group>"; }; - 55CB6C34A690CC87CCB70DDB216EAC51 /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Toast/Toast.swift; sourceTree = "<group>"; }; - 56B28C4E9F718651E6E1B010F31566EB /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; - 5870D384ABFCBE6207143C2A72B72A10 /* IQTextFieldViewInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQTextFieldViewInfo.swift; sourceTree = "<group>"; }; - 5A9E56248E01438AF8F27428F420DBAA /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = "<group>"; }; - 5C55F11056F0351DE08666B753849E48 /* IQTextFieldViewInfoModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfoModel.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift; sourceTree = "<group>"; }; - 5CC65B9071729D3E9148E9FFDC41101F /* EPSignature-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-prefix.pch"; sourceTree = "<group>"; }; - 5DF01277275CD2AEE06E328B287C97A3 /* Toast-Swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Toast-Swift-dummy.m"; sourceTree = "<group>"; }; - 5EA6E885F82FC51E2B5754170A5C9BFF /* ImagePicker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ImagePicker-dummy.m"; sourceTree = "<group>"; }; - 5F674EF15792418D78DFA71DFD86C478 /* 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>"; }; - 620668AA976F0F6ED19180B8B4D83AB8 /* NBBottomSheetTransitioningDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetTransitioningDelegate.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetTransitioningDelegate.swift; sourceTree = "<group>"; }; - 62D4C1232DB908BA782F85B19D3DEA3B /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = "<group>"; }; - 636AE2E4AB62093E1592CE359392C841 /* 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>"; }; - 63CF4CB6581E3400CB208D3E8A166BEF /* IQKeyboardManagerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.release.xcconfig; sourceTree = "<group>"; }; - 643C568373D83E0D0E40D73444B3A917 /* IQScrollViewConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQScrollViewConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQScrollViewConfiguration.swift; sourceTree = "<group>"; }; - 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "LanguageManager-iOS"; path = LanguageManager_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 650E6F717733EACCA5E65EC3FCDBDE02 /* IQKeyboardManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Debug.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift"; sourceTree = "<group>"; }; - 6660EBAA415F24B1ABAC7AAE5206AB0A /* Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Toast-Swift-Info.plist"; sourceTree = "<group>"; }; - 67DA8FCED4F75B1734C7991B3CD1D07A /* Toast-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.debug.xcconfig"; sourceTree = "<group>"; }; - 69023DD29D363BEF415F3723F1169699 /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = "<group>"; }; - 6AFFC5763F85A742954048A03D39913F /* IQUICollectionView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUICollectionView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift"; sourceTree = "<group>"; }; - 70988BB3CADF8C08812CBAE7C81D4C77 /* Toast-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-prefix.pch"; sourceTree = "<group>"; }; - 72FC8142B933D42EE5AE712DAD741DF8 /* EPSignatureViewController.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EPSignatureViewController.xib; path = Pod/Classes/EPSignatureViewController.xib; sourceTree = "<group>"; }; - 76694372E1865C4FA3EEFDDBC4161F06 /* 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>"; }; - 7748F717ED664F2B86A39CF57DD65969 /* ImagePicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ImagePicker-Info.plist"; sourceTree = "<group>"; }; - 780D4A1190E5FFFF55A74D2D514D3866 /* Toast-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Toast-Swift.modulemap"; sourceTree = "<group>"; }; - 7951FB92CEF55E571958C0480194A1A7 /* IQToolbarConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift; sourceTree = "<group>"; }; + 3B7E7310C9C519E81C3249E4919655C4 /* Toast-Swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-prefix.pch"; sourceTree = "<group>"; }; + 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = EPSignature.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 411EC506553E059075331960D49EE0E2 /* IQKeyboardManager+ToolbarActions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+ToolbarActions.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+ToolbarActions.swift"; sourceTree = "<group>"; }; + 4259858DBB56E10DFA44E0F96DA73037 /* ViewDirection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ViewDirection.swift; path = "LanguageManager-iOS/Classes/Constants/ViewDirection.swift"; sourceTree = "<group>"; }; + 45DD2EA0D7026E816EA7C75B9937309F /* Toast-Swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.debug.xcconfig"; sourceTree = "<group>"; }; + 462CB364BFCE2B191C63492A6B662E5B /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift; sourceTree = "<group>"; }; + 498E53AE9E1500AB2F22931F74EB83BD /* IQKeyboardListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQKeyboardListener.swift; sourceTree = "<group>"; }; + 4CF231B964B348386B23E59D755E8A81 /* IQKeyboardInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift; sourceTree = "<group>"; }; + 4FE4CD16723823EE08BA397637777409 /* NBBottomSheet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.release.xcconfig; sourceTree = "<group>"; }; + 502158A68AC16423EDBFBECD42685B26 /* IQActiveConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQActiveConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQActiveConfiguration.swift; sourceTree = "<group>"; }; + 516EE0B0F6F3A10B785BFC763F530BF1 /* DefaultsKeys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultsKeys.swift; path = "LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift"; sourceTree = "<group>"; }; + 531D677F08B7E2CFA4CBF534C4C55EFD /* EPSignature-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-umbrella.h"; sourceTree = "<group>"; }; + 5352EC4E0DCF477B021D750C08791E9C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Toast/Resources/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; + 537BBBC0CBE54532981446B3953A1207 /* EPSignature.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.debug.xcconfig; sourceTree = "<group>"; }; + 5970C908E4FF8C4F6F5D5A9D69FD432B /* LanguageManager-iOS-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LanguageManager-iOS-dummy.m"; sourceTree = "<group>"; }; + 5F4DA4A1313C3DBDEEA0B97DBD17DE03 /* Toast-Swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Toast-Swift.release.xcconfig"; sourceTree = "<group>"; }; + 60F2C12F33E3CAD17C98260F58EEA9E9 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; + 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LanguageManager_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6B7058BC7BDD90E6B369A583B1A71184 /* NBBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-prefix.pch"; sourceTree = "<group>"; }; + 6C2143A4B7A557FBD7CA3440E5319559 /* IQKeyboardManagerCompatible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerCompatible.swift; path = IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift; sourceTree = "<group>"; }; + 6FFE3D11AD2655FC409E743B2CD5F00D /* NBBottomSheetConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetConfiguration.swift; sourceTree = "<group>"; }; + 702164D0BDDC3907F55DB3E8BE73EA03 /* NBBottomSheetPresentationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetPresentationController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetPresentationController.swift; sourceTree = "<group>"; }; + 71AAEA9E8B8FD808443EB047E117EA68 /* NBBottomSheetDismissalTransition.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetDismissalTransition.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetDismissalTransition.swift; sourceTree = "<group>"; }; + 7318B0F18B2B4F2970C621C894910C24 /* NBConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBConfiguration.swift; sourceTree = "<group>"; }; + 733B528B67D9A069E0BB04A59CC9A2F9 /* EPSignature-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "EPSignature-prefix.pch"; sourceTree = "<group>"; }; + 742638E41A4961FAA1DB7E7647DC0DFB /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager.swift; sourceTree = "<group>"; }; + 742A7E1E52037C3832ED9815F4F98DAD /* LanguageManager-iOS-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LanguageManager-iOS-Info.plist"; sourceTree = "<group>"; }; + 773EC24F523218EE27B3DAC502F244C2 /* LanguageManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-prefix.pch"; sourceTree = "<group>"; }; + 774A5370A6664518873531AA3A4C74A3 /* IQRootControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQRootControllerConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift; sourceTree = "<group>"; }; + 78BCC6448A82711A55D3865734C80264 /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIView+Hierarchy.swift"; sourceTree = "<group>"; }; 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MiniScanner.release.xcconfig"; sourceTree = "<group>"; }; - 7AF49D9ABCB15DBD7FCBE47C06871EDE /* IQKeyboardManager+UITextFieldViewNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UITextFieldViewNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift"; sourceTree = "<group>"; }; - 7B644290B6D9F86A8ED1A4BD89048622 /* LanguageManager-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.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; }; + 7B88E23BCE3E921E2C4B6CA4D2371CD1 /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Toast/Toast.swift; sourceTree = "<group>"; }; + 7C75868EF6E95B844AC3BDEDC75F7516 /* EPSignature.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EPSignature.modulemap; sourceTree = "<group>"; }; 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-MiniScanner.debug.xcconfig"; sourceTree = "<group>"; }; - 7D029ABFAB048D5C70B1F219BF60BFDA /* VideoInfoView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = VideoInfoView.swift; path = Source/ImageGallery/VideoInfoView.swift; sourceTree = "<group>"; }; - 7E815AC0CA5BEA17DC867985BB80CA99 /* 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>"; }; - 81B80CF746340952D1957D5CCC583D36 /* EPSignatureViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureViewController.swift; path = Pod/Classes/EPSignatureViewController.swift; sourceTree = "<group>"; }; - 875F53B09AC722ED6ADABA1C1EDC5C20 /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler.swift; sourceTree = "<group>"; }; - 87EF02E7A8E36E8A8DBB71DE89ED96B0 /* selectedImageGallery@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "selectedImageGallery@3x.png"; path = "Images/selectedImageGallery@3x.png"; sourceTree = "<group>"; }; + 7FF867E0058AB41B12C3922D752D725A /* LanguageManager-iOS.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "LanguageManager-iOS.modulemap"; sourceTree = "<group>"; }; + 81422785FEDCA76B23BEBE33FBE48048 /* IQUIView+IQKeyboardToolbarDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbarDeprecated.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbarDeprecated.swift"; sourceTree = "<group>"; }; + 83EF377CDCBF9BEEA9C05AF0FCE574A1 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; 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; }; + 86E1A3B4D4B3FD7A01AC2B0FBB18F0C4 /* NBBottomSheetController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetController.swift; sourceTree = "<group>"; }; + 8898E92696478C2E203DA9FF2D49D46A /* Languages.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Languages.swift; path = "LanguageManager-iOS/Classes/Constants/Languages.swift"; sourceTree = "<group>"; }; 89194C84FD5E62D9D2C9F2157676FF5C /* Pods-MiniScanner-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MiniScanner-acknowledgements.plist"; sourceTree = "<group>"; }; - 89DB66B29E28AD378856BF11E7EE9A37 /* IQRootControllerConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQRootControllerConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQRootControllerConfiguration.swift; sourceTree = "<group>"; }; - 8AD60867F9686EC4EA88789E10213293 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = "<group>"; }; - 8AEA6851BD7FCB59C627DE1A0633609F /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = "<group>"; }; - 8C2F550BD6A5440BADC14D7B43F94713 /* 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>"; }; - 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; path = IQKeyboardManagerSwift.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 8ED32688AB72481EF3CAB7EB874E8EC6 /* AUTO@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "AUTO@3x.png"; path = "Images/AUTO@3x.png"; sourceTree = "<group>"; }; - 8F068A96AEF12780439B98393629BB16 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; sourceTree = "<group>"; }; - 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = NBBottomSheet; path = NBBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 92BD73655367FDAF60480520BD5C7C1F /* ON@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "ON@3x.png"; path = "Images/ON@3x.png"; sourceTree = "<group>"; }; - 92F6E344FAB0C5DAE4F05104C2C68571 /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift"; sourceTree = "<group>"; }; - 97AA160F23F0CBEDDAF212103E762FC7 /* ImagePicker-ImagePicker */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "ImagePicker-ImagePicker"; path = ImagePicker.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 987CD19BC0CE18F2E00B0AD5ABF8670D /* ImagePicker */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ImagePicker; path = ImagePicker.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 98E748ED3D0F64389C49C75123E6D605 /* ImagePicker.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ImagePicker.release.xcconfig; sourceTree = "<group>"; }; - 9A683468C7D2939968FC170A715B5467 /* ImagePicker-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ImagePicker-umbrella.h"; sourceTree = "<group>"; }; - 9B39DEC267982A4E5F14FAE8D6280009 /* ImagePicker.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ImagePicker.modulemap; sourceTree = "<group>"; }; - 9BD6019163583EA6526F0ACBFDA0511E /* EPSignatureView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EPSignatureView.swift; path = Pod/Classes/EPSignatureView.swift; sourceTree = "<group>"; }; - 9BDB1CC7C25473E29D4F8FB6945AE100 /* ViewDirection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ViewDirection.swift; path = "LanguageManager-iOS/Classes/Constants/ViewDirection.swift"; 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; }; - 9EF0C733ACEF609E2020B2946479758A /* LanguageManager-iOS-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LanguageManager-iOS-Info.plist"; sourceTree = "<group>"; }; - A297F21753E5B662FDC26D1C7BFAD0BD /* Helper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helper.swift; path = Source/Helper.swift; sourceTree = "<group>"; }; - A2B15DF05BBBE3351036FCCAC9F00846 /* IQPlaceholderable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPlaceholderable.swift; path = IQKeyboardManagerSwift/IQTextView/IQPlaceholderable.swift; sourceTree = "<group>"; }; - A5B208FB6BF9712F3695286F8B245181 /* NBBottomSheet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NBBottomSheet.modulemap; sourceTree = "<group>"; }; - A6FD3B67AA484E2ABE3D0DB152EB7D99 /* UIImage+NextPrevious.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+NextPrevious.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift"; sourceTree = "<group>"; }; - A7ABC55EAA18572ADCBF182874BFEC9C /* EPSignature.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = EPSignature.modulemap; sourceTree = "<group>"; }; - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A9C1F32502D88A64B01453B234118B48 /* LanguageManager-iOS-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-prefix.pch"; sourceTree = "<group>"; }; - AC4DD45005A4D5A9ED08B9005CC9DA4B /* NBBottomSheet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NBBottomSheet.debug.xcconfig; sourceTree = "<group>"; }; - AFB6EC836300F1DEEAA4CEFAA33ABD19 /* IQKeyboardManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Internal.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift"; sourceTree = "<group>"; }; - B17A5CFD871FCE0F4206503722AC57FF /* CameraView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CameraView.swift; path = Source/CameraView/CameraView.swift; sourceTree = "<group>"; }; + 8B642426F16C7875456972C1FCB260BB /* NBBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NBBottomSheet-dummy.m"; sourceTree = "<group>"; }; + 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IQKeyboardManagerSwift.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D9468D73578757A00078F2F46B1562B /* Toast-Swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Toast-Swift.modulemap"; sourceTree = "<group>"; }; + 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NBBottomSheet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 94602A05BE1EF7E035D9BD82455EF9E2 /* IQKeyboardManager+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Internal.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Internal.swift"; sourceTree = "<group>"; }; + 96FEDB7CA06B32CDF55BB41EB7BCF833 /* IQKeyboardManager+Toolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Toolbar.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Toolbar.swift"; sourceTree = "<group>"; }; + 985AE78F65B613BDBBD6509AAE1F19BA /* IQKeyboardManager+Debug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Debug.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Debug.swift"; sourceTree = "<group>"; }; + 99D088CB852CC61E29DC663D635BEB8C /* NBBottomSheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NBBottomSheet.h; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheet.h; sourceTree = "<group>"; }; + 9AC46E2F638B3EB069B10B3E4B7756C6 /* Toast-Swift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Toast-Swift-Info.plist"; sourceTree = "<group>"; }; + 9CEBCD8EA2B9046F420A29A1A687597B /* IQUICollectionView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUICollectionView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUICollectionView+Additions.swift"; sourceTree = "<group>"; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + A23088255385719753EE100CCA151388 /* 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>"; }; + A28E47609991E47A50918D04532237A8 /* IQKeyboardManager+Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Position.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.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; }; + A8A5C458DECC3C78726780DD36BD6003 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift"; sourceTree = "<group>"; }; + A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B08170D3C75D19D3A9A1B2968C5D90D5 /* EPSignature-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "EPSignature-dummy.m"; sourceTree = "<group>"; }; B2968141E72EA49CC006DD4020E3386D /* Pods-MiniScanner-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-MiniScanner-frameworks.sh"; sourceTree = "<group>"; }; - B432D00858E45B771C11A35D09EB42E4 /* LanguageManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LanguageManager.swift; path = "LanguageManager-iOS/Classes/Main/LanguageManager.swift"; sourceTree = "<group>"; }; - B4FB0B2061538AF85A645E46144C165E /* LanguageManager-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-umbrella.h"; sourceTree = "<group>"; }; - B5AF1DD944BBBCC3E4B6F8FB70B1C9E9 /* IQKeyboardConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift; sourceTree = "<group>"; }; - B74B1A80F0A0EEE7527DE8AFD0E7F1C3 /* ImageGalleryViewCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryViewCell.swift; path = Source/ImageGallery/ImageGalleryViewCell.swift; sourceTree = "<group>"; }; - B8E57D2900050797926440B9E5CFBB20 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIViewController+Additions.swift"; sourceTree = "<group>"; }; - B9BF6D173974B97A3F1EB34546FCA901 /* ImagePickerController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImagePickerController.swift; path = Source/ImagePickerController.swift; sourceTree = "<group>"; }; - C123F7678FF2284185EF36445994301D /* EPSignature-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EPSignature-Info.plist"; sourceTree = "<group>"; }; - C36106C5881CE608080384E70EA21E2C /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = "<group>"; }; - C3982F8FEE14ABCE3B3809CE0F403E03 /* IQKeyboardManagerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.debug.xcconfig; sourceTree = "<group>"; }; - C3DAC0D16E8B9CDAB1C46438A1918609 /* NBBottomSheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NBBottomSheet.h; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheet.h; sourceTree = "<group>"; }; - C54FCF3DBFE97D4603C0EACF18FA0D04 /* 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; }; - C5E1C76F4CB18ED77389CE7FE78F467D /* IQKeyboardManagerCompatible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerCompatible.swift; path = IQKeyboardManagerSwift/IQKeyboardManagerCompatible/IQKeyboardManagerCompatible.swift; sourceTree = "<group>"; }; - C774FE02C7A2B7CDAEBD135AD86EDF76 /* ResourceBundle-ImagePicker-ImagePicker-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-ImagePicker-ImagePicker-Info.plist"; sourceTree = "<group>"; }; - C777330D77AC4AEF2F650AC082FC0D20 /* BottomContainerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BottomContainerView.swift; path = Source/BottomView/BottomContainerView.swift; sourceTree = "<group>"; }; - C815920F622C0A64C028E765DFA19DE9 /* Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Configuration.swift; path = Source/Configuration.swift; sourceTree = "<group>"; }; - C84B26F8ADEC27A386D60E255400321A /* focusIcon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "focusIcon@3x.png"; path = "Images/focusIcon@3x.png"; sourceTree = "<group>"; }; - C868C23A49BC6026FFF1C097909C6AEF /* DefaultsKeys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DefaultsKeys.swift; path = "LanguageManager-iOS/Classes/Constants/DefaultsKeys.swift"; sourceTree = "<group>"; }; - C8EF4D9DBCE2C1D02B24E978469E6051 /* 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>"; }; - CABC85618DA577110C2173F220799855 /* EPSignature.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.debug.xcconfig; sourceTree = "<group>"; }; - CC4598F509A748A174B923F7BFFD6A1D /* IQKeyboardInfo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardInfo.swift; path = IQKeyboardManagerSwift/LIsteners/Info/IQKeyboardInfo.swift; sourceTree = "<group>"; }; - CEA5D36999FB7EC130573BBE1118B86C /* TopView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TopView.swift; path = Source/TopView/TopView.swift; sourceTree = "<group>"; }; - D0CB553D4A98EA08E4217623F5288340 /* NBBottomSheet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NBBottomSheet-dummy.m"; sourceTree = "<group>"; }; - D14C906F62323F257FCAC14C18AB2F1E /* EPSignature.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.release.xcconfig; sourceTree = "<group>"; }; - D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Toast-Swift"; path = Toast_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D690195157D5AFC3FC7A71E3B59E3E56 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = "<group>"; }; - D86875C465CBABD7848556B410E7D9CC /* ImageGalleryView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryView.swift; path = Source/ImageGallery/ImageGalleryView.swift; sourceTree = "<group>"; }; - DA35CA28C5083B4CFE5AC4A0693E74DE /* cameraIcon@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "cameraIcon@3x.png"; path = "Images/cameraIcon@3x.png"; sourceTree = "<group>"; }; - DB89DB4BC3C06D3ACF9248E1A8CB0A32 /* IQBarButtonItemConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItemConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift; sourceTree = "<group>"; }; - DD60A987631255EE6EF4DF3C13D75F14 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = "<group>"; }; - E02C761871BEF1BBDE11B72CCC3696C6 /* ConstraintsSetup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ConstraintsSetup.swift; path = Source/Extensions/ConstraintsSetup.swift; sourceTree = "<group>"; }; - E1A33D7FE5FF7EC0CE446D2DE0E7D87F /* NBBottomSheet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-prefix.pch"; sourceTree = "<group>"; }; - E3E9B3A77CAD85B61F751BBDFCB21D18 /* IQKeyboardManager+UIKeyboardNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UIKeyboardNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift"; sourceTree = "<group>"; }; - E50E53295CE8EE025EB1F2C0EF928701 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist"; sourceTree = "<group>"; }; - E732367DAF4C72D47A9D2609A0D2EAD7 /* StackView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StackView.swift; path = Source/BottomView/StackView.swift; sourceTree = "<group>"; }; - E835F0288DF1D878316C17BB12366979 /* ImageGalleryViewDataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ImageGalleryViewDataSource.swift; path = Source/ImageGallery/ImageGalleryViewDataSource.swift; sourceTree = "<group>"; }; - EA228CD306D3DEA506330E2D4BEB438D /* NBBottomSheet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "NBBottomSheet-Info.plist"; sourceTree = "<group>"; }; - EB9573491019BC299A7C3CBE4C3D37FF /* video@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "video@3x.png"; path = "Images/video@3x.png"; sourceTree = "<group>"; }; - EC19D9CE4EB77DF2E4C44BEB17C0B656 /* NBBottomSheet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NBBottomSheet-umbrella.h"; sourceTree = "<group>"; }; + B2FDA2CC3C2AD7C7A5E415C882C9B188 /* EPSignature-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "EPSignature-Info.plist"; sourceTree = "<group>"; }; + B36745B931F093E7529DE09BDC78AE4A /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUIScrollView+Additions.swift"; sourceTree = "<group>"; }; + B46AC0A20BBB01930BFCCC5E37F2F451 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; path = "IQKeyboardManagerSwift/ReturnKeyHandler/IQKeyboardReturnKeyHandler+TextFieldDelegate.swift"; sourceTree = "<group>"; }; + B4E42215E2916410502485DE4719CAB8 /* IQTextFieldViewInfoModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewInfoModel.swift; path = IQKeyboardManagerSwift/ReturnKeyHandler/IQTextFieldViewInfoModel.swift; sourceTree = "<group>"; }; + B523C4AC55A9DA57DFF0678DBDA36CAB /* IQKeyboardManagerSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.debug.xcconfig; sourceTree = "<group>"; }; + BBB7C0C9E7233FBBC87782D9D07B207A /* IQToolbarConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarConfiguration.swift; sourceTree = "<group>"; }; + BEF3FB465FF0E85DFC73E8982D4649C9 /* IQUITableView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITableView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITableView+Additions.swift"; sourceTree = "<group>"; }; + C3CDBC5C81BC0C65F60AE4D75BC5C96F /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = "<group>"; }; + C70354264EBD9A0C43D54A0D7EBBB470 /* LanguageManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LanguageManager.swift; path = "LanguageManager-iOS/Classes/Main/LanguageManager.swift"; sourceTree = "<group>"; }; + CA1AE20769613307BAC355F4FC6BD2C0 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = "<group>"; }; + CC637D89CCDB084F9E4800A7DE741326 /* EPSignature.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = EPSignature.release.xcconfig; sourceTree = "<group>"; }; + CFC8C7270B8273684812DC662CC38F2C /* IQTextFieldViewListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift; sourceTree = "<group>"; }; + D0E5C4FB5D9C42994C48EE2E2DB723AD /* 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>"; }; + D118C91CB28B3EF79E1634FC9815653C /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = "<group>"; }; + D151AC46468E6AF2CA49AA3EE9E20A86 /* IQBarButtonItemConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItemConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQBarButtonItemConfiguration.swift; sourceTree = "<group>"; }; + D472E05BA7D0AFDCAFAB140105E59394 /* 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>"; }; + D56C207A827BE75EB57DC333DFC2D9C8 /* NBBottomSheetTransitioningDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetTransitioningDelegate.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetTransitioningDelegate.swift; sourceTree = "<group>"; }; + D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast_Swift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Toast_Swift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D695DEAF5B6A470CDBCE0B1046ADF52F /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = "<group>"; }; + D71B21045286C6B16ED9793C58B47041 /* EPSignatureViewController.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = EPSignatureViewController.xib; path = Pod/Classes/EPSignatureViewController.xib; sourceTree = "<group>"; }; + DA58205EF34D92711DF7A266FDAD9F7C /* 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>"; }; + DD661BC03E3F956312BD660BD1FF57EE /* 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>"; }; + DF034BB8B2512B8EA119A5C741CFA5DF /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/IQUITextFieldView+Additions.swift"; sourceTree = "<group>"; }; + DFA3AF1F82CCB77673CACA3B5A32888B /* IQKeyboardManager+UIKeyboardNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UIKeyboardNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UIKeyboardNotification.swift"; sourceTree = "<group>"; }; + E02344BCF20299F40462A9EF0715E6D7 /* IQKeyboardManager+UITextFieldViewNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+UITextFieldViewNotification.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+UITextFieldViewNotification.swift"; sourceTree = "<group>"; }; + E0D8CA658598BC5E5BFF3518C247B1F2 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = "<group>"; }; + E37025353CFD3DD938B700595A711CA3 /* IQKeyboardConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQKeyboardConfiguration.swift; sourceTree = "<group>"; }; + E5F4B6BDF8AA83C87CAF8C6F18016820 /* LanguageManager-iOS-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LanguageManager-iOS-umbrella.h"; sourceTree = "<group>"; }; ED8E7C0ED656254925E918D5509B655C /* Pods-MiniScanner-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-MiniScanner-Info.plist"; sourceTree = "<group>"; }; - EDB80757CE3795FC91CDB7A65C1075C2 /* NBBottomSheetConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetConfiguration.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetConfiguration.swift; sourceTree = "<group>"; }; - EF51C6ED55BE3234DDC00FD344A09E7D /* CameraMan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CameraMan.swift; path = Source/CameraView/CameraMan.swift; sourceTree = "<group>"; }; - EF7D783EF1D563B4F4FD4F1F0C419D93 /* Toast-Swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Toast-Swift-umbrella.h"; sourceTree = "<group>"; }; - F0C34C9F75E166049F8D6E200F86B613 /* IQToolbarPlaceholderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarPlaceholderConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift; sourceTree = "<group>"; }; - F2DD5AE6CACB8DAC2D9D1E1A2922DA90 /* IQTextFieldViewListener.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextFieldViewListener.swift; path = IQKeyboardManagerSwift/LIsteners/IQTextFieldViewListener.swift; sourceTree = "<group>"; }; - F38BC60F94AF6CF593ADA0BC8B5408FB /* NBBottomSheetController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NBBottomSheetController.swift; path = NBBottomSheet/NBBottomSheet/Sources/NBBottomSheetController.swift; sourceTree = "<group>"; }; - F3DF46AD6E25D68DB361974528992221 /* 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; }; - F4415550D8B9EC49233840893C1C9537 /* OFF@3x.png */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = image.png; name = "OFF@3x.png"; path = "Images/OFF@3x.png"; sourceTree = "<group>"; }; - F44C091B448CFD1D03576A3232F205BC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = IQKeyboardManagerSwift/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; - F8B631781C259577E740092CCABE2524 /* LanguageManager-iOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.debug.xcconfig"; sourceTree = "<group>"; }; - FB7EC43BFC9C3B66643A06CC90583727 /* IQKeyboardManager+Position.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Position.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Position.swift"; sourceTree = "<group>"; }; - FD2F833515731616C366DD163491D01C /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = "<group>"; }; + EEDBEDD581B959BEE278279AD90EC4A6 /* UIImage+NextPrevious.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIImage+NextPrevious.swift"; path = "IQKeyboardManagerSwift/UIKitExtensions/UIImage+NextPrevious.swift"; sourceTree = "<group>"; }; + F1E67E5BD993F832C7791655439CBF14 /* IQToolbarPlaceholderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbarPlaceholderConfiguration.swift; path = IQKeyboardManagerSwift/Configuration/IQToolbarPlaceholderConfiguration.swift; sourceTree = "<group>"; }; + F36B6550A8DA1C92B8180E63E5F96179 /* LanguageManager-iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "LanguageManager-iOS.release.xcconfig"; sourceTree = "<group>"; }; + F49E60227D31D17E0FAED77A717FCE85 /* IQKeyboardManagerSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.release.xcconfig; sourceTree = "<group>"; }; + FAB00964D10158B0DD18CDA1A15F54AC /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = "<group>"; }; + FC65AF45782D2C10227405DB2D984159 /* IQKeyboardManager+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQKeyboardManager+Deprecated.swift"; path = "IQKeyboardManagerSwift/IQKeyboardManager/IQKeyboardManager+Deprecated.swift"; sourceTree = "<group>"; }; + FD105623E1AC2089DCD82B81ABAC6681 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = IQKeyboardManagerSwift/PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 069185D987B201809AC160F03A5B3195 /* Frameworks */ = { + 27E0FFA673621C4812A3375293BC5FAB /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 2067457DB9BF3FC9BFE99C90B602174A /* Frameworks */ = { + 3130A51D7DFF19A4DA7649752464E8ED /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BD0139B5F1C96514CB66C4310AAF1DF5 /* AVFoundation.framework in Frameworks */, - D4BB4D928CB44E6CE753BEA14E5AC918 /* Foundation.framework in Frameworks */, + 98A4D0D5928A35C7DB3D9272187789A8 /* CoreGraphics.framework in Frameworks */, + 23D11E770DF137CBF802A30E2B19C054 /* Foundation.framework in Frameworks */, + B1A786B1A2F11EBD1BF77305EEB710F5 /* QuartzCore.framework in Frameworks */, + 7586D1882B962E1E31C28CC6396668B3 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3130A51D7DFF19A4DA7649752464E8ED /* Frameworks */ = { + 40C1F40F133F6FF17C44746C863B5192 /* 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 */, + 256D9C5C2905D4E4DA041339C2D33728 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -400,7 +319,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9EA96546523C27F883EF2FB2C503320D /* Frameworks */ = { + 7EDDF1BAD5AA24016F6D7F1DBA20E165 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -433,142 +352,137 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B7F22B9EDB9FA900F797BA30F0774DCB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EF61C2D35FBBDBB90DA611BD946C82F9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 570139F7C036A8C0C2E2A79828C91040 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0285214F24466DADA9DB9AC0EF8966F0 /* iOS */ = { + 045B8E78601FA51F57F50C307EB174AA /* NBBottomSheet */ = { isa = PBXGroup; children = ( - 56B28C4E9F718651E6E1B010F31566EB /* AVFoundation.framework */, - F3DF46AD6E25D68DB361974528992221 /* CoreGraphics.framework */, - C54FCF3DBFE97D4603C0EACF18FA0D04 /* Foundation.framework */, - 2EE6749FC108D414ECB83B77EF11BD86 /* QuartzCore.framework */, - 1C63F26DA7ECAFB44B0A5DD0BC0E2F89 /* UIKit.framework */, + 99D088CB852CC61E29DC663D635BEB8C /* NBBottomSheet.h */, + 6FFE3D11AD2655FC409E743B2CD5F00D /* NBBottomSheetConfiguration.swift */, + 86E1A3B4D4B3FD7A01AC2B0FBB18F0C4 /* NBBottomSheetController.swift */, + 71AAEA9E8B8FD808443EB047E117EA68 /* NBBottomSheetDismissalTransition.swift */, + 702164D0BDDC3907F55DB3E8BE73EA03 /* NBBottomSheetPresentationController.swift */, + 1E7C6B223E5098341952DCEB74D18D42 /* NBBottomSheetPresentationTransition.swift */, + D56C207A827BE75EB57DC333DFC2D9C8 /* NBBottomSheetTransitioningDelegate.swift */, + 7318B0F18B2B4F2970C621C894910C24 /* NBConfiguration.swift */, + 57954434FCD330DF028497362A08E935 /* Support Files */, ); - name = iOS; - sourceTree = "<group>"; - }; - 0B88C7E3E2D7D93DB691E99907C6BAEB /* Support Files */ = { - isa = PBXGroup; - children = ( - A7ABC55EAA18572ADCBF182874BFEC9C /* EPSignature.modulemap */, - 0A5FF8ED8FBE20522184DB1B88647020 /* EPSignature-dummy.m */, - C123F7678FF2284185EF36445994301D /* EPSignature-Info.plist */, - 5CC65B9071729D3E9148E9FFDC41101F /* EPSignature-prefix.pch */, - 011B51599E04A9236E034DD068DF591E /* EPSignature-umbrella.h */, - CABC85618DA577110C2173F220799855 /* EPSignature.debug.xcconfig */, - D14C906F62323F257FCAC14C18AB2F1E /* EPSignature.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/EPSignature"; + path = NBBottomSheet; sourceTree = "<group>"; }; - 1C01ED040278D580CA066DFCB363DAE9 /* Support Files */ = { + 0E4499367B8A4DBB481BE60C00ACE0DC /* IQKeyboardManagerSwift */ = { isa = PBXGroup; children = ( - 9B39DEC267982A4E5F14FAE8D6280009 /* ImagePicker.modulemap */, - 5EA6E885F82FC51E2B5754170A5C9BFF /* ImagePicker-dummy.m */, - 7748F717ED664F2B86A39CF57DD65969 /* ImagePicker-Info.plist */, - 1168F8939304BC5B34EB1B73835CD86F /* ImagePicker-prefix.pch */, - 9A683468C7D2939968FC170A715B5467 /* ImagePicker-umbrella.h */, - 4A12290BE7726329C06345F8A5C10597 /* ImagePicker.debug.xcconfig */, - 98E748ED3D0F64389C49C75123E6D605 /* ImagePicker.release.xcconfig */, - C774FE02C7A2B7CDAEBD135AD86EDF76 /* ResourceBundle-ImagePicker-ImagePicker-Info.plist */, + 502158A68AC16423EDBFBECD42685B26 /* IQActiveConfiguration.swift */, + 24312A9D8468633C2B0A5CA86CCB97C0 /* IQBarButtonItem.swift */, + D151AC46468E6AF2CA49AA3EE9E20A86 /* IQBarButtonItemConfiguration.swift */, + 0AF49C259B40140D9FECD9EB646B5AAC /* IQInvocation.swift */, + E37025353CFD3DD938B700595A711CA3 /* IQKeyboardConfiguration.swift */, + 4CF231B964B348386B23E59D755E8A81 /* IQKeyboardInfo.swift */, + 498E53AE9E1500AB2F22931F74EB83BD /* IQKeyboardListener.swift */, + 742638E41A4961FAA1DB7E7647DC0DFB /* IQKeyboardManager.swift */, + 985AE78F65B613BDBBD6509AAE1F19BA /* IQKeyboardManager+Debug.swift */, + FC65AF45782D2C10227405DB2D984159 /* IQKeyboardManager+Deprecated.swift */, + 94602A05BE1EF7E035D9BD82455EF9E2 /* IQKeyboardManager+Internal.swift */, + A28E47609991E47A50918D04532237A8 /* IQKeyboardManager+Position.swift */, + 96FEDB7CA06B32CDF55BB41EB7BCF833 /* IQKeyboardManager+Toolbar.swift */, + 411EC506553E059075331960D49EE0E2 /* IQKeyboardManager+ToolbarActions.swift */, + DFA3AF1F82CCB77673CACA3B5A32888B /* IQKeyboardManager+UIKeyboardNotification.swift */, + E02344BCF20299F40462A9EF0715E6D7 /* IQKeyboardManager+UITextFieldViewNotification.swift */, + 6C2143A4B7A557FBD7CA3440E5319559 /* IQKeyboardManagerCompatible.swift */, + CA1AE20769613307BAC355F4FC6BD2C0 /* IQKeyboardManagerConstants.swift */, + 462CB364BFCE2B191C63492A6B662E5B /* IQKeyboardReturnKeyHandler.swift */, + B46AC0A20BBB01930BFCCC5E37F2F451 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */, + 20120C7D84560D27F6FC713DD0368421 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */, + 382D6986B99DE2D1543422ADC1D9B60B /* IQNSArray+Sort.swift */, + 0EA778C1A13BBCFE2D514A6B0D88C76A /* IQPlaceholderable.swift */, + 150EFA98B5EDC822B6728C45D76FE799 /* IQPreviousNextView.swift */, + 774A5370A6664518873531AA3A4C74A3 /* IQRootControllerConfiguration.swift */, + 2047B7CCEC04ACE26A24EE18FCB2C7B2 /* IQScrollViewConfiguration.swift */, + 0766760940C9B62A291EB666599B5479 /* IQTextFieldViewInfo.swift */, + B4E42215E2916410502485DE4719CAB8 /* IQTextFieldViewInfoModel.swift */, + CFC8C7270B8273684812DC662CC38F2C /* IQTextFieldViewListener.swift */, + E0D8CA658598BC5E5BFF3518C247B1F2 /* IQTextView.swift */, + C3CDBC5C81BC0C65F60AE4D75BC5C96F /* IQTitleBarButtonItem.swift */, + D118C91CB28B3EF79E1634FC9815653C /* IQToolbar.swift */, + BBB7C0C9E7233FBBC87782D9D07B207A /* IQToolbarConfiguration.swift */, + F1E67E5BD993F832C7791655439CBF14 /* IQToolbarPlaceholderConfiguration.swift */, + 9CEBCD8EA2B9046F420A29A1A687597B /* IQUICollectionView+Additions.swift */, + B36745B931F093E7529DE09BDC78AE4A /* IQUIScrollView+Additions.swift */, + BEF3FB465FF0E85DFC73E8982D4649C9 /* IQUITableView+Additions.swift */, + DF034BB8B2512B8EA119A5C741CFA5DF /* IQUITextFieldView+Additions.swift */, + 78BCC6448A82711A55D3865734C80264 /* IQUIView+Hierarchy.swift */, + 18F5E3B58AC439F8F8E394C6875E7659 /* IQUIView+IQKeyboardToolbar.swift */, + 81422785FEDCA76B23BEBE33FBE48048 /* IQUIView+IQKeyboardToolbarDeprecated.swift */, + A8A5C458DECC3C78726780DD36BD6003 /* IQUIViewController+Additions.swift */, + EEDBEDD581B959BEE278279AD90EC4A6 /* UIImage+NextPrevious.swift */, + 0EFE2A8E36C03A9C7BC6F11A23EFB604 /* Resources */, + 74B6CD0F4110CC100B61E6502097D849 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/ImagePicker"; + path = IQKeyboardManagerSwift; sourceTree = "<group>"; }; - 3935F845516B692550CECB5FF0F76E2D /* Resources */ = { + 0EFE2A8E36C03A9C7BC6F11A23EFB604 /* Resources */ = { isa = PBXGroup; children = ( - F44C091B448CFD1D03576A3232F205BC /* PrivacyInfo.xcprivacy */, + FD105623E1AC2089DCD82B81ABAC6681 /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = "<group>"; }; - 3AD44DEFF8EE9AC24ECEAACD5B6269AC /* Support Files */ = { + 3EF55AD2629944B8697CFCFEE9D720A6 /* EPSignature */ = { isa = PBXGroup; children = ( - 5F674EF15792418D78DFA71DFD86C478 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */, - 780D4A1190E5FFFF55A74D2D514D3866 /* Toast-Swift.modulemap */, - 5DF01277275CD2AEE06E328B287C97A3 /* Toast-Swift-dummy.m */, - 6660EBAA415F24B1ABAC7AAE5206AB0A /* Toast-Swift-Info.plist */, - 70988BB3CADF8C08812CBAE7C81D4C77 /* Toast-Swift-prefix.pch */, - EF7D783EF1D563B4F4FD4F1F0C419D93 /* Toast-Swift-umbrella.h */, - 67DA8FCED4F75B1734C7991B3CD1D07A /* Toast-Swift.debug.xcconfig */, - 03DD32D0BF8FB60836D128D957D391C9 /* Toast-Swift.release.xcconfig */, + 2794065EF846C76C4810B97DB721D0CC /* EPExtensions.swift */, + 3868CC20E2F6791F42F820E416ABF552 /* EPSignatureView.swift */, + 0E9F90D162DAF7075E6BA80720501DF8 /* EPSignatureViewController.swift */, + A2FC346530927F8ACAAA9ED2ACFCBE3A /* Resources */, + A3DBCFA8C307834A64C90694FA8DDC0A /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Toast-Swift"; + path = EPSignature; sourceTree = "<group>"; }; - 4E702B80AEF94B45D45A3C5A190960F6 /* Resources */ = { + 47C7E3696BF991F8F846C0513BF432AE /* Pods */ = { isa = PBXGroup; children = ( - 8ED32688AB72481EF3CAB7EB874E8EC6 /* AUTO@3x.png */, - DA35CA28C5083B4CFE5AC4A0693E74DE /* cameraIcon@3x.png */, - C84B26F8ADEC27A386D60E255400321A /* focusIcon@3x.png */, - F4415550D8B9EC49233840893C1C9537 /* OFF@3x.png */, - 92BD73655367FDAF60480520BD5C7C1F /* ON@3x.png */, - 87EF02E7A8E36E8A8DBB71DE89ED96B0 /* selectedImageGallery@3x.png */, - EB9573491019BC299A7C3CBE4C3D37FF /* video@3x.png */, + 3EF55AD2629944B8697CFCFEE9D720A6 /* EPSignature */, + 0E4499367B8A4DBB481BE60C00ACE0DC /* IQKeyboardManagerSwift */, + 7DC4DE5B46062047D9426FDBDC2EFC7A /* LanguageManager-iOS */, + 045B8E78601FA51F57F50C307EB174AA /* NBBottomSheet */, + 927BE59DCC13C4161539EFDBF3BFF8C4 /* Toast-Swift */, ); - name = Resources; + name = Pods; sourceTree = "<group>"; }; - 57149438FE097C82FA2E6E91FF703E94 /* Toast-Swift */ = { + 494D249A120593AF7B49E894F3C94890 /* Products */ = { isa = PBXGroup; children = ( - 55CB6C34A690CC87CCB70DDB216EAC51 /* Toast.swift */, - 7B0612E87366C71C31F89B5E15A88006 /* Resources */, - 3AD44DEFF8EE9AC24ECEAACD5B6269AC /* Support Files */, + 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature.framework */, + A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift.framework */, + 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift.bundle */, + 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager_iOS.framework */, + 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet.framework */, + 3438B9790556194C521D4C9806D29C85 /* Pods_MiniScanner.framework */, + D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast_Swift.framework */, + 13FD39576595D8A884BF5166065C5236 /* Toast-Swift.bundle */, ); - name = "Toast-Swift"; - path = "Toast-Swift"; + name = Products; sourceTree = "<group>"; }; - 5F7B5CED73964A83F2569E6B1ABBA2DF /* ImagePicker */ = { + 57954434FCD330DF028497362A08E935 /* Support Files */ = { isa = PBXGroup; children = ( - 36C5D6D838BB40C4C60BCEC9700237DB /* AssetManager.swift */, - C777330D77AC4AEF2F650AC082FC0D20 /* BottomContainerView.swift */, - 30D3BA93828D8AA79B12971D4417E3E7 /* ButtonPicker.swift */, - EF51C6ED55BE3234DDC00FD344A09E7D /* CameraMan.swift */, - B17A5CFD871FCE0F4206503722AC57FF /* CameraView.swift */, - C815920F622C0A64C028E765DFA19DE9 /* Configuration.swift */, - E02C761871BEF1BBDE11B72CCC3696C6 /* ConstraintsSetup.swift */, - A297F21753E5B662FDC26D1C7BFAD0BD /* Helper.swift */, - 53D1259E91ED2A6A6554FD25A148FAEA /* ImageGalleryLayout.swift */, - D86875C465CBABD7848556B410E7D9CC /* ImageGalleryView.swift */, - B74B1A80F0A0EEE7527DE8AFD0E7F1C3 /* ImageGalleryViewCell.swift */, - E835F0288DF1D878316C17BB12366979 /* ImageGalleryViewDataSource.swift */, - B9BF6D173974B97A3F1EB34546FCA901 /* ImagePickerController.swift */, - 2535688320A12B11FEFD58EC6052A8EC /* ImageStack.swift */, - 2FB53955023E1BA00913DC99F1A9600E /* LocationManager.swift */, - E732367DAF4C72D47A9D2609A0D2EAD7 /* StackView.swift */, - CEA5D36999FB7EC130573BBE1118B86C /* TopView.swift */, - 7D029ABFAB048D5C70B1F219BF60BFDA /* VideoInfoView.swift */, - 4E702B80AEF94B45D45A3C5A190960F6 /* Resources */, - 1C01ED040278D580CA066DFCB363DAE9 /* Support Files */, - ); - name = ImagePicker; - path = ImagePicker; + 2A6CE2B40BA4423932E91631C1579E93 /* NBBottomSheet.modulemap */, + 8B642426F16C7875456972C1FCB260BB /* NBBottomSheet-dummy.m */, + 3AC3F6B5BDFF6DF235232F2C31772054 /* NBBottomSheet-Info.plist */, + 6B7058BC7BDD90E6B369A583B1A71184 /* NBBottomSheet-prefix.pch */, + 2924E68B9548AA280015C5C93780584B /* NBBottomSheet-umbrella.h */, + 2A814EDEC6572ABC3F94BA0E7E889D8B /* NBBottomSheet.debug.xcconfig */, + 4FE4CD16723823EE08BA397637777409 /* NBBottomSheet.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/NBBottomSheet"; sourceTree = "<group>"; }; 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */ = { @@ -579,202 +493,129 @@ name = "Targets Support Files"; sourceTree = "<group>"; }; - 74BCE9D4A1256169E6B171DD1D5090B2 /* Support Files */ = { + 74B6CD0F4110CC100B61E6502097D849 /* Support Files */ = { isa = PBXGroup; children = ( - A5B208FB6BF9712F3695286F8B245181 /* NBBottomSheet.modulemap */, - D0CB553D4A98EA08E4217623F5288340 /* NBBottomSheet-dummy.m */, - EA228CD306D3DEA506330E2D4BEB438D /* NBBottomSheet-Info.plist */, - E1A33D7FE5FF7EC0CE446D2DE0E7D87F /* NBBottomSheet-prefix.pch */, - EC19D9CE4EB77DF2E4C44BEB17C0B656 /* NBBottomSheet-umbrella.h */, - AC4DD45005A4D5A9ED08B9005CC9DA4B /* NBBottomSheet.debug.xcconfig */, - 099E4FB694B786AC923DF85EB9E89F83 /* NBBottomSheet.release.xcconfig */, + 83EF377CDCBF9BEEA9C05AF0FCE574A1 /* IQKeyboardManagerSwift.modulemap */, + D695DEAF5B6A470CDBCE0B1046ADF52F /* IQKeyboardManagerSwift-dummy.m */, + 2D8C8F6F7FEBBAAFDD7D9BAB6EDF2584 /* IQKeyboardManagerSwift-Info.plist */, + FAB00964D10158B0DD18CDA1A15F54AC /* IQKeyboardManagerSwift-prefix.pch */, + 01FB7E701BB1FC9B4BE62552942C8F54 /* IQKeyboardManagerSwift-umbrella.h */, + B523C4AC55A9DA57DFF0678DBDA36CAB /* IQKeyboardManagerSwift.debug.xcconfig */, + F49E60227D31D17E0FAED77A717FCE85 /* IQKeyboardManagerSwift.release.xcconfig */, + 60F2C12F33E3CAD17C98260F58EEA9E9 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/NBBottomSheet"; + path = "../Target Support Files/IQKeyboardManagerSwift"; sourceTree = "<group>"; }; - 781C3C94F1ED8E7B2F09B5E9D528BB69 /* LanguageManager-iOS */ = { + 7DC4DE5B46062047D9426FDBDC2EFC7A /* LanguageManager-iOS */ = { isa = PBXGroup; children = ( - C868C23A49BC6026FFF1C097909C6AEF /* DefaultsKeys.swift */, - B432D00858E45B771C11A35D09EB42E4 /* LanguageManager.swift */, - 4B7B31E6C5B5F1EC637FFE5C5B3C83C3 /* Languages.swift */, - 061AAD17D23877A1F03301246A85EF54 /* Storage.swift */, - 7E815AC0CA5BEA17DC867985BB80CA99 /* String+Localiz.swift */, - 8C2F550BD6A5440BADC14D7B43F94713 /* UIButton+Direction.swift */, - 636AE2E4AB62093E1592CE359392C841 /* UIImageView+Direction.swift */, - 76694372E1865C4FA3EEFDDBC4161F06 /* UIView+Direction.swift */, - C8EF4D9DBCE2C1D02B24E978469E6051 /* UIView+Swizzling.swift */, - 9BDB1CC7C25473E29D4F8FB6945AE100 /* ViewDirection.swift */, - FDEE6F3F150F716B4B5F48AEC01B927A /* Support Files */, + 516EE0B0F6F3A10B785BFC763F530BF1 /* DefaultsKeys.swift */, + C70354264EBD9A0C43D54A0D7EBBB470 /* LanguageManager.swift */, + 8898E92696478C2E203DA9FF2D49D46A /* Languages.swift */, + 10353A8431D7A21D5751FEFA11877E0D /* Storage.swift */, + D472E05BA7D0AFDCAFAB140105E59394 /* String+Localiz.swift */, + D0E5C4FB5D9C42994C48EE2E2DB723AD /* UIButton+Direction.swift */, + 0D2433C36515ECA778B349FF2D909633 /* UIImageView+Direction.swift */, + DD661BC03E3F956312BD660BD1FF57EE /* UIView+Direction.swift */, + DA58205EF34D92711DF7A266FDAD9F7C /* UIView+Swizzling.swift */, + 4259858DBB56E10DFA44E0F96DA73037 /* ViewDirection.swift */, + DA665B0B8ECCE954C1EEE194ED0FFE15 /* Support Files */, ); - name = "LanguageManager-iOS"; path = "LanguageManager-iOS"; sourceTree = "<group>"; }; - 7B0612E87366C71C31F89B5E15A88006 /* Resources */ = { - isa = PBXGroup; - children = ( - 019B0871D5ADD52194BB016FE08B66F5 /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = "<group>"; - }; - 7B87473A37937F5F38EB183E7A75C151 /* Products */ = { - isa = PBXGroup; - children = ( - 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */, - 987CD19BC0CE18F2E00B0AD5ABF8670D /* ImagePicker */, - 97AA160F23F0CBEDDAF212103E762FC7 /* ImagePicker-ImagePicker */, - A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */, - 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, - 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */, - 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */, - 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */, - D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */, - 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */, - ); - name = Products; - sourceTree = "<group>"; - }; - 7BE677DEC7179B3CB629C8317C9E9507 /* IQKeyboardManagerSwift */ = { + 927BE59DCC13C4161539EFDBF3BFF8C4 /* Toast-Swift */ = { isa = PBXGroup; children = ( - 455ED137864B3625C8C1DC4EA799A433 /* IQActiveConfiguration.swift */, - C36106C5881CE608080384E70EA21E2C /* IQBarButtonItem.swift */, - DB89DB4BC3C06D3ACF9248E1A8CB0A32 /* IQBarButtonItemConfiguration.swift */, - FD2F833515731616C366DD163491D01C /* IQInvocation.swift */, - B5AF1DD944BBBCC3E4B6F8FB70B1C9E9 /* IQKeyboardConfiguration.swift */, - CC4598F509A748A174B923F7BFFD6A1D /* IQKeyboardInfo.swift */, - 3A8E9A2C8F405661496F405E14CEB2E1 /* IQKeyboardListener.swift */, - 10670E8341C2F0D77BC4D00A7AFBBA00 /* IQKeyboardManager.swift */, - 650E6F717733EACCA5E65EC3FCDBDE02 /* IQKeyboardManager+Debug.swift */, - 0EE59A1597022F0861A65AB781A04460 /* IQKeyboardManager+Deprecated.swift */, - AFB6EC836300F1DEEAA4CEFAA33ABD19 /* IQKeyboardManager+Internal.swift */, - FB7EC43BFC9C3B66643A06CC90583727 /* IQKeyboardManager+Position.swift */, - 27B7276332D112636983C2AD6107C243 /* IQKeyboardManager+Toolbar.swift */, - 45FB65D90C5FCEB09C0B16E99E9CB1EB /* IQKeyboardManager+ToolbarActions.swift */, - E3E9B3A77CAD85B61F751BBDFCB21D18 /* IQKeyboardManager+UIKeyboardNotification.swift */, - 7AF49D9ABCB15DBD7FCBE47C06871EDE /* IQKeyboardManager+UITextFieldViewNotification.swift */, - C5E1C76F4CB18ED77389CE7FE78F467D /* IQKeyboardManagerCompatible.swift */, - DD60A987631255EE6EF4DF3C13D75F14 /* IQKeyboardManagerConstants.swift */, - 875F53B09AC722ED6ADABA1C1EDC5C20 /* IQKeyboardReturnKeyHandler.swift */, - 8F068A96AEF12780439B98393629BB16 /* IQKeyboardReturnKeyHandler+TextFieldDelegate.swift */, - 0FAA5D0DE773CB6BFF7370F07A06C5B1 /* IQKeyboardReturnKeyHandler+TextViewDelegate.swift */, - 4722380FB0C679720105FF9E1A5A523B /* IQNSArray+Sort.swift */, - A2B15DF05BBBE3351036FCCAC9F00846 /* IQPlaceholderable.swift */, - 8AEA6851BD7FCB59C627DE1A0633609F /* IQPreviousNextView.swift */, - 89DB66B29E28AD378856BF11E7EE9A37 /* IQRootControllerConfiguration.swift */, - 643C568373D83E0D0E40D73444B3A917 /* IQScrollViewConfiguration.swift */, - 5870D384ABFCBE6207143C2A72B72A10 /* IQTextFieldViewInfo.swift */, - 5C55F11056F0351DE08666B753849E48 /* IQTextFieldViewInfoModel.swift */, - F2DD5AE6CACB8DAC2D9D1E1A2922DA90 /* IQTextFieldViewListener.swift */, - D690195157D5AFC3FC7A71E3B59E3E56 /* IQTextView.swift */, - 3AFA769CF0850AC9B2C312D9D737E578 /* IQTitleBarButtonItem.swift */, - 19DE64C21ED9D81A56EF0DA1C351E53C /* IQToolbar.swift */, - 7951FB92CEF55E571958C0480194A1A7 /* IQToolbarConfiguration.swift */, - F0C34C9F75E166049F8D6E200F86B613 /* IQToolbarPlaceholderConfiguration.swift */, - 6AFFC5763F85A742954048A03D39913F /* IQUICollectionView+Additions.swift */, - 92F6E344FAB0C5DAE4F05104C2C68571 /* IQUIScrollView+Additions.swift */, - 039EA7048499C3BC1CBB4E8FAB74BB40 /* IQUITableView+Additions.swift */, - 4309F47E646E6968CACD8832ABE22099 /* IQUITextFieldView+Additions.swift */, - 43390028C811A47BDDF45824B3D30D31 /* IQUIView+Hierarchy.swift */, - 0315AFEFCB0BFF084FA3C5E469C5C301 /* IQUIView+IQKeyboardToolbar.swift */, - 1AB029201A3484CB5BCAD15F2FCF9081 /* IQUIView+IQKeyboardToolbarDeprecated.swift */, - B8E57D2900050797926440B9E5CFBB20 /* IQUIViewController+Additions.swift */, - A6FD3B67AA484E2ABE3D0DB152EB7D99 /* UIImage+NextPrevious.swift */, - 3935F845516B692550CECB5FF0F76E2D /* Resources */, - AA8D4AD3DAB466E92E26843A2D0A977E /* Support Files */, + 7B88E23BCE3E921E2C4B6CA4D2371CD1 /* Toast.swift */, + E873FE9F1CF42AA34E1AF24D0328393A /* Resources */, + B035FA83947B3565242A91CCFDA6E081 /* Support Files */, ); - name = IQKeyboardManagerSwift; - path = IQKeyboardManagerSwift; + path = "Toast-Swift"; sourceTree = "<group>"; }; - 8D6C50AF947755F654CD7A6109C7AE37 /* EPSignature */ = { + A2FC346530927F8ACAAA9ED2ACFCBE3A /* Resources */ = { isa = PBXGroup; children = ( - 55C7CD2DA0F4475F09E37093AD32524B /* EPExtensions.swift */, - 9BD6019163583EA6526F0ACBFDA0511E /* EPSignatureView.swift */, - 81B80CF746340952D1957D5CCC583D36 /* EPSignatureViewController.swift */, - B5E6B5DBE647BF287AC40F7013E520EE /* Resources */, - 0B88C7E3E2D7D93DB691E99907C6BAEB /* Support Files */, + D71B21045286C6B16ED9793C58B47041 /* EPSignatureViewController.xib */, ); - name = EPSignature; - path = EPSignature; + name = Resources; sourceTree = "<group>"; }; - 9D8CE6772446DF3DC1D6055EA0F51AF9 /* Pods */ = { + A3DBCFA8C307834A64C90694FA8DDC0A /* Support Files */ = { isa = PBXGroup; children = ( - 8D6C50AF947755F654CD7A6109C7AE37 /* EPSignature */, - 5F7B5CED73964A83F2569E6B1ABBA2DF /* ImagePicker */, - 7BE677DEC7179B3CB629C8317C9E9507 /* IQKeyboardManagerSwift */, - 781C3C94F1ED8E7B2F09B5E9D528BB69 /* LanguageManager-iOS */, - C42531F3B11E8E594539F883FB2E3324 /* NBBottomSheet */, - 57149438FE097C82FA2E6E91FF703E94 /* Toast-Swift */, + 7C75868EF6E95B844AC3BDEDC75F7516 /* EPSignature.modulemap */, + B08170D3C75D19D3A9A1B2968C5D90D5 /* EPSignature-dummy.m */, + B2FDA2CC3C2AD7C7A5E415C882C9B188 /* EPSignature-Info.plist */, + 733B528B67D9A069E0BB04A59CC9A2F9 /* EPSignature-prefix.pch */, + 531D677F08B7E2CFA4CBF534C4C55EFD /* EPSignature-umbrella.h */, + 537BBBC0CBE54532981446B3953A1207 /* EPSignature.debug.xcconfig */, + CC637D89CCDB084F9E4800A7DE741326 /* EPSignature.release.xcconfig */, ); - name = Pods; + name = "Support Files"; + path = "../Target Support Files/EPSignature"; sourceTree = "<group>"; }; - AA8D4AD3DAB466E92E26843A2D0A977E /* Support Files */ = { + B035FA83947B3565242A91CCFDA6E081 /* Support Files */ = { isa = PBXGroup; children = ( - 62D4C1232DB908BA782F85B19D3DEA3B /* IQKeyboardManagerSwift.modulemap */, - 69023DD29D363BEF415F3723F1169699 /* IQKeyboardManagerSwift-dummy.m */, - 528C94E48744BA710AEDE265867A380F /* IQKeyboardManagerSwift-Info.plist */, - 8AD60867F9686EC4EA88789E10213293 /* IQKeyboardManagerSwift-prefix.pch */, - 5A9E56248E01438AF8F27428F420DBAA /* IQKeyboardManagerSwift-umbrella.h */, - C3982F8FEE14ABCE3B3809CE0F403E03 /* IQKeyboardManagerSwift.debug.xcconfig */, - 63CF4CB6581E3400CB208D3E8A166BEF /* IQKeyboardManagerSwift.release.xcconfig */, - E50E53295CE8EE025EB1F2C0EF928701 /* ResourceBundle-IQKeyboardManagerSwift-IQKeyboardManagerSwift-Info.plist */, + A23088255385719753EE100CCA151388 /* ResourceBundle-Toast-Swift-Toast-Swift-Info.plist */, + 8D9468D73578757A00078F2F46B1562B /* Toast-Swift.modulemap */, + 1FE12EE55D455A9D0F04D9E6DCB8FE9B /* Toast-Swift-dummy.m */, + 9AC46E2F638B3EB069B10B3E4B7756C6 /* Toast-Swift-Info.plist */, + 3B7E7310C9C519E81C3249E4919655C4 /* Toast-Swift-prefix.pch */, + 243828A9D7CB356BFFFC68453A862E27 /* Toast-Swift-umbrella.h */, + 45DD2EA0D7026E816EA7C75B9937309F /* Toast-Swift.debug.xcconfig */, + 5F4DA4A1313C3DBDEEA0B97DBD17DE03 /* Toast-Swift.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/IQKeyboardManagerSwift"; + path = "../Target Support Files/Toast-Swift"; sourceTree = "<group>"; }; - B5E6B5DBE647BF287AC40F7013E520EE /* Resources */ = { + BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */ = { isa = PBXGroup; children = ( - 72FC8142B933D42EE5AE712DAD741DF8 /* EPSignatureViewController.xib */, + F9D206BABE81E6BF0B9B23880B238CC7 /* iOS */, ); - name = Resources; + name = Frameworks; sourceTree = "<group>"; }; - B94D7768568A9992200DB461E8CF687F /* Frameworks */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 0285214F24466DADA9DB9AC0EF8966F0 /* iOS */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + BA4F31F07263C99FC76E66D632A59F09 /* Frameworks */, + 47C7E3696BF991F8F846C0513BF432AE /* Pods */, + 494D249A120593AF7B49E894F3C94890 /* Products */, + 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */, ); - name = Frameworks; sourceTree = "<group>"; }; - C42531F3B11E8E594539F883FB2E3324 /* NBBottomSheet */ = { + DA665B0B8ECCE954C1EEE194ED0FFE15 /* Support Files */ = { isa = PBXGroup; children = ( - C3DAC0D16E8B9CDAB1C46438A1918609 /* NBBottomSheet.h */, - EDB80757CE3795FC91CDB7A65C1075C2 /* NBBottomSheetConfiguration.swift */, - F38BC60F94AF6CF593ADA0BC8B5408FB /* NBBottomSheetController.swift */, - 002E7885D97E14840BB1694FDAC680C3 /* NBBottomSheetDismissalTransition.swift */, - 00F287BEEDC27E1135AF1D47204F754B /* NBBottomSheetPresentationController.swift */, - 3535FAD2227224788FF4549088FA2DBE /* NBBottomSheetPresentationTransition.swift */, - 620668AA976F0F6ED19180B8B4D83AB8 /* NBBottomSheetTransitioningDelegate.swift */, - 2647160AB4F12734D43B806D373E9312 /* NBConfiguration.swift */, - 74BCE9D4A1256169E6B171DD1D5090B2 /* Support Files */, + 7FF867E0058AB41B12C3922D752D725A /* LanguageManager-iOS.modulemap */, + 5970C908E4FF8C4F6F5D5A9D69FD432B /* LanguageManager-iOS-dummy.m */, + 742A7E1E52037C3832ED9815F4F98DAD /* LanguageManager-iOS-Info.plist */, + 773EC24F523218EE27B3DAC502F244C2 /* LanguageManager-iOS-prefix.pch */, + E5F4B6BDF8AA83C87CAF8C6F18016820 /* LanguageManager-iOS-umbrella.h */, + 0B540D7EB497DDDE9DD9B89449ED9181 /* LanguageManager-iOS.debug.xcconfig */, + F36B6550A8DA1C92B8180E63E5F96179 /* LanguageManager-iOS.release.xcconfig */, ); - name = NBBottomSheet; - path = NBBottomSheet; + name = "Support Files"; + path = "../Target Support Files/LanguageManager-iOS"; sourceTree = "<group>"; }; - CF1408CF629C7361332E53B88F7BD30C = { + E873FE9F1CF42AA34E1AF24D0328393A /* Resources */ = { isa = PBXGroup; children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - B94D7768568A9992200DB461E8CF687F /* Frameworks */, - 9D8CE6772446DF3DC1D6055EA0F51AF9 /* Pods */, - 7B87473A37937F5F38EB183E7A75C151 /* Products */, - 67EA5FFBCFCDDED6A445407A917EE0A1 /* Targets Support Files */, + 5352EC4E0DCF477B021D750C08791E9C /* PrivacyInfo.xcprivacy */, ); + name = Resources; sourceTree = "<group>"; }; EC99F10DC5C191754BE16B2F6AC739A8 /* Pods-MiniScanner */ = { @@ -794,32 +635,20 @@ path = "Target Support Files/Pods-MiniScanner"; sourceTree = "<group>"; }; - FDEE6F3F150F716B4B5F48AEC01B927A /* Support Files */ = { + F9D206BABE81E6BF0B9B23880B238CC7 /* iOS */ = { isa = PBXGroup; children = ( - 2664332FE4E7E587B561586179AD8085 /* LanguageManager-iOS.modulemap */, - 16878922AD64BAC3738BB1DCCEE573DD /* LanguageManager-iOS-dummy.m */, - 9EF0C733ACEF609E2020B2946479758A /* LanguageManager-iOS-Info.plist */, - A9C1F32502D88A64B01453B234118B48 /* LanguageManager-iOS-prefix.pch */, - B4FB0B2061538AF85A645E46144C165E /* LanguageManager-iOS-umbrella.h */, - F8B631781C259577E740092CCABE2524 /* LanguageManager-iOS.debug.xcconfig */, - 7B644290B6D9F86A8ED1A4BD89048622 /* LanguageManager-iOS.release.xcconfig */, + 840FA0B75AF62912A30DDC66B647ED98 /* CoreGraphics.framework */, + 79CF7D56C5D50C18B2EA0ED106D998C7 /* Foundation.framework */, + A42DBD2F42D55606EEBA514009498B87 /* QuartzCore.framework */, + 04D60AC13D33197690A05C641925DDDA /* UIKit.framework */, ); - name = "Support Files"; - path = "../Target Support Files/LanguageManager-iOS"; + name = iOS; sourceTree = "<group>"; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 11370304D07B86BF4935D7D5A612503A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 743ED1DCEC16DC2E7FAD8FBDD276EC8F /* ImagePicker-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 1E7BDC089B22E2F58EEE97E5CC40B0DB /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -828,19 +657,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 211899624B27CA27C32E9D5E3F1A3894 /* Headers */ = { + 77150D3DA409E22AAAE3AC967B0FDC17 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6F9D8C942D968A408F1B9370EC7F7B29 /* Pods-MiniScanner-umbrella.h in Headers */, + 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 77150D3DA409E22AAAE3AC967B0FDC17 /* Headers */ = { + 9688B1DAE539B425A1E0A4BE46431ABA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 3573FA382FBE08F99039CED491DB9FF0 /* IQKeyboardManagerSwift-umbrella.h in Headers */, + 406C6D43D8E8BF47FCD42AACC6212AB3 /* Pods-MiniScanner-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -872,25 +701,6 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 01CB8D6098C21E12CE735619344DE81E /* ImagePicker */ = { - isa = PBXNativeTarget; - buildConfigurationList = CE3A25ED647A443AB573ACE0764C0105 /* Build configuration list for PBXNativeTarget "ImagePicker" */; - buildPhases = ( - 11370304D07B86BF4935D7D5A612503A /* Headers */, - 2B626AFFE9BD7779C34A93A510CE1073 /* Sources */, - 2067457DB9BF3FC9BFE99C90B602174A /* Frameworks */, - 500BEBDB28E9B664CEB4A237CBAE1EC8 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 902522B1F05D41B97C492EDE4C6225FE /* PBXTargetDependency */, - ); - name = ImagePicker; - productName = ImagePicker; - productReference = 987CD19BC0CE18F2E00B0AD5ABF8670D /* ImagePicker */; - productType = "com.apple.product-type.framework"; - }; 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */ = { isa = PBXNativeTarget; buildConfigurationList = E72F7AA6A99974A3F5B74D95CB9A76A6 /* Build configuration list for PBXNativeTarget "EPSignature" */; @@ -906,50 +716,32 @@ ); name = EPSignature; productName = EPSignature; - productReference = 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature */; + productReference = 3DFAC6F70B9CECADF5873F487AF082BA /* EPSignature.framework */; productType = "com.apple.product-type.framework"; }; 4372AB6A3C495222906A1ABFD39A4463 /* Pods-MiniScanner */ = { isa = PBXNativeTarget; - buildConfigurationList = B82A7B1871A4545D6741D3C2BFB0C686 /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */; + buildConfigurationList = EA9FDD23109C48E770C9EEBD600AABD1 /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */; buildPhases = ( - 211899624B27CA27C32E9D5E3F1A3894 /* Headers */, - C41D18AD2AF8EF0982FED7B4B45C1055 /* Sources */, - EF61C2D35FBBDBB90DA611BD946C82F9 /* Frameworks */, - 42BB23FD6ABD8A26B86919444B67C1B0 /* Resources */, + 9688B1DAE539B425A1E0A4BE46431ABA /* Headers */, + C035621C77CD54FFCF70AC5A79596F95 /* Sources */, + 40C1F40F133F6FF17C44746C863B5192 /* Frameworks */, + 89ABB078EAF754BC4AFCAB12A269EAF0 /* Resources */, ); buildRules = ( ); dependencies = ( - 468B1FAD34876E459931EDBAA94B6BEF /* PBXTargetDependency */, - 9E5D68421786E987F9AB1E093E2CACDA /* PBXTargetDependency */, - E79445B940FC293317B0283BBF0AAB6F /* PBXTargetDependency */, - 19D16BB2AE0A47F59157AB8526FD2F58 /* PBXTargetDependency */, - CAB2124C9411765B8D19E576C34F45BE /* PBXTargetDependency */, - 6FA02B07A8C67081909359632C54015C /* PBXTargetDependency */, + DA86F778CFE28FBF1DD936F8B0479EBF /* PBXTargetDependency */, + C5AE9DBD369F8FBCA793EB2B8226B910 /* PBXTargetDependency */, + 9F105111851B9D5BA3FD125F46E4EB65 /* PBXTargetDependency */, + 489B4072B473E1439075B76D20F2720E /* PBXTargetDependency */, + B24BF4BBD1026E34755F9B60581D09C2 /* PBXTargetDependency */, ); name = "Pods-MiniScanner"; productName = Pods_MiniScanner; - productReference = 3438B9790556194C521D4C9806D29C85 /* Pods-MiniScanner */; + productReference = 3438B9790556194C521D4C9806D29C85 /* Pods_MiniScanner.framework */; productType = "com.apple.product-type.framework"; }; - 614D1818852890AC7D3CDF68D512C370 /* ImagePicker-ImagePicker */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8C96A43530B4D85390D577906027863F /* Build configuration list for PBXNativeTarget "ImagePicker-ImagePicker" */; - buildPhases = ( - A45CB658FC3D14E66741C4630DBAD76C /* Sources */, - 9EA96546523C27F883EF2FB2C503320D /* Frameworks */, - 6669694B635FD78F1DE1BE70E5B52884 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "ImagePicker-ImagePicker"; - productName = ImagePicker; - productReference = 97AA160F23F0CBEDDAF212103E762FC7 /* ImagePicker-ImagePicker */; - productType = "com.apple.product-type.bundle"; - }; 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */ = { isa = PBXNativeTarget; buildConfigurationList = 5D7A5BCA6DF599B98DA57AB77B8B2795 /* Build configuration list for PBXNativeTarget "NBBottomSheet" */; @@ -965,7 +757,7 @@ ); name = NBBottomSheet; productName = NBBottomSheet; - productReference = 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet */; + productReference = 91BC4F27F2DA380ABC44B3609495F0E1 /* NBBottomSheet.framework */; productType = "com.apple.product-type.framework"; }; 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */ = { @@ -983,16 +775,16 @@ ); name = "LanguageManager-iOS"; productName = LanguageManager_iOS; - productReference = 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager-iOS */; + productReference = 6473C16F43F7217C13AEA5FBA6C8247F /* LanguageManager_iOS.framework */; productType = "com.apple.product-type.framework"; }; 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = E9F523CB7F35862D3E3786784888B015 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */; + buildConfigurationList = 6924C0AA178C5738938728902883FFFA /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */; buildPhases = ( - 177ED166146F1BD1AB4935A876A945A2 /* Sources */, - 069185D987B201809AC160F03A5B3195 /* Frameworks */, - 0F87BFC9B32A23FDAA371CB5EE58F823 /* Resources */, + 7E4C7B217DA05EC736E62A578172F406 /* Sources */, + 27E0FFA673621C4812A3375293BC5FAB /* Frameworks */, + 1EECF59ADC1700D08A6D2E524249B91D /* Resources */, ); buildRules = ( ); @@ -1000,7 +792,7 @@ ); name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; productName = IQKeyboardManagerSwift; - productReference = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; + productReference = 8D8069D3964814114ACEC3084C010B59 /* IQKeyboardManagerSwift.bundle */; productType = "com.apple.product-type.bundle"; }; B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */ = { @@ -1015,11 +807,11 @@ buildRules = ( ); dependencies = ( - BFE8992DDC28E4686EBA676AFFDCE044 /* PBXTargetDependency */, + A02219F45651BD514A182758E8C9D90B /* PBXTargetDependency */, ); name = IQKeyboardManagerSwift; productName = IQKeyboardManagerSwift; - productReference = A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift */; + productReference = A8E950A16D00F649C54FFB30F81D7842 /* IQKeyboardManagerSwift.framework */; productType = "com.apple.product-type.framework"; }; B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */ = { @@ -1034,20 +826,20 @@ buildRules = ( ); dependencies = ( - A817492A0E07763AE9E9CEB95874EB33 /* PBXTargetDependency */, + 99F61AD05BEDECF528083C8066B6031C /* PBXTargetDependency */, ); name = "Toast-Swift"; productName = Toast_Swift; - productReference = D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast-Swift */; + productReference = D6043471C96F93DC41F7DD1E0D7D8B35 /* Toast_Swift.framework */; productType = "com.apple.product-type.framework"; }; C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */ = { isa = PBXNativeTarget; - buildConfigurationList = F57789B0722F33D1CFA6AE9A32A5991C /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */; + buildConfigurationList = 9B7EB84F8E066F35F12B01B223B61F74 /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */; buildPhases = ( - 22832EE1DC479BE6EF746859048AC879 /* Sources */, - B7F22B9EDB9FA900F797BA30F0774DCB /* Frameworks */, - 67ACD3B4B5D35AFCFF080FF53847B35B /* Resources */, + 85DA37F4BAECFBFF04EBB5DCEAC3E2A2 /* Sources */, + 7EDDF1BAD5AA24016F6D7F1DBA20E165 /* Frameworks */, + A3D211975B11041FCC28D19FFF29D523 /* Resources */, ); buildRules = ( ); @@ -1055,7 +847,7 @@ ); name = "Toast-Swift-Toast-Swift"; productName = "Toast-Swift"; - productReference = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift-Toast-Swift */; + productReference = 13FD39576595D8A884BF5166065C5236 /* Toast-Swift.bundle */; productType = "com.apple.product-type.bundle"; }; /* End PBXNativeTarget section */ @@ -1076,13 +868,11 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 7B87473A37937F5F38EB183E7A75C151 /* Products */; + productRefGroup = 494D249A120593AF7B49E894F3C94890 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */, - 01CB8D6098C21E12CE735619344DE81E /* ImagePicker */, - 614D1818852890AC7D3CDF68D512C370 /* ImagePicker-ImagePicker */, B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */, 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */, 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */, @@ -1095,11 +885,11 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 0F87BFC9B32A23FDAA371CB5EE58F823 /* Resources */ = { + 1EECF59ADC1700D08A6D2E524249B91D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F41974A73F0409847E3272A90832366C /* PrivacyInfo.xcprivacy in Resources */, + 936474D511253F7D3A4B2D4539134319 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1110,56 +900,34 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 42BB23FD6ABD8A26B86919444B67C1B0 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 4A72A323CCD420112722EDFB4439C184 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift-IQKeyboardManagerSwift in Resources */, + 4CDBAE55660ED186441E9E4EDE6B3D31 /* IQKeyboardManagerSwift.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 500BEBDB28E9B664CEB4A237CBAE1EC8 /* Resources */ = { + 7F8929911997B177FECDE1757E47C40B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1BBD42E84E62842B6EA186CEF24BBF45 /* ImagePicker-ImagePicker in Resources */, + 1A7787DB0275CF4A44CA312DD3BA5D33 /* EPSignatureViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 6669694B635FD78F1DE1BE70E5B52884 /* Resources */ = { + 89ABB078EAF754BC4AFCAB12A269EAF0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 40D3B7212B9FC40CE3445143938A5679 /* AUTO@3x.png in Resources */, - 42592EF79D0A81B77812AC496508ACAA /* cameraIcon@3x.png in Resources */, - 14FA8541FCF824824EBDDBD21B712DE8 /* focusIcon@3x.png in Resources */, - 557A1655974B507ED20F35CF59C65BAF /* OFF@3x.png in Resources */, - B7E0FCF3222880B9CDBABD576D3D348A /* ON@3x.png in Resources */, - C1BDE472EF622F6F59660C63EAF16578 /* selectedImageGallery@3x.png in Resources */, - 9A07A2503A858418B33E94591CE13F17 /* video@3x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 67ACD3B4B5D35AFCFF080FF53847B35B /* Resources */ = { + A3D211975B11041FCC28D19FFF29D523 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - D3A3B25E1A86845B4E10D35D8FD06ED9 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7F8929911997B177FECDE1757E47C40B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1A7787DB0275CF4A44CA312DD3BA5D33 /* EPSignatureViewController.xib in Resources */, + D5C60EA45AA7DFAD2BDD3500400D8E55 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1174,7 +942,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 237A96A092EA5A5B0CB41160BEA22E16 /* Toast-Swift-Toast-Swift in Resources */, + 237A96A092EA5A5B0CB41160BEA22E16 /* Toast-Swift.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1190,46 +958,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 177ED166146F1BD1AB4935A876A945A2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 22832EE1DC479BE6EF746859048AC879 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2B626AFFE9BD7779C34A93A510CE1073 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECFE64B0759EFA4F555994B6CDCED624 /* AssetManager.swift in Sources */, - 784DF7F278DC988FEEECB999A9ADFCBB /* BottomContainerView.swift in Sources */, - 7DB7E0E519A315B78D72BF7C63C64E30 /* ButtonPicker.swift in Sources */, - 1BBED45FEDD4AF437A762909E4937019 /* CameraMan.swift in Sources */, - 829A79A8C324697D5A619C029AEB0063 /* CameraView.swift in Sources */, - F2ED9C9337B84D1E42E67BF7F7DAD72C /* Configuration.swift in Sources */, - 38FD95DCC2D02D5B78BE9AEE48DBDF25 /* ConstraintsSetup.swift in Sources */, - 1D5090C638CFC6ABA603A73B2D890CC7 /* Helper.swift in Sources */, - 6FAA62F8C663AAEDAB170956E9A298CC /* ImageGalleryLayout.swift in Sources */, - FF8C6AC907C8F4B527F9A0CBDBCC7F92 /* ImageGalleryView.swift in Sources */, - 1021FCA162D086E55DE8D6926F8DA215 /* ImageGalleryViewCell.swift in Sources */, - 3806469B2739BBFA16083760004ED9B4 /* ImageGalleryViewDataSource.swift in Sources */, - CA8CFC49D2338D41DA4E83F941867CEB /* ImagePicker-dummy.m in Sources */, - 50374D59C8ED3AE3E41C30F25859F981 /* ImagePickerController.swift in Sources */, - 028F3BD1F76536182769D7FA2BB26457 /* ImageStack.swift in Sources */, - F2AF558F96F3C43C3E4C747E45E5637C /* LocationManager.swift in Sources */, - B0E87F4E370B3A0CD14B50D219AE7B0B /* StackView.swift in Sources */, - 267C4C6C182CC853990C78F13C5318CE /* TopView.swift in Sources */, - 1948830F0F143F2897657B9D75895EFA /* VideoInfoView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 335F86AE3E21D4BDAD21A4F79F2DA8F9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1281,29 +1009,36 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8EEA81B91A60569A50462CD682F8978C /* Sources */ = { + 7E4C7B217DA05EC736E62A578172F406 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EA280E998F6C42AE8492336F762F92D5 /* EPExtensions.swift in Sources */, - 93C0AD77AB416AE90A6BD03E44A9B684 /* EPSignature-dummy.m in Sources */, - CA6D6333D723B4391BD689F68FCF23DF /* EPSignatureView.swift in Sources */, - A4AE2538C33D06CB8C70D5FF35A65D98 /* EPSignatureViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - A45CB658FC3D14E66741C4630DBAD76C /* Sources */ = { + 85DA37F4BAECFBFF04EBB5DCEAC3E2A2 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C41D18AD2AF8EF0982FED7B4B45C1055 /* Sources */ = { + 8EEA81B91A60569A50462CD682F8978C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0D92995ED774F4E8488DE6D1F4D4CC87 /* Pods-MiniScanner-dummy.m in Sources */, + EA280E998F6C42AE8492336F762F92D5 /* EPExtensions.swift in Sources */, + 93C0AD77AB416AE90A6BD03E44A9B684 /* EPSignature-dummy.m in Sources */, + CA6D6333D723B4391BD689F68FCF23DF /* EPSignatureView.swift in Sources */, + A4AE2538C33D06CB8C70D5FF35A65D98 /* EPSignatureViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C035621C77CD54FFCF70AC5A79596F95 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1D9697229D2BB639F45F2E5A5AA84339 /* Pods-MiniScanner-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1343,118 +1078,54 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 19D16BB2AE0A47F59157AB8526FD2F58 /* PBXTargetDependency */ = { + 489B4072B473E1439075B76D20F2720E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NBBottomSheet; + target = 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */; + targetProxy = 6CE140EA6796A6463750B03A97D4646C /* PBXContainerItemProxy */; + }; + 99F61AD05BEDECF528083C8066B6031C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Toast-Swift-Toast-Swift"; + target = C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */; + targetProxy = 408B5A906043361A78BF7FA8B9F9254F /* PBXContainerItemProxy */; + }; + 9F105111851B9D5BA3FD125F46E4EB65 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "LanguageManager-iOS"; target = 75F1EA88CB9544AB5CBE20DEC9A011AE /* LanguageManager-iOS */; - targetProxy = DC00E61911BECBD44AD03666ABE5766F /* PBXContainerItemProxy */; + targetProxy = 1A0FF17F30C645BA28AEC25F294F8478 /* PBXContainerItemProxy */; }; - 468B1FAD34876E459931EDBAA94B6BEF /* PBXTargetDependency */ = { + A02219F45651BD514A182758E8C9D90B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = EPSignature; - target = 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */; - targetProxy = EDA903FA148D63AAD0DCB3E2E76E5F9E /* PBXContainerItemProxy */; + name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; + target = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; + targetProxy = 4D0E33AD6195F9EE17056A6B846B0183 /* PBXContainerItemProxy */; }; - 6FA02B07A8C67081909359632C54015C /* PBXTargetDependency */ = { + B24BF4BBD1026E34755F9B60581D09C2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Toast-Swift"; target = B990BD87169C76A3ED3FE8A9258D91A3 /* Toast-Swift */; - targetProxy = DF9BB083B1ADDADD655B884FB3F1206F /* PBXContainerItemProxy */; + targetProxy = 7A64926938BE39B1B50E2DC0BE40E5CB /* PBXContainerItemProxy */; }; - 902522B1F05D41B97C492EDE4C6225FE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "ImagePicker-ImagePicker"; - target = 614D1818852890AC7D3CDF68D512C370 /* ImagePicker-ImagePicker */; - targetProxy = 1F245D5023512CA13BF131DF3BE2F569 /* PBXContainerItemProxy */; - }; - 9E5D68421786E987F9AB1E093E2CACDA /* PBXTargetDependency */ = { + C5AE9DBD369F8FBCA793EB2B8226B910 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = IQKeyboardManagerSwift; target = B490E7485944099E16C9CBD79119D1D4 /* IQKeyboardManagerSwift */; - targetProxy = C205777C53E1CE623400BA653BE42F72 /* PBXContainerItemProxy */; + targetProxy = 1BAE0F5A5F69E6929067AA1E681B69FE /* PBXContainerItemProxy */; }; - A817492A0E07763AE9E9CEB95874EB33 /* PBXTargetDependency */ = { + DA86F778CFE28FBF1DD936F8B0479EBF /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Toast-Swift-Toast-Swift"; - target = C344E85893FCDEE5B70436E0A4A3472B /* Toast-Swift-Toast-Swift */; - targetProxy = 20C35DA82C85CF6788DD8065BC481B9E /* PBXContainerItemProxy */; - }; - BFE8992DDC28E4686EBA676AFFDCE044 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "IQKeyboardManagerSwift-IQKeyboardManagerSwift"; - target = 982A68D37F5DCBC1FC1FDC0BB2F0EB8E /* IQKeyboardManagerSwift-IQKeyboardManagerSwift */; - targetProxy = 3F00138FAC4ECA9E49CEABF22BD19BE1 /* PBXContainerItemProxy */; - }; - CAB2124C9411765B8D19E576C34F45BE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NBBottomSheet; - target = 727C2007A89D1AD73613E3E2E22998E5 /* NBBottomSheet */; - targetProxy = E5994A8B30F194C0AE4142C721F4D444 /* PBXContainerItemProxy */; - }; - E79445B940FC293317B0283BBF0AAB6F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ImagePicker; - target = 01CB8D6098C21E12CE735619344DE81E /* ImagePicker */; - targetProxy = A29E541340C3A517481C239535FE1FFC /* PBXContainerItemProxy */; + name = EPSignature; + target = 3CAF5EBFE5D1550CFF58AEC93594990A /* EPSignature */; + targetProxy = 265A00EE6B5BB96B3AC8FC0C13BA90B9 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 14B1875942CF1804DD2E8E3AE9EB1F2F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 98E748ED3D0F64389C49C75123E6D605 /* ImagePicker.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ImagePicker"; - IBSC_MODULE = ImagePicker; - INFOPLIST_FILE = "Target Support Files/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = ImagePicker; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 21302220AA8668082E71583ECE31B7CA /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 98E748ED3D0F64389C49C75123E6D605 /* ImagePicker.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/ImagePicker/ImagePicker-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ImagePicker/ImagePicker-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/ImagePicker/ImagePicker.modulemap"; - PRODUCT_MODULE_NAME = ImagePicker; - PRODUCT_NAME = ImagePicker; - 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; - }; 335888624B863A53F482B2E5A5CB861C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 67DA8FCED4F75B1734C7991B3CD1D07A /* Toast-Swift.debug.xcconfig */; + baseConfigurationReference = 45DD2EA0D7026E816EA7C75B9937309F /* Toast-Swift.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1468,7 +1139,7 @@ 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; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1487,42 +1158,7 @@ }; name = Debug; }; - 39440596D0B39AE8ECC2717121684FEC /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7B644290B6D9F86A8ED1A4BD89048622 /* 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; - }; - 3F7374818C189A52B28FE1A6E8223AF4 /* Debug */ = { + 3365292A7B6310F9E47A806D7858BF35 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7CC191E7994C3C7161A6641B457C9166 /* Pods-MiniScanner.debug.xcconfig */; buildSettings = { @@ -1559,46 +1195,27 @@ }; name = Debug; }; - 40133D3EB8F5F41DEF101CB7F221DB6B /* Debug */ = { + 362181FFCC66469CD12A50F910F838AF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CABC85618DA577110C2173F220799855 /* EPSignature.debug.xcconfig */; + baseConfigurationReference = 5F4DA4A1313C3DBDEEA0B97DBD17DE03 /* Toast-Swift.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/EPSignature/EPSignature-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/EPSignature/EPSignature-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/EPSignature/EPSignature.modulemap"; - PRODUCT_MODULE_NAME = EPSignature; - PRODUCT_NAME = EPSignature; + 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 = 15.0; + 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 = ""; + WRAPPER_EXTENSION = bundle; }; - name = Debug; + name = Release; }; - 4CA8F85A578C990F1D131F788DAB9C37 /* Release */ = { + 39440596D0B39AE8ECC2717121684FEC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.release.xcconfig */; + baseConfigurationReference = F36B6550A8DA1C92B8180E63E5F96179 /* LanguageManager-iOS.release.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*]" = ""; @@ -1607,7 +1224,8 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner-Info.plist"; + 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 = 15.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -1615,15 +1233,13 @@ "@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)"; + 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"; @@ -1631,9 +1247,9 @@ }; name = Release; }; - 57F5390C26CAC63BC7DC9F3A897AD41C /* Debug */ = { + 40133D3EB8F5F41DEF101CB7F221DB6B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4A12290BE7726329C06345F8A5C10597 /* ImagePicker.debug.xcconfig */; + baseConfigurationReference = 537BBBC0CBE54532981446B3953A1207 /* EPSignature.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1643,18 +1259,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/ImagePicker/ImagePicker-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ImagePicker/ImagePicker-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/EPSignature/EPSignature-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/EPSignature/EPSignature-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/ImagePicker/ImagePicker.modulemap"; - PRODUCT_MODULE_NAME = ImagePicker; - PRODUCT_NAME = ImagePicker; + MODULEMAP_FILE = "Target Support Files/EPSignature/EPSignature.modulemap"; + PRODUCT_MODULE_NAME = EPSignature; + PRODUCT_NAME = EPSignature; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -1667,7 +1283,7 @@ }; 587F6847DBCBE9579002441D0DB73E24 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 03DD32D0BF8FB60836D128D957D391C9 /* Toast-Swift.release.xcconfig */; + baseConfigurationReference = 5F4DA4A1313C3DBDEEA0B97DBD17DE03 /* Toast-Swift.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1681,7 +1297,7 @@ 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; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1701,33 +1317,33 @@ }; name = Release; }; - 64E43AF4EB03E9F8165A31D02D5DA443 /* Debug */ = { + 6ECBB40B097BB17CD4F9B5BCCA90474F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4A12290BE7726329C06345F8A5C10597 /* ImagePicker.debug.xcconfig */; + baseConfigurationReference = F49E60227D31D17E0FAED77A717FCE85 /* IQKeyboardManagerSwift.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ImagePicker"; - IBSC_MODULE = ImagePicker; - INFOPLIST_FILE = "Target Support Files/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = ImagePicker; + 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 = 15.0; + PRODUCT_NAME = IQKeyboardManagerSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; + name = Release; }; - 73C3CC60B832308C2ADE4081B8425C32 /* Debug */ = { + 73A52CACF89123D40B4CBD3F7E70B5BF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3982F8FEE14ABCE3B3809CE0F403E03 /* IQKeyboardManagerSwift.debug.xcconfig */; + baseConfigurationReference = 45DD2EA0D7026E816EA7C75B9937309F /* Toast-Swift.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; + 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 = 15.0; + PRODUCT_NAME = "Toast-Swift"; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1737,7 +1353,7 @@ }; 8C7488EEB2FF7D44EDD6A1FBA48C75CC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D14C906F62323F257FCAC14C18AB2F1E /* EPSignature.release.xcconfig */; + baseConfigurationReference = CC637D89CCDB084F9E4800A7DE741326 /* EPSignature.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1750,7 +1366,7 @@ GCC_PREFIX_HEADER = "Target Support Files/EPSignature/EPSignature-prefix.pch"; INFOPLIST_FILE = "Target Support Files/EPSignature/EPSignature-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1836,23 +1452,6 @@ }; name = Debug; }; - 91ABE37F856CA9B897C0A7136C50F490 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 67DA8FCED4F75B1734C7991B3CD1D07A /* 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; - }; 9553C89E183877A5CB2F3C6801BEC129 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1915,26 +1514,9 @@ }; name = Release; }; - A3444ACB1257EF6F621EDD9B5D48B62E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 03DD32D0BF8FB60836D128D957D391C9 /* 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; - }; A73A28CEE205ACFB6072250615C7D39D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F8B631781C259577E740092CCABE2524 /* LanguageManager-iOS.debug.xcconfig */; + baseConfigurationReference = 0B540D7EB497DDDE9DD9B89449ED9181 /* LanguageManager-iOS.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1947,7 +1529,7 @@ 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; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -1968,7 +1550,7 @@ }; B3CF11682A60F02B60820C17EE93D35E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3982F8FEE14ABCE3B3809CE0F403E03 /* IQKeyboardManagerSwift.debug.xcconfig */; + baseConfigurationReference = B523C4AC55A9DA57DFF0678DBDA36CAB /* IQKeyboardManagerSwift.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1982,7 +1564,7 @@ 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; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2003,7 +1585,7 @@ }; B89AE063F35BBC5F3358209AF37E6D16 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AC4DD45005A4D5A9ED08B9005CC9DA4B /* NBBottomSheet.debug.xcconfig */; + baseConfigurationReference = 2A814EDEC6572ABC3F94BA0E7E889D8B /* NBBottomSheet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2016,7 +1598,7 @@ GCC_PREFIX_HEADER = "Target Support Files/NBBottomSheet/NBBottomSheet-prefix.pch"; INFOPLIST_FILE = "Target Support Files/NBBottomSheet/NBBottomSheet-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2035,9 +1617,26 @@ }; name = Debug; }; + BE9A6A9A4A668B520291D4C3892A57BB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B523C4AC55A9DA57DFF0678DBDA36CAB /* 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 = 15.0; + PRODUCT_NAME = IQKeyboardManagerSwift; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; C15C4E31ADF19556825A2743AEF62A77 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 63CF4CB6581E3400CB208D3E8A166BEF /* IQKeyboardManagerSwift.release.xcconfig */; + baseConfigurationReference = F49E60227D31D17E0FAED77A717FCE85 /* IQKeyboardManagerSwift.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2051,7 +1650,7 @@ 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; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2071,26 +1670,47 @@ }; name = Release; }; - F39875FAA6E25812777C4BE1F9EDADAD /* Release */ = { + C4A851E4BD8DCBD2790051A20ADA32F7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 63CF4CB6581E3400CB208D3E8A166BEF /* IQKeyboardManagerSwift.release.xcconfig */; + baseConfigurationReference = 798C61760B9BC4B07BC60D42FCC09855 /* Pods-MiniScanner.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; + 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"; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; F8AD79C5141E28EAE67B8011B5C3B8F5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 099E4FB694B786AC923DF85EB9E89F83 /* NBBottomSheet.release.xcconfig */; + baseConfigurationReference = 4FE4CD16723823EE08BA397637777409 /* NBBottomSheet.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -2103,7 +1723,7 @@ GCC_PREFIX_HEADER = "Target Support Files/NBBottomSheet/NBBottomSheet-prefix.pch"; INFOPLIST_FILE = "Target Support Files/NBBottomSheet/NBBottomSheet-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2171,29 +1791,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8C96A43530B4D85390D577906027863F /* Build configuration list for PBXNativeTarget "ImagePicker-ImagePicker" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 64E43AF4EB03E9F8165A31D02D5DA443 /* Debug */, - 14B1875942CF1804DD2E8E3AE9EB1F2F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B82A7B1871A4545D6741D3C2BFB0C686 /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */ = { + 6924C0AA178C5738938728902883FFFA /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3F7374818C189A52B28FE1A6E8223AF4 /* Debug */, - 4CA8F85A578C990F1D131F788DAB9C37 /* Release */, + BE9A6A9A4A668B520291D4C3892A57BB /* Debug */, + 6ECBB40B097BB17CD4F9B5BCCA90474F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CE3A25ED647A443AB573ACE0764C0105 /* Build configuration list for PBXNativeTarget "ImagePicker" */ = { + 9B7EB84F8E066F35F12B01B223B61F74 /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - 57F5390C26CAC63BC7DC9F3A897AD41C /* Debug */, - 21302220AA8668082E71583ECE31B7CA /* Release */, + 73A52CACF89123D40B4CBD3F7E70B5BF /* Debug */, + 362181FFCC66469CD12A50F910F838AF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -2207,20 +1818,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E9F523CB7F35862D3E3786784888B015 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift-IQKeyboardManagerSwift" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 73C3CC60B832308C2ADE4081B8425C32 /* Debug */, - F39875FAA6E25812777C4BE1F9EDADAD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - F57789B0722F33D1CFA6AE9A32A5991C /* Build configuration list for PBXNativeTarget "Toast-Swift-Toast-Swift" */ = { + EA9FDD23109C48E770C9EEBD600AABD1 /* Build configuration list for PBXNativeTarget "Pods-MiniScanner" */ = { isa = XCConfigurationList; buildConfigurations = ( - 91ABE37F856CA9B897C0A7136C50F490 /* Debug */, - A3444ACB1257EF6F621EDD9B5D48B62E /* Release */, + 3365292A7B6310F9E47A806D7858BF35 /* Debug */, + C4A851E4BD8DCBD2790051A20ADA32F7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImagePicker-ImagePicker.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImagePicker-ImagePicker.xcscheme deleted file mode 100644 index 55930cb7b8bf60d32396da87d978089b183c5aa7..0000000000000000000000000000000000000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImagePicker-ImagePicker.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 = "614D1818852890AC7D3CDF68D512C370" - BuildableName = "ImagePicker.bundle" - BlueprintName = "ImagePicker-ImagePicker" - 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/ImagePicker.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImagePicker.xcscheme deleted file mode 100644 index b6a143e01e1f8994b8f327be629bc3111c352fda..0000000000000000000000000000000000000000 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/ImagePicker.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 = "01CB8D6098C21E12CE735619344DE81E" - BuildableName = "ImagePicker.framework" - BlueprintName = "ImagePicker" - 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 686046da27d15ecacd95017832f49cdeb679c0d6..5ed0e96136268e502d93dc44d9ca568365f2cd26 100644 --- a/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Pods/Pods.xcodeproj/xcuserdata/g.makhoul.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,27 +12,13 @@ <integer>0</integer> </dict> <key>IQKeyboardManagerSwift-IQKeyboardManagerSwift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>4</integer> - </dict> - <key>IQKeyboardManagerSwift.xcscheme</key> - <dict> - <key>isShown</key> - <false/> - <key>orderHint</key> - <integer>3</integer> - </dict> - <key>ImagePicker-ImagePicker.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> <integer>2</integer> </dict> - <key>ImagePicker.xcscheme</key> + <key>IQKeyboardManagerSwift.xcscheme</key> <dict> <key>isShown</key> <false/> @@ -44,35 +30,35 @@ <key>isShown</key> <false/> <key>orderHint</key> - <integer>5</integer> + <integer>3</integer> </dict> <key>NBBottomSheet.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>6</integer> + <integer>4</integer> </dict> <key>Pods-MiniScanner.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>7</integer> + <integer>5</integer> </dict> <key>Toast-Swift-Toast-Swift.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>9</integer> + <integer>7</integer> </dict> <key>Toast-Swift.xcscheme</key> <dict> <key>isShown</key> <false/> <key>orderHint</key> - <integer>8</integer> + <integer>6</integer> </dict> </dict> <key>SuppressBuildableAutocreation</key> diff --git a/Pods/TLPhotoPicker/LICENSE b/Pods/TLPhotoPicker/LICENSE deleted file mode 100644 index 2d3f131252424de0a9a7254bde558f0c52880d43..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2017 wade.hawk <junhyi.park@gmail.com> - -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/TLPhotoPicker/README.md b/Pods/TLPhotoPicker/README.md deleted file mode 100644 index e5987538ed1faf9cbff9f37782abf9b28096ca4b..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/README.md +++ /dev/null @@ -1,408 +0,0 @@ -<img src="./Images/tlphotologo.png"> - -[](http://cocoapods.org/pods/TLPhotoPicker) -[](http://cocoapods.org/pods/TLPhotoPicker) -[](http://cocoapods.org/pods/TLPhotoPicker) - - -## Written in Swift 5.0 - -TLPhotoPicker enables application to pick images and videos from multiple smart album in iOS, similar to the current facebook app. - -## Demo 🙉 - -| Facebook Picker | TLPhotoPicker | -| ------------- | ------------- | -|  |  | - -## Features - -- support smart album collection. - - camera roll, selfies, panoramas, favorites, videos, custom users album -- selected order index. -- playback video and live photos. - - just one. playback first video or live Photo in bounds of visible cell. -- display video duration. -- async phasset request and displayed cell. - - scrolling performance is better than facebook in displaying video assets collection. -- custom cell -- custom display and selection rules -- reload of changes that occur in the Photos library. -- support iCloud Photo Library -- adds long press preview to images. ( to @smeshko ) [Preview](https://github.com/tilltue/TLPhotoPicker/pull/252#issue-362005178) - -| Smart album collection | LivePhotoCell | VideoPhotoCell | PhotoCell | CustomCell(instagram) | -| ------------- | ------------- | ------------- | ------------- | ------------- | -|  |  |  |  |  | - -Custom Camera Cell - -| Live CameraCell | -| ------------- | -|  - -## Installation - -### Requirements - -- Swift 5.0 ( Swift 4.2 -> use 'version 1.8.3' ) -- iOS 9.1 (for use live photos) - -### Cocoapods - -TLPhotoPicker is available through [CocoaPods](http://cocoapods.org). To install -it, simply add the following line to your Podfile: - -```ruby -platform :ios, '9.1' -pod "TLPhotoPicker" -``` - -### Carthage - -Carthage is a simple, decentralized dependency manager for Cocoa. - -Specify TLPhotoPicker into your project's Cartfile: - -``` -github "tilltue/TLPhotoPicker" -``` - -### Swift Package Manager - -The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. It is in early development, but TLPhotoPicker does support its use on supported platforms. - -Once you have your Swift package set up, adding Alamofire as a dependency is as easy as adding it to the dependencies value of your Package.swift. - -``` -dependencies: [ - .package(url: "https://github.com/tilltue/TLPhotoPicker.git", .upToNextMajor(from: "2.1.0")) -] -``` - -> Don't forget the Privacy Description in `info.plist`. -<img src="./Images/Privacy.png"> - -> iOS 14 -> You can suppress the automatic prompting from the system by setting this key to yes in your apps info plist. -> PHPhotoLibraryPreventAutomaticLimitedAccessAlert = YES -https://developer.apple.com/videos/play/wwdc2020/10641/ - -## Usage - -**use delegate** - -You can choose delegate method or closure for handle picker event. - -```swift -class ViewController: UIViewController,TLPhotosPickerViewControllerDelegate { - var selectedAssets = [TLPHAsset]() - @IBAction func pickerButtonTap() { - let viewController = TLPhotosPickerViewController() - viewController.delegate = self - var configure = TLPhotosPickerConfigure() - //configure.nibSet = (nibName: "CustomCell_Instagram", bundle: Bundle.main) // If you want use your custom cell.. - self.present(viewController, animated: true, completion: nil) - } - //TLPhotosPickerViewControllerDelegate - func shouldDismissPhotoPicker(withTLPHAssets: [TLPHAsset]) -> Bool { - // use selected order, fullresolution image - self.selectedAssets = withTLPHAssets - return true - } - func dismissPhotoPicker(withPHAssets: [PHAsset]) { - // if you want to used phasset. - } - func photoPickerDidCancel() { - // cancel - } - func dismissComplete() { - // picker viewcontroller dismiss completion - } - func canSelectAsset(phAsset: PHAsset) -> Bool { - //Custom Rules & Display - //You can decide in which case the selection of the cell could be forbidden. - } - func didExceedMaximumNumberOfSelection(picker: TLPhotosPickerViewController) { - // exceed max selection - } - func handleNoAlbumPermissions(picker: TLPhotosPickerViewController) { - // handle denied albums permissions case - } - func handleNoCameraPermissions(picker: TLPhotosPickerViewController) { - // handle denied camera permissions case - } -} - -``` -**use closure** - -```swift - init(withPHAssets: (([PHAsset]) -> Void)? = nil, didCancel: ((Void) -> Void)? = nil) - init(withTLPHAssets: (([TLPHAsset]) -> Void)? = nil, didCancel: ((Void) -> Void)? = nil) - var canSelectAsset: ((PHAsset) -> Bool)? = nil - var didExceedMaximumNumberOfSelection: ((TLPhotosPickerViewController) -> Void)? = nil - var handleNoAlbumPermissions: ((TLPhotosPickerViewController) -> Void)? = nil - var handleNoCameraPermissions: ((TLPhotosPickerViewController) -> Void)? = nil - var dismissCompletion: (() -> Void)? = nil -``` -```swift -class ViewController: UIViewController,TLPhotosPickerViewControllerDelegate { - var selectedAssets = [TLPHAsset]() - @IBAction func pickerButtonTap() { - let viewController = TLPhotosPickerViewController(withTLPHAssets: { [weak self] (assets) in // TLAssets - self?.selectedAssets = assets - }, didCancel: nil) - viewController.didExceedMaximumNumberOfSelection = { [weak self] (picker) in - //exceed max selection - } - viewController.handleNoAlbumPermissions = { [weak self] (picker) in - // handle denied albums permissions case - } - viewController.handleNoCameraPermissions = { [weak self] (picker) in - // handle denied camera permissions case - } - viewController.selectedAssets = self.selectedAssets - self.present(viewController, animated: true, completion: nil) - } -} - -``` - -**Custom Cell** -Custom Cell must subclass TLPhotoCollectionViewCell -```Swift -class CustomCell_Instagram: TLPhotoCollectionViewCell { - -} - -//If you want custom camera cell? -//only used camera cell -[Sample](https://github.com/tilltue/TLPhotoPicker/blob/master/Example/TLPhotoPicker/CustomCameraCell.swift) - -//Adding the possibility to handle cell display according to a specific conditions -func update(with phAsset: PHAsset) -func selectedCell() -func willDisplayCell() -func endDisplayingCell() -``` - -**Custom Rules & Display** - -You can implement your own rules to handle the cell display. You can decide in which case the selection of the cell could be forbidden. - -For example, if you want to disable the selection of a cell if its width is under 300, you can follow these steps: - -- Override the update method of your custom cell and add your own display rule - -```swift -override func update(with phAsset: PHAsset) { - super.update(with: phAsset) - self.sizeRequiredOverlayView?.isHidden = !(phAsset.pixelHeight <= 300 && phAsset.pixelWidth <= 300) -} -``` -In this code, we show an overlay when the height and width required values are not satisified. - -- When you instanciate a `TLPhotosPickerViewController` subclass, you can pass a closure called `canSelectAsset` to handle the selection according to some rules. ( or delegate) - -```Swift -//use delegate -public protocol TLPhotosPickerViewControllerDelegate: class { - ... - func canSelectAsset(phAsset: PHAsset) -> Bool - ... -} - -extension UserViewController: TLPhotosPickerViewControllerDelegate { - func canSelectAsset(phAsset: PHAsset) -> Bool { - if asset.pixelHeight < 100 || asset.pixelWidth < 100 { - self?.showUnsatisifiedSizeAlert(vc: viewController) - return false - } - return true - } -} - -//or use closure -viewController.canSelectAsset = { [weak self] asset -> Bool in - if asset.pixelHeight < 100 || asset.pixelWidth < 100 { - self?.showUnsatisifiedSizeAlert(vc: viewController) - return false - } - return true -} -``` -In this code, we show an alert when the condition in the closure are not satisfiied. - -**TLPHAsset** - -```swift -public struct TLPHAsset { - public enum AssetType { - case photo,video,livePhoto - } - // phasset - public var phAsset: PHAsset? = nil - // selected order index - public var selectedOrder: Int = 0 - // asset type - public var type: AssetType - // get full resolution image - public var fullResolutionImage: UIImage? - // get photo file size (async) - public func photoSize(options: PHImageRequestOptions? = nil ,completion: @escaping ((Int)->Void), livePhotoVideoSize: Bool = false) - // get video file size (async) - public func videoSize(options: PHVideoRequestOptions? = nil, completion: @escaping ((Int)->Void)) - // get async icloud image (download) - @discardableResult - public func cloudImageDownload(progressBlock: @escaping (Double) -> Void, completionBlock:@escaping (UIImage?)-> Void ) -> PHImageRequestID? - // get original media file async copy temporary media file ( photo(png,gif...etc.) and video ) -> Don't forget, You should delete temporary file. - // parmeter : convertLivePhotosToJPG - // false : If you want mov file at live photos - // true : If you want png file at live photos ( HEIC ) - public func tempCopyMediaFile(videoRequestOptions: PHVideoRequestOptions? = nil, - imageRequestOptions: PHImageRequestOptions? = nil, - livePhotoRequestOptions: PHLivePhotoRequestOptions? = nil, - exportPreset: String = AVAssetExportPresetHighestQuality, - convertLivePhotosToJPG: Bool = false, - progressBlock:((Double) -> Void)? = nil, - completionBlock:@escaping ((URL,String) -> Void)) -> PHImageRequestID? - //Apparently, This is not the only way to export video. - //There is many way that export a video. - //This method was one of them. - public func exportVideoFile(options: PHVideoRequestOptions? = nil, - outputURL: URL? = nil, - outputFileType: AVFileType = .mov, - progressBlock:((Double) -> Void)? = nil, - completionBlock:@escaping ((URL,String) -> Void)) - // get original asset file name - public var originalFileName: String? -} -``` -> Note: convenience export method -> fullResolutionImage, cloudImageDownload, tempCopyMediaFile, exportVideoFile -> It's not enough if you wanted to use more complicated export asset options. ( progress, export type, etc..) - -## Customize - -```swift -let viewController = TLPhotosPickerViewController() -var configure = TLPhotosPickerConfigure() -viewController.configure = configure - -public struct TLPhotosPickerConfigure { - public var customLocalizedTitle: [String: String] = ["Camera Roll": "Camera Roll"] // Set [:] if you want use default localized title of album - public var tapHereToChange = "Tap here to change" - public var cancelTitle = "Cancel" - public var doneTitle = "Done" - public var emptyMessage = "No albums" - public var emptyImage: UIImage? = nil - public var usedCameraButton = true - public var usedPrefetch = false - public var previewAtForceTouch = false - public var allowedLivePhotos = true - public var allowedVideo = true - public var allowedAlbumCloudShared = false - public var allowedPhotograph = true // for camera : allow this option when you want to take a photos - public var allowedVideoRecording = true //for camera : allow this option when you want to recording video. - public var recordingVideoQuality: UIImagePickerControllerQualityType = .typeMedium //for camera : recording video quality - public var maxVideoDuration:TimeInterval? = nil //for camera : max video recording duration - public var autoPlay = true - public var muteAudio = true - public var preventAutomaticLimitedAccessAlert = true // newest iOS 14 - public var mediaType: PHAssetMediaType? = nil - public var numberOfColumn = 3 - public var minimumLineSpacing: CGFloat = 5 - public var minimumInteritemSpacing: CGFloat = 5 - public var singleSelectedMode = false - public var maxSelectedAssets: Int? = nil //default: inf - public var fetchOption: PHFetchOptions? = nil //default: creationDate - public var fetchCollectionOption: [FetchCollectionType: PHFetchOptions] = [:] - public var singleSelectedMode = false - public var selectedColor = UIColor(red: 88/255, green: 144/255, blue: 255/255, alpha: 1.0) - public var cameraBgColor = UIColor(red: 221/255, green: 223/255, blue: 226/255, alpha: 1) - public var cameraIcon = TLBundle.podBundleImage(named: "camera") - public var videoIcon = TLBundle.podBundleImage(named: "video") - public var placeholderIcon = TLBundle.podBundleImage(named: "insertPhotoMaterial") - public var nibSet: (nibName: String, bundle:Bundle)? = nil // custom cell - public var cameraCellNibSet: (nibName: String, bundle:Bundle)? = nil // custom camera cell - public var fetchCollectionTypes: [(PHAssetCollectionType,PHAssetCollectionSubtype)]? = nil - public var groupByFetch: PHFetchedResultGroupedBy? = nil // cannot be used prefetch options - public var supportedInterfaceOrientations: UIInterfaceOrientationMask = .portrait - public var popup: [PopupConfigure] = [] - public init() { - } -} - -//Related issue: https://github.com/tilltue/TLPhotoPicker/issues/201 -//e.g. -//let option = PHFetchOptions() -//configure.fetchCollectionOption[.assetCollections(.smartAlbum)] = option -//configure.fetchCollectionOption[.assetCollections(.album)] = option -//configure.fetchCollectionOption[.topLevelUserCollections] = option - -public enum FetchCollectionType { - case assetCollections(PHAssetCollectionType) - case topLevelUserCollections -} - -public enum PopupConfigure { - //Popup album view animation duration - case animation(TimeInterval) -} - -// PHFetchedResultGroupedBy -// -// CGrouped by date, cannot be used prefetch options -// take about few seconds ( 5000 image iPhoneX: 1 ~ 1.5 sec ) -public enum PHFetchedResultGroupedBy { - case year - case month - case week - case day - case hour - case custom(dateFormat: String) -} - -//customizable photos picker viewcontroller -class CustomPhotoPickerViewController: TLPhotosPickerViewController { - override func makeUI() { - super.makeUI() - self.customNavItem.leftBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: .stop, target: nil, action: #selector(customAction)) - } - func customAction() { - self.dismiss(animated: true, completion: nil) - } -} - -//for log -public protocol TLPhotosPickerLogDelegate: class { - func selectedCameraCell(picker: TLPhotosPickerViewController) - func deselectedPhoto(picker: TLPhotosPickerViewController, at: Int) - func selectedPhoto(picker: TLPhotosPickerViewController, at: Int) - func selectedAlbum(picker: TLPhotosPickerViewController, title: String, at: Int) -} - -//for collection supplement view -let viewController = TLPhotosPickerViewController() -viewController.customDataSouces = CustomDataSources() // inherit TLPhotopickerDataSourcesProtocol - -public protocol TLPhotopickerDataSourcesProtocol { - func headerReferenceSize() -> CGSize - func footerReferenceSize() -> CGSize - func registerSupplementView(collectionView: UICollectionView) - func supplementIdentifier(kind: String) -> String - func configure(supplement view: UICollectionReusableView, section: (title: String, assets: [TLPHAsset])) -} - -``` - -## Author - -Does your organization or project use TLPhotoPicker? Please let me know by email. - -wade.hawk, junhyi.park@gmail.com - -## License - -TLPhotoPicker is available under the MIT license. See the LICENSE file for more info. diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/SynchronizedDictionary.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/SynchronizedDictionary.swift deleted file mode 100644 index 34bba14d17a1f4b671fa572510e6c70042f1574e..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/SynchronizedDictionary.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// SynchronizedDictionary.swift -// TLPhotoPicker -// -// Created by wade.hawk on 30/03/2019. -// - -import Foundation - -public class SynchronizedDictionary<K:Hashable,V> { - private var dictionary: [K:V] = [:] - private let accessQueue = DispatchQueue(label: "SynchronizedDictionaryAccess", - attributes: .concurrent) - - deinit { - //print("deinit SynchronizedDictionary") - } - - public func removeAll() { - self.accessQueue.async(flags:.barrier) { - self.dictionary.removeAll() - } - } - - public func removeValue(forKey: K) { - self.accessQueue.async(flags:.barrier) { - self.dictionary.removeValue(forKey: forKey) - } - } - - public func forEach(_ closure: ((K,V) -> Void)) { - self.accessQueue.sync { - self.dictionary.forEach{ arg in - let (key, value) = arg - closure(key,value) - } - } - } - - public subscript(key: K) -> V? { - set { - self.accessQueue.async(flags:.barrier) { - self.dictionary[key] = newValue - } - } - get { - var element: V? - self.accessQueue.sync { - element = self.dictionary[key] - } - return element - } - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAlbumPopView.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAlbumPopView.swift deleted file mode 100644 index 3eaa92a3f7793f96b9bda917b43ee89441af5889..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAlbumPopView.swift +++ /dev/null @@ -1,83 +0,0 @@ -// -// TLAlbumPopView.swift -// TLPhotosPicker -// -// Created by wade.hawk on 2017. 4. 19.. -// Copyright © 2017년 wade.hawk. All rights reserved. -// - -import UIKit - -protocol PopupViewProtocol: AnyObject { - var bgView: UIView! { get set } - var popupView: UIView! { get set } - var originalFrame: CGRect { get set } - var show: Bool { get set } - func setupPopupFrame() -} - -extension PopupViewProtocol where Self: UIView { - fileprivate func getFrame(scale: CGFloat) -> CGRect { - var frame = self.originalFrame - frame.size.width = frame.size.width * scale - frame.size.height = frame.size.height * scale - frame.origin.x = self.frame.width/2 - frame.width/2 - return frame - } - func setupPopupFrame() { - if self.originalFrame == CGRect.zero { - self.originalFrame = self.popupView.frame - }else { - self.originalFrame.size.height = self.popupView.frame.height - } - } - func show(_ show: Bool, duration: TimeInterval = 0.1) { - guard self.show != show else { return } - self.layer.removeAllAnimations() - self.isHidden = false - self.popupView.frame = show ? getFrame(scale: 0.1) : self.popupView.frame - self.bgView.alpha = show ? 0 : 1 - UIView.animate(withDuration: duration, animations: { - self.bgView.alpha = show ? 1 : 0 - self.popupView.transform = show ? CGAffineTransform(scaleX: 1.05, y: 1.05) : CGAffineTransform(scaleX: 0.1, y: 0.1) - self.popupView.frame = show ? self.getFrame(scale: 1.05) : self.getFrame(scale: 0.1) - }) { _ in - self.isHidden = show ? false : true - UIView.animate(withDuration: duration) { - if show { - self.popupView.transform = CGAffineTransform(scaleX: 1, y: 1) - self.popupView.frame = self.originalFrame - } - self.show = show - } - } - } -} - -open class TLAlbumPopView: UIView, PopupViewProtocol { - @IBOutlet open var bgView: UIView! - @IBOutlet open var popupView: UIView! - @IBOutlet var popupViewHeight: NSLayoutConstraint! - @IBOutlet open var tableView: UITableView! - @objc var originalFrame = CGRect.zero - @objc var show = false - - deinit { -// print("deinit TLAlbumPopView") - } - - override open func awakeFromNib() { - super.awakeFromNib() - self.popupView.layer.cornerRadius = 5.0 - let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapBgView)) - self.bgView.addGestureRecognizer(tapGesture) - self.tableView.register(UINib(nibName: "TLCollectionTableViewCell", bundle: TLBundle.bundle()), forCellReuseIdentifier: "TLCollectionTableViewCell") - if #available(iOS 13.0, *) { - self.popupView.backgroundColor = .systemBackground - } - } - - @objc func tapBgView() { - self.show(false) - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetCollection+Extension.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetCollection+Extension.swift deleted file mode 100644 index 6d1b999d65c7b0f5aab3dd867cbe0a4fe2488385..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetCollection+Extension.swift +++ /dev/null @@ -1,68 +0,0 @@ -// -// TLAssetCollection+Extension.swift -// TLPhotoPicker -// -// Created by wade.hawk on 21/01/2019. -// - -import Foundation -import Photos - -public enum PHFetchedResultGroupedBy { - case year - case month - case week - case day - case hour - case custom(dateFormat: String) - var dateFormat: String { - switch self { - case .year: - return "yyyy" - case .month: - return "yyyyMM" - case .week: - return "yyyyMMW" - case .day: - return "yyyyMMdd" - case .hour: - return "yyyyMMddHH" - case let .custom(dateFormat): - return dateFormat - } - } -} - -extension TLAssetsCollection { - func enumarateFetchResult(groupedBy: PHFetchedResultGroupedBy) -> Dictionary<String,[TLPHAsset]> { - let dateFormatter = DateFormatter() - dateFormatter.dateFormat = groupedBy.dateFormat - var assets = [PHAsset]() - assets.reserveCapacity(self.fetchResult?.count ?? 0) - self.fetchResult?.enumerateObjects({ (phAsset, idx, stop) in - if phAsset.creationDate != nil { - assets.append(phAsset) - } - }) - let sections = Dictionary(grouping: assets.map{ TLPHAsset(asset: $0) }) { (element) -> String in - if let creationDate = element.phAsset?.creationDate { - let identifier = dateFormatter.string(from: creationDate) - return identifier - } - return "" - } - return sections - } - - func section(groupedBy: PHFetchedResultGroupedBy) -> [(String,[TLPHAsset])] { - let dict = enumarateFetchResult(groupedBy: groupedBy) - var sections = [(String,[TLPHAsset])]() - let sortedKeys = dict.keys.sorted(by: >) - for key in sortedKeys { - if let array = dict[key] { - sections.append((key, array)) - } - } - return sections - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetPreviewViewController.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetPreviewViewController.swift deleted file mode 100644 index 9f7c11a721ec077b635204ffcb771704f0a140c0..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetPreviewViewController.swift +++ /dev/null @@ -1,204 +0,0 @@ -import UIKit -import Photos -import PhotosUI - -open class TLAssetPreviewViewController: UIViewController { - - fileprivate var player: AVPlayer? - fileprivate var playerLayer: AVPlayerLayer? - - fileprivate let imageView: UIImageView = { - let view = UIImageView() - view.clipsToBounds = false - view.contentMode = .scaleAspectFill - return view - }() - - fileprivate let livePhotoView = PHLivePhotoView() - - open var asset: PHAsset? { - didSet { - guard let asset = self.asset else { - livePhotoView.livePhoto = nil - imageView.image = nil - return - } - - updatePreferredContentSize(for: asset, isPortrait: UIApplication.shared.orientation?.isPortrait == true) - - if asset.mediaType == .image { - previewImage(from: asset) - } else { - previewVideo(from: asset) - } - } - } - - override open func viewDidLoad() { - super.viewDidLoad() - setupViews() - } - - override open func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - playerLayer?.frame = imageView.bounds - } - - override open func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { - super.viewWillTransition(to: size, with: coordinator) - if let asset = self.asset { - updatePreferredContentSize(for: asset, isPortrait: size.height > size.width) - } - } - - deinit { - player?.pause() - } -} - -private extension TLAssetPreviewViewController { - func setupViews() { - view.backgroundColor = .previewBackground - view.addAligned(imageView) - view.addAligned(livePhotoView) - } - - func fetchImage(for asset: PHAsset, canHandleDegraded: Bool = true, completion: @escaping ((UIImage?) -> Void)) { - let options = PHImageRequestOptions() - options.isNetworkAccessAllowed = true - options.deliveryMode = .opportunistic - PHCachingImageManager.default().requestImage( - for: asset, - targetSize: CGSize(width: asset.pixelWidth, height: asset.pixelHeight), - contentMode: .aspectFit, - options: options, - resultHandler: { (image, info) in - if !canHandleDegraded { - if let isDegraded = info?[PHImageResultIsDegradedKey] as? Bool, isDegraded { - return - } - } - completion(image) - }) - } - - func updatePreferredContentSize(for asset: PHAsset, isPortrait: Bool) { - guard asset.pixelWidth != 0 && asset.pixelHeight != 0 else { return } - - let contentScale: CGFloat = 1 - let assetWidth = CGFloat(asset.pixelWidth) - let assetHeight = CGFloat(asset.pixelHeight) - let assetRatio = assetHeight / assetWidth - let screenWidth = isPortrait ? UIScreen.main.bounds.width : UIScreen.main.bounds.height - let screenHeight = isPortrait ? UIScreen.main.bounds.height : UIScreen.main.bounds.width - let screenRatio = screenHeight / screenWidth - - if assetRatio > screenRatio { - let scale = screenHeight / assetHeight - preferredContentSize = CGSize(width: assetWidth * scale * contentScale, height: assetHeight * scale * contentScale) - } else { - let scale = screenWidth / assetWidth - preferredContentSize = CGSize(width: assetWidth * scale * contentScale, height: assetHeight * scale * contentScale) - } - } - - func previewVideo(from asset: PHAsset) { - livePhotoView.isHidden = true - PHCachingImageManager.default().requestAVAsset( - forVideo: asset, - options: nil, - resultHandler: { (avAsset, audio, info) in - DispatchQueue.main.async { [weak self] in - self?.imageView.isHidden = false - - if let avAsset = avAsset { - let playerItem = AVPlayerItem(asset: avAsset) - let player = AVPlayer(playerItem: playerItem) - let playerLayer = AVPlayerLayer(player: player) - playerLayer.videoGravity = AVLayerVideoGravity.resizeAspect - playerLayer.masksToBounds = true - playerLayer.frame = self?.imageView.bounds ?? .zero - - self?.imageView.layer.addSublayer(playerLayer) - self?.playerLayer = playerLayer - self?.player = player - - player.play() - } else { - self?.previewPhoto(from: asset) - } - } - }) - } - - func previewImage(from asset: PHAsset) { - imageView.isHidden = true - livePhotoView.isHidden = false - - if asset.mediaSubtypes == .photoLive { - previewLivePhoto(from: asset) - } else { - previewPhoto(from: asset) - } - } - - func previewLivePhoto(from asset: PHAsset) { - - let options = PHLivePhotoRequestOptions() - options.isNetworkAccessAllowed = true - options.deliveryMode = .opportunistic - - PHCachingImageManager.default().requestLivePhoto( - for: asset, - targetSize: CGSize(width: asset.pixelWidth, height: asset.pixelHeight), - contentMode: .aspectFill, - options: options, - resultHandler: { [weak self] (livePhoto, info) in - if let livePhoto = livePhoto, info?[PHImageErrorKey] == nil { - self?.livePhotoView.livePhoto = livePhoto - self?.livePhotoView.startPlayback(with: .full) - } else { - self?.previewPhoto(from: asset) - } - }) - } - - func previewPhoto(from asset: PHAsset) { - imageView.isHidden = false - fetchImage(for: asset, canHandleDegraded: false, completion: { self.imageView.image = $0 }) - } -} - -private extension UIColor { - static var previewBackground: UIColor { - if #available(iOS 13.0, *) { - return .systemBackground - } else { - return .white - } - } -} - -private extension UIView { - func addAligned(_ view: UIView) { - view.translatesAutoresizingMaskIntoConstraints = false - addSubview(view) - - NSLayoutConstraint.activate([ - view.leadingAnchor.constraint(equalTo: leadingAnchor), - view.trailingAnchor.constraint(equalTo: trailingAnchor), - view.topAnchor.constraint(equalTo: topAnchor), - view.bottomAnchor.constraint(equalTo: bottomAnchor) - ]) - } -} - -private extension UIApplication { - var orientation: UIInterfaceOrientation? { - if #available(iOS 13.0, *) { - return windows.first(where: { $0.isKeyWindow })?.windowScene?.interfaceOrientation - } else { - return statusBarOrientation - } - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetsCollection.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetsCollection.swift deleted file mode 100644 index aede55f4a37ab973cb715d95dce45a6265554c30..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLAssetsCollection.swift +++ /dev/null @@ -1,430 +0,0 @@ -// -// TLAssetsCollection.swift -// TLPhotosPicker -// -// Created by wade.hawk on 2017. 4. 18.. -// Copyright © 2017년 wade.hawk. All rights reserved. -// - -import Foundation -import Photos -import PhotosUI -import MobileCoreServices - -public struct TLPHAsset { - enum CloudDownloadState { - case ready, progress, complete, failed - } - - public enum AssetType { - case photo, video, livePhoto - } - - public enum ImageExtType: String { - case png, jpg, gif, heic - } - - var state = CloudDownloadState.ready - public var phAsset: PHAsset? = nil - //Bool to check if TLPHAsset returned is created using camera. - public var isSelectedFromCamera = false - public var selectedOrder: Int = 0 - public var type: AssetType { - get { - guard let phAsset = self.phAsset else { return .photo } - if phAsset.mediaSubtypes.contains(.photoLive) { - return .livePhoto - }else if phAsset.mediaType == .video { - return .video - }else { - return .photo - } - } - } - - public var fullResolutionImage: UIImage? { - get { - guard let phAsset = self.phAsset else { return nil } - return TLPhotoLibrary.fullResolutionImageData(asset: phAsset) - } - } - - public func extType(defaultExt: ImageExtType = .png) -> ImageExtType { - guard let fileName = self.originalFileName, - let encodedFileName = fileName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed), - let extention = URL(string: encodedFileName)?.pathExtension.lowercased() else { - return defaultExt - } - return ImageExtType(rawValue: extention) ?? defaultExt - } - - @discardableResult - public func cloudImageDownload(progressBlock: @escaping (Double) -> Void, completionBlock:@escaping (UIImage?)-> Void ) -> PHImageRequestID? { - guard let phAsset = self.phAsset else { return nil } - return TLPhotoLibrary.cloudImageDownload(asset: phAsset, progressBlock: progressBlock, completionBlock: completionBlock) - } - - public var originalFileName: String? { - get { - guard let phAsset = self.phAsset,let resource = PHAssetResource.assetResources(for: phAsset).first else { return nil } - return resource.originalFilename - } - } - - public func photoSize(options: PHImageRequestOptions? = nil ,completion: @escaping ((Int)->Void), livePhotoVideoSize: Bool = false) { - guard let phAsset = self.phAsset, self.type == .photo || self.type == .livePhoto else { completion(-1); return } - var resource: PHAssetResource? = nil - if phAsset.mediaSubtypes.contains(.photoLive) == true, livePhotoVideoSize { - resource = PHAssetResource.assetResources(for: phAsset).filter { $0.type == .pairedVideo }.first - }else { - resource = PHAssetResource.assetResources(for: phAsset).filter { $0.type == .photo }.first - } - if let fileSize = resource?.value(forKey: "fileSize") as? Int { - completion(fileSize) - }else { - PHImageManager.default().requestImageData(for: phAsset, options: nil) { (data, uti, orientation, info) in - var fileSize = -1 - if let data = data { - let bcf = ByteCountFormatter() - bcf.countStyle = .file - fileSize = data.count - } - DispatchQueue.main.async { - completion(fileSize) - } - } - } - } - - public func videoSize(options: PHVideoRequestOptions? = nil, completion: @escaping ((Int)->Void)) { - guard let phAsset = self.phAsset, self.type == .video else { completion(-1); return } - let resource = PHAssetResource.assetResources(for: phAsset).filter { $0.type == .video }.first - if let fileSize = resource?.value(forKey: "fileSize") as? Int { - completion(fileSize) - }else { - PHImageManager.default().requestAVAsset(forVideo: phAsset, options: options) { (avasset, audioMix, info) in - func fileSize(_ url: URL?) -> Int? { - do { - guard let fileSize = try url?.resourceValues(forKeys: [.fileSizeKey]).fileSize else { return nil } - return fileSize - }catch { return nil } - } - var url: URL? = nil - if let urlAsset = avasset as? AVURLAsset { - url = urlAsset.url - }else if let sandboxKeys = info?["PHImageFileSandboxExtensionTokenKey"] as? String, let path = sandboxKeys.components(separatedBy: ";").last { - url = URL(fileURLWithPath: path) - } - let size = fileSize(url) ?? -1 - DispatchQueue.main.async { - completion(size) - } - } - } - } - - func MIMEType(_ url: URL?) -> String? { - guard let ext = url?.pathExtension else { return nil } - if !ext.isEmpty { - let UTIRef = UTTypeCreatePreferredIdentifierForTag("public.filename-extension" as CFString, ext as CFString, nil) - let UTI = UTIRef?.takeUnretainedValue() - UTIRef?.release() - if let UTI = UTI { - guard let MIMETypeRef = UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType) else { return nil } - let MIMEType = MIMETypeRef.takeUnretainedValue() - MIMETypeRef.release() - return MIMEType as String - } - } - return nil - } - - private func tempCopyLivePhotos(phAsset: PHAsset, - livePhotoRequestOptions: PHLivePhotoRequestOptions? = nil, - localURL: URL, - completionBlock:@escaping (() -> Void)) -> PHImageRequestID? { - var requestOptions = PHLivePhotoRequestOptions() - if let options = livePhotoRequestOptions { - requestOptions = options - }else { - requestOptions.isNetworkAccessAllowed = true - } - return PHImageManager.default().requestLivePhoto(for: phAsset, - targetSize: UIScreen.main.bounds.size, - contentMode: .default, - options: requestOptions) - { (livePhotos, infoDict) in - if let livePhotos = livePhotos { - let assetResources = PHAssetResource.assetResources(for: livePhotos) - assetResources.forEach { (resource) in - if resource.type == .pairedVideo { - PHAssetResourceManager.default().writeData(for: resource, toFile: localURL, options: nil) { (error) in - DispatchQueue.main.async { - completionBlock() - } - } - } - } - } - } - } - - @discardableResult - //convertLivePhotosToJPG - // false : If you want mov file at live photos - // true : If you want png file at live photos ( HEIC ) - public func tempCopyMediaFile(videoRequestOptions: PHVideoRequestOptions? = nil, - imageRequestOptions: PHImageRequestOptions? = nil, - livePhotoRequestOptions: PHLivePhotoRequestOptions? = nil, - exportPreset: String = AVAssetExportPresetHighestQuality, - convertLivePhotosToJPG: Bool = false, - progressBlock:((Double) -> Void)? = nil, - completionBlock:@escaping ((URL,String) -> Void)) -> PHImageRequestID? { - guard let phAsset = self.phAsset else { return nil } - var type: PHAssetResourceType? = nil - if phAsset.mediaSubtypes.contains(.photoLive) == true, convertLivePhotosToJPG == false { - type = .pairedVideo - }else { - type = phAsset.mediaType == .video ? .video : .photo - } - guard let resource = (PHAssetResource.assetResources(for: phAsset).filter{ $0.type == type }).first else { return nil } - let fileName = resource.originalFilename - var writeURL: URL? = nil - if #available(iOS 10.0, *) { - writeURL = FileManager.default.temporaryDirectory.appendingPathComponent("\(fileName)") - } else { - writeURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true).appendingPathComponent("\(fileName)") - } - guard var localURL = writeURL,var mimetype = MIMEType(writeURL) else { return nil } - if type == .pairedVideo { - return tempCopyLivePhotos(phAsset: phAsset, - livePhotoRequestOptions: livePhotoRequestOptions, - localURL: localURL, - completionBlock: { completionBlock(localURL, mimetype) }) - } - switch phAsset.mediaType { - case .video: - var requestOptions = PHVideoRequestOptions() - if let options = videoRequestOptions { - requestOptions = options - }else { - requestOptions.isNetworkAccessAllowed = true - } - //iCloud download progress - requestOptions.progressHandler = { (progress, error, stop, info) in - DispatchQueue.main.async { - progressBlock?(progress) - } - } - return PHImageManager.default().requestExportSession(forVideo: phAsset, - options: requestOptions, - exportPreset: exportPreset) - { (session, infoDict) in - session?.outputURL = localURL - session?.outputFileType = AVFileType.mov - session?.exportAsynchronously(completionHandler: { - DispatchQueue.main.async { - completionBlock(localURL, mimetype) - } - }) - } - case .image: - var requestOptions = PHImageRequestOptions() - if let options = imageRequestOptions { - requestOptions = options - }else { - requestOptions.isNetworkAccessAllowed = true - } - //iCloud download progress - requestOptions.progressHandler = { (progress, error, stop, info) in - DispatchQueue.main.async { - progressBlock?(progress) - } - } - return PHImageManager.default().requestImageData(for: phAsset, - options: requestOptions) - { (data, uti, orientation, info) in - do { - var data = data - let needConvertLivePhotoToJPG = phAsset.mediaSubtypes.contains(.photoLive) == true && convertLivePhotosToJPG == true - if needConvertLivePhotoToJPG { - let name = localURL.deletingPathExtension().lastPathComponent - localURL.deleteLastPathComponent() - localURL.appendPathComponent("\(name).jpg") - mimetype = "image/jpeg" - } - if needConvertLivePhotoToJPG, let imgData = data, let rawImage = UIImage(data: imgData)?.upOrientationImage() { - data = rawImage.jpegData(compressionQuality: 1) - } - try data?.write(to: localURL) - DispatchQueue.main.async { - completionBlock(localURL, mimetype) - } - }catch { } - } - default: - return nil - } - } - - private func videoFilename(phAsset: PHAsset) -> URL? { - guard let resource = (PHAssetResource.assetResources(for: phAsset).filter{ $0.type == .video }).first else { - return nil - } - var writeURL: URL? - let fileName = resource.originalFilename - if #available(iOS 10.0, *) { - writeURL = FileManager.default.temporaryDirectory.appendingPathComponent("\(fileName)") - } else { - writeURL = URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true).appendingPathComponent("\(fileName)") - } - return writeURL - } - - //Apparently, This is not the only way to export video. - //There is many way that export a video. - //This method was one of them. - public func exportVideoFile(options: PHVideoRequestOptions? = nil, - outputURL: URL? = nil, - outputFileType: AVFileType = .mov, - progressBlock:((Double) -> Void)? = nil, - completionBlock:@escaping ((URL,String) -> Void)) { - guard - let phAsset = self.phAsset, - phAsset.mediaType == .video, - let writeURL = outputURL ?? videoFilename(phAsset: phAsset), - let mimetype = MIMEType(writeURL) - else { - return - } - var requestOptions = PHVideoRequestOptions() - if let options = options { - requestOptions = options - }else { - requestOptions.isNetworkAccessAllowed = true - } - requestOptions.progressHandler = { (progress, error, stop, info) in - DispatchQueue.main.async { - progressBlock?(progress) - } - } - PHImageManager.default().requestAVAsset(forVideo: phAsset, options: requestOptions) { (avasset, avaudioMix, infoDict) in - guard let avasset = avasset else { - return - } - let exportSession = AVAssetExportSession.init(asset: avasset, presetName: AVAssetExportPresetHighestQuality) - exportSession?.outputURL = writeURL - exportSession?.outputFileType = outputFileType - exportSession?.exportAsynchronously(completionHandler: { - completionBlock(writeURL, mimetype) - }) - } - } - - init(asset: PHAsset?) { - self.phAsset = asset - } - - public static func asset(with localIdentifier: String) -> TLPHAsset? { - let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: [localIdentifier], options: nil) - return TLPHAsset(asset: fetchResult.firstObject) - } -} - -extension TLPHAsset: Equatable { - public static func ==(lhs: TLPHAsset, rhs: TLPHAsset) -> Bool { - guard let lphAsset = lhs.phAsset, let rphAsset = rhs.phAsset else { return false } - return lphAsset.localIdentifier == rphAsset.localIdentifier - } -} - -extension Array { - subscript (safe index: Int) -> Element? { - return indices ~= index ? self[index] : nil - } -} - -public struct TLAssetsCollection { - var phAssetCollection: PHAssetCollection? = nil - var fetchResult: PHFetchResult<PHAsset>? = nil - var useCameraButton: Bool = false - var recentPosition: CGPoint = CGPoint.zero - var title: String - var localIdentifier: String - public var sections: [(title: String, assets: [TLPHAsset])]? = nil - var count: Int { - get { - guard let count = self.fetchResult?.count, count > 0 else { return self.useCameraButton ? 1 : 0 } - return count + (self.useCameraButton ? 1 : 0) - } - } - - init(collection: PHAssetCollection) { - self.phAssetCollection = collection - self.title = collection.localizedTitle ?? "" - self.localIdentifier = collection.localIdentifier - } - - func getAsset(at index: Int) -> PHAsset? { - if self.useCameraButton && index == 0 { return nil } - let index = index - (self.useCameraButton ? 1 : 0) - guard let result = self.fetchResult, index < result.count else { return nil } - return result.object(at: max(index,0)) - } - - func getTLAsset(at indexPath: IndexPath) -> TLPHAsset? { - let isCameraRow = self.useCameraButton && indexPath.section == 0 && indexPath.row == 0 - if isCameraRow { - return nil - } - if let sections = self.sections { - let index = indexPath.row - ((self.useCameraButton && indexPath.section == 0) ? 1 : 0) - let result = sections[safe: indexPath.section] - return result?.assets[safe: index] - }else { - var index = indexPath.row - index = index - (self.useCameraButton ? 1 : 0) - guard let result = self.fetchResult, index < result.count else { return nil } - return TLPHAsset(asset: result.object(at: max(index,0))) - } - } - - func findIndex(phAsset: PHAsset) -> IndexPath? { - guard let sections = self.sections else { - return nil - } - for (offset, section) in sections.enumerated() { - if let index = section.assets.firstIndex(where: { $0.phAsset == phAsset }) { - return IndexPath(row: index, section: offset) - } - } - return nil - } - - mutating func reloadSection(groupedBy: PHFetchedResultGroupedBy) { - var groupedSections = self.section(groupedBy: groupedBy) - if self.useCameraButton { - groupedSections.insert(("camera",[TLPHAsset(asset: nil)]), at: 0) - } - self.sections = groupedSections - } - - static func ==(lhs: TLAssetsCollection, rhs: TLAssetsCollection) -> Bool { - return lhs.localIdentifier == rhs.localIdentifier - } -} - -extension UIImage { - func upOrientationImage() -> UIImage? { - switch imageOrientation { - case .up: - return self - default: - UIGraphicsBeginImageContextWithOptions(size, false, scale) - draw(in: CGRect(origin: .zero, size: size)) - let result = UIGraphicsGetImageFromCurrentImageContext() - UIGraphicsEndImageContext() - return result - } - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLBundle.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLBundle.swift deleted file mode 100644 index 46f23ea35d46dfefd9112d495090e87620e849e0..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLBundle.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// TLBundle.swift -// Pods -// -// Created by wade.hawk on 2017. 5. 9.. -// -// - -import UIKit - -open class TLBundle { - open class func podBundleImage(named: String) -> UIImage? { - let podBundle = Bundle(for: TLBundle.self) - if let url = podBundle.url(forResource: "TLPhotoPickerController", withExtension: "bundle") { - let bundle = Bundle(url: url) - return UIImage(named: named, in: bundle, compatibleWith: nil) - } - return nil - } - - class func bundle() -> Bundle { - let podBundle = Bundle(for: TLBundle.self) - if let url = podBundle.url(forResource: "TLPhotoPicker", withExtension: "bundle") { - let bundle = Bundle(url: url) - return bundle ?? podBundle - } - return podBundle - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLCollectionTableViewCell.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLCollectionTableViewCell.swift deleted file mode 100644 index bedd379b870e85f48e031b3e43ef44335bdf5abc..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLCollectionTableViewCell.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// TLCollectionTableViewCell.swift -// TLPhotosPicker -// -// Created by wade.hawk on 2017. 5. 3.. -// Copyright © 2017년 wade.hawk. All rights reserved. -// - -import UIKit - -open class TLCollectionTableViewCell: UITableViewCell { - @IBOutlet open var thumbImageView: UIImageView! - @IBOutlet open var titleLabel: UILabel! - @IBOutlet open var subTitleLabel: UILabel! - - override open func awakeFromNib() { - super.awakeFromNib() - if #available(iOS 11.0, *) { - self.thumbImageView.accessibilityIgnoresInvertColors = true - } - if #available(iOS 13.0, *) { - self.contentView.backgroundColor = .systemBackground - } - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLCollectionTableViewCell.xib b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLCollectionTableViewCell.xib deleted file mode 100644 index e8c682c2ed401b8d76ae834a2e735d39638ed5aa..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLCollectionTableViewCell.xib +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> - <device id="retina4_7" orientation="portrait" appearance="light"/> - <dependencies> - <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <objects> - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> - <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="TLCollectionTableViewCell" id="9FY-S1-KKQ" customClass="TLCollectionTableViewCell" customModule="TLPhotoPicker"> - <rect key="frame" x="0.0" y="0.0" width="375" height="75"/> - <autoresizingMask key="autoresizingMask"/> - <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9FY-S1-KKQ" id="UUZ-nI-xH1"> - <rect key="frame" x="0.0" y="0.0" width="375" height="75"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="4Dk-kD-sMy"> - <rect key="frame" x="15" y="12.5" width="50" height="50"/> - <constraints> - <constraint firstAttribute="height" constant="50" id="yiu-ZU-58w"/> - <constraint firstAttribute="width" constant="50" id="zAc-Fo-aGe"/> - </constraints> - </imageView> - <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="7nv-2U-xMp"> - <rect key="frame" x="75" y="19.5" width="234" height="36.5"/> - <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Camera Roll" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ES8-Tq-6Wz"> - <rect key="frame" x="0.0" y="0.0" width="234" height="17"/> - <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/> - <nil key="textColor"/> - <nil key="highlightedColor"/> - </label> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="9999" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NuJ-3w-ZAP"> - <rect key="frame" x="0.0" y="22" width="234" height="14.5"/> - <fontDescription key="fontDescription" type="system" pointSize="12"/> - <color key="textColor" red="0.43137254901960786" green="0.43137254901960786" blue="0.43137254901960786" alpha="1" colorSpace="calibratedRGB"/> - <nil key="highlightedColor"/> - </label> - </subviews> - </stackView> - </subviews> - <constraints> - <constraint firstItem="4Dk-kD-sMy" firstAttribute="leading" secondItem="UUZ-nI-xH1" secondAttribute="leading" constant="15" id="7W9-hT-caE"/> - <constraint firstItem="7nv-2U-xMp" firstAttribute="centerY" secondItem="UUZ-nI-xH1" secondAttribute="centerY" id="E6U-ch-GDV"/> - <constraint firstAttribute="trailingMargin" secondItem="7nv-2U-xMp" secondAttribute="trailing" constant="50" id="T3U-hj-718"/> - <constraint firstItem="4Dk-kD-sMy" firstAttribute="centerY" secondItem="UUZ-nI-xH1" secondAttribute="centerY" id="ZHB-JZ-YKE"/> - <constraint firstItem="7nv-2U-xMp" firstAttribute="leading" secondItem="4Dk-kD-sMy" secondAttribute="trailing" constant="10" id="i0n-S1-xnn"/> - </constraints> - </tableViewCellContentView> - <connections> - <outlet property="subTitleLabel" destination="NuJ-3w-ZAP" id="vlD-VJ-e5z"/> - <outlet property="thumbImageView" destination="4Dk-kD-sMy" id="f8b-VP-j8s"/> - <outlet property="titleLabel" destination="ES8-Tq-6Wz" id="sYW-0b-o03"/> - </connections> - <point key="canvasLocation" x="9.5" y="-83"/> - </tableViewCell> - </objects> -</document> diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoCollectionViewCell.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoCollectionViewCell.swift deleted file mode 100644 index 8de0fc0fdf115dc2ddd83e0ae5aed95a173b6a8f..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoCollectionViewCell.swift +++ /dev/null @@ -1,182 +0,0 @@ -// -// TLPhotoCollectionViewCell.swift -// TLPhotosPicker -// -// Created by wade.hawk on 2017. 5. 3.. -// Copyright © 2017년 wade.hawk. All rights reserved. -// - -import UIKit -import PhotosUI - -open class TLPlayerView: UIView { - @objc open var player: AVPlayer? { - get { - return playerLayer.player - } - set { - playerLayer.player = newValue - } - } - - @objc open var playerLayer: AVPlayerLayer { - return layer as! AVPlayerLayer - } - - // Override UIView property - override open class var layerClass: AnyClass { - return AVPlayerLayer.self - } -} - -open class TLPhotoCollectionViewCell: UICollectionViewCell { - private var observer: NSObjectProtocol? - @IBOutlet open var imageView: UIImageView? - @IBOutlet open var playerView: TLPlayerView? - @IBOutlet open var livePhotoView: PHLivePhotoView? - @IBOutlet open var liveBadgeImageView: UIImageView? - @IBOutlet open var durationView: UIView? - @IBOutlet open var videoIconImageView: UIImageView? - @IBOutlet open var durationLabel: UILabel? - @IBOutlet open var indicator: UIActivityIndicatorView? - @IBOutlet open var selectedView: UIView? - @IBOutlet open var selectedHeight: NSLayoutConstraint? - @IBOutlet open var orderLabel: UILabel? - @IBOutlet open var orderBgView: UIView? - - var configure = TLPhotosPickerConfigure() { - didSet { - self.selectedView?.layer.borderColor = self.configure.selectedColor.cgColor - self.orderBgView?.backgroundColor = self.configure.selectedColor - self.videoIconImageView?.image = self.configure.videoIcon - self.orderBgView?.isHidden = self.configure.singleSelectedMode - self.orderLabel?.isHidden = self.configure.singleSelectedMode - } - } - - open internal(set) var asset: PHAsset? - - @objc open var isCameraCell = false - - open var duration: TimeInterval? { - didSet { - guard let duration = self.duration else { return } - self.selectedHeight?.constant = -10 - self.durationLabel?.text = timeFormatted(timeInterval: duration) - } - } - - @objc open var player: AVPlayer? = nil { - didSet { - if self.configure.autoPlay == false { return } - if self.player == nil { - self.playerView?.playerLayer.player = nil - if let observer = self.observer { - NotificationCenter.default.removeObserver(observer) - } - }else { - self.playerView?.playerLayer.player = self.player - self.observer = NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.player?.currentItem, queue: nil, using: { [weak self] (_) in - DispatchQueue.main.async { - guard let `self` = self else { return } - self.player?.seek(to: CMTime.zero) - self.player?.play() - self.player?.isMuted = self.configure.muteAudio - } - }) - } - } - } - - @objc open var selectedAsset: Bool = false { - willSet(newValue) { - self.selectedView?.isHidden = !newValue - self.durationView?.backgroundColor = newValue ? self.configure.selectedColor : UIColor(red: 0, green: 0, blue: 0, alpha: 0.6) - if !newValue { - self.orderLabel?.text = "" - } - } - } - - @objc open func timeFormatted(timeInterval: TimeInterval) -> String { - let seconds: Int = lround(timeInterval) - var hour: Int = 0 - var minute: Int = Int(seconds/60) - let second: Int = seconds % 60 - if minute > 59 { - hour = minute / 60 - minute = minute % 60 - return String(format: "%d:%d:%02d", hour, minute, second) - } else { - return String(format: "%d:%02d", minute, second) - } - } - - @objc open func popScaleAnim() { - UIView.animate(withDuration: 0.1, animations: { - self.transform = CGAffineTransform(scaleX: 1.05, y: 1.05) - }) { _ in - UIView.animate(withDuration: 0.1, animations: { - self.transform = CGAffineTransform(scaleX: 1, y: 1) - }) - } - } - - @objc open func update(with phAsset: PHAsset) { - - } - - @objc open func selectedCell() { - - } - - @objc open func willDisplayCell() { - - } - - @objc open func endDisplayingCell() { - - } - - @objc func stopPlay() { - if let player = self.player { - player.pause() - self.player = nil - } - self.livePhotoView?.livePhoto = nil - self.livePhotoView?.isHidden = true - self.livePhotoView?.stopPlayback() - self.livePhotoView?.delegate = nil - } - - deinit { -// print("deinit TLPhotoCollectionViewCell") - } - - override open func awakeFromNib() { - super.awakeFromNib() - self.playerView?.playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill - self.livePhotoView?.isHidden = true - self.durationView?.isHidden = true - self.selectedView?.isHidden = true - self.selectedView?.layer.borderWidth = 10 - self.selectedView?.layer.cornerRadius = 15 - self.orderBgView?.layer.cornerRadius = 2 - self.videoIconImageView?.image = self.configure.videoIcon - if #available(iOS 11.0, *) { - self.imageView?.accessibilityIgnoresInvertColors = true - self.playerView?.accessibilityIgnoresInvertColors = true - self.livePhotoView?.accessibilityIgnoresInvertColors = true - self.videoIconImageView?.accessibilityIgnoresInvertColors = true - } - } - - override open func prepareForReuse() { - super.prepareForReuse() - stopPlay() - self.durationView?.isHidden = true - self.durationView?.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.6) - self.selectedHeight?.constant = 10 - self.selectedAsset = false - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoCollectionViewCell.xib b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoCollectionViewCell.xib deleted file mode 100644 index 4110de9062395990ec2d3a66cdc3ef232011833d..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoCollectionViewCell.xib +++ /dev/null @@ -1,142 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES"> - <device id="retina4_7" orientation="portrait" appearance="light"/> - <dependencies> - <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <objects> - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> - <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="TLPhotoCollectionViewCell" id="IF3-4e-v0j" customClass="TLPhotoCollectionViewCell" customModule="TLPhotoPicker"> - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center"> - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/> - <autoresizingMask key="autoresizingMask"/> - <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="0cR-fZ-1bW"> - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/> - </imageView> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vfk-Ao-TKR" customClass="PHLivePhotoView"> - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - </view> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="TGh-wt-hcR"> - <rect key="frame" x="70" y="70" width="25" height="25"/> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstAttribute="width" constant="25" id="NMA-SI-Idt"/> - <constraint firstAttribute="height" constant="25" id="XvY-Ee-EA2"/> - </constraints> - </imageView> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="apl-2Q-Hz7" customClass="TLPlayerView" customModule="TLPhotoPicker"> - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="d1a-KW-Ta4"> - <rect key="frame" x="-5" y="-5" width="110" height="110"/> - <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hbA-dR-I09"> - <rect key="frame" x="75" y="5" width="30" height="30"/> - <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Weu-ef-IZ5"> - <rect key="frame" x="1.5" y="8" width="25" height="16"/> - <constraints> - <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="25" id="YMX-0Z-bfm"/> - </constraints> - <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="13"/> - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - <nil key="highlightedColor"/> - </label> - </subviews> - <color key="backgroundColor" red="0.27843137254901962" green="0.47058823529411764" blue="0.85098039215686272" alpha="1" colorSpace="calibratedRGB"/> - <constraints> - <constraint firstAttribute="height" constant="30" id="8ln-g5-eHL"/> - <constraint firstItem="Weu-ef-IZ5" firstAttribute="leading" secondItem="hbA-dR-I09" secondAttribute="leading" constant="1.5" id="Yw3-zp-UZQ"/> - <constraint firstAttribute="trailing" secondItem="Weu-ef-IZ5" secondAttribute="trailing" constant="3.5" id="jsL-aw-IED"/> - <constraint firstItem="Weu-ef-IZ5" firstAttribute="centerY" secondItem="hbA-dR-I09" secondAttribute="centerY" constant="1" id="nUh-b3-s9s"/> - </constraints> - </view> - </subviews> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstAttribute="trailing" secondItem="hbA-dR-I09" secondAttribute="trailing" constant="5" id="hjj-HC-A4B"/> - <constraint firstItem="hbA-dR-I09" firstAttribute="top" secondItem="d1a-KW-Ta4" secondAttribute="top" constant="5" id="xJ1-j7-RX7"/> - </constraints> - </view> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aju-ob-KlZ"> - <rect key="frame" x="0.0" y="75" width="100" height="25"/> - <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Uzf-HJ-aUY"> - <rect key="frame" x="5" y="2.5" width="20" height="20"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0:02" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zNx-FC-5V2"> - <rect key="frame" x="30" y="0.0" width="65" height="25"/> - <constraints> - <constraint firstAttribute="width" constant="65" id="3hi-82-ovQ"/> - </constraints> - <fontDescription key="fontDescription" type="system" pointSize="12"/> - <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - <nil key="highlightedColor"/> - </label> - </subviews> - <color key="backgroundColor" red="0.11109734326601028" green="0.57953345775604248" blue="0.96568840742111206" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> - <constraints> - <constraint firstAttribute="height" constant="25" id="DzP-0j-1SD"/> - <constraint firstItem="zNx-FC-5V2" firstAttribute="top" secondItem="aju-ob-KlZ" secondAttribute="top" id="Lim-xf-cbx"/> - <constraint firstAttribute="bottom" secondItem="zNx-FC-5V2" secondAttribute="bottom" id="T0P-EH-uPu"/> - <constraint firstAttribute="trailing" secondItem="zNx-FC-5V2" secondAttribute="trailing" constant="5" id="uhl-Y8-3g5"/> - </constraints> - </view> - <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="DZc-ag-e55"> - <rect key="frame" x="40" y="40" width="20" height="20"/> - </activityIndicatorView> - </subviews> - </view> - <constraints> - <constraint firstAttribute="bottom" secondItem="vfk-Ao-TKR" secondAttribute="bottom" id="2gw-cO-5bN"/> - <constraint firstAttribute="bottom" secondItem="aju-ob-KlZ" secondAttribute="bottom" id="2wo-Ki-15d"/> - <constraint firstAttribute="trailing" secondItem="aju-ob-KlZ" secondAttribute="trailing" id="2zm-kD-GPn"/> - <constraint firstAttribute="bottom" secondItem="apl-2Q-Hz7" secondAttribute="bottom" id="3zu-V3-EAd"/> - <constraint firstAttribute="trailing" secondItem="0cR-fZ-1bW" secondAttribute="trailing" id="9sd-Ea-EBO"/> - <constraint firstAttribute="trailing" secondItem="vfk-Ao-TKR" secondAttribute="trailing" id="BZ0-ZG-uW5"/> - <constraint firstAttribute="bottom" secondItem="TGh-wt-hcR" secondAttribute="bottom" constant="5" id="Ba1-Z6-ypz"/> - <constraint firstItem="0cR-fZ-1bW" firstAttribute="leading" secondItem="IF3-4e-v0j" secondAttribute="leading" id="DXe-M9-mxX"/> - <constraint firstItem="aju-ob-KlZ" firstAttribute="leading" secondItem="IF3-4e-v0j" secondAttribute="leading" id="FDl-UE-XVM"/> - <constraint firstItem="apl-2Q-Hz7" firstAttribute="top" secondItem="IF3-4e-v0j" secondAttribute="top" id="JlA-ya-cf3"/> - <constraint firstAttribute="trailing" secondItem="apl-2Q-Hz7" secondAttribute="trailing" id="KZg-oh-B11"/> - <constraint firstAttribute="trailing" secondItem="TGh-wt-hcR" secondAttribute="trailing" constant="5" id="Meo-q5-HyZ"/> - <constraint firstItem="vfk-Ao-TKR" firstAttribute="leading" secondItem="IF3-4e-v0j" secondAttribute="leading" id="NOQ-KU-fHD"/> - <constraint firstItem="vfk-Ao-TKR" firstAttribute="top" secondItem="IF3-4e-v0j" secondAttribute="top" id="NrV-wc-c3q"/> - <constraint firstItem="d1a-KW-Ta4" firstAttribute="height" secondItem="IF3-4e-v0j" secondAttribute="height" constant="10" id="VMJ-Qp-D4N"/> - <constraint firstItem="apl-2Q-Hz7" firstAttribute="leading" secondItem="IF3-4e-v0j" secondAttribute="leading" id="bsL-0J-0Y5"/> - <constraint firstItem="d1a-KW-Ta4" firstAttribute="width" secondItem="IF3-4e-v0j" secondAttribute="width" constant="10" id="clS-DI-jvL"/> - <constraint firstItem="d1a-KW-Ta4" firstAttribute="top" secondItem="IF3-4e-v0j" secondAttribute="top" constant="-5" id="d3r-HZ-6We"/> - <constraint firstItem="DZc-ag-e55" firstAttribute="centerX" secondItem="IF3-4e-v0j" secondAttribute="centerX" id="fnn-1c-fSn"/> - <constraint firstItem="DZc-ag-e55" firstAttribute="centerY" secondItem="IF3-4e-v0j" secondAttribute="centerY" id="qZc-2h-nOx"/> - <constraint firstItem="d1a-KW-Ta4" firstAttribute="leading" secondItem="IF3-4e-v0j" secondAttribute="leading" constant="-5" id="sOj-ms-Oo3"/> - <constraint firstItem="0cR-fZ-1bW" firstAttribute="top" secondItem="IF3-4e-v0j" secondAttribute="top" id="sSC-fd-MoT"/> - <constraint firstAttribute="bottom" secondItem="0cR-fZ-1bW" secondAttribute="bottom" id="xzA-tS-EVK"/> - </constraints> - <connections> - <outlet property="durationLabel" destination="zNx-FC-5V2" id="5SU-lD-AGm"/> - <outlet property="durationView" destination="aju-ob-KlZ" id="hiP-Ze-cbc"/> - <outlet property="imageView" destination="0cR-fZ-1bW" id="N3f-v5-K9b"/> - <outlet property="indicator" destination="DZc-ag-e55" id="R3y-XL-0SY"/> - <outlet property="liveBadgeImageView" destination="TGh-wt-hcR" id="cry-3P-rLI"/> - <outlet property="livePhotoView" destination="vfk-Ao-TKR" id="uvj-l1-wcp"/> - <outlet property="orderBgView" destination="hbA-dR-I09" id="cQo-BP-xh1"/> - <outlet property="orderLabel" destination="Weu-ef-IZ5" id="B3t-X5-o3a"/> - <outlet property="playerView" destination="apl-2Q-Hz7" id="vTI-ie-mcV"/> - <outlet property="selectedHeight" destination="VMJ-Qp-D4N" id="uVe-tQ-4q5"/> - <outlet property="selectedView" destination="d1a-KW-Ta4" id="c31-4y-72g"/> - <outlet property="videoIconImageView" destination="Uzf-HJ-aUY" id="d7e-Bl-181"/> - </connections> - <point key="canvasLocation" x="32" y="-10"/> - </collectionViewCell> - </objects> -</document> diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoLibrary.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoLibrary.swift deleted file mode 100644 index cfba48597e4d0cad31f815f0d908c56801c98e09..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotoLibrary.swift +++ /dev/null @@ -1,293 +0,0 @@ -// -// TLPhotoLibrary.swift -// TLPhotosPicker -// -// Created by wade.hawk on 2017. 5. 3.. -// Copyright © 2017년 wade.hawk. All rights reserved. -// - -import UIKit -import Photos - -protocol TLPhotoLibraryDelegate: AnyObject { - func loadCameraRollCollection(collection: TLAssetsCollection) - func loadCompleteAllCollection(collections: [TLAssetsCollection]) -} - -class TLPhotoLibrary { - - weak var delegate: TLPhotoLibraryDelegate? = nil - - lazy var imageManager: PHCachingImageManager = { - return PHCachingImageManager() - }() - internal var limitMode: Bool = false - internal var assetCollections: [PHFetchResult<PHAssetCollection>] = [] - internal var albums: PHFetchResult<PHCollection>? = nil - - deinit { - // print("deinit TLPhotoLibrary") - } - - @discardableResult - func livePhotoAsset(asset: PHAsset, size: CGSize = CGSize(width: 720, height: 1280), progressBlock: Photos.PHAssetImageProgressHandler? = nil, completionBlock:@escaping (PHLivePhoto,Bool)-> Void ) -> PHImageRequestID { - let options = PHLivePhotoRequestOptions() - options.deliveryMode = .opportunistic - options.isNetworkAccessAllowed = true - options.progressHandler = progressBlock - let scale = min(UIScreen.main.scale,2) - let targetSize = CGSize(width: size.width*scale, height: size.height*scale) - let requestID = self.imageManager.requestLivePhoto(for: asset, targetSize: targetSize, contentMode: .aspectFill, options: options) { (livePhoto, info) in - let complete = (info?["PHImageResultIsDegradedKey"] as? Bool) == false - if let livePhoto = livePhoto { - completionBlock(livePhoto,complete) - } - } - return requestID - } - - @discardableResult - func videoAsset(asset: PHAsset, size: CGSize = CGSize(width: 720, height: 1280), progressBlock: Photos.PHAssetImageProgressHandler? = nil, completionBlock:@escaping (AVPlayerItem?, [AnyHashable : Any]?) -> Void ) -> PHImageRequestID { - let options = PHVideoRequestOptions() - options.isNetworkAccessAllowed = true - options.deliveryMode = .automatic - options.progressHandler = progressBlock - let requestID = self.imageManager.requestPlayerItem(forVideo: asset, options: options, resultHandler: { playerItem, info in - completionBlock(playerItem,info) - }) - return requestID - } - - @discardableResult - func imageAsset(asset: PHAsset, size: CGSize = CGSize(width: 160, height: 160), options: PHImageRequestOptions? = nil, completionBlock:@escaping (UIImage,Bool)-> Void ) -> PHImageRequestID { - var options = options - if options == nil { - options = PHImageRequestOptions() - options?.isSynchronous = false - options?.resizeMode = .exact - options?.deliveryMode = .opportunistic - options?.isNetworkAccessAllowed = true - } - let scale = min(UIScreen.main.scale,2) - let targetSize = CGSize(width: size.width*scale, height: size.height*scale) - let requestID = self.imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFill, options: options) { image, info in - let complete = (info?["PHImageResultIsDegradedKey"] as? Bool) == false - if let image = image { - completionBlock(image,complete) - } - } - return requestID - } - - func cancelPHImageRequest(requestID: PHImageRequestID) { - self.imageManager.cancelImageRequest(requestID) - } - - @discardableResult - class func cloudImageDownload(asset: PHAsset, size: CGSize = PHImageManagerMaximumSize, progressBlock: @escaping (Double) -> Void, completionBlock:@escaping (UIImage?)-> Void ) -> PHImageRequestID { - let options = PHImageRequestOptions() - options.isSynchronous = false - options.isNetworkAccessAllowed = true - options.deliveryMode = .opportunistic - options.version = .current - options.resizeMode = .exact - options.progressHandler = { (progress,error,stop,info) in - progressBlock(progress) - } - let requestID = PHCachingImageManager().requestImageData(for: asset, options: options) { (imageData, dataUTI, orientation, info) in - if let data = imageData,let _ = info { - completionBlock(UIImage(data: data)) - }else{ - completionBlock(nil)//error - } - } - return requestID - } - - @discardableResult - class func fullResolutionImageData(asset: PHAsset) -> UIImage? { - let options = PHImageRequestOptions() - options.isSynchronous = true - options.resizeMode = .none - options.isNetworkAccessAllowed = true - options.version = .current - var image: UIImage? = nil - _ = PHCachingImageManager().requestImageData(for: asset, options: options) { (imageData, dataUTI, orientation, info) in - if let data = imageData { - image = UIImage(data: data) - } - } - return image - } -} - -extension PHFetchOptions { - func merge(predicate: NSPredicate) { - if let storePredicate = self.predicate { - self.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [storePredicate, predicate]) - }else { - self.predicate = predicate - } - } -} - -//MARK: - Load Collection -extension TLPhotoLibrary { - func getOption(configure: TLPhotosPickerConfigure) -> PHFetchOptions { - let options: PHFetchOptions - if let fetchOption = configure.fetchOption { - options = fetchOption - }else { - options = PHFetchOptions() - options.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)] - } - if let mediaType = configure.mediaType { - let mediaPredicate = NSPredicate(format: "mediaType = %i", mediaType.rawValue) - options.merge(predicate: mediaPredicate) - } - if configure.allowedVideo == false { - let notVideoPredicate = NSPredicate(format: "mediaType != %i", PHAssetMediaType.video.rawValue) - options.merge(predicate: notVideoPredicate) - } - if configure.allowedLivePhotos == false { - let notLivePhotoPredicate = NSPredicate(format: "NOT ((mediaSubtype & %d) != 0)", PHAssetMediaSubtype.photoLive.rawValue) - options.merge(predicate: notLivePhotoPredicate) - } - if let maxVideoDuration = configure.maxVideoDuration { - let durationPredicate = NSPredicate(format: "duration < %f", maxVideoDuration) - options.merge(predicate: durationPredicate) - } - return options - } - - func fetchResult(collection: TLAssetsCollection?, configure: TLPhotosPickerConfigure) -> PHFetchResult<PHAsset>? { - guard let phAssetCollection = collection?.phAssetCollection else { return nil } - let options = getOption(configure: configure) - return PHAsset.fetchAssets(in: phAssetCollection, options: options) - } - - func fetchCollection(configure: TLPhotosPickerConfigure) { - self.albums = nil - self.assetCollections = [] - let useCameraButton = configure.usedCameraButton - let options = getOption(configure: configure) - let fetchCollectionOption = configure.fetchCollectionOption - - func getAlbum(subType: PHAssetCollectionSubtype, result: inout [TLAssetsCollection]) { - let collectionOption = fetchCollectionOption[.assetCollections(.album)] - let fetchCollection = PHAssetCollection.fetchAssetCollections(with: .album, - subtype: subType, - options: collectionOption) - self.assetCollections.append(fetchCollection) - var collections = [PHAssetCollection]() - fetchCollection.enumerateObjects { (collection, index, _) in - if configure.allowedAlbumCloudShared == false && collection.assetCollectionSubtype == .albumCloudShared { - }else { - collections.append(collection) - } - } - for collection in collections { - if !result.contains(where: { $0.localIdentifier == collection.localIdentifier }) { - var assetsCollection = TLAssetsCollection(collection: collection) - assetsCollection.title = configure.customLocalizedTitle[assetsCollection.title] ?? assetsCollection.title - assetsCollection.fetchResult = PHAsset.fetchAssets(in: collection, options: options) - if assetsCollection.count > 0 { - result.append(assetsCollection) - } - } - } - } - - @discardableResult - func getSmartAlbum(subType: PHAssetCollectionSubtype, - useCameraButton: Bool = false, - result: inout [TLAssetsCollection]) - -> TLAssetsCollection? - { - let collectionOption = fetchCollectionOption[.assetCollections(.smartAlbum)] - let fetchCollection = PHAssetCollection.fetchAssetCollections(with: .smartAlbum, - subtype: subType, - options: collectionOption) - self.assetCollections.append(fetchCollection) - if - let collection = fetchCollection.firstObject, - result.contains(where: { $0.localIdentifier == collection.localIdentifier }) == false - { - var assetsCollection = TLAssetsCollection(collection: collection) - assetsCollection.title = configure.customLocalizedTitle[assetsCollection.title] ?? assetsCollection.title - assetsCollection.fetchResult = PHAsset.fetchAssets(in: collection, options: options) - if assetsCollection.count > 0 || useCameraButton { - result.append(assetsCollection) - return assetsCollection - } - } - return nil - } - if let fetchCollectionTypes = configure.fetchCollectionTypes { - DispatchQueue.global(qos: .userInteractive).async { [weak self] in - var assetCollections = [TLAssetsCollection]() - for (type,subType) in fetchCollectionTypes { - if type == .smartAlbum { - getSmartAlbum(subType: subType, result: &assetCollections) - }else { - getAlbum(subType: subType, result: &assetCollections) - } - } - DispatchQueue.main.async { - self?.delegate?.loadCompleteAllCollection(collections: assetCollections) - } - } - }else { - DispatchQueue.global(qos: .userInteractive).async { [weak self] in - var assetCollections = [TLAssetsCollection]() - - //Recents - let recentsCollection = getSmartAlbum(subType: .smartAlbumUserLibrary, - useCameraButton: useCameraButton, - result: &assetCollections) - if var cameraRoll = recentsCollection { - cameraRoll.title = configure.customLocalizedTitle[cameraRoll.title] ?? cameraRoll.title - cameraRoll.useCameraButton = useCameraButton - assetCollections[0] = cameraRoll - DispatchQueue.main.async { - self?.delegate?.loadCameraRollCollection(collection: cameraRoll) - } - } - //Screenshots - getSmartAlbum(subType: .smartAlbumScreenshots, result: &assetCollections) - //Selfies - getSmartAlbum(subType: .smartAlbumSelfPortraits, result: &assetCollections) - //Panoramas - getSmartAlbum(subType: .smartAlbumPanoramas, result: &assetCollections) - //Favorites - getSmartAlbum(subType: .smartAlbumFavorites, result: &assetCollections) - //CloudShared - getSmartAlbum(subType: .albumCloudShared, result: &assetCollections) - //get all another albums - getAlbum(subType: .any, result: &assetCollections) - if configure.allowedVideo { - //Videos - getSmartAlbum(subType: .smartAlbumVideos, result: &assetCollections) - } - //Album - let collectionOption = fetchCollectionOption[.topLevelUserCollections] - let albumsResult = PHCollectionList.fetchTopLevelUserCollections(with: collectionOption) - self?.albums = albumsResult - albumsResult.enumerateObjects({ (collection, index, stop) -> Void in - guard let collection = collection as? PHAssetCollection else { return } - var assetsCollection = TLAssetsCollection(collection: collection) - assetsCollection.title = configure.customLocalizedTitle[assetsCollection.title] ?? assetsCollection.title - assetsCollection.fetchResult = PHAsset.fetchAssets(in: collection, options: options) - if assetsCollection.count > 0, !assetCollections.contains(where: { $0.localIdentifier == collection.localIdentifier }) { - assetCollections.append(assetsCollection) - } - }) - - DispatchQueue.main.async { - self?.delegate?.loadCompleteAllCollection(collections: assetCollections) - } - } - } - } -} - diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotopickerDataSourcesProtocol.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotopickerDataSourcesProtocol.swift deleted file mode 100644 index 58b97f25d9958f6e7be4dd90851c89ac329dcf2e..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotopickerDataSourcesProtocol.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// TLPhotopickerDataSourcesProtocol.swift -// TLPhotoPicker -// -// Created by wade.hawk on 21/01/2019. -// - -import UIKit -import Photos - -public protocol TLPhotopickerDataSourcesProtocol { - func headerReferenceSize() -> CGSize - func footerReferenceSize() -> CGSize - func registerSupplementView(collectionView: UICollectionView) - func supplementIdentifier(kind: String) -> String - func configure(supplement view: UICollectionReusableView, section: (title: String, assets: [TLPHAsset])) -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotosPickerViewController.swift b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotosPickerViewController.swift deleted file mode 100644 index 1b0211e454229e88f3d9afb859b5da02c52436b1..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotosPickerViewController.swift +++ /dev/null @@ -1,1358 +0,0 @@ -// -// TLPhotosPickerViewController.swift -// TLPhotosPicker -// -// Created by wade.hawk on 2017. 4. 14.. -// Copyright © 2017년 wade.hawk. All rights reserved. -// - -import UIKit -import Photos -import PhotosUI -import MobileCoreServices - -public protocol TLPhotosPickerViewControllerDelegate: AnyObject { - func dismissPhotoPicker(withPHAssets: [PHAsset]) - func dismissPhotoPicker(withTLPHAssets: [TLPHAsset]) - func shouldDismissPhotoPicker(withTLPHAssets: [TLPHAsset]) -> Bool - func dismissComplete() - func photoPickerDidCancel() - func canSelectAsset(phAsset: PHAsset) -> Bool - func didExceedMaximumNumberOfSelection(picker: TLPhotosPickerViewController) - func handleNoAlbumPermissions(picker: TLPhotosPickerViewController) - func handleNoCameraPermissions(picker: TLPhotosPickerViewController) -} - -extension TLPhotosPickerViewControllerDelegate { - public func deninedAuthoization() { } - public func dismissPhotoPicker(withPHAssets: [PHAsset]) { } - public func dismissPhotoPicker(withTLPHAssets: [TLPHAsset]) { } - public func shouldDismissPhotoPicker(withTLPHAssets: [TLPHAsset]) -> Bool { return true } - public func dismissComplete() { } - public func photoPickerDidCancel() { } - public func canSelectAsset(phAsset: PHAsset) -> Bool { return true } - public func didExceedMaximumNumberOfSelection(picker: TLPhotosPickerViewController) { } - public func handleNoAlbumPermissions(picker: TLPhotosPickerViewController) { } - public func handleNoCameraPermissions(picker: TLPhotosPickerViewController) { } -} - -//for log -public protocol TLPhotosPickerLogDelegate: AnyObject { - func selectedCameraCell(picker: TLPhotosPickerViewController) - func deselectedPhoto(picker: TLPhotosPickerViewController, at: Int) - func selectedPhoto(picker: TLPhotosPickerViewController, at: Int) - func selectedAlbum(picker: TLPhotosPickerViewController, title: String, at: Int) -} - -extension TLPhotosPickerLogDelegate { - func selectedCameraCell(picker: TLPhotosPickerViewController) { } - func deselectedPhoto(picker: TLPhotosPickerViewController, at: Int) { } - func selectedPhoto(picker: TLPhotosPickerViewController, at: Int) { } - func selectedAlbum(picker: TLPhotosPickerViewController, collections: [TLAssetsCollection], at: Int) { } -} - -public struct TLPhotosPickerConfigure { - public var customLocalizedTitle: [String: String] = ["Camera Roll": "Camera Roll"] - public var tapHereToChange = "Tap here to change" - public var cancelTitle = "Cancel" - public var doneTitle = "Done" - public var emptyMessage = "No albums" - public var selectMessage = "Select" - public var deselectMessage = "Deselect" - public var emptyImage: UIImage? = nil - public var usedCameraButton = true - public var defaultToFrontFacingCamera = false - public var usedPrefetch = false - public var previewAtForceTouch = false - public var startplayBack: PHLivePhotoViewPlaybackStyle = .hint - public var allowedLivePhotos = true - public var allowedVideo = true - public var allowedAlbumCloudShared = false - public var allowedPhotograph = true - public var allowedVideoRecording = true - public var recordingVideoQuality: UIImagePickerController.QualityType = .typeMedium - public var maxVideoDuration:TimeInterval? = nil - public var autoPlay = true - public var muteAudio = true - public var preventAutomaticLimitedAccessAlert = true - public var mediaType: PHAssetMediaType? = nil - public var numberOfColumn = 3 - public var minimumLineSpacing: CGFloat = 5 - public var minimumInteritemSpacing: CGFloat = 5 - public var singleSelectedMode = false - public var maxSelectedAssets: Int? = nil - public var fetchOption: PHFetchOptions? = nil - public var fetchCollectionOption: [FetchCollectionType: PHFetchOptions] = [:] - public var selectedColor = UIColor(red: 88/255, green: 144/255, blue: 255/255, alpha: 1.0) - public var cameraBgColor = UIColor(red: 221/255, green: 223/255, blue: 226/255, alpha: 1) - public var cameraIcon = TLBundle.podBundleImage(named: "camera") - public var videoIcon = TLBundle.podBundleImage(named: "video") - public var placeholderIcon = TLBundle.podBundleImage(named: "insertPhotoMaterial") - public var nibSet: (nibName: String, bundle:Bundle)? = nil - public var cameraCellNibSet: (nibName: String, bundle:Bundle)? = nil - public var fetchCollectionTypes: [(PHAssetCollectionType,PHAssetCollectionSubtype)]? = nil - public var groupByFetch: PHFetchedResultGroupedBy? = nil - public var supportedInterfaceOrientations: UIInterfaceOrientationMask = .portrait - public var popup: [PopupConfigure] = [] - public init() { - - } -} - -public enum FetchCollectionType { - case assetCollections(PHAssetCollectionType) - case topLevelUserCollections -} - -extension FetchCollectionType: Hashable { - private var identifier: String { - switch self { - case let .assetCollections(collectionType): - return "assetCollections\(collectionType.rawValue)" - case .topLevelUserCollections: - return "topLevelUserCollections" - } - } - - public func hash(into hasher: inout Hasher) { - hasher.combine(self.identifier) - } -} - -public enum PopupConfigure { - case animation(TimeInterval) -} - -public struct Platform { - public static var isSimulator: Bool { - return TARGET_OS_SIMULATOR != 0 // Use this line in Xcode 7 or newer - } -} - - -open class TLPhotosPickerViewController: UIViewController { - @IBOutlet open var navigationBar: UINavigationBar! - @IBOutlet open var titleView: UIView! - @IBOutlet open var titleLabel: UILabel! - @IBOutlet open var subTitleStackView: UIStackView! - @IBOutlet open var subTitleLabel: UILabel! - @IBOutlet open var subTitleArrowImageView: UIImageView! - @IBOutlet open var albumPopView: TLAlbumPopView! - @IBOutlet open var collectionView: UICollectionView! - @IBOutlet open var indicator: UIActivityIndicatorView! - @IBOutlet open var popArrowImageView: UIImageView! - @IBOutlet open var customNavItem: UINavigationItem! - @IBOutlet open var doneButton: UIBarButtonItem! - @IBOutlet open var cancelButton: UIBarButtonItem! - @IBOutlet open var navigationBarTopConstraint: NSLayoutConstraint! - @IBOutlet open var emptyView: UIView! - @IBOutlet open var emptyImageView: UIImageView! - @IBOutlet open var emptyMessageLabel: UILabel! - @IBOutlet open var photosButton: UIBarButtonItem! - - public weak var delegate: TLPhotosPickerViewControllerDelegate? = nil - public weak var logDelegate: TLPhotosPickerLogDelegate? = nil - open var selectedAssets = [TLPHAsset]() - public var configure = TLPhotosPickerConfigure() - public var customDataSouces: TLPhotopickerDataSourcesProtocol? = nil - - private var usedCameraButton: Bool { - return self.configure.usedCameraButton - } - private var previewAtForceTouch: Bool { - return self.configure.previewAtForceTouch - } - private var allowedVideo: Bool { - return self.configure.allowedVideo - } - private var usedPrefetch: Bool { - get { - return self.configure.usedPrefetch - } - set { - self.configure.usedPrefetch = newValue - } - } - private var allowedLivePhotos: Bool { - get { - return self.configure.allowedLivePhotos - } - set { - self.configure.allowedLivePhotos = newValue - } - } - @objc open var canSelectAsset: ((PHAsset) -> Bool)? = nil - @objc open var didExceedMaximumNumberOfSelection: ((TLPhotosPickerViewController) -> Void)? = nil - @objc open var handleNoAlbumPermissions: ((TLPhotosPickerViewController) -> Void)? = nil - @objc open var handleNoCameraPermissions: ((TLPhotosPickerViewController) -> Void)? = nil - @objc open var dismissCompletion: (() -> Void)? = nil - private var completionWithPHAssets: (([PHAsset]) -> Void)? = nil - private var completionWithTLPHAssets: (([TLPHAsset]) -> Void)? = nil - private var didCancel: (() -> Void)? = nil - - private var collections = [TLAssetsCollection]() - private var focusedCollection: TLAssetsCollection? = nil - private var requestIDs = SynchronizedDictionary<IndexPath,PHImageRequestID>() - private var playRequestID: (indexPath: IndexPath, requestID: PHImageRequestID)? = nil - private var photoLibrary = TLPhotoLibrary() - private var queue = DispatchQueue(label: "tilltue.photos.pikcker.queue") - private var queueForGroupedBy = DispatchQueue(label: "tilltue.photos.pikcker.queue.for.groupedBy", qos: .utility) - private var thumbnailSize = CGSize.zero - private var placeholderThumbnail: UIImage? = nil - private var cameraImage: UIImage? = nil - - deinit { - //print("deinit TLPhotosPickerViewController") - PHPhotoLibrary.shared().unregisterChangeObserver(self) - } - - required public init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - public init() { - super.init(nibName: "TLPhotosPickerViewController", bundle: TLBundle.bundle()) - } - - @objc convenience public init(withPHAssets: (([PHAsset]) -> Void)? = nil, didCancel: (() -> Void)? = nil) { - self.init() - self.completionWithPHAssets = withPHAssets - self.didCancel = didCancel - } - - convenience public init(withTLPHAssets: (([TLPHAsset]) -> Void)? = nil, didCancel: (() -> Void)? = nil) { - self.init() - self.completionWithTLPHAssets = withTLPHAssets - self.didCancel = didCancel - } - - override open var supportedInterfaceOrientations: UIInterfaceOrientationMask { - return self.configure.supportedInterfaceOrientations - } - - open override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { - super.traitCollectionDidChange(previousTraitCollection) - - if traitCollection.forceTouchCapability == .available && self.previewAtForceTouch { - registerForPreviewing(with: self, sourceView: collectionView) - } - - updateUserInterfaceStyle() - } - - private func updateUserInterfaceStyle() { - if #available(iOS 13.0, *) { - let userInterfaceStyle = self.traitCollection.userInterfaceStyle - let image = TLBundle.podBundleImage(named: "pop_arrow") - let subImage = TLBundle.podBundleImage(named: "arrow") - if userInterfaceStyle.rawValue == 2 { - self.popArrowImageView.image = image?.colorMask(color: .systemBackground) - self.subTitleArrowImageView.image = subImage?.colorMask(color: .white) - self.view.backgroundColor = .black - self.collectionView.backgroundColor = .black - } else { - self.popArrowImageView.image = image?.colorMask(color: .white) - self.subTitleArrowImageView.image = subImage - self.view.backgroundColor = .white - self.collectionView.backgroundColor = .white - } - } - } - - override open func didReceiveMemoryWarning() { - super.didReceiveMemoryWarning() - self.stopPlay() - } - - private func loadPhotos(limitMode: Bool) { - self.photoLibrary.limitMode = limitMode - self.photoLibrary.delegate = self - self.photoLibrary.fetchCollection(configure: self.configure) - } - - private func processAuthorization(status: PHAuthorizationStatus) { - switch status { - case .notDetermined: - requestAuthorization() - case .limited: - loadPhotos(limitMode: true) - case .authorized: - loadPhotos(limitMode: false) - case .restricted, .denied: - handleDeniedAlbumsAuthorization() - @unknown default: - break - } - } - - private func requestAuthorization() { - if #available(iOS 14.0, *) { - PHPhotoLibrary.requestAuthorization(for: .readWrite) { [weak self] status in - self?.processAuthorization(status: status) - } - } else { - PHPhotoLibrary.requestAuthorization { [weak self] status in - self?.processAuthorization(status: status) - } - } - } - - private func checkAuthorization() { - if #available(iOS 14.0, *) { - let status = PHPhotoLibrary.authorizationStatus(for: .readWrite) - processAuthorization(status: status) - } else { - let status = PHPhotoLibrary.authorizationStatus() - processAuthorization(status: status) - } - } - - override open func viewDidLoad() { - super.viewDidLoad() - makeUI() - checkAuthorization() - } - - override open func viewDidLayoutSubviews() { - super.viewDidLayoutSubviews() - if self.thumbnailSize == CGSize.zero { - initItemSize() - } - if #available(iOS 11.0, *) { - } else if self.navigationBarTopConstraint.constant == 0 { - self.navigationBarTopConstraint.constant = 20 - } - } - - override open func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - if self.photoLibrary.delegate == nil { - checkAuthorization() - } - } - - private func findIndexAndReloadCells(phAsset: PHAsset) { - if - self.configure.groupByFetch != nil, - let indexPath = self.focusedCollection?.findIndex(phAsset: phAsset) - { - self.collectionView.reloadItems(at: [indexPath]) - return - } - if - var index = self.focusedCollection?.fetchResult?.index(of: phAsset), - let focused = self.focusedCollection, - index != NSNotFound - { - index += (focused.useCameraButton) ? 1 : 0 - self.collectionView.reloadItems(at: [IndexPath(row: index, section: 0)]) - } - } - - open func deselectWhenUsingSingleSelectedMode() { - if - self.configure.singleSelectedMode == true, - let selectedPHAsset = self.selectedAssets.first?.phAsset - { - self.selectedAssets.removeAll() - findIndexAndReloadCells(phAsset: selectedPHAsset) - } - } - - open func maxCheck() -> Bool { - deselectWhenUsingSingleSelectedMode() - if let max = self.configure.maxSelectedAssets, max <= self.selectedAssets.count { - self.delegate?.didExceedMaximumNumberOfSelection(picker: self) - self.didExceedMaximumNumberOfSelection?(self) - return true - } - return false - } -} - -// MARK: - UI & UI Action -extension TLPhotosPickerViewController { - - @objc public func registerNib(nibName: String, bundle: Bundle) { - self.collectionView.register(UINib(nibName: nibName, bundle: bundle), forCellWithReuseIdentifier: nibName) - } - - private func centerAtRect(image: UIImage?, rect: CGRect, bgColor: UIColor = UIColor.white) -> UIImage? { - guard let image = image else { return nil } - UIGraphicsBeginImageContextWithOptions(rect.size, false, image.scale) - bgColor.setFill() - UIRectFill(CGRect(x: 0, y: 0, width: rect.size.width, height: rect.size.height)) - image.draw(in: CGRect(x:rect.size.width/2 - image.size.width/2, y:rect.size.height/2 - image.size.height/2, width:image.size.width, height:image.size.height)) - let result = UIGraphicsGetImageFromCurrentImageContext() - UIGraphicsEndImageContext() - return result - } - - private func initItemSize() { - guard let layout = self.collectionView.collectionViewLayout as? UICollectionViewFlowLayout else { - return - } - let count = CGFloat(self.configure.numberOfColumn) - let width = floor((self.view.frame.size.width - (self.configure.minimumInteritemSpacing * (count-1))) / count) - self.thumbnailSize = CGSize(width: width, height: width) - layout.itemSize = self.thumbnailSize - layout.minimumInteritemSpacing = self.configure.minimumInteritemSpacing - layout.minimumLineSpacing = self.configure.minimumLineSpacing - self.collectionView.collectionViewLayout = layout - self.placeholderThumbnail = centerAtRect(image: self.configure.placeholderIcon, rect: CGRect(x: 0, y: 0, width: width, height: width)) - self.cameraImage = centerAtRect(image: self.configure.cameraIcon, rect: CGRect(x: 0, y: 0, width: width, height: width), bgColor: self.configure.cameraBgColor) - } - - @objc open func makeUI() { - registerNib(nibName: "TLPhotoCollectionViewCell", bundle: TLBundle.bundle()) - if let nibSet = self.configure.nibSet { - registerNib(nibName: nibSet.nibName, bundle: nibSet.bundle) - } - if let nibSet = self.configure.cameraCellNibSet { - registerNib(nibName: nibSet.nibName, bundle: nibSet.bundle) - } - self.indicator.startAnimating() - let tapGesture = UITapGestureRecognizer(target: self, action: #selector(titleTap)) - self.titleView.addGestureRecognizer(tapGesture) - self.titleLabel.text = self.configure.customLocalizedTitle["Camera Roll"] - self.subTitleLabel.text = self.configure.tapHereToChange - self.cancelButton.title = self.configure.cancelTitle - - let attributes: [NSAttributedString.Key: Any] = [.font: UIFont.boldSystemFont(ofSize: UIFont.labelFontSize)] - self.doneButton.setTitleTextAttributes(attributes, for: .normal) - self.doneButton.title = self.configure.doneTitle - self.emptyView.isHidden = true - self.emptyImageView.image = self.configure.emptyImage - self.emptyMessageLabel.text = self.configure.emptyMessage - self.albumPopView.tableView.delegate = self - self.albumPopView.tableView.dataSource = self - self.popArrowImageView.image = TLBundle.podBundleImage(named: "pop_arrow") - self.subTitleArrowImageView.image = TLBundle.podBundleImage(named: "arrow") - if #available(iOS 10.0, *), self.usedPrefetch { - self.collectionView.isPrefetchingEnabled = true - self.collectionView.prefetchDataSource = self - } else { - self.usedPrefetch = false - } - if #available(iOS 9.0, *), self.allowedLivePhotos { - } else { - self.allowedLivePhotos = false - } - self.customDataSouces?.registerSupplementView(collectionView: self.collectionView) - self.navigationBar.delegate = self - updateUserInterfaceStyle() - } - - private func updatePresentLimitedLibraryButton() { - if #available(iOS 14.0, *), self.photoLibrary.limitMode && self.configure.preventAutomaticLimitedAccessAlert { - self.customNavItem.rightBarButtonItems = [self.doneButton, self.photosButton] - } else { - self.customNavItem.rightBarButtonItems = [self.doneButton] - } - } - - private func updateTitle() { - guard self.focusedCollection != nil else { return } - self.titleLabel.text = self.focusedCollection?.title - updatePresentLimitedLibraryButton() - } - - private func reloadCollectionView() { - guard self.focusedCollection != nil else { - return - } - if let groupedBy = self.configure.groupByFetch, self.usedPrefetch == false { - queueForGroupedBy.async { [weak self] in - self?.focusedCollection?.reloadSection(groupedBy: groupedBy) - DispatchQueue.main.async { - self?.collectionView.reloadData() - } - } - }else { - self.collectionView.reloadData() - } - } - - private func reloadTableView() { - let count = min(5, self.collections.count) - var frame = self.albumPopView.popupView.frame - frame.size.height = CGFloat(count * 75) - self.albumPopView.popupViewHeight.constant = CGFloat(count * 75) - UIView.animate(withDuration: self.albumPopView.show ? 0.1:0) { - self.albumPopView.popupView.frame = frame - self.albumPopView.setNeedsLayout() - } - self.albumPopView.tableView.reloadData() - self.albumPopView.setupPopupFrame() - } - - private func registerChangeObserver() { - PHPhotoLibrary.shared().register(self) - } - - private func getfocusedIndex() -> Int { - guard let focused = self.focusedCollection, let result = self.collections.firstIndex(where: { $0 == focused }) else { return 0 } - return result - } - - private func getCollection(section: Int) -> PHAssetCollection? { - guard section < self.collections.count else { - return nil - } - return self.collections[section].phAssetCollection - } - - private func focused(collection: TLAssetsCollection) { - func resetRequest() { - cancelAllImageAssets() - } - resetRequest() - self.collections[getfocusedIndex()].recentPosition = self.collectionView.contentOffset - var reloadIndexPaths = [IndexPath(row: getfocusedIndex(), section: 0)] - self.focusedCollection = collection - self.focusedCollection?.fetchResult = self.photoLibrary.fetchResult(collection: collection, configure: self.configure) - reloadIndexPaths.append(IndexPath(row: getfocusedIndex(), section: 0)) - self.albumPopView.tableView.reloadRows(at: reloadIndexPaths, with: .none) - self.albumPopView.show(false, duration: self.configure.popup.duration) - self.updateTitle() - self.reloadCollectionView() - self.collectionView.contentOffset = collection.recentPosition - } - - private func cancelAllImageAssets() { - self.requestIDs.forEach{ (indexPath, requestID) in - self.photoLibrary.cancelPHImageRequest(requestID: requestID) - } - self.requestIDs.removeAll() - } - - // User Action - @objc func titleTap() { - guard collections.count > 0 else { return } - self.albumPopView.show(self.albumPopView.isHidden, duration: self.configure.popup.duration) - } - - @IBAction open func cancelButtonTap() { - self.stopPlay() - self.dismiss(done: false) - } - - @IBAction open func doneButtonTap() { - self.stopPlay() - self.dismiss(done: true) - } - - @IBAction open func limitButtonTap() { - if #available(iOS 14.0, *) { - PHPhotoLibrary.shared().presentLimitedLibraryPicker(from: self) - } - } - - private func dismiss(done: Bool) { - var shouldDismiss = true - if done { - #if swift(>=4.1) - self.delegate?.dismissPhotoPicker(withPHAssets: self.selectedAssets.compactMap{ $0.phAsset }) - #else - self.delegate?.dismissPhotoPicker(withPHAssets: self.selectedAssets.flatMap{ $0.phAsset }) - #endif - self.delegate?.dismissPhotoPicker(withTLPHAssets: self.selectedAssets) - shouldDismiss = self.delegate?.shouldDismissPhotoPicker(withTLPHAssets: self.selectedAssets) ?? true - self.completionWithTLPHAssets?(self.selectedAssets) - #if swift(>=4.1) - self.completionWithPHAssets?(self.selectedAssets.compactMap{ $0.phAsset }) - #else - self.completionWithPHAssets?(self.selectedAssets.flatMap{ $0.phAsset }) - #endif - }else { - self.delegate?.photoPickerDidCancel() - self.didCancel?() - } - if shouldDismiss { - self.dismiss(animated: true) { [weak self] in - self?.delegate?.dismissComplete() - self?.dismissCompletion?() - } - } - } - - private func canSelect(phAsset: PHAsset) -> Bool { - if let closure = self.canSelectAsset { - return closure(phAsset) - }else if let delegate = self.delegate { - return delegate.canSelectAsset(phAsset: phAsset) - } - return true - } - - private func focusFirstCollection() { - if self.focusedCollection == nil, let collection = self.collections.first { - self.focusedCollection = collection - self.updateTitle() - self.reloadCollectionView() - } - } -} - -// MARK: - TLPhotoLibraryDelegate -extension TLPhotosPickerViewController: TLPhotoLibraryDelegate { - func loadCameraRollCollection(collection: TLAssetsCollection) { - self.collections = [collection] - self.focusFirstCollection() - self.indicator.stopAnimating() - self.reloadTableView() - } - - func loadCompleteAllCollection(collections: [TLAssetsCollection]) { - self.collections = collections - self.focusFirstCollection() - let isEmpty = self.collections.count == 0 - self.subTitleStackView.isHidden = isEmpty - self.emptyView.isHidden = !isEmpty - self.emptyImageView.isHidden = self.emptyImageView.image == nil - self.indicator.stopAnimating() - self.reloadTableView() - self.registerChangeObserver() - } -} - -// MARK: - Camera Picker -extension TLPhotosPickerViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { - private func showCameraIfAuthorized() { - let cameraAuthorization = AVCaptureDevice.authorizationStatus(for: .video) - switch cameraAuthorization { - case .authorized: - self.showCamera() - case .notDetermined: - AVCaptureDevice.requestAccess(for: .video, completionHandler: { [weak self] (authorized) in - DispatchQueue.main.async { [weak self] in - if authorized { - self?.showCamera() - } else { - self?.handleDeniedCameraAuthorization() - } - } - }) - case .restricted, .denied: - self.handleDeniedCameraAuthorization() - @unknown default: - break - } - } - - private func showCamera() { - guard !maxCheck() else { return } - let picker = UIImagePickerController() - picker.sourceType = .camera - var mediaTypes: [String] = [] - if self.configure.allowedPhotograph { - mediaTypes.append(kUTTypeImage as String) - } - if self.configure.allowedVideoRecording { - mediaTypes.append(kUTTypeMovie as String) - picker.videoQuality = self.configure.recordingVideoQuality - if let duration = self.configure.maxVideoDuration { - picker.videoMaximumDuration = duration - } - } - guard mediaTypes.count > 0 else { - return - } - picker.cameraDevice = configure.defaultToFrontFacingCamera ? .front : .rear - picker.mediaTypes = mediaTypes - picker.allowsEditing = false - picker.delegate = self - - // if user is on ipad using split view controller, present picker as popover - if UIDevice.current.userInterfaceIdiom == .pad { - picker.modalPresentationStyle = .popover - picker.popoverPresentationController?.sourceView = view - picker.popoverPresentationController?.sourceRect = .zero - } - - self.present(picker, animated: true, completion: nil) - } - - private func handleDeniedAlbumsAuthorization() { - DispatchQueue.main.async { - self.delegate?.handleNoAlbumPermissions(picker: self) - self.handleNoAlbumPermissions?(self) - } - } - - private func handleDeniedCameraAuthorization() { - DispatchQueue.main.async { - self.delegate?.handleNoCameraPermissions(picker: self) - self.handleNoCameraPermissions?(self) - } - } - - open func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { - picker.dismiss(animated: true, completion: nil) - } - - open func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { - if let image = (info[.originalImage] as? UIImage) { - var placeholderAsset: PHObjectPlaceholder? = nil - PHPhotoLibrary.shared().performChanges({ - let newAssetRequest = PHAssetChangeRequest.creationRequestForAsset(from: image) - placeholderAsset = newAssetRequest.placeholderForCreatedAsset - }, completionHandler: { [weak self] (success, error) in - guard self?.maxCheck() == false else { return } - if success, let `self` = self, let identifier = placeholderAsset?.localIdentifier { - guard let asset = PHAsset.fetchAssets(withLocalIdentifiers: [identifier], options: nil).firstObject, - self.canSelect(phAsset: asset) else { return } - var result = TLPHAsset(asset: asset) - result.selectedOrder = self.selectedAssets.count + 1 - result.isSelectedFromCamera = true - self.selectedAssets.append(result) - self.logDelegate?.selectedPhoto(picker: self, at: 1) - } - }) - } - else if (info[.mediaType] as? String) == kUTTypeMovie as String { - var placeholderAsset: PHObjectPlaceholder? = nil - PHPhotoLibrary.shared().performChanges({ - let newAssetRequest = PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: info[.mediaURL] as! URL) - placeholderAsset = newAssetRequest?.placeholderForCreatedAsset - }) { [weak self] (sucess, error) in - guard self?.maxCheck() == false else { return } - if sucess, let `self` = self, let identifier = placeholderAsset?.localIdentifier { - guard let asset = PHAsset.fetchAssets(withLocalIdentifiers: [identifier], options: nil).firstObject, - self.canSelect(phAsset: asset) else { return } - var result = TLPHAsset(asset: asset) - result.selectedOrder = self.selectedAssets.count + 1 - result.isSelectedFromCamera = true - self.selectedAssets.append(result) - self.logDelegate?.selectedPhoto(picker: self, at: 1) - } - } - } - - picker.dismiss(animated: true, completion: nil) - } -} - -// MARK: - UICollectionView Scroll Delegate -extension TLPhotosPickerViewController { - open func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { - if !decelerate { - videoCheck() - } - } - - open func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { - videoCheck() - } - - private func videoCheck() { - func play(asset: (IndexPath,TLPHAsset)) { - if self.playRequestID?.indexPath != asset.0 { - playVideo(asset: asset.1, indexPath: asset.0) - } - } - guard self.configure.autoPlay else { return } - guard self.playRequestID == nil else { return } - let visibleIndexPaths = self.collectionView.indexPathsForVisibleItems.sorted(by: { $0.row < $1.row }) - #if swift(>=4.1) - let boundAssets = visibleIndexPaths.compactMap{ indexPath -> (IndexPath,TLPHAsset)? in - guard let asset = self.focusedCollection?.getTLAsset(at: indexPath), asset.phAsset?.mediaType == .video else { return nil } - return (indexPath,asset) - } - #else - let boundAssets = visibleIndexPaths.flatMap{ indexPath -> (IndexPath,TLPHAsset)? in - guard let asset = self.focusedCollection?.getTLAsset(at: indexPath.row),asset.phAsset?.mediaType == .video else { return nil } - return (indexPath,asset) - } - #endif - if let firstSelectedVideoAsset = (boundAssets.filter{ getSelectedAssets($0.1) != nil }.first) { - play(asset: firstSelectedVideoAsset) - }else if let firstVideoAsset = boundAssets.first { - play(asset: firstVideoAsset) - } - - } -} -// MARK: - Video & LivePhotos Control PHLivePhotoViewDelegate -extension TLPhotosPickerViewController: PHLivePhotoViewDelegate { - private func stopPlay() { - guard let playRequest = self.playRequestID else { return } - self.playRequestID = nil - guard let cell = self.collectionView.cellForItem(at: playRequest.indexPath) as? TLPhotoCollectionViewCell else { return } - cell.stopPlay() - } - - private func playVideo(asset: TLPHAsset, indexPath: IndexPath) { - stopPlay() - guard let phAsset = asset.phAsset else { return } - if asset.type == .video { - guard let cell = self.collectionView.cellForItem(at: indexPath) as? TLPhotoCollectionViewCell else { return } - let requestID = self.photoLibrary.videoAsset(asset: phAsset, completionBlock: { (playerItem, info) in - DispatchQueue.main.async { [weak self, weak cell] in - guard let `self` = self, let cell = cell, cell.player == nil else { return } - let player = AVPlayer(playerItem: playerItem) - cell.player = player - player.play() - player.isMuted = self.configure.muteAudio - } - }) - if requestID > 0 { - self.playRequestID = (indexPath,requestID) - } - }else if asset.type == .livePhoto && self.allowedLivePhotos { - guard let cell = self.collectionView.cellForItem(at: indexPath) as? TLPhotoCollectionViewCell else { return } - let requestID = self.photoLibrary.livePhotoAsset(asset: phAsset, size: self.thumbnailSize, completionBlock: { [weak cell] (livePhoto,complete) in - cell?.livePhotoView?.isHidden = false - cell?.livePhotoView?.livePhoto = livePhoto - cell?.livePhotoView?.isMuted = true - cell?.livePhotoView?.startPlayback(with: self.configure.startplayBack) - }) - if requestID > 0 { - self.playRequestID = (indexPath,requestID) - } - } - } - - public func livePhotoView(_ livePhotoView: PHLivePhotoView, didEndPlaybackWith playbackStyle: PHLivePhotoViewPlaybackStyle) { - livePhotoView.isMuted = true - livePhotoView.startPlayback(with: self.configure.startplayBack) - } - - public func livePhotoView(_ livePhotoView: PHLivePhotoView, willBeginPlaybackWith playbackStyle: PHLivePhotoViewPlaybackStyle) { - } -} - -// MARK: - PHPhotoLibraryChangeObserver -extension TLPhotosPickerViewController: PHPhotoLibraryChangeObserver { - private func getChanges(_ changeInstance: PHChange) -> PHFetchResultChangeDetails<PHAsset>? { - func isChangesCount<T>(changeDetails: PHFetchResultChangeDetails<T>?) -> Bool { - guard let changeDetails = changeDetails else { - return false - } - let before = changeDetails.fetchResultBeforeChanges.count - let after = changeDetails.fetchResultAfterChanges.count - return before != after - } - - func isAlbumsChanges() -> Bool { - guard let albums = self.photoLibrary.albums else { - return false - } - let changeDetails = changeInstance.changeDetails(for: albums) - return isChangesCount(changeDetails: changeDetails) - } - - func isCollectionsChanges() -> Bool { - for fetchResultCollection in self.photoLibrary.assetCollections { - let changeDetails = changeInstance.changeDetails(for: fetchResultCollection) - if isChangesCount(changeDetails: changeDetails) == true { - return true - } - } - return false - } - - if isAlbumsChanges() || isCollectionsChanges() { - DispatchQueue.main.async { - self.albumPopView.show(false, duration: self.configure.popup.duration) - self.photoLibrary.fetchCollection(configure: self.configure) - } - return nil - }else { - guard let changeFetchResult = self.focusedCollection?.fetchResult else { return nil } - guard let changes = changeInstance.changeDetails(for: changeFetchResult) else { return nil } - return changes - } - } - - public func photoLibraryDidChange(_ changeInstance: PHChange) { - var addIndex = 0 - if getfocusedIndex() == 0 { - addIndex = self.usedCameraButton ? 1 : 0 - } - DispatchQueue.main.async { - guard let changes = self.getChanges(changeInstance) else { - return - } - - if changes.hasIncrementalChanges, self.configure.groupByFetch == nil { - var deletedSelectedAssets = false - var order = 0 - #if swift(>=4.1) - self.selectedAssets = self.selectedAssets.enumerated().compactMap({ (offset,asset) -> TLPHAsset? in - var asset = asset - if let phAsset = asset.phAsset, changes.fetchResultAfterChanges.contains(phAsset) { - order += 1 - asset.selectedOrder = order - return asset - } - deletedSelectedAssets = true - return nil - }) - #else - self.selectedAssets = self.selectedAssets.enumerated().flatMap({ (offset,asset) -> TLPHAsset? in - var asset = asset - if let phAsset = asset.phAsset, changes.fetchResultAfterChanges.contains(phAsset) { - order += 1 - asset.selectedOrder = order - return asset - } - deletedSelectedAssets = true - return nil - }) - #endif - if deletedSelectedAssets { - self.focusedCollection?.fetchResult = changes.fetchResultAfterChanges - self.reloadCollectionView() - }else { - self.collectionView.performBatchUpdates({ [weak self] in - guard let `self` = self else { return } - self.focusedCollection?.fetchResult = changes.fetchResultAfterChanges - if let removed = changes.removedIndexes, removed.count > 0 { - self.collectionView.deleteItems(at: removed.map { IndexPath(item: $0+addIndex, section:0) }) - } - if let inserted = changes.insertedIndexes, inserted.count > 0 { - self.collectionView.insertItems(at: inserted.map { IndexPath(item: $0+addIndex, section:0) }) - } - changes.enumerateMoves { fromIndex, toIndex in - self.collectionView.moveItem(at: IndexPath(item: fromIndex, section: 0), - to: IndexPath(item: toIndex, section: 0)) - } - }, completion: { [weak self] (completed) in - guard let `self` = self else { return } - if completed { - if let changed = changes.changedIndexes, changed.count > 0 { - self.collectionView.reloadItems(at: changed.map { IndexPath(item: $0+addIndex, section:0) }) - } - } - }) - } - }else { - self.focusedCollection?.fetchResult = changes.fetchResultAfterChanges - self.reloadCollectionView() - } - if let collection = self.focusedCollection { - self.collections[self.getfocusedIndex()] = collection - self.albumPopView.tableView.reloadRows(at: [IndexPath(row: self.getfocusedIndex(), section: 0)], with: .none) - } - } - } -} - -// MARK: - UICollectionView delegate & datasource -extension TLPhotosPickerViewController: UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDataSourcePrefetching { - private func getSelectedAssets(_ asset: TLPHAsset) -> TLPHAsset? { - if let index = self.selectedAssets.firstIndex(where: { $0.phAsset == asset.phAsset }) { - return self.selectedAssets[index] - } - return nil - } - - private func orderUpdateCells() { - let visibleIndexPaths = self.collectionView.indexPathsForVisibleItems.sorted(by: { $0.row < $1.row }) - for indexPath in visibleIndexPaths { - guard let cell = self.collectionView.cellForItem(at: indexPath) as? TLPhotoCollectionViewCell else { continue } - guard let asset = self.focusedCollection?.getTLAsset(at: indexPath) else { continue } - if let selectedAsset = getSelectedAssets(asset) { - cell.selectedAsset = true - cell.orderLabel?.text = "\(selectedAsset.selectedOrder)" - }else { - cell.selectedAsset = false - } - } - } - - //Delegate - open func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - guard let collection = self.focusedCollection, let cell = self.collectionView.cellForItem(at: indexPath) as? TLPhotoCollectionViewCell else { return } - - let isCameraRow = collection.useCameraButton && indexPath.section == 0 && indexPath.row == 0 - - if isCameraRow { - selectCameraCell(cell) - return - } - - toggleSelection(for: cell, at: indexPath) - } - - open func collectionView(_ collectionView: UICollectionView, didEndDisplaying cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { - if let cell = cell as? TLPhotoCollectionViewCell { - cell.endDisplayingCell() - cell.stopPlay() - if indexPath == self.playRequestID?.indexPath { - self.playRequestID = nil - } - } - guard let requestID = self.requestIDs[indexPath] else { return } - self.requestIDs.removeValue(forKey: indexPath) - self.photoLibrary.cancelPHImageRequest(requestID: requestID) - } - - //Datasource - open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - func makeCell(nibName: String) -> TLPhotoCollectionViewCell { - let cell = collectionView.dequeueReusableCell(withReuseIdentifier: nibName, for: indexPath) as! TLPhotoCollectionViewCell - cell.configure = self.configure - cell.imageView?.image = self.placeholderThumbnail - cell.liveBadgeImageView?.image = nil - return cell - } - let nibName = self.configure.nibSet?.nibName ?? "TLPhotoCollectionViewCell" - var cell = makeCell(nibName: nibName) - guard let collection = self.focusedCollection else { return cell } - cell.isCameraCell = collection.useCameraButton && indexPath.section == 0 && indexPath.row == 0 - if cell.isCameraCell { - if let nibName = self.configure.cameraCellNibSet?.nibName { - cell = makeCell(nibName: nibName) - }else{ - cell.imageView?.image = self.cameraImage - } - return cell - } - guard let asset = collection.getTLAsset(at: indexPath) else { return cell } - - cell.asset = asset.phAsset - - if let selectedAsset = getSelectedAssets(asset) { - cell.selectedAsset = true - cell.orderLabel?.text = "\(selectedAsset.selectedOrder)" - }else{ - cell.selectedAsset = false - } - if asset.state == .progress { - cell.indicator?.startAnimating() - }else { - cell.indicator?.stopAnimating() - } - if let phAsset = asset.phAsset { - if self.usedPrefetch { - let options = PHImageRequestOptions() - options.deliveryMode = .opportunistic - options.resizeMode = .exact - options.isNetworkAccessAllowed = true - let requestID = self.photoLibrary.imageAsset(asset: phAsset, size: self.thumbnailSize, options: options) { [weak self, weak cell] (image,complete) in - guard let `self` = self else { return } - DispatchQueue.main.async { - if self.requestIDs[indexPath] != nil { - cell?.imageView?.image = image - cell?.update(with: phAsset) - if self.allowedVideo { - cell?.durationView?.isHidden = asset.type != .video - cell?.duration = asset.type == .video ? phAsset.duration : nil - } - if complete { - self.requestIDs.removeValue(forKey: indexPath) - } - } - } - } - if requestID > 0 { - self.requestIDs[indexPath] = requestID - } - }else { - queue.async { [weak self, weak cell] in - guard let `self` = self else { return } - let requestID = self.photoLibrary.imageAsset(asset: phAsset, size: self.thumbnailSize, completionBlock: { (image,complete) in - DispatchQueue.main.async { - if self.requestIDs[indexPath] != nil { - cell?.imageView?.image = image - cell?.update(with: phAsset) - if self.allowedVideo { - cell?.durationView?.isHidden = asset.type != .video - cell?.duration = asset.type == .video ? phAsset.duration : nil - } - if complete { - self.requestIDs.removeValue(forKey: indexPath) - } - } - } - }) - if requestID > 0 { - self.requestIDs[indexPath] = requestID - } - } - } - if self.allowedLivePhotos { - cell.liveBadgeImageView?.image = asset.type == .livePhoto ? PHLivePhotoView.livePhotoBadgeImage(options: .overContent) : nil - cell.livePhotoView?.delegate = asset.type == .livePhoto ? self : nil - } - } - cell.alpha = 0 - UIView.transition(with: cell, duration: 0.1, options: .curveEaseIn, animations: { - cell.alpha = 1 - }, completion: nil) - return cell - } - - open func numberOfSections(in collectionView: UICollectionView) -> Int { - return self.focusedCollection?.sections?.count ?? 1 - } - - open func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - guard let collection = self.focusedCollection else { - return 0 - } - return self.focusedCollection?.sections?[safe: section]?.assets.count ?? collection.count - } - - //Prefetch - open func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) { - if self.usedPrefetch { - queue.async { [weak self] in - guard let `self` = self, let collection = self.focusedCollection else { return } - var assets = [PHAsset]() - for indexPath in indexPaths { - if let asset = collection.getAsset(at: indexPath.row) { - assets.append(asset) - } - } - let scale = max(UIScreen.main.scale,2) - let targetSize = CGSize(width: self.thumbnailSize.width*scale, height: self.thumbnailSize.height*scale) - self.photoLibrary.imageManager.startCachingImages(for: assets, targetSize: targetSize, contentMode: .aspectFill, options: nil) - } - } - } - - open func collectionView(_ collectionView: UICollectionView, cancelPrefetchingForItemsAt indexPaths: [IndexPath]) { - if self.usedPrefetch { - for indexPath in indexPaths { - guard let requestID = self.requestIDs[indexPath] else { continue } - self.photoLibrary.cancelPHImageRequest(requestID: requestID) - self.requestIDs.removeValue(forKey: indexPath) - } - queue.async { [weak self] in - guard let `self` = self, let collection = self.focusedCollection else { return } - var assets = [PHAsset]() - for indexPath in indexPaths { - if let asset = collection.getAsset(at: indexPath.row) { - assets.append(asset) - } - } - let scale = max(UIScreen.main.scale,2) - let targetSize = CGSize(width: self.thumbnailSize.width*scale, height: self.thumbnailSize.height*scale) - self.photoLibrary.imageManager.stopCachingImages(for: assets, targetSize: targetSize, contentMode: .aspectFill, options: nil) - } - } - } - - public func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) { - guard let cell = cell as? TLPhotoCollectionViewCell else { - return - } - cell.willDisplayCell() - if self.usedPrefetch, let collection = self.focusedCollection, let asset = collection.getTLAsset(at: indexPath) { - if let selectedAsset = getSelectedAssets(asset) { - cell.selectedAsset = true - cell.orderLabel?.text = "\(selectedAsset.selectedOrder)" - }else{ - cell.selectedAsset = false - } - } - } -} - -// MARK: - CustomDataSources for supplementary view -extension TLPhotosPickerViewController: UICollectionViewDelegateFlowLayout { - open func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { - guard let identifier = self.customDataSouces?.supplementIdentifier(kind: kind) else { - return UICollectionReusableView() - } - let reuseView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, - withReuseIdentifier: identifier, - for: indexPath) - if let section = self.focusedCollection?.sections?[safe: indexPath.section] { - self.customDataSouces?.configure(supplement: reuseView, section: section) - } - return reuseView - } - - open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { - if let sections = self.focusedCollection?.sections?[safe: section], sections.title != "camera" { - return self.customDataSouces?.headerReferenceSize() ?? CGSize.zero - } - return CGSize.zero - } - - open func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize { - if let sections = self.focusedCollection?.sections?[safe: section], sections.title != "camera" { - return self.customDataSouces?.footerReferenceSize() ?? CGSize.zero - } - return CGSize.zero - } -} - -// MARK: - UITableView datasource & delegate -extension TLPhotosPickerViewController: UITableViewDelegate, UITableViewDataSource { - //delegate - open func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - self.logDelegate?.selectedAlbum(picker: self, title: self.collections[indexPath.row].title, at: indexPath.row) - self.focused(collection: self.collections[indexPath.row]) - } - - //datasource - open func numberOfSections(in tableView: UITableView) -> Int { - return 1 - } - - open func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return self.collections.count - } - - open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "TLCollectionTableViewCell", for: indexPath) as! TLCollectionTableViewCell - let collection = self.collections[indexPath.row] - cell.titleLabel.text = collection.title - cell.subTitleLabel.text = "\(collection.fetchResult?.count ?? 0)" - if let phAsset = collection.getAsset(at: collection.useCameraButton ? 1 : 0) { - let scale = UIScreen.main.scale - let size = CGSize(width: 80*scale, height: 80*scale) - self.photoLibrary.imageAsset(asset: phAsset, size: size, completionBlock: { (image,complete) in - DispatchQueue.main.async { - if let cell = tableView.cellForRow(at: indexPath) as? TLCollectionTableViewCell { - cell.thumbImageView.image = image - } - } - }) - } - cell.accessoryType = getfocusedIndex() == indexPath.row ? .checkmark : .none - cell.selectionStyle = .none - return cell - } -} - -// MARK: - UIViewControllerPreviewingDelegate -extension TLPhotosPickerViewController: UIViewControllerPreviewingDelegate { - public func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? { - guard self.previewAtForceTouch == true else { return nil } - guard let pressingIndexPath = collectionView.indexPathForItem(at: location) else { return nil } - guard let pressingCell = collectionView.cellForItem(at: pressingIndexPath) as? TLPhotoCollectionViewCell else { return nil } - - previewingContext.sourceRect = pressingCell.frame - let previewController = TLAssetPreviewViewController() - previewController.asset = pressingCell.asset - - return previewController - } - - public func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {} - - @available(iOS 13.0, *) - public func collectionView(_ collectionView: UICollectionView, contextMenuConfigurationForItemAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? { - guard self.previewAtForceTouch == true else { return nil } - guard let cell = collectionView.cellForItem(at: indexPath) as? TLPhotoCollectionViewCell else { return nil } - - return UIContextMenuConfiguration(identifier: nil, previewProvider: { - let previewController = TLAssetPreviewViewController() - previewController.asset = cell.asset - return previewController - - }, actionProvider: { [weak self] suggestedActions in - guard let self = self else { return nil } - let isSelected = cell.selectedAsset - let title = isSelected ? self.configure.deselectMessage : self.configure.selectMessage - let imageName = isSelected ? "checkmark.circle" : "circle" - let toggleSelection = UIAction(title: title, image: UIImage(systemName: imageName)) { [weak self] action in - self?.toggleSelection(for: cell, at: indexPath) - } - - return UIMenu(title: "", children: [toggleSelection]) - } - ) - } -} - -extension TLPhotosPickerViewController { - func selectCameraCell(_ cell: TLPhotoCollectionViewCell) { - if Platform.isSimulator { - print("not supported by the simulator.") - } else { - if configure.cameraCellNibSet?.nibName != nil { - cell.selectedCell() - } else { - showCameraIfAuthorized() - } - logDelegate?.selectedCameraCell(picker: self) - } - } - - func toggleSelection(for cell: TLPhotoCollectionViewCell, at indexPath: IndexPath) { - guard let collection = focusedCollection, var asset = collection.getTLAsset(at: indexPath), let phAsset = asset.phAsset else { return } - - cell.popScaleAnim() - - if let index = selectedAssets.firstIndex(where: { $0.phAsset == asset.phAsset }) { - //deselect - logDelegate?.deselectedPhoto(picker: self, at: indexPath.row) - selectedAssets.remove(at: index) - #if swift(>=4.1) - selectedAssets = selectedAssets.enumerated().compactMap({ (offset,asset) -> TLPHAsset? in - var asset = asset - asset.selectedOrder = offset + 1 - return asset - }) - #else - selectedAssets = selectedAssets.enumerated().flatMap({ (offset,asset) -> TLPHAsset? in - var asset = asset - asset.selectedOrder = offset + 1 - return asset - }) - #endif - cell.selectedAsset = false - cell.stopPlay() - orderUpdateCells() - if playRequestID?.indexPath == indexPath { - stopPlay() - } - } else { - //select - logDelegate?.selectedPhoto(picker: self, at: indexPath.row) - guard !maxCheck(), canSelect(phAsset: phAsset) else { return } - - asset.selectedOrder = selectedAssets.count + 1 - selectedAssets.append(asset) - cell.selectedAsset = true - cell.orderLabel?.text = "\(asset.selectedOrder)" - - if asset.type != .photo, configure.autoPlay { - playVideo(asset: asset, indexPath: indexPath) - } - } - - } -} - -extension TLPhotosPickerViewController: UINavigationBarDelegate { - public func position(for bar: UIBarPositioning) -> UIBarPosition { - return .topAttached - } -} - -extension Array where Element == PopupConfigure { - var duration: TimeInterval { - var result: TimeInterval = 0.1 - forEach { - if case let .animation(duration) = $0 { - result = duration - } - } - return result - } -} - -extension UIImage { - public func colorMask(color:UIColor) -> UIImage { - var result: UIImage? - let rect = CGRect(x:0, y:0, width:size.width, height:size.height) - UIGraphicsBeginImageContextWithOptions(rect.size, false, scale) - if let c = UIGraphicsGetCurrentContext() { - self.draw(in: rect) - c.setFillColor(color.cgColor) - c.setBlendMode(.sourceAtop) - c.fill(rect) - result = UIGraphicsGetImageFromCurrentImageContext() - } - UIGraphicsEndImageContext() - return result ?? self - } -} diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotosPickerViewController.xib b/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotosPickerViewController.xib deleted file mode 100644 index d98af0cbee9d87ddb7a7ca7a651bc2c9f46e11f6..0000000000000000000000000000000000000000 --- a/Pods/TLPhotoPicker/TLPhotoPicker/Classes/TLPhotosPickerViewController.xib +++ /dev/null @@ -1,232 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="17156" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> - <device id="retina4_7" orientation="portrait" appearance="light"/> - <dependencies> - <deployment identifier="iOS"/> - <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17125"/> - <capability name="Image references" minToolsVersion="11.0"/> - <capability name="Safe area layout guides" minToolsVersion="9.0"/> - <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> - </dependencies> - <objects> - <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="TLPhotosPickerViewController" customModule="TLPhotoPicker"> - <connections> - <outlet property="albumPopView" destination="Jcn-hC-Umh" id="c3n-m9-wfd"/> - <outlet property="cancelButton" destination="sqJ-Z7-zxj" id="J6u-hz-ePK"/> - <outlet property="collectionView" destination="4gR-Bn-quP" id="ZOF-qU-cpd"/> - <outlet property="customNavItem" destination="5CU-MZ-p1K" id="ih7-d3-nco"/> - <outlet property="doneButton" destination="daA-Ag-vVv" id="P53-fy-Sbh"/> - <outlet property="emptyImageView" destination="YDZ-o1-AXT" id="TVN-0v-aQc"/> - <outlet property="emptyMessageLabel" destination="7qj-q4-rHC" id="Bcp-Hu-lEY"/> - <outlet property="emptyView" destination="HPm-Vc-F86" id="4FT-XL-9ql"/> - <outlet property="indicator" destination="AEv-G6-dRI" id="coA-3n-07e"/> - <outlet property="navigationBar" destination="X8O-Gg-slz" id="Sp9-g1-r4y"/> - <outlet property="navigationBarTopConstraint" destination="IKp-hS-tTy" id="MFH-eP-0tb"/> - <outlet property="photosButton" destination="spQ-SO-lth" id="Vy3-rM-vY9"/> - <outlet property="popArrowImageView" destination="5zn-je-qLx" id="6k9-cH-vcU"/> - <outlet property="subTitleArrowImageView" destination="b7w-7R-rco" id="IjY-7S-Zz1"/> - <outlet property="subTitleLabel" destination="DON-iU-Cox" id="ZyB-O9-EcR"/> - <outlet property="subTitleStackView" destination="kgt-Cn-AXg" id="Vcc-hP-iqe"/> - <outlet property="titleLabel" destination="xuG-bc-Oq9" id="2o0-aN-au6"/> - <outlet property="titleView" destination="VAz-Py-dsa" id="deY-US-9Jh"/> - <outlet property="view" destination="Zyk-dI-msE" id="dxK-gh-unF"/> - </connections> - </placeholder> - <barButtonItem title="photo" id="spQ-SO-lth"> - <imageReference key="image" image="photo" catalog="system" symbolScale="small"/> - <connections> - <action selector="limitButtonTap" destination="-1" id="VRo-CG-wO6"/> - </connections> - </barButtonItem> - <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> - <view contentMode="scaleToFill" id="Zyk-dI-msE"> - <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <subviews> - <navigationBar contentMode="scaleToFill" translucent="NO" translatesAutoresizingMaskIntoConstraints="NO" id="X8O-Gg-slz"> - <rect key="frame" x="0.0" y="0.0" width="375" height="44"/> - <items> - <navigationItem id="5CU-MZ-p1K"> - <nil key="title"/> - <barButtonItem key="leftBarButtonItem" title="Cancel" id="sqJ-Z7-zxj"> - <connections> - <action selector="cancelButtonTap" destination="-1" id="dm0-Ur-I5r"/> - </connections> - </barButtonItem> - <view key="titleView" contentMode="scaleToFill" id="VAz-Py-dsa"> - <rect key="frame" x="100.5" y="0.0" width="174.5" height="44"/> - <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> - <subviews> - <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Ql8-7f-9Uk"> - <rect key="frame" x="0.0" y="0.0" width="174.5" height="44"/> - <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xuG-bc-Oq9"> - <rect key="frame" x="66.5" y="0.0" width="41.5" height="19.5"/> - <fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/> - <nil key="textColor"/> - <nil key="highlightedColor"/> - </label> - <stackView opaque="NO" contentMode="scaleToFill" alignment="center" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="kgt-Cn-AXg"> - <rect key="frame" x="65" y="19.5" width="44.5" height="24.5"/> - <subviews> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="DON-iU-Cox"> - <rect key="frame" x="0.0" y="5.5" width="29.5" height="13.5"/> - <fontDescription key="fontDescription" type="system" weight="medium" pointSize="11"/> - <nil key="textColor"/> - <nil key="highlightedColor"/> - </label> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="b7w-7R-rco"> - <rect key="frame" x="34.5" y="7.5" width="10" height="10"/> - <constraints> - <constraint firstAttribute="width" priority="999" constant="10" id="7bM-Da-Q8A"/> - <constraint firstAttribute="height" priority="999" constant="10" id="OHz-gp-CQp"/> - </constraints> - </imageView> - </subviews> - </stackView> - </subviews> - </stackView> - </subviews> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstAttribute="trailing" secondItem="Ql8-7f-9Uk" secondAttribute="trailing" id="Vv5-au-j7y"/> - <constraint firstAttribute="bottom" secondItem="Ql8-7f-9Uk" secondAttribute="bottom" id="XNk-yU-iZJ"/> - <constraint firstItem="Ql8-7f-9Uk" firstAttribute="top" secondItem="VAz-Py-dsa" secondAttribute="top" id="h9o-f1-oRa"/> - <constraint firstItem="Ql8-7f-9Uk" firstAttribute="leading" secondItem="VAz-Py-dsa" secondAttribute="leading" id="j8K-5o-bAh"/> - </constraints> - </view> - <barButtonItem key="rightBarButtonItem" title="Done" id="daA-Ag-vVv"> - <connections> - <action selector="doneButtonTap" destination="-1" id="BzF-rn-rn4"/> - </connections> - </barButtonItem> - </navigationItem> - </items> - </navigationBar> - <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="4gR-Bn-quP"> - <rect key="frame" x="0.0" y="44" width="375" height="623"/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - <collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="5" minimumInteritemSpacing="5" id="VDa-Pp-VBq"> - <size key="itemSize" width="50" height="50"/> - <size key="headerReferenceSize" width="0.0" height="0.0"/> - <size key="footerReferenceSize" width="0.0" height="0.0"/> - <inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/> - </collectionViewFlowLayout> - <connections> - <outlet property="dataSource" destination="-1" id="6fE-SF-z6F"/> - <outlet property="delegate" destination="-1" id="pjZ-sM-fyY"/> - </connections> - </collectionView> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="HPm-Vc-F86"> - <rect key="frame" x="0.0" y="44" width="375" height="623"/> - <subviews> - <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="gi6-Sw-3Zf"> - <rect key="frame" x="137.5" y="249" width="100" height="125.5"/> - <subviews> - <imageView userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="YDZ-o1-AXT"> - <rect key="frame" x="0.0" y="0.0" width="100" height="100"/> - <constraints> - <constraint firstAttribute="width" priority="999" constant="100" id="VUj-VB-7Kr"/> - <constraint firstAttribute="height" priority="999" constant="100" id="jBo-WN-gZr"/> - </constraints> - </imageView> - <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7qj-q4-rHC"> - <rect key="frame" x="29.5" y="105" width="41.5" height="20.5"/> - <fontDescription key="fontDescription" type="system" pointSize="17"/> - <nil key="textColor"/> - <nil key="highlightedColor"/> - </label> - </subviews> - </stackView> - </subviews> - <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> - <constraints> - <constraint firstItem="gi6-Sw-3Zf" firstAttribute="centerX" secondItem="HPm-Vc-F86" secondAttribute="centerX" id="FpA-96-esN"/> - <constraint firstItem="gi6-Sw-3Zf" firstAttribute="centerY" secondItem="HPm-Vc-F86" secondAttribute="centerY" id="L0c-BG-65l"/> - </constraints> - </view> - <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="AEv-G6-dRI"> - <rect key="frame" x="177.5" y="323.5" width="20" height="20"/> - </activityIndicatorView> - <view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Jcn-hC-Umh" customClass="TLAlbumPopView" customModule="TLPhotoPicker"> - <rect key="frame" x="0.0" y="44" width="375" height="623"/> - <subviews> - <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GKD-We-AdT"> - <rect key="frame" x="0.0" y="0.0" width="375" height="623"/> - <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.29999999999999999" colorSpace="calibratedRGB"/> - </view> - <view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eL2-gJ-b87"> - <rect key="frame" x="1" y="17" width="373" height="130"/> - <subviews> - <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" style="plain" separatorStyle="default" rowHeight="75" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="grw-Nk-Sxr"> - <rect key="frame" x="0.0" y="0.0" width="373" height="130"/> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - </tableView> - </subviews> - <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstItem="grw-Nk-Sxr" firstAttribute="top" secondItem="eL2-gJ-b87" secondAttribute="top" id="DAx-an-6Qt"/> - <constraint firstAttribute="height" constant="130" id="cet-yf-3jU"/> - <constraint firstAttribute="trailing" secondItem="grw-Nk-Sxr" secondAttribute="trailing" id="nM5-IG-MPJ"/> - <constraint firstItem="grw-Nk-Sxr" firstAttribute="leading" secondItem="eL2-gJ-b87" secondAttribute="leading" id="o4b-cS-L3T"/> - <constraint firstAttribute="bottom" secondItem="grw-Nk-Sxr" secondAttribute="bottom" id="sPK-1G-qLo"/> - </constraints> - </view> - <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="5zn-je-qLx"> - <rect key="frame" x="180.5" y="10" width="14" height="7"/> - <constraints> - <constraint firstAttribute="height" constant="7" id="eZN-nB-EHu"/> - <constraint firstAttribute="width" constant="14" id="hWo-ji-iBX"/> - </constraints> - </imageView> - </subviews> - <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> - <constraints> - <constraint firstItem="GKD-We-AdT" firstAttribute="top" secondItem="Jcn-hC-Umh" secondAttribute="top" id="83h-bg-tAJ"/> - <constraint firstAttribute="trailing" secondItem="eL2-gJ-b87" secondAttribute="trailing" constant="1" id="IMh-Wh-897"/> - <constraint firstItem="5zn-je-qLx" firstAttribute="centerX" secondItem="Jcn-hC-Umh" secondAttribute="centerX" id="LpE-mT-MxA"/> - <constraint firstItem="eL2-gJ-b87" firstAttribute="top" secondItem="Jcn-hC-Umh" secondAttribute="top" constant="17" id="XtI-9R-CFm"/> - <constraint firstItem="GKD-We-AdT" firstAttribute="leading" secondItem="Jcn-hC-Umh" secondAttribute="leading" id="krq-3L-sxU"/> - <constraint firstItem="eL2-gJ-b87" firstAttribute="top" secondItem="5zn-je-qLx" secondAttribute="bottom" id="tM4-Tb-JsI"/> - <constraint firstItem="eL2-gJ-b87" firstAttribute="leading" secondItem="Jcn-hC-Umh" secondAttribute="leading" constant="1" id="v5O-lt-eKe"/> - <constraint firstAttribute="bottom" secondItem="GKD-We-AdT" secondAttribute="bottom" id="x4Q-bm-MrY"/> - <constraint firstAttribute="trailing" secondItem="GKD-We-AdT" secondAttribute="trailing" id="xdF-2b-pOS"/> - </constraints> - <connections> - <outlet property="bgView" destination="GKD-We-AdT" id="ymr-tp-YBW"/> - <outlet property="popupView" destination="eL2-gJ-b87" id="xgf-xj-Rd4"/> - <outlet property="popupViewHeight" destination="cet-yf-3jU" id="OS3-MZ-s9c"/> - <outlet property="tableView" destination="grw-Nk-Sxr" id="Y3k-8m-iJp"/> - </connections> - </view> - </subviews> - <viewLayoutGuide key="safeArea" id="HLR-WT-D3I"/> - <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> - <constraints> - <constraint firstItem="HPm-Vc-F86" firstAttribute="bottom" secondItem="HLR-WT-D3I" secondAttribute="bottom" id="0AS-35-SWm"/> - <constraint firstItem="AEv-G6-dRI" firstAttribute="centerX" secondItem="Zyk-dI-msE" secondAttribute="centerX" id="44C-fd-MVc"/> - <constraint firstItem="X8O-Gg-slz" firstAttribute="leading" secondItem="Zyk-dI-msE" secondAttribute="leading" id="4Ud-fp-qD2"/> - <constraint firstItem="4gR-Bn-quP" firstAttribute="top" secondItem="X8O-Gg-slz" secondAttribute="bottom" id="CZx-xl-GLa"/> - <constraint firstItem="X8O-Gg-slz" firstAttribute="top" secondItem="HLR-WT-D3I" secondAttribute="top" id="IKp-hS-tTy"/> - <constraint firstItem="Jcn-hC-Umh" firstAttribute="top" secondItem="X8O-Gg-slz" secondAttribute="bottom" id="KdD-nT-6tf"/> - <constraint firstItem="HPm-Vc-F86" firstAttribute="leading" secondItem="HLR-WT-D3I" secondAttribute="leading" id="M3L-CU-HdQ"/> - <constraint firstAttribute="trailing" secondItem="4gR-Bn-quP" secondAttribute="trailing" id="M6b-2G-2m1"/> - <constraint firstAttribute="trailing" secondItem="Jcn-hC-Umh" secondAttribute="trailing" id="Njh-ZO-lnq"/> - <constraint firstAttribute="bottom" secondItem="Jcn-hC-Umh" secondAttribute="bottom" id="NxH-d8-b65"/> - <constraint firstItem="HPm-Vc-F86" firstAttribute="top" secondItem="X8O-Gg-slz" secondAttribute="bottom" id="YyG-QW-0ZP"/> - <constraint firstItem="AEv-G6-dRI" firstAttribute="centerY" secondItem="Zyk-dI-msE" secondAttribute="centerY" id="aLU-u9-ALA"/> - <constraint firstItem="Jcn-hC-Umh" firstAttribute="leading" secondItem="Zyk-dI-msE" secondAttribute="leading" id="aY7-Ml-cd3"/> - <constraint firstItem="HPm-Vc-F86" firstAttribute="trailing" secondItem="HLR-WT-D3I" secondAttribute="trailing" id="aoA-8G-xDA"/> - <constraint firstItem="4gR-Bn-quP" firstAttribute="leading" secondItem="Zyk-dI-msE" secondAttribute="leading" id="kb7-vy-yTu"/> - <constraint firstItem="4gR-Bn-quP" firstAttribute="bottom" secondItem="HLR-WT-D3I" secondAttribute="bottom" id="qqE-w2-Tsc"/> - <constraint firstAttribute="trailing" secondItem="X8O-Gg-slz" secondAttribute="trailing" id="yWV-L2-0f4"/> - </constraints> - <point key="canvasLocation" x="33.5" y="53.5"/> - </view> - </objects> - <resources> - <image name="arrow.png" width="18" height="18"/> - <image name="photo" catalog="system" width="128" height="93"/> - <image name="pop_arrow.png" width="41" height="20"/> - </resources> -</document> diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/arrow.png b/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/arrow.png deleted file mode 100644 index 94910cf0960045e5764820649279ea9a89858425..0000000000000000000000000000000000000000 Binary files a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/arrow.png and /dev/null differ diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/camera@3x.png b/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/camera@3x.png deleted file mode 100644 index 2c7ebe0c7cd6f9ccd69effbf7ce4e2e93da3b0da..0000000000000000000000000000000000000000 Binary files a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/camera@3x.png and /dev/null differ diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/insertPhotoMaterial@3x.png b/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/insertPhotoMaterial@3x.png deleted file mode 100644 index 19a8656929646848f76a5e18066902823ea0e839..0000000000000000000000000000000000000000 Binary files a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/insertPhotoMaterial@3x.png and /dev/null differ diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/pop_arrow.png b/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/pop_arrow.png deleted file mode 100644 index 220d39e6ace20809f783efcaeb74ee5adc00fd74..0000000000000000000000000000000000000000 Binary files a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/pop_arrow.png and /dev/null differ diff --git a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/video.png b/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/video.png deleted file mode 100644 index 68268fb150855c6c452665b7b72c4f1ea6f91570..0000000000000000000000000000000000000000 Binary files a/Pods/TLPhotoPicker/TLPhotoPicker/TLPhotoPickerController.bundle/video.png and /dev/null differ diff --git a/Pods/Target Support Files/ImagePicker/ImagePicker-Info.plist b/Pods/Target Support Files/ImagePicker/ImagePicker-Info.plist deleted file mode 100644 index e765449425af2de92f4cac542d3d34aba4c86014..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImagePicker/ImagePicker-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.2.0</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/ImagePicker/ImagePicker-dummy.m b/Pods/Target Support Files/ImagePicker/ImagePicker-dummy.m deleted file mode 100644 index 270e374d362922fec46f46f67228c7fefd9854fa..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImagePicker/ImagePicker-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import <Foundation/Foundation.h> -@interface PodsDummy_ImagePicker : NSObject -@end -@implementation PodsDummy_ImagePicker -@end diff --git a/Pods/Target Support Files/ImagePicker/ImagePicker-prefix.pch b/Pods/Target Support Files/ImagePicker/ImagePicker-prefix.pch deleted file mode 100644 index beb2a2441835aeaf9ee2ba30c557a8f2b6e4363f..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImagePicker/ImagePicker-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/ImagePicker/ImagePicker-umbrella.h b/Pods/Target Support Files/ImagePicker/ImagePicker-umbrella.h deleted file mode 100644 index 194fd95ddd6fff757bc8822c2a6b268dab019861..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImagePicker/ImagePicker-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 ImagePickerVersionNumber; -FOUNDATION_EXPORT const unsigned char ImagePickerVersionString[]; - diff --git a/Pods/Target Support Files/ImagePicker/ImagePicker.debug.xcconfig b/Pods/Target Support Files/ImagePicker/ImagePicker.debug.xcconfig deleted file mode 100644 index 39c74040603246de8905125b3a7e1ac8dfdd2208..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImagePicker/ImagePicker.debug.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -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}/ImagePicker -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/ImagePicker/ImagePicker.modulemap b/Pods/Target Support Files/ImagePicker/ImagePicker.modulemap deleted file mode 100644 index 37375682208a945f863e5f6ff1f89696e7bbe297..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImagePicker/ImagePicker.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module ImagePicker { - umbrella header "ImagePicker-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/ImagePicker/ImagePicker.release.xcconfig b/Pods/Target Support Files/ImagePicker/ImagePicker.release.xcconfig deleted file mode 100644 index 39c74040603246de8905125b3a7e1ac8dfdd2208..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImagePicker/ImagePicker.release.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ImagePicker -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift -OTHER_LDFLAGS = $(inherited) -framework "AVFoundation" -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}/ImagePicker -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/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-Info.plist b/Pods/Target Support Files/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-Info.plist deleted file mode 100644 index 1bde99a68627c6e8e79e776c07bbe0c6988b9df0..0000000000000000000000000000000000000000 --- a/Pods/Target Support Files/ImagePicker/ResourceBundle-ImagePicker-ImagePicker-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>3.2.0</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/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown index 67e632b5ec967dfd05e568fcd3d460071261e9db..4d747e4cdbcfcf2533182f43382ed7b3e4ba1edf 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.markdown @@ -49,32 +49,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## ImagePicker - -Licensed under the **MIT** license - -> Copyright (c) 2015 Hyper Interaktiv AS -> -> 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) 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 8174bcd8732157a5c2a07b215914c00763ca47b6..45294a8ae26cbb3439aaa38cb27656c6a1e6c7a2 100644 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-acknowledgements.plist @@ -72,38 +72,6 @@ SOFTWARE. <key>Type</key> <string>PSGroupSpecifier</string> </dict> - <dict> - <key>FooterText</key> - <string>Licensed under the **MIT** license - -> Copyright (c) 2015 Hyper Interaktiv AS -> -> 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>ImagePicker</string> - <key>Type</key> - <string>PSGroupSpecifier</string> - </dict> <dict> <key>FooterText</key> <string>The MIT License (MIT) 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 ee9d760fc03dc604d8fbf2a15039951b798600c2..31556ed7ddcb9503383dbe80318b4972331a0f42 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,6 @@ ${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}/ImagePicker/ImagePicker.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 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 c77d8f86741a0e4a3511ecc51a50ef37bb2e0499..d18e5d00dcbdd7c4298184fef563cf187b2ea774 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,5 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EPSignature.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImagePicker.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 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 ee9d760fc03dc604d8fbf2a15039951b798600c2..31556ed7ddcb9503383dbe80318b4972331a0f42 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,6 @@ ${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}/ImagePicker/ImagePicker.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 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 c77d8f86741a0e4a3511ecc51a50ef37bb2e0499..d18e5d00dcbdd7c4298184fef563cf187b2ea774 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,5 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EPSignature.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework -${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ImagePicker.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 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 fa520aae65e13c51abce0a78da5e4abf2d739f9a..074e26704313425b91d1ba4374903ad71aada7ff 100755 --- a/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh +++ b/Pods/Target Support Files/Pods-MiniScanner/Pods-MiniScanner-frameworks.sh @@ -178,7 +178,6 @@ 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}/ImagePicker/ImagePicker.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" @@ -186,7 +185,6 @@ 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}/ImagePicker/ImagePicker.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" 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 b55a91bef0672f33a1a3f6e43eefdc3221224960..d2e1f7db49b91315f0760557d3464f4235a4dbf8 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}/ImagePicker" "${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}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" 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}/ImagePicker/ImagePicker.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}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.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" 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 "AVFoundation" -framework "CoreGraphics" -framework "EPSignature" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImagePicker" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "Toast_Swift" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "EPSignature" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "Toast_Swift" -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 b55a91bef0672f33a1a3f6e43eefdc3221224960..d2e1f7db49b91315f0760557d3464f4235a4dbf8 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}/ImagePicker" "${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}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/LanguageManager-iOS" "${PODS_CONFIGURATION_BUILD_DIR}/NBBottomSheet" "${PODS_CONFIGURATION_BUILD_DIR}/Toast-Swift" 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}/ImagePicker/ImagePicker.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}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.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" 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 "AVFoundation" -framework "CoreGraphics" -framework "EPSignature" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "ImagePicker" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "Toast_Swift" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -l"swiftCoreGraphics" -framework "CoreGraphics" -framework "EPSignature" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "LanguageManager_iOS" -framework "NBBottomSheet" -framework "QuartzCore" -framework "Toast_Swift" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)