├── .gitignore ├── .ruby-version ├── .swiftformat ├── .travis.yml ├── CONTRIBUTING.md ├── Example ├── .swiftlint.yml ├── IDETemplateMacros.plist ├── PBSPinnerTest.swift ├── PhobosSwiftExample.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── PhobosSwiftExample.xcscheme ├── PhobosSwiftExample.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDETemplateMacros.plist │ │ └── IDEWorkspaceChecks.plist ├── PhobosSwiftExample │ ├── AppDelegate.swift │ ├── Article │ │ └── Views │ │ │ └── ViewControllers │ │ │ └── GhostMasterViewController.swift │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── CapturePhoto.imageset │ │ │ ├── CapturePhoto@2x.png │ │ │ ├── CapturePhoto@3x.png │ │ │ └── Contents.json │ │ ├── Contents.json │ │ ├── FlipCamera.imageset │ │ │ ├── Contents.json │ │ │ ├── FlipCamera@2x.png │ │ │ └── FlipCamera@3x.png │ │ └── launch.imageset │ │ │ ├── Contents.json │ │ │ ├── launch@2x.png │ │ │ └── launch@3x.png │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Camera │ │ └── Views │ │ │ └── ViewControllers │ │ │ ├── CameraGuidePreviewImageViewController.swift │ │ │ └── CameraGuideViewController.swift │ ├── Hades │ │ ├── Models │ │ │ └── BannerListModel.swift │ │ ├── ViewModel │ │ │ └── BannerViewModel.swift │ │ └── Views │ │ │ └── ViewControllers │ │ │ ├── AdaptiveBannerViewController.swift │ │ │ ├── BannerListViewController.swift │ │ │ ├── BannerViewController.swift │ │ │ ├── HadesMainViewController.swift │ │ │ ├── IntersitialAdListViewController.swift │ │ │ ├── InterstitialAdDemoViewController.swift │ │ │ ├── NativeAdDemoViewController.swift │ │ │ ├── NativeAdListViewController.swift │ │ │ ├── NativeAdMediumTemplateViewController.swift │ │ │ ├── NativeAdSmallTemplateViewController.swift │ │ │ ├── NativeAdvancedVideoViewController.swift │ │ │ ├── RewardedAdDemoViewController.swift │ │ │ └── RewardedListViewController.swift │ ├── Info.plist │ ├── Kits │ │ └── PhobosSwiftExample.swift │ ├── MainViewController.swift │ ├── Phobos-Service-Info.plist │ ├── PhobosSwiftExample.entitlements │ ├── SceneDelegate.swift │ ├── Slideout │ │ └── Views │ │ │ └── ViewControllers │ │ │ └── SlideoutDemoCenterViewController.swift │ ├── Splash │ │ └── View │ │ │ └── Controllers │ │ │ └── SplashDemoViewController.swift │ └── ViewController.swift ├── Podfile ├── Podfile.local ├── Podfile.lock └── fastlane │ ├── .env.ci │ ├── .env.template │ ├── Appfile │ └── Fastfile ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── PBSWechatRxTest.swift ├── PhobosSwift.podspec ├── PhobosSwift ├── Animation │ ├── CHANGELOG.md │ ├── Classes │ │ ├── Kits │ │ │ └── UIImage+Ex.swift │ │ ├── PBSDraggableInteractiveTransition.swift │ │ └── PhobosSwiftAnimation.swift │ ├── README.md │ └── Tests │ │ └── Test.swift ├── Auth │ ├── Assets │ │ └── .gitkeep │ ├── CHANGELOG.md │ ├── Classes │ │ ├── .gitkeep │ │ ├── ASAuthorizationController+Rx.swift │ │ ├── PhobosSwiftAuth.swift │ │ ├── Privatized+third+party+code │ │ │ └── BiometricAuthentication │ │ │ │ ├── BioMetricAuthenticator.swift │ │ │ │ ├── BiometricAuthenticationConstants.swift │ │ │ │ └── BiometricAuthenticationError.swift │ │ └── RxASAuthorizationControllerDelegateProxy.swift │ ├── README.md │ └── Tests │ │ ├── ASAuthorizationControllerTest.swift │ │ ├── BioMetricAuthenticatorTest.swift │ │ ├── RxASAuthorizationControllerDelegateProxyTest.swift │ │ └── Test.swift ├── Core │ ├── Assets │ │ ├── .gitkeep │ │ └── Phobos-Service-Info.plist │ ├── CHANGELOG.md │ ├── Classes │ │ ├── .gitkeep │ │ ├── Array.swift │ │ ├── Bundle.swift │ │ ├── CATransition.swift │ │ ├── CGPoint.swift │ │ ├── CTTelephonyNetworkInfo.swift │ │ ├── Calendar.swift │ │ ├── Codable.swift │ │ ├── Date.swift │ │ ├── Diffable.swift │ │ ├── DispatchQueue.swift │ │ ├── FileManager.swift │ │ ├── Int.swift │ │ ├── PBSAppDelegateSwizzler.swift │ │ ├── PBSCore.swift │ │ ├── PBSCoreAppDelegateSwizzler.swift │ │ ├── PBSImageFilter.swift │ │ ├── PBSInjection.swift │ │ ├── PBSModule.swift │ │ ├── PBSPromise.swift │ │ ├── PBSResolver.swift │ │ ├── PBSStretchableTableHeaderViewProtocol.swift │ │ ├── PBSUIInterface.swift │ │ ├── PBSVersion.swift │ │ ├── PhobosServiceInfo.swift │ │ ├── PhobosSwift.swift │ │ ├── PhobosSwiftCore.swift │ │ ├── Privatized+third+party+code │ │ │ └── SwiftRSA │ │ │ │ ├── Asn1Parser.swift │ │ │ │ ├── ClearMessage.swift │ │ │ │ ├── EncryptedMessage.swift │ │ │ │ ├── Key.swift │ │ │ │ ├── Message.swift │ │ │ │ ├── NSData+SHA.h │ │ │ │ ├── NSData+SHA.m │ │ │ │ ├── PrivateKey.swift │ │ │ │ ├── PublicKey.swift │ │ │ │ ├── Signature.swift │ │ │ │ ├── SwiftyRSA+ObjC.swift │ │ │ │ ├── SwiftyRSA.swift │ │ │ │ └── SwiftyRSAError.swift │ │ ├── RxPropertyWrapper.swift │ │ ├── String+Regex.swift │ │ ├── String+UI.swift │ │ ├── String.swift │ │ ├── UIApplication.swift │ │ ├── UIColor.swift │ │ ├── UIImage.swift │ │ ├── UINavigationBar.swift │ │ ├── UITableView.swift │ │ ├── UIView.swift │ │ ├── UIViewController.swift │ │ ├── UIWindow.swift │ │ └── URL.swift │ ├── README.md │ ├── SwiftUI │ │ └── Classes │ │ │ ├── .gitkeep │ │ │ └── ModalView.swift │ └── Tests │ │ ├── ArrayTest.swift │ │ ├── BundleTest.swift │ │ ├── CGPointTest.swift │ │ ├── CalendarTest.swift │ │ ├── CodableTest.swift │ │ ├── DateTest.swift │ │ ├── DispatchQueueTest.swift │ │ ├── FileManagerTest.swift │ │ ├── IntTest.swift │ │ ├── PBSCoreTest.swift │ │ ├── PBSImageFilterTest.swift │ │ ├── PBSInjectionTest.swift │ │ ├── RxPropertyWrapperTest.swift │ │ ├── StringRegexTest.swift │ │ ├── StringTest.swift │ │ ├── StringUITest.swift │ │ └── URLTest.swift ├── CoreSwiftUI │ ├── Assets │ │ ├── .gitkeep │ │ └── Phobos-Service-Info.plist │ ├── CHANGELOG.md │ ├── Classes │ │ ├── .gitkeep │ │ └── ModalView.swift │ ├── README.md │ └── Tests │ │ └── .gitkeep ├── Growth │ ├── Assets │ │ ├── .gitkeep │ │ ├── Growth.xcassets │ │ │ ├── Contents.json │ │ │ └── quote.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── quote@2x.png │ │ │ │ └── quote@3x.png │ │ └── Localization │ │ │ ├── en.lproj │ │ │ └── Localizable.strings │ │ │ └── zh-Hans.lproj │ │ │ └── Localizable.strings │ ├── Classes │ │ ├── .gitkeep │ │ ├── Growth │ │ │ ├── Model │ │ │ │ └── PBSGrowthHomeModel.swift │ │ │ ├── Util │ │ │ │ └── PBSGrowthContainerProtocol.swift │ │ │ ├── ViewModel │ │ │ │ ├── PBSGrowthFeedbackViewModel.swift │ │ │ │ └── PBSGrowthHomeViewModel.swift │ │ │ └── Views │ │ │ │ ├── Controller │ │ │ │ ├── PBSGrowthChatViewController.swift │ │ │ │ ├── PBSGrowthFeedbackViewController.swift │ │ │ │ └── PBSGrowthHomeViewController.swift │ │ │ │ └── View │ │ │ │ ├── PBSGrowthFeedbackHeaderView.swift │ │ │ │ ├── PBSGrowthFeedbackMediaView.swift │ │ │ │ ├── PBSGrowthFeedbackTextView.swift │ │ │ │ ├── PBSGrowthHomeContactCell.swift │ │ │ │ ├── PBSGrowthHomeContainerView.swift │ │ │ │ ├── PBSGrowthHomeHeaderCell.swift │ │ │ │ ├── PBSGrowthHomeSectionView.swift │ │ │ │ ├── PBSGrowthHomeSupportCell.swift │ │ │ │ └── PBSGrowthHomeTopicsCell.swift │ │ ├── Localization.swift │ │ ├── PBSGrowth.swift │ │ ├── PhobosSwiftGrowth.swift │ │ └── Router.swift │ ├── README.md │ └── Tests │ │ ├── .gitkeep │ │ └── Test.swift ├── Hades │ ├── Assets │ │ └── .gitkeep │ ├── Classes │ │ ├── .gitkeep │ │ ├── Banner │ │ │ ├── PBSBannerAd+Rx.swift │ │ │ ├── PBSBannerAd.swift │ │ │ ├── PBSBannerAdDelegate.swift │ │ │ └── RxPBSBannerAdDelegateProxy.swift │ │ ├── FullScreenAd │ │ │ ├── PBSFullScreenContentDelegate.swift │ │ │ ├── PBSFullScreenPresentingAd+Rx.swift │ │ │ ├── PBSFullScreenPresentingAd.swift │ │ │ └── RxPBSFullScreenContentDelegateProxy.swift │ │ ├── Interstitial │ │ │ └── PBSInterstitialAd.swift │ │ ├── NativeAd │ │ │ ├── PBSNativeAd+Rx.swift │ │ │ ├── PBSNativeAd.swift │ │ │ ├── PBSNativeAdDelegate.swift │ │ │ ├── PBSNativeAdView.swift │ │ │ ├── RxPBSNativeAdDelegateProxy.swift │ │ │ └── RxPBSNativeAdLoaderDelegateProxy.swift │ │ ├── OpenAds │ │ │ └── PBSAppOpenAd.swift │ │ ├── PBSHades.swift │ │ ├── PhobosSwiftHades.swift │ │ └── Rewarded │ │ │ └── PBSRewardedAd.swift │ ├── README.md │ └── Tests │ │ └── Test.swift ├── Location │ ├── Assets │ │ ├── .gitkeep │ │ ├── en.lproj │ │ │ └── Localizable.strings │ │ └── zh-Hans.lproj │ │ │ └── Localizable.strings │ ├── CHANGELOG.md │ ├── Classes │ │ ├── .gitkeep │ │ ├── AnnotationsContainerProtocol.swift │ │ ├── CLGeocoder+Ex.swift │ │ ├── CLLocationCoordinate2D+Ex.swift │ │ ├── CLLocationManager+Ex.swift │ │ ├── CLLocationManager+Rx.swift │ │ ├── MKLocalSearch+Ex.swift │ │ ├── MKMapItem+Ex.swift │ │ ├── MKMapRect+Ex.swift │ │ ├── Model │ │ │ ├── PBSQuadTree.swift │ │ │ └── PBSQuadTreeNode.swift │ │ ├── PBSClusterManager.swift │ │ ├── PBSClusterManagerDelegate.swift │ │ ├── PBSLocation.swift │ │ ├── PhobosSwiftLocation.swift │ │ ├── RxCLLocationManagerDelegateProxy.swift │ │ └── View │ │ │ └── Annotation.swift │ ├── README.md │ └── Tests │ │ ├── CLLocationCoordinate2DTest.swift │ │ ├── CLLocationManagerRXTest.swift │ │ ├── CLLocationManagerTest.swift │ │ ├── MKLocalSearchTest.swift │ │ ├── MKMapItemTest.swift │ │ ├── MKMapRectTest.swift │ │ ├── PBSClusterManagerTest.swift │ │ ├── PBSLocationTest.swift │ │ └── PhobosSwiftLocationTest.swift ├── Log │ ├── Assets │ │ └── .gitkeep │ ├── CHANGELOG.md │ ├── Classes │ │ ├── .gitkeep │ │ ├── Configuration.swift │ │ ├── PBSLogger.swift │ │ ├── PBSLoggerRecord.swift │ │ ├── PhobosSwiftLog.swift │ │ └── Privatized+third+party+code │ │ │ └── XCGLogger │ │ │ ├── Destinations │ │ │ ├── AppleSystemLogDestination.swift │ │ │ ├── AutoRotatingFileDestination.swift │ │ │ ├── BaseDestination.swift │ │ │ ├── BaseQueuedDestination.swift │ │ │ ├── CloudKitDestination.swift │ │ │ ├── ConsoleDestination.swift │ │ │ ├── DestinationProtocol.swift │ │ │ ├── FileDestination.swift │ │ │ └── TestDestination.swift │ │ │ ├── Extensions │ │ │ ├── DispatchQueue+XCGAdditions.swift │ │ │ └── URL+XCGAdditions.swift │ │ │ ├── Filters │ │ │ ├── DevFilter.swift │ │ │ ├── FileNameFilter.swift │ │ │ ├── FilterProtocol.swift │ │ │ ├── TagFilter.swift │ │ │ └── UserInfoFilter.swift │ │ │ ├── LogFormatters │ │ │ ├── ANSIColorLogFormatter.swift │ │ │ ├── Base64LogFormatter.swift │ │ │ ├── LogFormatterProtocol.swift │ │ │ ├── Optional │ │ │ │ └── gitkeeper.txt │ │ │ ├── PrePostFixLogFormatter.swift │ │ │ └── XcodeColorsLogFormatter.swift │ │ │ ├── Misc │ │ │ ├── HelperFunctions.swift │ │ │ ├── LogDetails.swift │ │ │ └── Optional │ │ │ │ └── UserInfoHelpers.swift │ │ │ ├── ObjectiveC │ │ │ └── gitkeeper.txt │ │ │ ├── XCGLogger.swift │ │ │ ├── iOS │ │ │ └── Info-iOS.plist │ │ │ ├── macOS │ │ │ └── Info-macOS.plist │ │ │ └── tvOS │ │ │ └── Info-tvOS.plist │ ├── README.md │ └── Tests │ │ └── PBSLog+Test.swift ├── Media │ ├── Assets │ │ ├── Media.xcassets │ │ │ ├── Contents.json │ │ │ ├── btn_common_back_wh.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── btn_common_back_wh@2x.png │ │ │ │ └── btn_common_back_wh@3x.png │ │ │ ├── btn_common_close_wh.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── btn_common_close_wh@2x.png │ │ │ │ └── btn_common_close_wh@3x.png │ │ │ ├── btn_common_delete_wh.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── btn_common_delete_wh@2x.png │ │ │ │ └── btn_common_delete_wh@3x.png │ │ │ ├── btn_common_forward_wh.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── btn_common_forward_wh@2x.png │ │ │ │ └── btn_common_forward_wh@3x.png │ │ │ ├── colors │ │ │ │ ├── Contents.json │ │ │ │ ├── black_white.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── color_divider.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── color_search_bg.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── divider.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── error_red.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey1_black.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey1_grey6.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey1_grey7.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey216_grey6.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey242_black.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey2_grey6.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey4.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey5_b0.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey5_grey3.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── grey9_grey10.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── line.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── livechat_mes_bg.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── porsche_red.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── premium_gold.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── shadow.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── soulful_blue.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── success_green.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── vehicle_tint.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── warning_yellow.colorset │ │ │ │ │ └── Contents.json │ │ │ │ ├── white_grey7.colorset │ │ │ │ │ └── Contents.json │ │ │ │ └── white_grey8.colorset │ │ │ │ │ └── Contents.json │ │ │ └── image-edit │ │ │ │ ├── Contents.json │ │ │ │ ├── delete_close.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── delete_close@2x.png │ │ │ │ ├── delete_open.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── delete_open@2x.png │ │ │ │ ├── editor_back.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_back@2x.png │ │ │ │ ├── editor_cancel.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_cancel@2x.png │ │ │ │ ├── editor_cj.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_cj@2x.png │ │ │ │ ├── editor_dl.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_dl@2x.png │ │ │ │ ├── editor_dl_s.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_dl_s@2x.png │ │ │ │ ├── editor_fk.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_fk@2x.png │ │ │ │ ├── editor_fk_s.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_fk_s@2x.png │ │ │ │ ├── editor_masaike.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_masaike@2x.png │ │ │ │ ├── editor_masaike_s.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_masaike_s@2x.png │ │ │ │ ├── editor_mosaic_brush.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── EditMosaicBrush@2x.png │ │ │ │ └── EditMosaicBrush@3x.png │ │ │ │ ├── editor_rotate.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_rotate@2x.png │ │ │ │ ├── editor_sure.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_sure@2x.png │ │ │ │ ├── editor_wenzi.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_wenzi@2x.png │ │ │ │ ├── editor_wenzi_s.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── editor_wenzi_s@2x.png │ │ │ │ ├── mosaic_type_1.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── mosaic_type_1@2x.png │ │ │ │ └── mosaic_type_1_s.imageset │ │ │ │ ├── Contents.json │ │ │ │ └── mosaic_type_1_s@2x.png │ │ ├── en.lproj │ │ │ └── Localizable.strings │ │ └── zh-Hans.lproj │ │ │ └── Localizable.strings │ ├── Classes │ │ ├── Camera │ │ │ ├── PBSCameraPreviewView.swift │ │ │ ├── PBSCameraSessionManager+AVCapturePhotoCaptureDelegate.swift │ │ │ ├── PBSCameraSessionManager+Rx.swift │ │ │ ├── PBSCameraSessionManager.swift │ │ │ ├── PBSCameraSessionManagerDelegate.swift │ │ │ ├── PBSCameraSessionManagerDelegateProxy+Rx.swift │ │ │ └── PBSParams.swift │ │ ├── ImageBrower │ │ │ ├── ImageBrowerEditorAddTextVC.swift │ │ │ ├── ImageBrowerEditorViewController.swift │ │ │ ├── ImageBrowerLiveChatImagePreviewVC.swift │ │ │ ├── Model │ │ │ │ └── ImageBrowerPreviewModel.swift │ │ │ ├── PBSImageBrowerPreviewViewController.swift │ │ │ ├── PBSImageBrowerSelectViewController.swift │ │ │ ├── PBSImageCroppingViewController.swift │ │ │ ├── Utils │ │ │ │ ├── PBSConfig.swift │ │ │ │ ├── PBSImageBrower.swift │ │ │ │ ├── UIImage+Extension.swift │ │ │ │ └── UIView+Extension.swift │ │ │ └── View │ │ │ │ ├── Cell │ │ │ │ ├── ImageBrowerGroupSelectCell.swift │ │ │ │ └── ImageBrowerSelectCell.swift │ │ │ │ ├── Customer │ │ │ │ ├── ImageBrowerDrawView.swift │ │ │ │ ├── ImageBrowerEditorColorSelectView.swift │ │ │ │ ├── ImageBrowerEditorMenuView.swift │ │ │ │ ├── ImageBrowerEditorTextView.swift │ │ │ │ ├── ImageBrowerGridView.swift │ │ │ │ ├── ImageBrowerImageZoomView.swift │ │ │ │ ├── ImageBrowerMosaicStyleChangeVIew.swift │ │ │ │ ├── ImageBrowerMosaicView.swift │ │ │ │ ├── ImageBrowerTextLabelDeleteView.swift │ │ │ │ └── PBSImageBrowerZoomView.swift │ │ │ │ └── ViewController │ │ │ │ └── PBSImageBrowerBaseViewController.swift │ │ ├── PhobosSwiftMedia.swift │ │ └── Privatized+third+party+code │ │ │ └── SKPhotoBrowser │ │ │ ├── SKActionView.swift │ │ │ ├── SKAnimator.swift │ │ │ ├── SKButtons.swift │ │ │ ├── SKCache.swift │ │ │ ├── SKCacheable.swift │ │ │ ├── SKCaptionView.swift │ │ │ ├── SKDetectingImageView.swift │ │ │ ├── SKDetectingView.swift │ │ │ ├── SKIndicatorView.swift │ │ │ ├── SKLocalPhoto.swift │ │ │ ├── SKMesurement.swift │ │ │ ├── SKPaginationView.swift │ │ │ ├── SKPagingScrollView.swift │ │ │ ├── SKPhoto.swift │ │ │ ├── SKPhotoBrowser.h │ │ │ ├── SKPhotoBrowser.swift │ │ │ ├── SKPhotoBrowserDelegate.swift │ │ │ ├── SKPhotoBrowserOptions.swift │ │ │ ├── SKToolbar.swift │ │ │ ├── SKZoomingScrollView.swift │ │ │ ├── UIApplication+UIWindow.swift │ │ │ └── extensions │ │ │ ├── UIImage+Rotation.swift │ │ │ └── UIView+Radius.swift │ ├── README.md │ └── Tests │ │ └── Test.swift ├── Network │ ├── Assets │ │ ├── .gitkeep │ │ ├── en.lproj │ │ │ └── Localizable.strings │ │ └── zh-Hans.lproj │ │ │ └── Localizable.strings │ ├── Classes │ │ ├── .gitkeep │ │ ├── APIRequest.swift │ │ ├── Authenticator.swift │ │ ├── CocoaMQTT+Ex.swift │ │ ├── CocoaMQTT+Rx.swift │ │ ├── CocoaMQTTEvent.swift │ │ ├── PBSCertificatePinner.swift │ │ ├── PBSEndPoint.swift │ │ ├── PBSNetwork.swift │ │ ├── PBSNetworkInterceptor.swift │ │ ├── PBSNetworkService.swift │ │ ├── PBSPinner.swift │ │ ├── PBSPublicKeyPinner.swift │ │ ├── PBSRefreshTokenUtil.swift │ │ ├── PhobosSwiftNetwork.swift │ │ ├── Privatized+third+party+code │ │ │ └── CocoaMQTT │ │ │ │ ├── CocoaMQTT.swift │ │ │ │ ├── CocoaMQTTDeliver.swift │ │ │ │ ├── CocoaMQTTFrame.swift │ │ │ │ ├── CocoaMQTTMessage.swift │ │ │ │ └── CocoaMQTTTimer.swift │ │ ├── Reachability.swift │ │ ├── RxCocoaMQTTDelegateProxy.swift │ │ └── Session.swift │ ├── README.md │ └── Tests │ │ ├── APIRequestTest.swift │ │ ├── AuthenticatorTest.swift │ │ ├── CocoaMQTTExtensionTest.swift │ │ ├── CocoaMQTTRXTest.swift │ │ ├── PBSCertificatePinnerTest.swift │ │ ├── PBSNetwork+Test.swift │ │ ├── PBSNetworkServiceTest.swift │ │ ├── PBSPublicKeyPinnerTest.swift │ │ ├── PBSRefreshTokenTest.swift │ │ ├── ReachabilityTest.swift │ │ └── SessionTest.swift ├── Payment │ ├── Alipay │ │ └── Classes │ │ │ ├── .gitkeep │ │ │ └── Alipay.swift │ ├── Assets │ │ └── .gitkeep │ ├── Classes │ │ ├── .gitkeep │ │ ├── IAP │ │ │ ├── Errors │ │ │ │ ├── IAPError.swift │ │ │ │ └── ReceiptError.swift │ │ │ ├── IAP+Receipt.swift │ │ │ ├── IAP+Rx.swift │ │ │ ├── IAP.swift │ │ │ ├── Models │ │ │ │ ├── PendingRenewalInfo.swift │ │ │ │ ├── Receipt.swift │ │ │ │ ├── ReceiptInApp.swift │ │ │ │ └── ReceiptResult.swift │ │ │ ├── SKProductsRequest+Rx.swift │ │ │ ├── SKProductsRequestDelegateProxy.swift │ │ │ ├── SKReceiptRefreshRequest+Rx.swift │ │ │ ├── SKReceiptRefreshRequestDelegateProxy.swift │ │ │ └── StoreObserver.swift │ │ ├── PBSPayment.swift │ │ ├── PaymentAppDelegateSwizzler.swift │ │ └── PhobosSwiftPayment.swift │ ├── README.md │ ├── Tests │ │ ├── COBAlipayUnitTest.swift │ │ ├── Codebase-Service-Info.plist │ │ └── Test.swift │ └── Wechatpay │ │ └── Classes │ │ ├── .gitkeep │ │ └── Wechatpay.swift ├── Persistence │ ├── Assets │ │ └── .gitkeep │ ├── CHANGELOG.md │ ├── Classes │ │ ├── .gitkeep │ │ └── PhobosSwiftPersistence.swift │ ├── README.md │ ├── Realm │ │ └── Classes │ │ │ ├── Realm+Ex.swift │ │ │ └── RxRealm │ │ │ ├── RealmObserver.swift │ │ │ └── RxRealm.swift │ └── Tests │ │ └── Test.swift ├── Push │ ├── Assets │ │ └── .gitkeep │ ├── CHANGELOG.md │ ├── Classes │ │ ├── AppDelegateSwizzler.swift │ │ ├── Data+Ex.swift │ │ ├── PBSPush.swift │ │ ├── PhobosSwiftPush.swift │ │ ├── RxUNUserNotificationCenterDelegateProxy.swift │ │ ├── UNUserNotificationCenter+PhobosSwift.swift │ │ └── UNUserNotificationCenter+Rx.swift │ ├── README.md │ └── Tests │ │ ├── .gitkeep │ │ └── PBSPushTests.swift ├── Router │ ├── Assets │ │ └── .gitkeep │ ├── Classes │ │ ├── .gitkeep │ │ ├── PBSRouter.swift │ │ ├── PBSRouterAppDelegateSwizzler.swift │ │ ├── PhobosSwiftRouter.swift │ │ └── Privatized+third+party+code │ │ │ └── URLNavigator │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── URLMatcher │ │ │ ├── URLConvertible.swift │ │ │ ├── URLMatchResult.swift │ │ │ ├── URLMatcher.swift │ │ │ ├── URLPatchComponentMatchResult.swift │ │ │ └── URLPathComponent.swift │ │ │ └── URLNavigator │ │ │ ├── Navigator.swift │ │ │ ├── NavigatorDelegate.swift │ │ │ ├── NavigatorType.swift │ │ │ ├── UIViewController+TopMostViewController.swift │ │ │ └── UIViewControllerType.swift │ ├── README.md │ └── Tests │ │ ├── PBSRouter+Test.swift │ │ └── PBSRouterProtocolTest.swift ├── Slideout │ ├── Assets │ │ └── .gitkeep │ ├── Classes │ │ ├── .gitkeep │ │ ├── PBSSlideViewController+Left.swift │ │ ├── PBSSlideViewController+Right.swift │ │ ├── PBSSlideViewController.swift │ │ ├── PBSSlideViewDelegate.swift │ │ └── PhobosSwiftSlideout.swift │ ├── README.md │ └── Tests │ │ └── Test.swift ├── Splash │ ├── Assets │ │ ├── .gitkeep │ │ └── Media.xcassets │ │ │ └── Contents.json │ ├── Classes │ │ ├── .gitkeep │ │ ├── PBSDefaultSplashViewController.swift │ │ ├── PBSSplash.swift │ │ └── PhobosSwiftSplash.swift │ ├── README.md │ └── Tests │ │ └── Test.swift ├── TestKnight │ ├── Assets │ │ ├── .gitkeep │ │ └── Media.xcassets │ │ │ ├── Contents.json │ │ │ ├── debug.imageset │ │ │ ├── Contents.json │ │ │ ├── debug@2.png │ │ │ └── debug@3.png │ │ │ ├── preproduction.imageset │ │ │ ├── Contents.json │ │ │ ├── preproduction@2x.png │ │ │ └── preproduction@3x.png │ │ │ ├── release.imageset │ │ │ ├── Contents.json │ │ │ ├── release@2x.png │ │ │ └── release@3x.png │ │ │ └── staging.imageset │ │ │ ├── Contents.json │ │ │ ├── staging@2.png │ │ │ └── staging@3.png │ ├── Classes │ │ ├── .gitkeep │ │ ├── Models │ │ │ └── PBSTestKnightViewModel.swift │ │ ├── PBSTestKnight.swift │ │ ├── PhobosSwiftTestKnight.swift │ │ └── Views │ │ │ ├── Cells │ │ │ └── PBSTestKnightCell.swift │ │ │ └── ViewControllers │ │ │ └── PBSTestKnightViewController.swift │ ├── README.md │ └── Tests │ │ ├── PBSTestKnightTests.swift │ │ └── PhobosSwiftTestKnightTests.swift ├── UIComponent │ ├── Assets │ │ ├── .gitkeep │ │ ├── Media.xcassets │ │ │ ├── Contents.json │ │ │ ├── message_bar_error.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── error@2x.png │ │ │ │ └── error@3x.png │ │ │ ├── message_bar_info.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── blink@2x.png │ │ │ │ └── blink@3x.png │ │ │ ├── message_bar_success.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── happy@2x.png │ │ │ │ └── happy@3x.png │ │ │ ├── message_bar_warning.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── sad@2x.png │ │ │ │ └── sad@3x.png │ │ │ ├── news_placeholder.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── sample@2x.jpg │ │ │ │ └── sample@3x.jpg │ │ │ └── news_placeholder1.imageset │ │ │ │ ├── Contents.json │ │ │ │ ├── news_placeholder@2x.png │ │ │ │ └── news_placeholder@3x.png │ │ ├── en.lproj │ │ │ └── Localizable.strings │ │ ├── ghost │ │ │ ├── article_template.html │ │ │ ├── prism-css.min.js │ │ │ ├── prism-okaidia.min.css │ │ │ ├── prism.min.js │ │ │ └── screen.css │ │ └── zh-Hans.lproj │ │ │ └── Localizable.strings │ ├── Classes │ │ ├── .gitkeep │ │ ├── PBSActivityButton │ │ │ └── PBSActivityButton.swift │ │ ├── PBSArticle │ │ │ ├── API │ │ │ │ ├── .gitkeep │ │ │ │ └── API+Ghost.swift │ │ │ ├── Kits │ │ │ │ ├── .gitkeep │ │ │ │ ├── Resource.swift │ │ │ │ └── Styles.swift │ │ │ ├── Models │ │ │ │ ├── .gitkeep │ │ │ │ ├── AppleNewsFormatModel.swift │ │ │ │ ├── PBSArticleModel.swift │ │ │ │ └── PBSGhostPostResponseModel.swift │ │ │ ├── PhobosSwiftArticle.swift │ │ │ ├── UIKits │ │ │ │ └── .gitkeep │ │ │ ├── ViewModels │ │ │ │ ├── .gitkeep │ │ │ │ ├── PBSArticleSectionViewModel.swift │ │ │ │ └── PBSArticleViewModel.swift │ │ │ └── Views │ │ │ │ ├── .gitkeep │ │ │ │ ├── Cells │ │ │ │ ├── .gitkeep │ │ │ │ ├── PBSArticleBigCardCell.swift │ │ │ │ ├── PBSArticleBigCardECell.swift │ │ │ │ ├── PBSArticleBigCardSCell.swift │ │ │ │ ├── PBSArticleBigCardXCell.swift │ │ │ │ ├── PBSArticleBigCardYCell.swift │ │ │ │ ├── PBSArticleCardCell.swift │ │ │ │ ├── PBSArticleColumnCell.swift │ │ │ │ ├── PBSArticleIndexCell.swift │ │ │ │ ├── PBSArticleNormalCell.swift │ │ │ │ ├── PBSArticleSectionFooter.swift │ │ │ │ └── PBSArticleSectionHeader.swift │ │ │ │ ├── Layouts │ │ │ │ ├── .gitkeep │ │ │ │ ├── UIArticleKit+DecorationView+FlowLayoutAttributes.swift │ │ │ │ ├── UIArticleKit+DecorationView.swift │ │ │ │ ├── UIArticleKit+ViewFlowLayout.swift │ │ │ │ └── UIArticleKitDelegateFlowLayout.swift │ │ │ │ ├── Styles │ │ │ │ ├── PBSArticleBigCardCellStyle.swift │ │ │ │ ├── PBSArticleSectionTheme.swift │ │ │ │ └── PBSGhostHtmlTextStorage.swift │ │ │ │ ├── ViewControllers │ │ │ │ ├── .gitkeep │ │ │ │ ├── PBSArticleDetailViewController.swift │ │ │ │ ├── PBSArticleMasterViewController+CellType.swift │ │ │ │ └── PBSArticleMasterViewController.swift │ │ │ │ └── Views │ │ │ │ └── .gitkeep │ │ ├── PBSBadgeView │ │ │ ├── PBSBadgeControl.swift │ │ │ └── UIView+PBSBadgeView.swift │ │ ├── PBSIconFontKit │ │ │ ├── PBSIconFontKit.swift │ │ │ └── PBSIconFontUtils.swift │ │ ├── PBSMessageBar │ │ │ ├── PBSAlertCell.swift │ │ │ ├── PBSAlertController.swift │ │ │ ├── PBSAlertView.swift │ │ │ ├── PBSMessageBar.swift │ │ │ ├── PBSMessageBarViewController.swift │ │ │ ├── PBSMessageHud.swift │ │ │ ├── PBSMessageHudViewController.swift │ │ │ ├── PBSMessagePanel.swift │ │ │ └── PBSMessagePanelViewController.swift │ │ ├── PBSPageView │ │ │ ├── PBSSegmentCollectionViewFlowLayout.swift │ │ │ ├── PBSSegmentContentView.swift │ │ │ ├── PBSSegmentContentViewDelegate.swift │ │ │ ├── PBSSegmentContentViewReloadable.swift │ │ │ ├── PBSSegmentTitleView.swift │ │ │ ├── PBSSegmentTitleViewDelegate.swift │ │ │ ├── PBSSegmentView.swift │ │ │ └── PBSSegmentViewStyle.swift │ │ ├── PBSProgressHUD │ │ │ └── PBSProgressHUD.swift │ │ ├── PBSWaterfall │ │ │ ├── PBSWaterfallLayout.swift │ │ │ └── PBSWaterfallLayoutDelegate.swift │ │ ├── PhobosSwiftUIComponent.swift │ │ └── Privatized+third+party+code │ │ │ ├── Charts │ │ │ ├── Animation │ │ │ │ ├── Animator.swift │ │ │ │ └── ChartAnimationEasing.swift │ │ │ ├── Charts │ │ │ │ ├── BarChartView.swift │ │ │ │ ├── BarLineChartViewBase.swift │ │ │ │ ├── BubbleChartView.swift │ │ │ │ ├── CandleStickChartView.swift │ │ │ │ ├── ChartViewBase.swift │ │ │ │ ├── CombinedChartView.swift │ │ │ │ ├── HorizontalBarChartView.swift │ │ │ │ ├── LineChartView.swift │ │ │ │ ├── PieChartView.swift │ │ │ │ ├── PieRadarChartViewBase.swift │ │ │ │ ├── RadarChartView.swift │ │ │ │ └── ScatterChartView.swift │ │ │ ├── Components │ │ │ │ ├── AxisBase.swift │ │ │ │ ├── ChartLimitLine.swift │ │ │ │ ├── ComponentBase.swift │ │ │ │ ├── Description.swift │ │ │ │ ├── IMarker.swift │ │ │ │ ├── Legend.swift │ │ │ │ ├── LegendEntry.swift │ │ │ │ ├── MarkerImage.swift │ │ │ │ ├── MarkerView.swift │ │ │ │ ├── XAxis.swift │ │ │ │ └── YAxis.swift │ │ │ ├── Data │ │ │ │ ├── Implementations │ │ │ │ │ ├── ChartBaseDataSet.swift │ │ │ │ │ └── Standard │ │ │ │ │ │ ├── BarChartData.swift │ │ │ │ │ │ ├── BarChartDataEntry.swift │ │ │ │ │ │ ├── BarChartDataSet.swift │ │ │ │ │ │ ├── BarLineScatterCandleBubbleChartData.swift │ │ │ │ │ │ ├── BarLineScatterCandleBubbleChartDataSet.swift │ │ │ │ │ │ ├── BubbleChartData.swift │ │ │ │ │ │ ├── BubbleChartDataEntry.swift │ │ │ │ │ │ ├── BubbleChartDataSet.swift │ │ │ │ │ │ ├── CandleChartData.swift │ │ │ │ │ │ ├── CandleChartDataEntry.swift │ │ │ │ │ │ ├── CandleChartDataSet.swift │ │ │ │ │ │ ├── ChartData.swift │ │ │ │ │ │ ├── ChartDataEntry.swift │ │ │ │ │ │ ├── ChartDataEntryBase.swift │ │ │ │ │ │ ├── ChartDataSet.swift │ │ │ │ │ │ ├── CombinedChartData.swift │ │ │ │ │ │ ├── LineChartData.swift │ │ │ │ │ │ ├── LineChartDataSet.swift │ │ │ │ │ │ ├── LineRadarChartDataSet.swift │ │ │ │ │ │ ├── LineScatterCandleRadarChartDataSet.swift │ │ │ │ │ │ ├── PieChartData.swift │ │ │ │ │ │ ├── PieChartDataEntry.swift │ │ │ │ │ │ ├── PieChartDataSet.swift │ │ │ │ │ │ ├── RadarChartData.swift │ │ │ │ │ │ ├── RadarChartDataEntry.swift │ │ │ │ │ │ ├── RadarChartDataSet.swift │ │ │ │ │ │ ├── ScatterChartData.swift │ │ │ │ │ │ └── ScatterChartDataSet.swift │ │ │ │ └── Interfaces │ │ │ │ │ ├── IBarChartDataSet.swift │ │ │ │ │ ├── IBarLineScatterCandleBubbleChartDataSet.swift │ │ │ │ │ ├── IBubbleChartDataSet.swift │ │ │ │ │ ├── ICandleChartDataSet.swift │ │ │ │ │ ├── IChartDataSet.swift │ │ │ │ │ ├── ILineChartDataSet.swift │ │ │ │ │ ├── ILineRadarChartDataSet.swift │ │ │ │ │ ├── ILineScatterCandleRadarChartDataSet.swift │ │ │ │ │ ├── IPieChartDataSet.swift │ │ │ │ │ ├── IRadarChartDataSet.swift │ │ │ │ │ └── IScatterChartDataSet.swift │ │ │ ├── Filters │ │ │ │ ├── DataApproximator+N.swift │ │ │ │ └── DataApproximator.swift │ │ │ ├── Formatters │ │ │ │ ├── DefaultAxisValueFormatter.swift │ │ │ │ ├── DefaultFillFormatter.swift │ │ │ │ ├── DefaultValueFormatter.swift │ │ │ │ ├── IAxisValueFormatter.swift │ │ │ │ ├── IFillFormatter.swift │ │ │ │ ├── IValueFormatter.swift │ │ │ │ └── IndexAxisValueFormatter.swift │ │ │ ├── Highlight │ │ │ │ ├── BarHighlighter.swift │ │ │ │ ├── ChartHighlighter.swift │ │ │ │ ├── CombinedHighlighter.swift │ │ │ │ ├── Highlight.swift │ │ │ │ ├── HorizontalBarHighlighter.swift │ │ │ │ ├── IHighlighter.swift │ │ │ │ ├── PieHighlighter.swift │ │ │ │ ├── PieRadarHighlighter.swift │ │ │ │ ├── RadarHighlighter.swift │ │ │ │ └── Range.swift │ │ │ ├── Interfaces │ │ │ │ ├── BarChartDataProvider.swift │ │ │ │ ├── BarLineScatterCandleBubbleChartDataProvider.swift │ │ │ │ ├── BubbleChartDataProvider.swift │ │ │ │ ├── CandleChartDataProvider.swift │ │ │ │ ├── ChartDataProvider.swift │ │ │ │ ├── CombinedChartDataProvider.swift │ │ │ │ ├── LineChartDataProvider.swift │ │ │ │ └── ScatterChartDataProvider.swift │ │ │ ├── Jobs │ │ │ │ ├── AnimatedMoveViewJob.swift │ │ │ │ ├── AnimatedViewPortJob.swift │ │ │ │ ├── AnimatedZoomViewJob.swift │ │ │ │ ├── MoveViewJob.swift │ │ │ │ ├── ViewPortJob.swift │ │ │ │ └── ZoomViewJob.swift │ │ │ ├── Renderers │ │ │ │ ├── AxisRendererBase.swift │ │ │ │ ├── BarChartRenderer.swift │ │ │ │ ├── BarLineScatterCandleBubbleRenderer.swift │ │ │ │ ├── BubbleChartRenderer.swift │ │ │ │ ├── CandleStickChartRenderer.swift │ │ │ │ ├── ChartDataRendererBase.swift │ │ │ │ ├── CombinedChartRenderer.swift │ │ │ │ ├── HorizontalBarChartRenderer.swift │ │ │ │ ├── LegendRenderer.swift │ │ │ │ ├── LineChartRenderer.swift │ │ │ │ ├── LineRadarRenderer.swift │ │ │ │ ├── LineScatterCandleRadarRenderer.swift │ │ │ │ ├── PieChartRenderer.swift │ │ │ │ ├── RadarChartRenderer.swift │ │ │ │ ├── Renderer.swift │ │ │ │ ├── Scatter │ │ │ │ │ ├── ChevronDownShapeRenderer.swift │ │ │ │ │ ├── ChevronUpShapeRenderer.swift │ │ │ │ │ ├── CircleShapeRenderer.swift │ │ │ │ │ ├── CrossShapeRenderer.swift │ │ │ │ │ ├── IShapeRenderer.swift │ │ │ │ │ ├── SquareShapeRenderer.swift │ │ │ │ │ ├── TriangleShapeRenderer.swift │ │ │ │ │ └── XShapeRenderer.swift │ │ │ │ ├── ScatterChartRenderer.swift │ │ │ │ ├── XAxisRenderer.swift │ │ │ │ ├── XAxisRendererHorizontalBarChart.swift │ │ │ │ ├── XAxisRendererRadarChart.swift │ │ │ │ ├── YAxisRenderer.swift │ │ │ │ ├── YAxisRendererHorizontalBarChart.swift │ │ │ │ └── YAxisRendererRadarChart.swift │ │ │ └── Utils │ │ │ │ ├── ChartColorTemplates.swift │ │ │ │ ├── ChartUtils.swift │ │ │ │ ├── Fill.swift │ │ │ │ ├── Platform+Accessibility.swift │ │ │ │ ├── Platform+Color.swift │ │ │ │ ├── Platform+Gestures.swift │ │ │ │ ├── Platform+Graphics.swift │ │ │ │ ├── Platform+Touch Handling.swift │ │ │ │ ├── Platform.swift │ │ │ │ ├── Transformer.swift │ │ │ │ ├── TransformerHorizontalBarChart.swift │ │ │ │ └── ViewPortHandler.swift │ │ │ ├── Cosmos │ │ │ ├── CosmosAccessibility.swift │ │ │ ├── CosmosDefaultSettings.swift │ │ │ ├── CosmosLayerHelper.swift │ │ │ ├── CosmosLayers.swift │ │ │ ├── CosmosLocalizedRating.swift │ │ │ ├── CosmosRating.swift │ │ │ ├── CosmosSettings.swift │ │ │ ├── CosmosSize.swift │ │ │ ├── CosmosText.swift │ │ │ ├── CosmosTouch.swift │ │ │ ├── CosmosView.swift │ │ │ ├── Helpers │ │ │ │ ├── CosmosTouchTarget.swift │ │ │ │ └── RightToLeft.swift │ │ │ ├── StarFillMode.swift │ │ │ └── StarLayer.swift │ │ │ ├── FloatingPanel │ │ │ ├── FloatingPanelBackdropView.swift │ │ │ ├── FloatingPanelBehavior.swift │ │ │ ├── FloatingPanelController.swift │ │ │ ├── FloatingPanelCore.swift │ │ │ ├── FloatingPanelGrabberView.swift │ │ │ ├── FloatingPanelLayout.swift │ │ │ ├── FloatingPanelLayoutAnchoring.swift │ │ │ ├── FloatingPanelLogger.swift │ │ │ ├── FloatingPanelPassthroughView.swift │ │ │ ├── FloatingPanelPosition.swift │ │ │ ├── FloatingPanelReference.swift │ │ │ ├── FloatingPanelState.swift │ │ │ ├── FloatingPanelSurfaceView.swift │ │ │ ├── FloatingPanelTransitioning.swift │ │ │ └── UIExtensions+FloatingPanel.swift │ │ │ └── ProgressHUD │ │ │ └── ProgressHUD.swift │ ├── README.md │ └── Tests │ │ └── Test.swift └── Wechat │ ├── Assets │ └── .gitkeep │ ├── Classes │ ├── .gitkeep │ ├── PBSWechat+Rx.swift │ ├── PBSWechat.swift │ ├── PBSWechatDelegate.swift │ ├── PhobosSwiftWechat.swift │ └── RxPBSWechatDelegateProxy.swift │ ├── README.md │ └── Tests │ └── PBSWechatTests.swift ├── PhobosSwiftAnimation.podspec ├── PhobosSwiftAuth.podspec ├── PhobosSwiftCore.podspec ├── PhobosSwiftCoreSwiftUI.podspec ├── PhobosSwiftGrowth.podspec ├── PhobosSwiftHades.podspec ├── PhobosSwiftLocation.podspec ├── PhobosSwiftLog.podspec ├── PhobosSwiftMedia.podspec ├── PhobosSwiftNetwork.podspec ├── PhobosSwiftPayment.podspec ├── PhobosSwiftPersistence.podspec ├── PhobosSwiftPush.podspec ├── PhobosSwiftRouter.podspec ├── PhobosSwiftSlideout.podspec ├── PhobosSwiftSplash.podspec ├── PhobosSwiftTestKnight.podspec ├── PhobosSwiftUIComponent.podspec ├── PhobosSwiftWechat.podspec ├── README.md └── fastlane ├── .env.Default ├── .env.Log ├── .env.Persistence └── Fastfile /.ruby-version: -------------------------------------------------------------------------------- 1 | 2.7.3 2 | -------------------------------------------------------------------------------- /.swiftformat: -------------------------------------------------------------------------------- 1 | # file options 2 | 3 | --symlinks ignore 4 | --swiftversion 5.1 5 | 6 | # rules 7 | --disable isEmpty 8 | --disable andOperator 9 | --disable wrapMultilineStatementBraces 10 | --disable enumNamespaces 11 | 12 | # format options 13 | --indent 2 14 | --closingparen same-line 15 | --commas inline 16 | --comments indent 17 | --decimalgrouping 3,5 18 | --exponentcase lowercase 19 | --exponentgrouping disabled 20 | --extensionacl on-declarations 21 | --fractiongrouping disabled 22 | --ifdef no-indent 23 | --importgrouping testable-top 24 | --operatorfunc no-space 25 | --nospaceoperators ..<, ... 26 | --selfrequired validate 27 | --stripunusedargs closure-only 28 | --wraparguments after-first 29 | --wrapcollections after-first 30 | --wrapparameters after-first 31 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | os: osx 2 | osx_image: xcode12.3 3 | language: swift 4 | cache: 5 | bundler: true 6 | cocoapods: true 7 | directories: 8 | # Built-in support for ccache doesn't seem to pick this up 9 | - $HOME/.ccache 10 | 11 | # install dependencies 12 | install: 13 | - bundle install 14 | 15 | stages: 16 | - build_debug 17 | - lint_core 18 | 19 | jobs: 20 | include: 21 | # The order of builds matters (even though they are run in parallel): 22 | # Travis will schedule them in the same order they are listed here. 23 | 24 | - stage: lint_core 25 | script: 26 | - bundle exec fastlane ios lint --env Core 27 | on: 28 | branch: master 29 | 30 | - stage: build_debug 31 | before_script: "cd Example" 32 | script: 33 | - bundle exec pod update --verbose 34 | - bundle exec fastlane ios build configuration:Debug skip_archive:true --env ci 35 | on: 36 | branch: develop 37 | 38 | branches: 39 | only: 40 | - master 41 | - develop 42 | -------------------------------------------------------------------------------- /Example/.swiftlint.yml: -------------------------------------------------------------------------------- 1 | included: 2 | - ../PhobosSwift 3 | opt_in_rules: 4 | - overridden_super_call 5 | - private_outlet 6 | - prohibited_super_call 7 | - first_where 8 | - closure_spacing 9 | - unneeded_parentheses_in_closure_argument 10 | - redundant_nil_coalescing 11 | - pattern_matching_keywords 12 | - explicit_init 13 | - contains_over_first_not_nil 14 | disabled_rules: 15 | - nesting 16 | - unused_setter_value 17 | - line_length 18 | - trailing_whitespace 19 | - type_name 20 | - identifier_name 21 | - vertical_whitespace 22 | - trailing_newline 23 | - opening_brace 24 | - large_tuple 25 | - file_length 26 | - comma 27 | - colon 28 | - private_over_fileprivate 29 | - force_cast 30 | - force_try 31 | - function_parameter_count 32 | - statement_position 33 | - legacy_hashing 34 | - todo 35 | - operator_whitespace 36 | - type_body_length 37 | - function_body_length 38 | - cyclomatic_complexity 39 | -------------------------------------------------------------------------------- /Example/PhobosSwiftExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/PhobosSwiftExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/PhobosSwiftExample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/PhobosSwiftExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/CapturePhoto.imageset/CapturePhoto@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/Example/PhobosSwiftExample/Assets.xcassets/CapturePhoto.imageset/CapturePhoto@2x.png -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/CapturePhoto.imageset/CapturePhoto@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/Example/PhobosSwiftExample/Assets.xcassets/CapturePhoto.imageset/CapturePhoto@3x.png -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/CapturePhoto.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "CapturePhoto@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "CapturePhoto@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/FlipCamera.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "FlipCamera@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "FlipCamera@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/FlipCamera.imageset/FlipCamera@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/Example/PhobosSwiftExample/Assets.xcassets/FlipCamera.imageset/FlipCamera@2x.png -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/FlipCamera.imageset/FlipCamera@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/Example/PhobosSwiftExample/Assets.xcassets/FlipCamera.imageset/FlipCamera@3x.png -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/launch.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "launch@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "launch@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/launch.imageset/launch@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/Example/PhobosSwiftExample/Assets.xcassets/launch.imageset/launch@2x.png -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Assets.xcassets/launch.imageset/launch@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/Example/PhobosSwiftExample/Assets.xcassets/launch.imageset/launch@3x.png -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/Phobos-Service-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Version 6 | 0.1.0 7 | InternalBuildVersion 8 | 0.1.0 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/PhobosSwiftExample/PhobosSwiftExample.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | com.apple.developer.icloud-container-identifiers 8 | 9 | iCloud.codes.restless.phobosswift.example 10 | 11 | com.apple.developer.icloud-services 12 | 13 | CloudDocuments 14 | 15 | com.apple.developer.ubiquity-container-identifiers 16 | 17 | iCloud.codes.restless.phobosswift.example 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Example/fastlane/.env.ci: -------------------------------------------------------------------------------- 1 | #---------- Xcode Select ---------------- 2 | XCODE_SELECT = "/Applications/Xcode.app" 3 | 4 | #----------- Common Environment -------------- 5 | 6 | APP_SCHEME = "PhobosSwiftExample" 7 | 8 | WORKSPACE = "PhobosSwiftExample.xcworkspace" 9 | 10 | APP_NAME = "PhobosSwiftExample" 11 | 12 | FASTLANE_DONT_STORE_PASSWORD = "1" 13 | 14 | BUILD_OUTPUT_DIRECTORY = "build-output" 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /Example/fastlane/Appfile: -------------------------------------------------------------------------------- 1 | app_identifier(ENV['BUNDLE_IDENTIFIER']) # The bundle identifier of your app 2 | apple_id(ENV['FASTLANE_USER']) # Your Apple email address 3 | 4 | itc_team_id(ENV['ITC_TEAM_ID']) # App Store Connect Team ID 5 | team_id(ENV['TEAM_ID']) # Developer Portal Team ID 6 | 7 | # For more information about the Appfile, see: 8 | # https://docs.fastlane.tools/advanced/#appfile 9 | 10 | for_platform :ios do 11 | #team_id '123' # for all iOS related things 12 | #for_lane :inhouse do 13 | # app_identifier(ENV["BUNDLE_IDENTIFIER_ENTERPRISE"]) 14 | # itc_team_id(ENV["ITC_TEAM_ID_ENTERPRISE"]) # App Store Connect Team ID for enterprise 15 | # team_id(ENV["TEAM_ID_ENTERPRISE"]) # Developer Portal Team ID for enterprise 16 | #end 17 | 18 | end 19 | -------------------------------------------------------------------------------- /Example/fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | 2 | 3 | import_from_git( 4 | url: "https://gitee.com/tjerwinchen/fastools.git", # The URL of the repository to import the Fastfile from. 5 | branch: "master", # The branch to checkout on the repository 6 | path: "lib/fastlane/fastlane.build.rb", # The path of the Fastfile in the repository 7 | #version: "~> 1.0.0" # The version to checkout on the repository. Optimistic match operator can be used to select the latest version within constraints. 8 | ) 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } 6 | 7 | gem "cocoapods" 8 | gem "fastlane" 9 | gem "cocoapods-dependencies" 10 | gem 'fastools', :git => 'https://gitee.com/tjerwinchen/fastools.git', :branch => 'master' 11 | 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PhobosSwift/Animation/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftAnimation 2 | ================ 3 | # Changelog 4 | 5 | -------------------------------------------------------------------------------- /PhobosSwift/Animation/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftAnimation 2 | ================ 3 | # Features 4 | - 转场动画封装 5 | 6 | 7 | 8 | # Requirements 9 | - iOS 10.0 or later 10 | - Xcode 11.0 or later 11 | - cocoapods 1.10.0 or later 12 | 13 | 14 | # How To Use 15 | - swift 16 | 17 | ``` 18 | 19 | import PhobosSwiftAnimation 20 | 21 | let transition = PBSDraggableInteractiveTransition(cardView: UIView, 22 | pushFromViewCtrl: UIViewController, 23 | pushToViewCtrl: UIViewController, 24 | navigationController: UINavigationController, 25 | style: PBSDraggableInteractiveTransitionStyle) 26 | 27 | ``` 28 | 29 | # Installation 30 | ## Podfile 31 | 32 | ``` 33 | platform :ios, '10.0' 34 | use_frameworks! 35 | pod 'PhobosSwiftAnimation', '~> 0.1.0' 36 | ``` 37 | 38 | 39 | # Author 40 | [Restless Developer](https://github.com/restlesscode) 41 | 42 | 43 | 44 | # Licenses 45 | All source code is licensed under the [MIT License](../../LICENSE). 46 | -------------------------------------------------------------------------------- /PhobosSwift/Auth/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Auth/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Auth/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftAuth 2 | ================ 3 | # Changelog 4 | 5 | -------------------------------------------------------------------------------- /PhobosSwift/Auth/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Auth/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Auth/Classes/PhobosSwiftAuth.swift: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // PhobosSwiftAuth.swift 4 | // PhobosSwiftAuth 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | import Foundation 28 | 29 | class PhobosSwiftAuth: NSObject {} 30 | -------------------------------------------------------------------------------- /PhobosSwift/Auth/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftAuth 2 | ================ 3 | # Features 4 | - 常规权限获取(TouchId、FaceId..) 5 | 6 | 7 | # Requirements 8 | - iOS 10.0 or later 9 | - Xcode 11.0 or later 10 | - cocoapods 1.10.0 or later 11 | 12 | 13 | # How To Use 14 | - swift 15 | 16 | ``` 17 | import PhobosSwiftAuth 18 | 19 | let isFaceIDAvailable = BioMetricAuthenticator.shared.isFaceIDAvailable 20 | ``` 21 | 22 | # Installation 23 | ## Podfile 24 | 25 | ``` 26 | platform :ios, '10.0' 27 | use_frameworks! 28 | pod 'PhobosSwiftAuth', '~> 0.1.0' 29 | ``` 30 | 31 | 32 | # Author 33 | [Restless Developer](https://github.com/restlesscode) 34 | 35 | 36 | 37 | # Licenses 38 | All source code is licensed under the [MIT License](../../LICENSE). 39 | -------------------------------------------------------------------------------- /PhobosSwift/Core/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Core/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Core/Assets/Phobos-Service-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Version 6 | 0.1.0 7 | InternalBuildVersion 8 | 0.1.0 9 | 10 | 11 | -------------------------------------------------------------------------------- /PhobosSwift/Core/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftCore 2 | ================ 3 | # Changelog 4 | 5 | -------------------------------------------------------------------------------- /PhobosSwift/Core/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Core/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Core/Classes/Privatized+third+party+code/SwiftRSA/Message.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Message.swift 3 | // SwiftyRSA 4 | // 5 | // Created by Loïs Di Qual on 9/19/16. 6 | // Copyright © 2016 Scoop. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Message Protocol 12 | /// 13 | /// need to implementation of data, base64string 14 | public protocol Message { 15 | /// data 16 | var data: Data { get } 17 | 18 | /// base64String 19 | var base64String: String { get } 20 | 21 | /// init with data 22 | init(data: Data) 23 | 24 | /// init with base64 string 25 | init(base64Encoded base64String: String) throws 26 | } 27 | 28 | /// Enhanced features of Message protocol is implemented in this extension 29 | extension Message { 30 | /// Base64-encoded string of the message data 31 | public var base64String: String { 32 | data.base64EncodedString() 33 | } 34 | 35 | /// Creates an encrypted message with a base64-encoded string. 36 | /// 37 | /// - Parameter base64String: Base64-encoded data of the encrypted message 38 | /// - Throws: SwiftyRSAError 39 | public init(base64Encoded base64String: String) throws { 40 | guard let data = Data(base64Encoded: base64String) else { 41 | throw SwiftyRSAError.invalidBase64String 42 | } 43 | self.init(data: data) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /PhobosSwift/Core/Classes/Privatized+third+party+code/SwiftRSA/NSData+SHA.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData_SHA1.h 3 | // SwiftyRSA 4 | // 5 | // Created by Paul Wilkinson on 19/04/2016. 6 | // Copyright © 2016 Scoop. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (NSData_SwiftyRSASHA) 12 | 13 | - (nonnull NSData*) SwiftyRSASHA1; 14 | - (nonnull NSData*) SwiftyRSASHA224; 15 | - (nonnull NSData*) SwiftyRSASHA256; 16 | - (nonnull NSData*) SwiftyRSASHA384; 17 | - (nonnull NSData*) SwiftyRSASHA512; 18 | 19 | @end -------------------------------------------------------------------------------- /PhobosSwift/Core/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftCore 2 | ================ 3 | # Features 4 | - Extensions 5 | ``` 6 | Array、Bundle、Calendar、Date、CATransition、CGPoint、Codable、Diffable、DispatchQueue、FileManager、Int、String、UIApplication、UIColor、UIImage、UINavifationBar、UITableView、UIView、UIViewController、UIWindow、URL... 7 | 8 | ``` 9 | - Utils 10 | 11 | 12 | # Requirements 13 | - iOS 10.0 or later 14 | - Xcode 11.0 or later 15 | - cocoapods 1.10.0 or later 16 | 17 | 18 | # How To Use 19 | - swift 20 | 21 | ``` 22 | import PhobosSwiftCore 23 | 24 | let number = "22".pbs.int 25 | ``` 26 | 27 | # Installation 28 | ## Podfile 29 | 30 | ``` 31 | platform :ios, '10.0' 32 | use_frameworks! 33 | pod 'PhobosSwiftCore', '~> 0.1.0' 34 | ``` 35 | 36 | 37 | # Author 38 | [Restless Developer](https://github.com/restlesscode) 39 | 40 | 41 | 42 | # Licenses 43 | All source code is licensed under the [MIT License](../../LICENSE). -------------------------------------------------------------------------------- /PhobosSwift/Core/SwiftUI/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Core/SwiftUI/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/CoreSwiftUI/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/CoreSwiftUI/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/CoreSwiftUI/Assets/Phobos-Service-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Version 6 | 0.1.0 7 | InternalBuildVersion 8 | 0.1.0 9 | 10 | 11 | -------------------------------------------------------------------------------- /PhobosSwift/CoreSwiftUI/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftCoreSwiftUI 2 | ================ 3 | # Changelog 4 | 5 | -------------------------------------------------------------------------------- /PhobosSwift/CoreSwiftUI/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/CoreSwiftUI/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/CoreSwiftUI/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftCoreSwiftUI 2 | ================ 3 | # Features 4 | - SwiftUI 5 | 6 | 7 | # Requirements 8 | - iOS 10.0 or later 9 | - Xcode 11.0 or later 10 | - cocoapods 1.10.0 or later 11 | 12 | 13 | # How To Use 14 | - swift 15 | 16 | ``` 17 | 18 | import PhobosSwiftCoreSwiftUI 19 | 20 | ``` 21 | 22 | # Installation 23 | ## Podfile 24 | 25 | ``` 26 | platform :ios, '10.0' 27 | use_frameworks! 28 | pod 'PhobosSwiftCoreSwiftUI', '~> 0.1.0' 29 | ``` 30 | 31 | 32 | # Author 33 | [Restless Developer](https://github.com/restlesscode) 34 | 35 | 36 | 37 | # Licenses 38 | All source code is licensed under the [MIT License](../../LICENSE). 39 | -------------------------------------------------------------------------------- /PhobosSwift/CoreSwiftUI/Tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/CoreSwiftUI/Tests/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Growth/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Growth/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Growth/Assets/Growth.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PhobosSwift/Growth/Assets/Growth.xcassets/quote.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "quote@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "quote@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/Growth/Assets/Growth.xcassets/quote.imageset/quote@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Growth/Assets/Growth.xcassets/quote.imageset/quote@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Growth/Assets/Growth.xcassets/quote.imageset/quote@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Growth/Assets/Growth.xcassets/quote.imageset/quote@3x.png -------------------------------------------------------------------------------- /PhobosSwift/Growth/Assets/Localization/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* 2 | File.strings 3 | Pods 4 | 5 | Created by Theo Chen on 2021/8/13. 6 | 7 | */ 8 | -------------------------------------------------------------------------------- /PhobosSwift/Growth/Assets/Localization/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | /* 2 | File.strings 3 | Pods 4 | 5 | Created by Theo Chen on 2021/8/13. 6 | 7 | */ 8 | -------------------------------------------------------------------------------- /PhobosSwift/Growth/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Growth/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Growth/Classes/PBSGrowth.swift: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // PBSGrowth.swift 4 | // PhobosSwiftGrowth 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | import Foundation 28 | import PhobosSwiftCore 29 | import PhobosSwiftLog 30 | 31 | class PBSGrowth: PBSModule {} 32 | -------------------------------------------------------------------------------- /PhobosSwift/Growth/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftGrowth 2 | ================ 3 | # Features 4 | - 空 5 | 6 | # Requirements 7 | - iOS 10.0 or later 8 | - Xcode 11.0 or later 9 | - cocoapods 1.10.0 or later 10 | 11 | 12 | # How To Use 13 | - swift 14 | 15 | ``` 16 | import PhobosSwiftGrowth 17 | 18 | ``` 19 | 20 | # Installation 21 | ## Podfile 22 | 23 | ``` 24 | platform :ios, '10.0' 25 | use_frameworks! 26 | pod 'PhobosSwiftGrowth', '~> 0.1.0' 27 | ``` 28 | 29 | 30 | # Author 31 | [Restless Developer](https://github.com/restlesscode) 32 | 33 | 34 | 35 | # Licenses 36 | All source code is licensed under the [MIT License](../../LICENSE). 37 | -------------------------------------------------------------------------------- /PhobosSwift/Growth/Tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Growth/Tests/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Hades/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Hades/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Hades/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Hades/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Hades/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftHades 2 | ================ 3 | # Features 4 | - 广告封装 5 | 6 | # Requirements 7 | - iOS 10.0 or later 8 | - Xcode 11.0 or later 9 | - cocoapods 1.10.0 or later 10 | 11 | 12 | # How To Use 13 | - swift 14 | 15 | ``` 16 | 17 | import PhobosSwiftHades 18 | 19 | let viewController = UIViewController() 20 | let bannerView = PBSBannerAd().createBannerView(bannerType: .google, rootViewController: viewController) 21 | 22 | ``` 23 | 24 | # Installation 25 | ## Podfile 26 | 27 | ``` 28 | platform :ios, '10.0' 29 | use_frameworks! 30 | pod 'PhobosSwiftHades', '~> 0.1.0' 31 | ``` 32 | 33 | 34 | # Author 35 | [Restless Developer](https://github.com/restlesscode) 36 | 37 | 38 | 39 | # Licenses 40 | All source code is licensed under the [MIT License](../../LICENSE). 41 | -------------------------------------------------------------------------------- /PhobosSwift/Location/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Location/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Location/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftLocation 2 | ================ 3 | # Changelog 4 | 5 | -------------------------------------------------------------------------------- /PhobosSwift/Location/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Location/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Location/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftLocation 2 | ================ 3 | # Features 4 | - Extensions 5 | ``` 6 | CLLocationCoordinate2D(坐标系转换、距离计算) 7 | CLLocationManager(定位、导航) 8 | MKLocalSearch(关键字搜索) 9 | MKMapItem、MKMapRect 10 | PhobosSwiftLocation 11 | ``` 12 | - Utils 13 | 14 | ``` 15 | PBSClusterManager(管理地图标注、缩放level等) 16 | PBSLocation(管理定位授权) 17 | ``` 18 | 19 | 20 | # Requirements 21 | - iOS 10.0 or later 22 | - Xcode 11.0 or later 23 | - cocoapods 1.10.0 or later 24 | 25 | 26 | # How To Use 27 | - swift 28 | 29 | ``` 30 | import PhobosSwiftLocation 31 | 32 | let WGSLocation = CLLocationCoordinate2D(latitude: 31.30018852172415, longitude: 121.29127298178801) 33 | let location = WGSLocation.pbs.WGS84ToGCJ02 34 | ``` 35 | 36 | # Installation 37 | ## Podfile 38 | 39 | ``` 40 | platform :ios, '10.0' 41 | use_frameworks! 42 | pod 'PhobosSwiftLocation', '~> 0.1.0' 43 | ``` 44 | 45 | 46 | # Author 47 | [Restless Developer](https://github.com/restlesscode) 48 | 49 | 50 | 51 | # Licenses 52 | All source code is licensed under the [MIT License](../../LICENSE). 53 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Log/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Log/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftLog 2 | ================ 3 | # Changelog 4 | 5 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Log/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/PBSLoggerRecord.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PBSLoggerRecord.swift 3 | // PhobosSwiftLog 4 | // 5 | // Created by Wenda on 6/29/21. 6 | // 7 | 8 | import CloudKit 9 | import Foundation 10 | 11 | public class PBSLoggerModel: Codable { 12 | let ckRecord: PBSLoggerRecord 13 | } 14 | 15 | public class PBSLoggerRecord: Codable { 16 | let type: String 17 | let properties: [Column] 18 | 19 | var record: CKRecord { 20 | let record = CKRecord(recordType: type) 21 | return record 22 | } 23 | } 24 | 25 | public struct Column: Codable { 26 | let name: String 27 | let type: String 28 | } 29 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/Destinations/AppleSystemLogDestination.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppleSystemLogDestination.swift 3 | // XCGLogger: https://github.com/DaveWoodCom/XCGLogger 4 | // 5 | // Created by Dave Wood on 2014-06-06. 6 | // Copyright © 2014 Dave Wood, Cerebral Gardens. 7 | // Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt 8 | // 9 | 10 | import Dispatch 11 | import Foundation 12 | 13 | // MARK: - AppleSystemLogDestination 14 | 15 | /// A standard destination that outputs log details to the Apple System Log using NSLog instead of print 16 | open class AppleSystemLogDestination: BaseQueuedDestination { 17 | // MARK: - Properties 18 | 19 | /// Option: whether or not to output the date the log was created (Always false for this destination) 20 | override open var showDate: Bool { 21 | get { 22 | false 23 | } 24 | set { 25 | // ignored, NSLog adds the date, so we always want showDate to be false in this subclass 26 | } 27 | } 28 | 29 | // MARK: - Overridden Methods 30 | 31 | /// Print the log to the Apple System Log facility (using NSLog). 32 | /// 33 | /// - Parameters: 34 | /// - message: Formatted/processed message ready for output. 35 | /// 36 | /// - Returns: Nothing 37 | /// 38 | override open func write(logDetails: LogDetails, message: String) { 39 | NSLog("%@", message) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/Extensions/DispatchQueue+XCGAdditions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+XCGAdditions.swift 3 | // XCGLogger: https://github.com/DaveWoodCom/XCGLogger 4 | // 5 | // Created by Dave Wood on 2016-08-26. 6 | // Copyright © 2016 Dave Wood, Cerebral Gardens. 7 | // Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt 8 | // 9 | 10 | import Dispatch 11 | 12 | /// Extensions to the DispatchQueue class 13 | extension DispatchQueue { 14 | /// Extract the current dispatch queue's label name (Temp workaround until this is added to Swift 3.0 properly) 15 | public static var currentQueueLabel: String? { 16 | String(validatingUTF8: __dispatch_queue_get_label(nil)) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/Filters/DevFilter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DevFilter.swift 3 | // XCGLogger: https://github.com/DaveWoodCom/XCGLogger 4 | // 5 | // Created by Dave Wood on 2016-09-01. 6 | // Copyright © 2016 Dave Wood, Cerebral Gardens. 7 | // Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt 8 | // 9 | 10 | // MARK: - DevFilter 11 | 12 | /// Filter log messages by devs 13 | open class DevFilter: UserInfoFilter { 14 | /// Initializer to create an inclusion list of devs to match against 15 | /// 16 | /// Note: Only log messages with a specific dev will be logged, all others will be excluded 17 | /// 18 | /// - Parameters: 19 | /// - devs: Set or Array of devs to match against. 20 | /// 21 | override public init(includeFrom devs: S) where S.Iterator.Element == String { 22 | super.init(includeFrom: devs) 23 | userInfoKey = XCGLogger.Constants.userInfoKeyDevs 24 | } 25 | 26 | /// Initializer to create an exclusion list of devs to match against 27 | /// 28 | /// Note: Log messages with a specific dev will be excluded from logging 29 | /// 30 | /// - Parameters: 31 | /// - devs: Set or Array of devs to match against. 32 | /// 33 | override public init(excludeFrom devs: S) where S.Iterator.Element == String { 34 | super.init(excludeFrom: devs) 35 | userInfoKey = XCGLogger.Constants.userInfoKeyDevs 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/Filters/FilterProtocol.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FilterProtocol.swift 3 | // XCGLogger: https://github.com/DaveWoodCom/XCGLogger 4 | // 5 | // Created by Dave Wood on 2016-08-31. 6 | // Copyright © 2016 Dave Wood, Cerebral Gardens. 7 | // Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt 8 | // 9 | 10 | // MARK: - FilterProtocol 11 | 12 | /// Protocol for log filter classes to conform to 13 | public protocol FilterProtocol: CustomDebugStringConvertible { 14 | /// Check if the log message should be excluded from logging. 15 | /// 16 | /// - Parameters: 17 | /// - logDetails: The log details. 18 | /// - message: Formatted/processed message ready for output. 19 | /// 20 | /// - Returns: 21 | /// - true: Drop this log message. 22 | /// - false: Keep this log message and continue processing. 23 | /// 24 | func shouldExclude(logDetails: inout LogDetails, message: inout String) -> Bool 25 | } 26 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/Filters/TagFilter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TagFilter.swift 3 | // XCGLogger: https://github.com/DaveWoodCom/XCGLogger 4 | // 5 | // Created by Dave Wood on 2016-09-01. 6 | // Copyright © 2016 Dave Wood, Cerebral Gardens. 7 | // Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt 8 | // 9 | 10 | // MARK: - TagFilter 11 | 12 | /// Filter log messages by tags 13 | open class TagFilter: UserInfoFilter { 14 | /// Initializer to create an inclusion list of tags to match against 15 | /// 16 | /// Note: Only log messages with a specific tag will be logged, all others will be excluded 17 | /// 18 | /// - Parameters: 19 | /// - tags: Set or Array of tags to match against. 20 | /// 21 | override public init(includeFrom tags: S) where S.Iterator.Element == String { 22 | super.init(includeFrom: tags) 23 | userInfoKey = XCGLogger.Constants.userInfoKeyTags 24 | } 25 | 26 | /// Initializer to create an exclusion list of tags to match against 27 | /// 28 | /// Note: Log messages with a specific tag will be excluded from logging 29 | /// 30 | /// - Parameters: 31 | /// - tags: Set or Array of tags to match against. 32 | /// 33 | override public init(excludeFrom tags: S) where S.Iterator.Element == String { 34 | super.init(excludeFrom: tags) 35 | userInfoKey = XCGLogger.Constants.userInfoKeyTags 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/LogFormatters/LogFormatterProtocol.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LogFormatterProtocol.swift 3 | // XCGLogger: https://github.com/DaveWoodCom/XCGLogger 4 | // 5 | // Created by Dave Wood on 2016-08-30. 6 | // Copyright © 2016 Dave Wood, Cerebral Gardens. 7 | // Some rights reserved: https://github.com/DaveWoodCom/XCGLogger/blob/master/LICENSE.txt 8 | // 9 | 10 | // MARK: - LogFormatterProtocol 11 | 12 | /// Protocol for log formatter classes to conform to 13 | public protocol LogFormatterProtocol: CustomDebugStringConvertible { 14 | /// Apply some additional formatting to the message if appropriate. 15 | /// 16 | /// - Parameters: 17 | /// - logDetails: The log details. 18 | /// - message: Formatted/processed message ready for output. 19 | /// 20 | /// - Returns: Nothing 21 | /// 22 | @discardableResult func format(logDetails: inout LogDetails, message: inout String) -> String 23 | } 24 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/LogFormatters/Optional/gitkeeper.txt: -------------------------------------------------------------------------------- 1 | This directory intentionally left blank, for now... 2 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/ObjectiveC/gitkeeper.txt: -------------------------------------------------------------------------------- 1 | This directory intentionally left blank, for now... 2 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/iOS/Info-iOS.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | $(CURRENT_PROJECT_VERSION) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | NSHumanReadableCopyright 24 | Copyright © 2014 Dave Wood, Cerebral Gardens. 25 | NSPrincipalClass 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/macOS/Info-macOS.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | $(CURRENT_PROJECT_VERSION) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | NSHumanReadableCopyright 24 | Copyright © 2014 Dave Wood, Cerebral Gardens. 25 | NSPrincipalClass 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /PhobosSwift/Log/Classes/Privatized+third+party+code/XCGLogger/tvOS/Info-tvOS.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | $(CURRENT_PROJECT_VERSION) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | NSHumanReadableCopyright 24 | Copyright © 2014 Dave Wood, Cerebral Gardens. 25 | NSPrincipalClass 26 | 27 | UIRequiredDeviceCapabilities 28 | 29 | arm64 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /PhobosSwift/Log/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftLog 2 | ================ 3 | # Installation -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_back_wh.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "btn_common_back_wh@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "btn_common_back_wh@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_back_wh.imageset/btn_common_back_wh@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/btn_common_back_wh.imageset/btn_common_back_wh@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_back_wh.imageset/btn_common_back_wh@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/btn_common_back_wh.imageset/btn_common_back_wh@3x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_close_wh.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "btn_common_close_wh@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "btn_common_close_wh@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_close_wh.imageset/btn_common_close_wh@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/btn_common_close_wh.imageset/btn_common_close_wh@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_close_wh.imageset/btn_common_close_wh@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/btn_common_close_wh.imageset/btn_common_close_wh@3x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_delete_wh.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "btn_common_delete_wh@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "btn_common_delete_wh@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_delete_wh.imageset/btn_common_delete_wh@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/btn_common_delete_wh.imageset/btn_common_delete_wh@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_delete_wh.imageset/btn_common_delete_wh@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/btn_common_delete_wh.imageset/btn_common_delete_wh@3x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_forward_wh.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "btn_common_forward_wh@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "btn_common_forward_wh@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_forward_wh.imageset/btn_common_forward_wh@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/btn_common_forward_wh.imageset/btn_common_forward_wh@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/btn_common_forward_wh.imageset/btn_common_forward_wh@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/btn_common_forward_wh.imageset/btn_common_forward_wh@3x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/black_white.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.000", 9 | "green" : "0.000", 10 | "red" : "0.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "1.000", 27 | "green" : "1.000", 28 | "red" : "1.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/color_divider.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.906", 9 | "green" : "0.906", 10 | "red" : "0.906" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.224", 27 | "green" : "0.220", 28 | "red" : "0.220" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/color_search_bg.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.949", 9 | "green" : "0.949", 10 | "red" : "0.949" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.180", 27 | "green" : "0.169", 28 | "red" : "0.149" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/divider.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.965", 9 | "green" : "0.957", 10 | "red" : "0.949" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.000", 27 | "green" : "0.000", 28 | "red" : "0.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/error_red.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.000", 9 | "green" : "0.000", 10 | "red" : "0.878" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey1_black.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.945", 9 | "green" : "0.941", 10 | "red" : "0.937" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.000", 27 | "green" : "0.000", 28 | "red" : "0.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey1_grey6.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.945", 9 | "green" : "0.941", 10 | "red" : "0.937" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.318", 27 | "green" : "0.306", 28 | "red" : "0.290" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey1_grey7.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.945", 9 | "green" : "0.941", 10 | "red" : "0.937" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.137", 27 | "green" : "0.125", 28 | "red" : "0.102" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey216_grey6.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.847", 9 | "green" : "0.847", 10 | "red" : "0.847" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.318", 27 | "green" : "0.306", 28 | "red" : "0.290" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey242_black.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.969", 9 | "green" : "0.949", 10 | "red" : "0.949" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.000", 27 | "green" : "0.000", 28 | "red" : "0.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey2_grey6.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.796", 9 | "green" : "0.792", 10 | "red" : "0.788" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.318", 27 | "green" : "0.306", 28 | "red" : "0.290" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey4.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.506", 9 | "green" : "0.498", 10 | "red" : "0.486" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey5_b0.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.412", 9 | "green" : "0.400", 10 | "red" : "0.384" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.698", 27 | "green" : "0.694", 28 | "red" : "0.690" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey5_grey3.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.412", 9 | "green" : "0.400", 10 | "red" : "0.384" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.698", 27 | "green" : "0.694", 28 | "red" : "0.690" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/grey9_grey10.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.318", 9 | "green" : "0.306", 10 | "red" : "0.290" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.796", 27 | "green" : "0.792", 28 | "red" : "0.788" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/line.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.949", 9 | "green" : "0.949", 10 | "red" : "0.949" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "light" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.949", 27 | "green" : "0.949", 28 | "red" : "0.949" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | }, 33 | { 34 | "appearances" : [ 35 | { 36 | "appearance" : "luminosity", 37 | "value" : "dark" 38 | } 39 | ], 40 | "color" : { 41 | "color-space" : "srgb", 42 | "components" : { 43 | "alpha" : "1.000", 44 | "blue" : "0.224", 45 | "green" : "0.212", 46 | "red" : "0.196" 47 | } 48 | }, 49 | "idiom" : "universal" 50 | } 51 | ], 52 | "info" : { 53 | "author" : "xcode", 54 | "version" : 1 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/livechat_mes_bg.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.224", 9 | "green" : "0.212", 10 | "red" : "0.196" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "1.000", 27 | "green" : "1.000", 28 | "red" : "1.000" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/porsche_red.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.110", 9 | "green" : "0.000", 10 | "red" : "0.835" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/premium_gold.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.518", 9 | "green" : "0.776", 10 | "red" : "0.906" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/shadow.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.812", 9 | "green" : "0.780", 10 | "red" : "0.741" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.118", 27 | "green" : "0.110", 28 | "red" : "0.110" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/soulful_blue.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.957", 9 | "green" : "0.686", 10 | "red" : "0.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/success_green.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.275", 9 | "green" : "0.824", 10 | "red" : "0.075" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/vehicle_tint.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.224", 9 | "green" : "0.212", 10 | "red" : "0.200" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.604", 27 | "green" : "0.596", 28 | "red" : "0.588" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/warning_yellow.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "0.212", 9 | "green" : "0.698", 10 | "red" : "0.886" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/white_grey7.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.137", 27 | "green" : "0.125", 28 | "red" : "0.102" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/colors/white_grey8.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "color" : { 5 | "color-space" : "srgb", 6 | "components" : { 7 | "alpha" : "1.000", 8 | "blue" : "1.000", 9 | "green" : "1.000", 10 | "red" : "1.000" 11 | } 12 | }, 13 | "idiom" : "universal" 14 | }, 15 | { 16 | "appearances" : [ 17 | { 18 | "appearance" : "luminosity", 19 | "value" : "dark" 20 | } 21 | ], 22 | "color" : { 23 | "color-space" : "srgb", 24 | "components" : { 25 | "alpha" : "1.000", 26 | "blue" : "0.094", 27 | "green" : "0.078", 28 | "red" : "0.055" 29 | } 30 | }, 31 | "idiom" : "universal" 32 | } 33 | ], 34 | "info" : { 35 | "author" : "xcode", 36 | "version" : 1 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/delete_close.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "delete_close@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/delete_close.imageset/delete_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/delete_close.imageset/delete_close@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/delete_open.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "delete_open@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/delete_open.imageset/delete_open@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/delete_open.imageset/delete_open@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_back.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_back@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_back.imageset/editor_back@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_back.imageset/editor_back@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_cancel.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_cancel@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_cancel.imageset/editor_cancel@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_cancel.imageset/editor_cancel@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_cj.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_cj@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_cj.imageset/editor_cj@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_cj.imageset/editor_cj@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_dl.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_dl@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_dl.imageset/editor_dl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_dl.imageset/editor_dl@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_dl_s.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_dl_s@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_dl_s.imageset/editor_dl_s@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_dl_s.imageset/editor_dl_s@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_fk.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_fk@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_fk.imageset/editor_fk@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_fk.imageset/editor_fk@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_fk_s.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_fk_s@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_fk_s.imageset/editor_fk_s@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_fk_s.imageset/editor_fk_s@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_masaike.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_masaike@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_masaike.imageset/editor_masaike@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_masaike.imageset/editor_masaike@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_masaike_s.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_masaike_s@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_masaike_s.imageset/editor_masaike_s@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_masaike_s.imageset/editor_masaike_s@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_mosaic_brush.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "EditMosaicBrush@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "EditMosaicBrush@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_mosaic_brush.imageset/EditMosaicBrush@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_mosaic_brush.imageset/EditMosaicBrush@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_mosaic_brush.imageset/EditMosaicBrush@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_mosaic_brush.imageset/EditMosaicBrush@3x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_rotate.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_rotate@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_rotate.imageset/editor_rotate@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_rotate.imageset/editor_rotate@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_sure.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_sure@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_sure.imageset/editor_sure@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_sure.imageset/editor_sure@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_wenzi.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_wenzi@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_wenzi.imageset/editor_wenzi@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_wenzi.imageset/editor_wenzi@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_wenzi_s.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "editor_wenzi_s@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_wenzi_s.imageset/editor_wenzi_s@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/editor_wenzi_s.imageset/editor_wenzi_s@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/mosaic_type_1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "mosaic_type_1@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/mosaic_type_1.imageset/mosaic_type_1@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/mosaic_type_1.imageset/mosaic_type_1@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/mosaic_type_1_s.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "mosaic_type_1_s@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "scale" : "3x" 15 | } 16 | ], 17 | "info" : { 18 | "author" : "xcode", 19 | "version" : 1 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Assets/Media.xcassets/image-edit/mosaic_type_1_s.imageset/mosaic_type_1_s@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Media/Assets/Media.xcassets/image-edit/mosaic_type_1_s.imageset/mosaic_type_1_s@2x.png -------------------------------------------------------------------------------- /PhobosSwift/Media/Classes/PhobosSwiftMedia.swift: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // PhobosSwiftMedia.swift 4 | // PhobosSwiftMedia 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | import UIKit 28 | 29 | class PhobosSwiftMedia: NSObject {} 30 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Classes/Privatized+third+party+code/SKPhotoBrowser/SKCacheable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SKCacheable.swift 3 | // SKPhotoBrowser 4 | // 5 | // Created by Kevin Wolkober on 6/13/16. 6 | // Copyright © 2016 suzuki_keishi. All rights reserved. 7 | // 8 | 9 | import UIKit.UIImage 10 | 11 | /// 12 | public protocol SKCacheable {} 13 | 14 | /// 15 | public protocol SKImageCacheable: SKCacheable { 16 | func imageForKey(_ key: String) -> UIImage? 17 | func setImage(_ image: UIImage, forKey key: String) 18 | func removeImageForKey(_ key: String) 19 | func removeAllImages() 20 | } 21 | 22 | public protocol SKRequestResponseCacheable: SKCacheable { 23 | func cachedResponseForRequest(_ request: URLRequest) -> CachedURLResponse? 24 | func storeCachedResponse(_ cachedResponse: CachedURLResponse, forRequest request: URLRequest) 25 | } 26 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Classes/Privatized+third+party+code/SKPhotoBrowser/SKDetectingView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SKDetectingView.swift 3 | // SKPhotoBrowser 4 | // 5 | // Created by suzuki_keishi on 2015/10/01. 6 | // Copyright © 2015 suzuki_keishi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @objc protocol SKDetectingViewDelegate { 12 | func handleSingleTap(_ view: UIView, touch: UITouch) 13 | func handleDoubleTap(_ view: UIView, touch: UITouch) 14 | } 15 | 16 | class SKDetectingView: UIView { 17 | weak var delegate: SKDetectingViewDelegate? 18 | 19 | override func touchesEnded(_ touches: Set, with event: UIEvent?) { 20 | super.touchesEnded(touches, with: event) 21 | defer { 22 | _ = next 23 | } 24 | 25 | guard let touch = touches.first else { 26 | return 27 | } 28 | switch touch.tapCount { 29 | case 1: handleSingleTap(touch) 30 | case 2: handleDoubleTap(touch) 31 | default: break 32 | } 33 | } 34 | 35 | func handleSingleTap(_ touch: UITouch) { 36 | delegate?.handleSingleTap(self, touch: touch) 37 | } 38 | 39 | func handleDoubleTap(_ touch: UITouch) { 40 | delegate?.handleDoubleTap(self, touch: touch) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Classes/Privatized+third+party+code/SKPhotoBrowser/SKIndicatorView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SKIndicatorView.swift 3 | // SKPhotoBrowser 4 | // 5 | // Created by suzuki_keishi on 2015/10/09. 6 | // Copyright © 2015 suzuki_keishi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class SKIndicatorView: UIActivityIndicatorView { 12 | required init(coder aDecoder: NSCoder) { 13 | super.init(coder: aDecoder) 14 | } 15 | 16 | override init(frame: CGRect) { 17 | super.init(frame: frame) 18 | center = CGPoint(x: frame.width / 2, y: frame.height / 2) 19 | style = SKPhotoBrowserOptions.indicatorStyle 20 | color = SKPhotoBrowserOptions.indicatorColor 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Classes/Privatized+third+party+code/SKPhotoBrowser/SKMesurement.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SKMesurement.swift 3 | // SKPhotoBrowser 4 | // 5 | // Created by 鈴木 啓司 on 2016/08/09. 6 | // Copyright © 2016年 suzuki_keishi. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import UIKit 11 | 12 | struct SKMesurement { 13 | static let isPhone: Bool = UIDevice.current.userInterfaceIdiom == .phone 14 | static let isPad: Bool = UIDevice.current.userInterfaceIdiom == .pad 15 | static var statusBarH: CGFloat { 16 | UIApplication.pbs_shared?.statusBarFrame.height ?? 0.0 17 | } 18 | 19 | static var screenHeight: CGFloat { 20 | UIApplication.pbs_shared?.preferredApplicationWindow?.bounds.height ?? UIScreen.main.bounds.height 21 | } 22 | 23 | static var screenWidth: CGFloat { 24 | UIApplication.pbs_shared?.preferredApplicationWindow?.bounds.width ?? UIScreen.main.bounds.width 25 | } 26 | 27 | static var screenScale: CGFloat { 28 | UIScreen.main.scale 29 | } 30 | 31 | static var screenRatio: CGFloat { 32 | screenWidth / screenHeight 33 | } 34 | 35 | static var isPhoneX: Bool { 36 | if isPhone && UIScreen.main.nativeBounds.height == 2436 { 37 | return true 38 | } 39 | return false 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Classes/Privatized+third+party+code/SKPhotoBrowser/SKPhotoBrowser.h: -------------------------------------------------------------------------------- 1 | // 2 | // SKPhotoBrowser.h 3 | // SKPhotoBrowser 4 | // 5 | // Created by 鈴木 啓司 on 2015/10/09. 6 | // Copyright © 2015年 suzuki_keishi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for SKPhotoBrowser. 12 | FOUNDATION_EXPORT double SKPhotoBrowserVersionNumber; 13 | 14 | //! Project version string for SKPhotoBrowser. 15 | FOUNDATION_EXPORT const unsigned char SKPhotoBrowserVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Classes/Privatized+third+party+code/SKPhotoBrowser/UIApplication+UIWindow.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIApplication+UIWindow.swift 3 | // SKPhotoBrowser 4 | // 5 | // Created by Josef Dolezal on 25/09/2017. 6 | // Copyright © 2017 suzuki_keishi. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension UIApplication { 12 | internal var preferredApplicationWindow: UIWindow? { 13 | // Since delegate window is of type UIWindow??, we have to 14 | // unwrap it twice to be sure the window is not nil 15 | if let appWindow = UIApplication.pbs_shared?.delegate?.window, let window = appWindow { 16 | return window 17 | } else if let window = UIApplication.pbs_shared?.keyWindow { 18 | return window 19 | } 20 | 21 | return nil 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /PhobosSwift/Media/Classes/Privatized+third+party+code/SKPhotoBrowser/extensions/UIView+Radius.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+Radius.swift 3 | // SKPhotoBrowser 4 | // 5 | // Created by K Rummler on 15/03/16. 6 | // Copyright © 2016 suzuki_keishi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | extension UIView { 12 | func addCornerRadiusAnimation(_ from: CGFloat, to: CGFloat, duration: CFTimeInterval) { 13 | let animation = CABasicAnimation(keyPath: "cornerRadius") 14 | animation.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear) 15 | animation.fromValue = from 16 | animation.toValue = to 17 | animation.duration = duration 18 | layer.add(animation, forKey: "cornerRadius") 19 | layer.cornerRadius = to 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /PhobosSwift/Media/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftUIMedia 2 | ================ 3 | # Features 4 | - Camera: 相机 5 | - ImageEditor: 图片编辑 6 | - ImageSelector: 图片选择 7 | - ImagePreview: 图片预览 8 | 9 | 10 | 11 | # Requirements 12 | - iOS 10.0 or later 13 | - Xcode 11.0 or later 14 | - cocoapods 1.10.0 or later 15 | 16 | 17 | # How To Use 18 | - swift 19 | 20 | ``` 21 | 22 | import PhobosSwiftUIMedia 23 | 24 | let viewController = PBSImageBrower.PreviewViewController() 25 | viewController.setOtherData([:]) 26 | 27 | ``` 28 | 29 | # Installation 30 | ## Podfile 31 | 32 | ``` 33 | platform :ios, '10.0' 34 | use_frameworks! 35 | pod 'PhobosSwiftUIMedia', '~> 0.1.0' 36 | ``` 37 | 38 | 39 | # Author 40 | [Restless Developer](https://github.com/restlesscode) 41 | 42 | 43 | 44 | # Licenses 45 | All source code is licensed under the [MIT License](../../LICENSE). 46 | -------------------------------------------------------------------------------- /PhobosSwift/Network/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Network/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Network/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Network/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Network/Classes/PBSNetwork.swift: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // PBSNetwork.swift 4 | // PhobosSwiftNetwork 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | import Foundation 28 | 29 | public class PBSNetwork: NSObject {} 30 | -------------------------------------------------------------------------------- /PhobosSwift/Network/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftNetwork 2 | ================ 3 | # Features 4 | - PBSNetwork: Api请求 5 | - Extensions for CocoaMQTT: CocoaMQTT封装 6 | - PBSCertificatePinner: SSL Pinning 7 | - PBSNetwork.Reachability: 网络状态监听 8 | - Session: 会话管理 9 | 10 | # Requirements 11 | - iOS 10.0 or later 12 | - Xcode 11.0 or later 13 | - cocoapods 1.10.0 or later 14 | 15 | 16 | # How To Use 17 | - swift 18 | 19 | ``` 20 | import PhobosSwiftNetwork 21 | 22 | struct APIRequestResponse: Codable { 23 | let errorcode: String 24 | let errormsg: String 25 | } 26 | 27 | func request() { 28 | PBSNetwork.APIRequest.request("https://xxx.com", method: .get).then { (result: Result) in 29 | switch result { 30 | case let .success(model): 31 | if model.errorcode == "0" { 32 | 33 | } else { 34 | 35 | } 36 | case let .failure(error): 37 | NSLog("request error: \(error.localizedDescription)") 38 | } 39 | } 40 | } 41 | 42 | ``` 43 | 44 | # Installation 45 | ## Podfile 46 | 47 | ``` 48 | platform :ios, '10.0' 49 | use_frameworks! 50 | pod 'PhobosSwiftNetwork', '~> 0.1.0' 51 | ``` 52 | 53 | 54 | # Author 55 | [Restless Developer](https://github.com/restlesscode) 56 | 57 | 58 | 59 | # Licenses 60 | All source code is licensed under the [MIT License](../../LICENSE). 61 | -------------------------------------------------------------------------------- /PhobosSwift/Payment/Alipay/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Payment/Alipay/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Payment/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Payment/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Payment/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Payment/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Payment/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftPayment 2 | ================ 3 | # Features 4 | - IAP: 内购封装 5 | - PaymentAppDelegateSwizzler: 微信、支付宝、IAP支付回调封装 6 | 7 | 8 | # Requirements 9 | - iOS 10.0 or later 10 | - Xcode 11.0 or later 11 | - cocoapods 1.10.0 or later 12 | 13 | 14 | # How To Use 15 | - swift 16 | 17 | ``` 18 | import PhobosSwiftPayment 19 | 20 | PBSPayment.shared() 21 | 22 | ``` 23 | 24 | # Installation 25 | ## Podfile 26 | 27 | ``` 28 | platform :ios, '10.0' 29 | use_frameworks! 30 | pod 'PhobosSwiftPayment', '~> 0.1.0' 31 | ``` 32 | 33 | 34 | # Author 35 | [Restless Developer](https://github.com/restlesscode) 36 | 37 | 38 | 39 | # Licenses 40 | All source code is licensed under the [MIT License](../../LICENSE). 41 | -------------------------------------------------------------------------------- /PhobosSwift/Payment/Tests/Codebase-Service-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PlistVersion 6 | 0.1.0 7 | CodebasePush 8 | 9 | Aliyun 10 | 11 | AppKey 12 | 27856970 13 | AppSecret 14 | 336fdc2769c2aacb588255efb6e39652 15 | 16 | 17 | CodebaseLog 18 | 19 | MaxFileSize 20 | 1048576 21 | MaxTimeInterval 22 | 86400 23 | MaxLogFiles 24 | 5 25 | iCloudContainerIdentifier 26 | iCloud.cn.porsche.app-inhouse 27 | 28 | InternalBuildVersion 29 | 0.1.0 30 | 31 | 32 | -------------------------------------------------------------------------------- /PhobosSwift/Payment/Tests/Test.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Bundle.swift 3 | // CodebaseCore 4 | // 5 | // Created by Theo Chen on 2019/4/18. 6 | // 7 | import CodebaseCore 8 | import Foundation 9 | import XCTest 10 | 11 | /// Test the enhanced features of Bundle class is implemented in this extension 12 | class BundleTest: XCTestCase { 13 | override func setUp() { 14 | super.setUp() 15 | } 16 | 17 | override func tearDown() { 18 | super.tearDown() 19 | } 20 | 21 | // func testBundle_forMainBundle() { 22 | // let currentBundle = Bundle.cob_bundle(with:CodebaseCore.self) 23 | // XCTAssertNotNil(currentBundle.bundlePath) 24 | // XCTAssertNotNil(currentBundle.resourcePath) 25 | // XCTAssertNotNil(currentBundle.executablePath) 26 | // } 27 | } 28 | -------------------------------------------------------------------------------- /PhobosSwift/Payment/Wechatpay/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Payment/Wechatpay/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Persistence/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Persistence/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Persistence/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftPersistence 2 | ================ 3 | # Changelog 4 | 5 | -------------------------------------------------------------------------------- /PhobosSwift/Persistence/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Persistence/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Persistence/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftPersistence 2 | ================ 3 | # Features 4 | - Realm: Realm封装 5 | 6 | 7 | # Requirements 8 | - iOS 10.0 or later 9 | - Xcode 11.0 or later 10 | - cocoapods 1.10.0 or later 11 | 12 | 13 | # How To Use 14 | - swift 15 | 16 | ``` 17 | import PhobosSwiftPersistence 18 | 19 | let realm = Realm.pbs.makeRealm() 20 | ``` 21 | 22 | # Installation 23 | ## Podfile 24 | 25 | ``` 26 | platform :ios, '10.0' 27 | use_frameworks! 28 | pod 'PhobosSwiftPersistence', '~> 0.1.0' 29 | ``` 30 | 31 | 32 | # Author 33 | [Restless Developer](https://github.com/restlesscode) 34 | 35 | 36 | 37 | # Licenses 38 | All source code is licensed under the [MIT License](../../LICENSE). 39 | -------------------------------------------------------------------------------- /PhobosSwift/Push/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Push/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Push/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftPush 2 | ================ 3 | # Changelog 4 | 5 | -------------------------------------------------------------------------------- /PhobosSwift/Push/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftPush 2 | ================ 3 | # Features 4 | - Nitifications: 注册、接收、推送 5 | 6 | 7 | # Requirements 8 | - iOS 10.0 or later 9 | - Xcode 11.0 or later 10 | - cocoapods 1.10.0 or later 11 | 12 | 13 | # How To Use 14 | - swift 15 | 16 | ``` 17 | 18 | import PhobosSwiftPush 19 | 20 | PBSPush.shared.registerRemoteNotifications { status in 21 | 22 | } onError: { error in 23 | 24 | } onSuccess: { data in 25 | 26 | } 27 | 28 | ``` 29 | 30 | # Installation 31 | ## Podfile 32 | 33 | ``` 34 | platform :ios, '10.0' 35 | use_frameworks! 36 | pod 'PhobosSwiftPush', '~> 0.1.0' 37 | ``` 38 | 39 | 40 | # Author 41 | [Restless Developer](https://github.com/restlesscode) 42 | 43 | 44 | 45 | # Licenses 46 | All source code is licensed under the [MIT License](../../LICENSE). 47 | -------------------------------------------------------------------------------- /PhobosSwift/Push/Tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Push/Tests/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Router/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Router/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Router/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Router/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Router/Classes/Privatized+third+party+code/URLNavigator/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Suyeol Jeon (xoul.kr) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PhobosSwift/Router/Classes/Privatized+third+party+code/URLNavigator/URLMatcher/URLMatchResult.swift: -------------------------------------------------------------------------------- 1 | /// Represents an URL match result. 2 | public struct URLMatchResult { 3 | /// The url pattern that was matched. 4 | public let pattern: String 5 | 6 | /// The values extracted from the URL placeholder. 7 | public let values: [String: Any] 8 | } 9 | -------------------------------------------------------------------------------- /PhobosSwift/Router/Classes/Privatized+third+party+code/URLNavigator/URLMatcher/URLPatchComponentMatchResult.swift: -------------------------------------------------------------------------------- 1 | enum URLPathComponentMatchResult { 2 | case matches((key: String, value: Any)?) 3 | case notMatches 4 | } 5 | -------------------------------------------------------------------------------- /PhobosSwift/Router/Classes/Privatized+third+party+code/URLNavigator/URLMatcher/URLPathComponent.swift: -------------------------------------------------------------------------------- 1 | enum URLPathComponent { 2 | case plain(String) 3 | case placeholder(type: String?, key: String) 4 | } 5 | 6 | extension URLPathComponent { 7 | init(_ value: String) { 8 | if value.hasPrefix("<") && value.hasSuffix(">") { 9 | let start = value.index(after: value.startIndex) 10 | let end = value.index(before: value.endIndex) 11 | let placeholder = value[start.." -> "int:id" 12 | let typeAndKey = placeholder.components(separatedBy: ":") 13 | if typeAndKey.count == 1 { // any-type placeholder 14 | self = .placeholder(type: nil, key: typeAndKey[0]) 15 | } else if typeAndKey.count == 2 { 16 | self = .placeholder(type: typeAndKey[0], key: typeAndKey[1]) 17 | } else { 18 | self = .plain(value) 19 | } 20 | } else { 21 | self = .plain(value) 22 | } 23 | } 24 | } 25 | 26 | extension URLPathComponent: Equatable { 27 | static func ==(lhs: URLPathComponent, rhs: URLPathComponent) -> Bool { 28 | switch (lhs, rhs) { 29 | case let (.plain(leftValue), .plain(rightValue)): 30 | return leftValue == rightValue 31 | 32 | case let (.placeholder(leftType, leftKey), .placeholder(rightType, key: rightKey)): 33 | return (leftType == rightType) && (leftKey == rightKey) 34 | 35 | default: 36 | return false 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /PhobosSwift/Router/Classes/Privatized+third+party+code/URLNavigator/URLNavigator/NavigatorDelegate.swift: -------------------------------------------------------------------------------- 1 | #if os(iOS) || os(tvOS) 2 | import UIKit 3 | 4 | public protocol NavigatorDelegate: AnyObject { 5 | /// Returns whether the navigator should push the view controller or not. It returns `true` for 6 | /// default. 7 | func shouldPush(viewController: UIViewController, from: UINavigationControllerType) -> Bool 8 | 9 | /// Returns whether the navigator should present the view controller or not. It returns `true` 10 | /// for default. 11 | func shouldPresent(viewController: UIViewController, from: UIViewControllerType) -> Bool 12 | 13 | /// Returns whether the navigator should show the view controller or not. It returns `true` for 14 | /// default. 15 | func shouldShow(viewController: UIViewController, from: UIViewControllerType) -> Bool 16 | } 17 | 18 | extension NavigatorDelegate { 19 | /// 20 | public func shouldPush(viewController: UIViewController, 21 | from: UINavigationControllerType) -> Bool { 22 | true 23 | } 24 | 25 | /// 26 | public func shouldPresent(viewController: UIViewController, 27 | from: UIViewControllerType) -> Bool { 28 | true 29 | } 30 | 31 | /// 32 | public func shouldShow(viewController: UIViewController, 33 | from: UIViewControllerType) -> Bool { 34 | true 35 | } 36 | } 37 | #endif 38 | -------------------------------------------------------------------------------- /PhobosSwift/Router/Classes/Privatized+third+party+code/URLNavigator/URLNavigator/UIViewControllerType.swift: -------------------------------------------------------------------------------- 1 | #if os(iOS) || os(tvOS) 2 | import UIKit 3 | 4 | /// 5 | public protocol UINavigationControllerType { 6 | /// 7 | func pushViewController(_ viewController: UIViewController, animated: Bool) 8 | } 9 | 10 | /// 11 | public protocol UIViewControllerType { 12 | /// 13 | func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)?) 14 | /// 15 | func show(_ vc: UIViewController, sender: Any?) 16 | } 17 | 18 | extension UINavigationController: UINavigationControllerType {} 19 | extension UIViewController: UIViewControllerType {} 20 | #endif 21 | -------------------------------------------------------------------------------- /PhobosSwift/Router/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftRouter 2 | ================ 3 | # Features 4 | - URLNavigator 5 | - URLMatcher 6 | - PBSRouter 7 | 8 | 9 | # Requirements 10 | - iOS 10.0 or later 11 | - Xcode 11.0 or later 12 | - cocoapods 1.10.0 or later 13 | 14 | 15 | # How To Use 16 | - swift 17 | 18 | ``` 19 | 20 | import PhobosSwiftRouter 21 | 22 | let router = PBSRouter.default 23 | router.configure() 24 | router.register("testURL/HelloViewController") { url, _, _ -> UIViewController? in 25 | print(url.urlStringValue == "testURL/HelloViewController") 26 | print(url.urlStringValue) 27 | return UIViewController() 28 | } 29 | 30 | ``` 31 | 32 | # Installation 33 | ## Podfile 34 | 35 | ``` 36 | platform :ios, '10.0' 37 | use_frameworks! 38 | pod 'PhobosSwiftRouter', '~> 0.1.0' 39 | ``` 40 | 41 | 42 | # Author 43 | [Restless Developer](https://github.com/restlesscode) 44 | 45 | 46 | 47 | # Licenses 48 | All source code is licensed under the [MIT License](../../LICENSE). 49 | -------------------------------------------------------------------------------- /PhobosSwift/Slideout/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Slideout/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Slideout/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Slideout/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Slideout/Classes/PhobosSwiftSlideout.swift: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // PhobosSwiftSlideout.swift 4 | // PhobosSwiftSlideout 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | import PhobosSwiftCore 28 | import UIKit 29 | 30 | /// 暂时为空类 31 | public class PhobosSwiftSlideout {} 32 | -------------------------------------------------------------------------------- /PhobosSwift/Slideout/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftSlideout 2 | ================ 3 | # Features 4 | - 抽屉式转场动画ViewController 5 | 6 | # Requirements 7 | - iOS 10.0 or later 8 | - Xcode 11.0 or later 9 | - cocoapods 1.10.0 or later 10 | 11 | 12 | # How To Use 13 | - swift 14 | 15 | ``` 16 | import PhobosSwiftSlideout 17 | 18 | let viewController = UIViewController() 19 | let slideViewController = PBSSlideViewController(centerViewController: viewController, style: .scaled) 20 | 21 | ``` 22 | 23 | # Installation 24 | ## Podfile 25 | 26 | ``` 27 | platform :ios, '10.0' 28 | use_frameworks! 29 | pod 'PhobosSwiftSlideout', '~> 0.1.0' 30 | ``` 31 | 32 | 33 | # Author 34 | [Restless Developer](https://github.com/restlesscode) 35 | 36 | 37 | 38 | # Licenses 39 | All source code is licensed under the [MIT License](../../LICENSE). 40 | -------------------------------------------------------------------------------- /PhobosSwift/Splash/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Splash/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Splash/Assets/Media.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PhobosSwift/Splash/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Splash/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Splash/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftSplash 2 | ================ 3 | # Features 4 | - APP进入后台时默认展示页 5 | 6 | 7 | # Requirements 8 | - iOS 10.0 or later 9 | - Xcode 11.0 or later 10 | - cocoapods 1.10.0 or later 11 | 12 | 13 | # How To Use 14 | - swift 15 | 16 | ``` 17 | 18 | import PhobosSwiftSplash 19 | 20 | PBSSplash.shared.configuration 21 | ``` 22 | 23 | # Installation 24 | ## Podfile 25 | 26 | ``` 27 | platform :ios, '10.0' 28 | use_frameworks! 29 | pod 'PhobosSwiftSplash', '~> 0.1.0' 30 | ``` 31 | 32 | 33 | # Author 34 | [Restless Developer](https://github.com/restlesscode) 35 | 36 | 37 | 38 | # Licenses 39 | All source code is licensed under the [MIT License](../../LICENSE). 40 | -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/debug.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "debug@2.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "debug@3.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/debug.imageset/debug@2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/Media.xcassets/debug.imageset/debug@2.png -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/debug.imageset/debug@3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/Media.xcassets/debug.imageset/debug@3.png -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/preproduction.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "preproduction@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "preproduction@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/preproduction.imageset/preproduction@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/Media.xcassets/preproduction.imageset/preproduction@2x.png -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/preproduction.imageset/preproduction@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/Media.xcassets/preproduction.imageset/preproduction@3x.png -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/release.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "release@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "release@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/release.imageset/release@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/Media.xcassets/release.imageset/release@2x.png -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/release.imageset/release@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/Media.xcassets/release.imageset/release@3x.png -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/staging.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "staging@2.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "staging@3.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/staging.imageset/staging@2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/Media.xcassets/staging.imageset/staging@2.png -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Assets/Media.xcassets/staging.imageset/staging@3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Assets/Media.xcassets/staging.imageset/staging@3.png -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/TestKnight/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/TestKnight/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftTestKnight 2 | ================ 3 | # Features 4 | - 测试环境工具 5 | 6 | 7 | # Requirements 8 | - iOS 10.0 or later 9 | - Xcode 11.0 or later 10 | - cocoapods 1.10.0 or later 11 | 12 | 13 | # How To Use 14 | - swift 15 | 16 | ``` 17 | 18 | import PhobosSwiftTestKnight 19 | 20 | let testKnight = PBSTestKnight.shared 21 | if testKnight.configuration == .debug { 22 | 23 | } 24 | ``` 25 | 26 | # Installation 27 | ## Podfile 28 | 29 | ``` 30 | platform :ios, '10.0' 31 | use_frameworks! 32 | pod 'PhobosSwiftTestKnight', '~> 0.1.0' 33 | ``` 34 | 35 | 36 | # Author 37 | [Restless Developer](https://github.com/restlesscode) 38 | 39 | 40 | 41 | # Licenses 42 | All source code is licensed under the [MIT License](../../LICENSE). 43 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_error.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "error@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "error@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_error.imageset/error@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_error.imageset/error@2x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_error.imageset/error@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_error.imageset/error@3x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_info.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "blink@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "blink@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_info.imageset/blink@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_info.imageset/blink@2x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_info.imageset/blink@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_info.imageset/blink@3x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_success.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "happy@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "happy@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_success.imageset/happy@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_success.imageset/happy@2x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_success.imageset/happy@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_success.imageset/happy@3x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_warning.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "sad@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "sad@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_warning.imageset/sad@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_warning.imageset/sad@2x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_warning.imageset/sad@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/message_bar_warning.imageset/sad@3x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "sample@2x.jpg", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "sample@3x.jpg", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder.imageset/sample@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder.imageset/sample@2x.jpg -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder.imageset/sample@3x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder.imageset/sample@3x.jpg -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder1.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "filename" : "news_placeholder@2x.png", 9 | "idiom" : "universal", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "filename" : "news_placeholder@3x.png", 14 | "idiom" : "universal", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder1.imageset/news_placeholder@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder1.imageset/news_placeholder@2x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder1.imageset/news_placeholder@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Assets/Media.xcassets/news_placeholder1.imageset/news_placeholder@3x.png -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/en.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // Localizable.strings 4 | // PhobosSwiftUIComponent 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | "LANG" = "en"; 28 | "MORE_ABOUT" = "MORE POST ABOUT "; 29 | 30 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/ghost/prism-css.min.js: -------------------------------------------------------------------------------- 1 | !function(s){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,inside:{rule:/@[\w-]+/}},url:{pattern:RegExp("url\\((?:"+t.source+"|[^\n\r()]*)\\)","i"),inside:{function:/^url/i,punctuation:/^\(|\)$/}},selector:RegExp("[^{}\\s](?:[^{};\"']|"+t.source+")*?(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var e=s.languages.markup;e&&(e.tag.addInlined("style","css"),s.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:e.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:s.languages.css}},alias:"language-css"}},e.tag))}(Prism); -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/ghost/prism-okaidia.min.css: -------------------------------------------------------------------------------- 1 | code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help} 2 | /*# sourceMappingURL=prism-okaidia.min.css.map */ -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Assets/zh-Hans.lproj/Localizable.strings: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // Localizable.strings 4 | // PhobosSwiftUIComponent 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | 28 | "LANG" = "zh-Hans"; 29 | "MORE_ABOUT" = "MORE POST ABOUT "; 30 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/API/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/API/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/Kits/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/Kits/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/Models/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/Models/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/PhobosSwiftArticle.swift: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // PhobosSwiftArticle.swift 4 | // PhobosSwiftUIComponent 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | import Foundation 28 | 29 | public class PhobosSwiftArticle: NSObject {} 30 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/UIKits/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/UIKits/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/ViewModels/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/ViewModels/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/Views/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/Views/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/Views/Cells/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/Views/Cells/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/Views/Layouts/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/Views/Layouts/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/Views/ViewControllers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/Views/ViewControllers/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/PBSArticle/Views/Views/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/UIComponent/Classes/PBSArticle/Views/Views/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Charts/BubbleChartView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BubbleChartView.swift 3 | // Charts 4 | // 5 | // Bubble chart implementation: 6 | // Copyright 2015 Pierre-Marc Airoldi 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | open class BubbleChartView: BarLineChartViewBase, BubbleChartDataProvider { 16 | override open func initialize() { 17 | super.initialize() 18 | 19 | renderer = BubbleChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) 20 | } 21 | 22 | // MARK: - BubbleChartDataProvider 23 | 24 | open var bubbleData: BubbleChartData? { _data as? BubbleChartData } 25 | } 26 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Charts/CandleStickChartView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CandleStickChartView.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | /// Financial chart type that draws candle-sticks. 16 | open class CandleStickChartView: BarLineChartViewBase, CandleChartDataProvider { 17 | override internal func initialize() { 18 | super.initialize() 19 | 20 | renderer = CandleStickChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) 21 | 22 | xAxis.spaceMin = 0.5 23 | xAxis.spaceMax = 0.5 24 | } 25 | 26 | // MARK: - CandleChartDataProvider 27 | 28 | open var candleData: CandleChartData? { 29 | _data as? CandleChartData 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Charts/LineChartView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LineChartView.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | /// Chart that draws lines, surfaces, circles, ... 16 | open class LineChartView: BarLineChartViewBase, LineChartDataProvider { 17 | override internal func initialize() { 18 | super.initialize() 19 | 20 | renderer = LineChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) 21 | } 22 | 23 | // MARK: - LineChartDataProvider 24 | 25 | open var lineData: LineChartData? { _data as? LineChartData } 26 | } 27 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Charts/ScatterChartView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScatterChartView.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | /// The ScatterChart. Draws dots, triangles, squares and custom shapes into the chartview. 16 | open class ScatterChartView: BarLineChartViewBase, ScatterChartDataProvider { 17 | override open func initialize() { 18 | super.initialize() 19 | 20 | renderer = ScatterChartRenderer(dataProvider: self, animator: _animator, viewPortHandler: _viewPortHandler) 21 | 22 | xAxis.spaceMin = 0.5 23 | xAxis.spaceMax = 0.5 24 | } 25 | 26 | // MARK: - ScatterChartDataProvider 27 | 28 | open var scatterData: ScatterChartData? { _data as? ScatterChartData } 29 | } 30 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Components/ComponentBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ComponentBase.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | /// This class encapsulates everything both Axis, Legend and LimitLines have in common 16 | @objc(ChartComponentBase) 17 | open class ComponentBase: NSObject { 18 | /// flag that indicates if this component is enabled or not 19 | @objc open var enabled = true 20 | 21 | /// The offset this component has on the x-axis 22 | /// **default**: 5.0 23 | @objc open var xOffset = CGFloat(5.0) 24 | 25 | /// The offset this component has on the x-axis 26 | /// **default**: 5.0 (or 0.0 on ChartYAxis) 27 | @objc open var yOffset = CGFloat(5.0) 28 | 29 | override public init() { 30 | super.init() 31 | } 32 | 33 | @objc open var isEnabled: Bool { enabled } 34 | } 35 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartData.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BarLineScatterCandleBubbleChartData.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import Foundation 13 | 14 | open class BarLineScatterCandleBubbleChartData: ChartData { 15 | override public init() { 16 | super.init() 17 | } 18 | 19 | override public init(dataSets: [IChartDataSet]?) { 20 | super.init(dataSets: dataSets) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Implementations/Standard/BarLineScatterCandleBubbleChartDataSet.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BarLineScatterCandleBubbleChartDataSet.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | open class BarLineScatterCandleBubbleChartDataSet: ChartDataSet, IBarLineScatterCandleBubbleChartDataSet 16 | { 17 | // MARK: - Data functions and accessors 18 | 19 | // MARK: - Styling functions and accessors 20 | 21 | open var highlightColor = NSUIColor(red: 255.0 / 255.0, green: 187.0 / 255.0, blue: 115.0 / 255.0, alpha: 1.0) 22 | open var highlightLineWidth = CGFloat(0.5) 23 | open var highlightLineDashPhase = CGFloat(0.0) 24 | open var highlightLineDashLengths: [CGFloat]? 25 | 26 | // MARK: - NSCopying 27 | 28 | override open func copy(with zone: NSZone? = nil) -> Any { 29 | let copy = super.copy(with: zone) as! BarLineScatterCandleBubbleChartDataSet 30 | copy.highlightColor = highlightColor 31 | copy.highlightLineWidth = highlightLineWidth 32 | copy.highlightLineDashPhase = highlightLineDashPhase 33 | copy.highlightLineDashLengths = highlightLineDashLengths 34 | return copy 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Implementations/Standard/BubbleChartData.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BubbleChartData.swift 3 | // Charts 4 | // 5 | // Bubble chart implementation: 6 | // Copyright 2015 Pierre-Marc Airoldi 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | open class BubbleChartData: BarLineScatterCandleBubbleChartData { 16 | override public init() { 17 | super.init() 18 | } 19 | 20 | override public init(dataSets: [IChartDataSet]?) { 21 | super.init(dataSets: dataSets) 22 | } 23 | 24 | /// Sets the width of the circle that surrounds the bubble when highlighted for all DataSet objects this data object contains 25 | @objc open func setHighlightCircleWidth(_ width: CGFloat) { 26 | (_dataSets as? [IBubbleChartDataSet])?.forEach { $0.highlightCircleWidth = width } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Implementations/Standard/CandleChartData.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CandleChartData.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import Foundation 13 | 14 | open class CandleChartData: BarLineScatterCandleBubbleChartData { 15 | override public init() { 16 | super.init() 17 | } 18 | 19 | override public init(dataSets: [IChartDataSet]?) { 20 | super.init(dataSets: dataSets) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Implementations/Standard/LineChartData.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LineChartData.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import Foundation 13 | 14 | /// Data object that encapsulates all data associated with a LineChart. 15 | open class LineChartData: ChartData { 16 | override public init() { 17 | super.init() 18 | } 19 | 20 | override public init(dataSets: [IChartDataSet]?) { 21 | super.init(dataSets: dataSets) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Implementations/Standard/RadarChartData.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RadarChartData.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | open class RadarChartData: ChartData { 16 | @objc open var highlightColor = NSUIColor(red: 255.0 / 255.0, green: 187.0 / 255.0, blue: 115.0 / 255.0, alpha: 1.0) 17 | @objc open var highlightLineWidth = CGFloat(1.0) 18 | @objc open var highlightLineDashPhase = CGFloat(0.0) 19 | @objc open var highlightLineDashLengths: [CGFloat]? 20 | 21 | /// Sets labels that should be drawn around the RadarChart at the end of each web line. 22 | @objc open var labels = [String]() 23 | 24 | /// Sets the labels that should be drawn around the RadarChart at the end of each web line. 25 | open func setLabels(_ labels: String...) { 26 | self.labels = labels 27 | } 28 | 29 | override public init() { 30 | super.init() 31 | } 32 | 33 | override public init(dataSets: [IChartDataSet]?) { 34 | super.init(dataSets: dataSets) 35 | } 36 | 37 | override open func entryForHighlight(_ highlight: Highlight) -> ChartDataEntry? { 38 | getDataSetByIndex(highlight.dataSetIndex)?.entryForIndex(Int(highlight.x)) 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Implementations/Standard/RadarChartDataEntry.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RadarChartDataEntry.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | open class RadarChartDataEntry: ChartDataEntry { 16 | public required init() { 17 | super.init() 18 | } 19 | 20 | /// - Parameters: 21 | /// - value: The value on the y-axis. 22 | @objc public init(value: Double) { 23 | super.init(x: .nan, y: value) 24 | } 25 | 26 | /// - Parameters: 27 | /// - value: The value on the y-axis. 28 | /// - data: Spot for additional data this Entry represents. 29 | @objc public convenience init(value: Double, data: Any?) { 30 | self.init(value: value) 31 | self.data = data 32 | } 33 | 34 | // MARK: Data property accessors 35 | 36 | @objc open var value: Double { 37 | get { y } 38 | set { y = newValue } 39 | } 40 | 41 | // MARK: NSCopying 42 | 43 | override open func copy(with zone: NSZone? = nil) -> Any { 44 | let copy = super.copy(with: zone) as! RadarChartDataEntry 45 | 46 | return copy 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Implementations/Standard/ScatterChartData.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScatterChartData.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | open class ScatterChartData: BarLineScatterCandleBubbleChartData { 16 | override public init() { 17 | super.init() 18 | } 19 | 20 | override public init(dataSets: [IChartDataSet]?) { 21 | super.init(dataSets: dataSets) 22 | } 23 | 24 | /// - Returns: The maximum shape-size across all DataSets. 25 | @objc open func getGreatestShapeSize() -> CGFloat { 26 | (_dataSets as? [IScatterChartDataSet])? 27 | .max { $0.scatterShapeSize < $1.scatterShapeSize }? 28 | .scatterShapeSize ?? 0 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Interfaces/IBarLineScatterCandleBubbleChartDataSet.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IBarLineScatterCandleBubbleChartDataSet.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol IBarLineScatterCandleBubbleChartDataSet: IChartDataSet { 17 | // MARK: - Data functions and accessors 18 | 19 | // MARK: - Styling functions and accessors 20 | 21 | var highlightColor: NSUIColor { get set } 22 | var highlightLineWidth: CGFloat { get set } 23 | var highlightLineDashPhase: CGFloat { get set } 24 | var highlightLineDashLengths: [CGFloat]? { get set } 25 | } 26 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Interfaces/IBubbleChartDataSet.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IBubbleChartDataSet.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol IBubbleChartDataSet: IBarLineScatterCandleBubbleChartDataSet { 17 | // MARK: - Data functions and accessors 18 | 19 | var maxSize: CGFloat { get } 20 | var isNormalizeSizeEnabled: Bool { get } 21 | 22 | // MARK: - Styling functions and accessors 23 | 24 | /// Sets/gets the width of the circle that surrounds the bubble when highlighted 25 | var highlightCircleWidth: CGFloat { get set } 26 | } 27 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Interfaces/ILineScatterCandleRadarChartDataSet.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ILineScatterCandleRadarChartDataSet.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import Foundation 13 | 14 | @objc 15 | public protocol ILineScatterCandleRadarChartDataSet: IBarLineScatterCandleBubbleChartDataSet { 16 | // MARK: - Data functions and accessors 17 | 18 | // MARK: - Styling functions and accessors 19 | 20 | /// Enables / disables the horizontal highlight-indicator. If disabled, the indicator is not drawn. 21 | var drawHorizontalHighlightIndicatorEnabled: Bool { get set } 22 | 23 | /// Enables / disables the vertical highlight-indicator. If disabled, the indicator is not drawn. 24 | var drawVerticalHighlightIndicatorEnabled: Bool { get set } 25 | 26 | /// `true` if horizontal highlight indicator lines are enabled (drawn) 27 | var isHorizontalHighlightIndicatorEnabled: Bool { get } 28 | 29 | /// `true` if vertical highlight indicator lines are enabled (drawn) 30 | var isVerticalHighlightIndicatorEnabled: Bool { get } 31 | 32 | /// Enables / disables both vertical and horizontal highlight-indicators. 33 | /// :param: enabled 34 | func setDrawHighlightIndicators(_ enabled: Bool) 35 | } 36 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Interfaces/IRadarChartDataSet.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IRadarChartDataSet.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol IRadarChartDataSet: ILineRadarChartDataSet { 17 | // MARK: - Data functions and accessors 18 | 19 | // MARK: - Styling functions and accessors 20 | 21 | /// flag indicating whether highlight circle should be drawn or not 22 | var drawHighlightCircleEnabled: Bool { get set } 23 | 24 | var isDrawHighlightCircleEnabled: Bool { get } 25 | 26 | var highlightCircleFillColor: NSUIColor? { get set } 27 | 28 | /// The stroke color for highlight circle. 29 | /// If `nil`, the color of the dataset is taken. 30 | var highlightCircleStrokeColor: NSUIColor? { get set } 31 | 32 | var highlightCircleStrokeAlpha: CGFloat { get set } 33 | 34 | var highlightCircleInnerRadius: CGFloat { get set } 35 | 36 | var highlightCircleOuterRadius: CGFloat { get set } 37 | 38 | var highlightCircleStrokeWidth: CGFloat { get set } 39 | } 40 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Data/Interfaces/IScatterChartDataSet.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IScatterChartDataSet.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol IScatterChartDataSet: ILineScatterCandleRadarChartDataSet { 17 | // MARK: - Data functions and accessors 18 | 19 | // MARK: - Styling functions and accessors 20 | 21 | /// The size the scatter shape will have 22 | var scatterShapeSize: CGFloat { get } 23 | 24 | /// - Returns: The radius of the hole in the shape (applies to Square, Circle and Triangle) 25 | /// Set this to <= 0 to remove holes. 26 | /// **default**: 0.0 27 | var scatterShapeHoleRadius: CGFloat { get } 28 | 29 | /// - Returns: Color for the hole in the shape. Setting to `nil` will behave as transparent. 30 | /// **default**: nil 31 | var scatterShapeHoleColor: NSUIColor? { get } 32 | 33 | /// The IShapeRenderer responsible for rendering this DataSet. 34 | var shapeRenderer: IShapeRenderer? { get } 35 | } 36 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Formatters/IAxisValueFormatter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IAxisValueFormatter.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import Foundation 13 | 14 | /// An interface for providing custom axis Strings. 15 | @objc(IChartAxisValueFormatter) 16 | public protocol IAxisValueFormatter: AnyObject { 17 | /// Called when a value from an axis is formatted before being drawn. 18 | /// 19 | /// For performance reasons, avoid excessive calculations and memory allocations inside this method. 20 | /// 21 | /// - Parameters: 22 | /// - value: the value that is currently being drawn 23 | /// - axis: the axis that the value belongs to 24 | /// - Returns: The customized label that is drawn on the x-axis. 25 | func stringForValue(_ value: Double, 26 | axis: AxisBase?) -> String 27 | } 28 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Formatters/IFillFormatter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IFillFormatter.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | /// Protocol for providing a custom logic to where the filling line of a LineDataSet should end. This of course only works if setFillEnabled(...) is set to true. 16 | @objc(IChartFillFormatter) 17 | public protocol IFillFormatter { 18 | /// - Returns: The vertical (y-axis) position where the filled-line of the LineDataSet should end. 19 | func getFillLinePosition(dataSet: ILineChartDataSet, dataProvider: LineChartDataProvider) -> CGFloat 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Formatters/IndexAxisValueFormatter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IndexAxisValueFormatter.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import Foundation 13 | 14 | /// This formatter is used for passing an array of x-axis labels, on whole x steps. 15 | @objc(ChartIndexAxisValueFormatter) 16 | open class IndexAxisValueFormatter: NSObject, IAxisValueFormatter { 17 | private var _values = [String]() 18 | private var _valueCount: Int = 0 19 | 20 | @objc public var values: [String] { 21 | get { 22 | _values 23 | } 24 | set { 25 | _values = newValue 26 | _valueCount = _values.count 27 | } 28 | } 29 | 30 | override public init() { 31 | super.init() 32 | } 33 | 34 | @objc public init(values: [String]) { 35 | super.init() 36 | 37 | self.values = values 38 | } 39 | 40 | @objc public static func with(values: [String]) -> IndexAxisValueFormatter? { 41 | IndexAxisValueFormatter(values: values) 42 | } 43 | 44 | open func stringForValue(_ value: Double, 45 | axis: AxisBase?) -> String 46 | { 47 | let index = Int(value.rounded()) 48 | guard values.indices.contains(index), index == Int(value) else { return "" } 49 | return _values[index] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Highlight/IHighlighter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IHighlighter.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc(IChartHighlighter) 16 | public protocol IHighlighter: AnyObject { 17 | /// - Parameters: 18 | /// - x: 19 | /// - y: 20 | /// - Returns: A Highlight object corresponding to the given x- and y- touch positions in pixels. 21 | func getHighlight(x: CGFloat, y: CGFloat) -> Highlight? 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Highlight/PieHighlighter.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PieHighlighter.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc(PieChartHighlighter) 16 | open class PieHighlighter: PieRadarHighlighter { 17 | override open func closestHighlight(index: Int, x: CGFloat, y: CGFloat) -> Highlight? { 18 | guard 19 | let set = chart?.data?.dataSets[0], 20 | let entry = set.entryForIndex(index) 21 | else { return nil } 22 | 23 | return Highlight(x: Double(index), y: entry.y, xPx: x, yPx: y, dataSetIndex: 0, axis: set.axisDependency) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Highlight/Range.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Range.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import Foundation 13 | 14 | @objc(ChartRange) 15 | open class Range: NSObject { 16 | @objc open var from: Double 17 | @objc open var to: Double 18 | 19 | @objc public init(from: Double, to: Double) { 20 | self.from = from 21 | self.to = to 22 | 23 | super.init() 24 | } 25 | 26 | /// - Parameters: 27 | /// - value: 28 | /// - Returns: `true` if this range contains (if the value is in between) the given value, `false` ifnot. 29 | @objc open func contains(_ value: Double) -> Bool { 30 | if value > from && value <= to { 31 | return true 32 | } else { 33 | return false 34 | } 35 | } 36 | 37 | @objc open func isLarger(_ value: Double) -> Bool { 38 | value > to 39 | } 40 | 41 | @objc open func isSmaller(_ value: Double) -> Bool { 42 | value < from 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Interfaces/BarChartDataProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BarChartDataProvider.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol BarChartDataProvider: BarLineScatterCandleBubbleChartDataProvider { 17 | var barData: BarChartData? { get } 18 | 19 | var isDrawBarShadowEnabled: Bool { get } 20 | var isDrawValueAboveBarEnabled: Bool { get } 21 | var isHighlightFullBarEnabled: Bool { get } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Interfaces/BarLineScatterCandleBubbleChartDataProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BarLineScatterCandleBubbleChartDataProvider.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol BarLineScatterCandleBubbleChartDataProvider: ChartDataProvider { 17 | func getTransformer(forAxis: YAxis.AxisDependency) -> Transformer 18 | func isInverted(axis: YAxis.AxisDependency) -> Bool 19 | 20 | var lowestVisibleX: Double { get } 21 | var highestVisibleX: Double { get } 22 | } 23 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Interfaces/BubbleChartDataProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BubbleChartDataProvider.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol BubbleChartDataProvider: BarLineScatterCandleBubbleChartDataProvider { 17 | var bubbleData: BubbleChartData? { get } 18 | } 19 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Interfaces/CandleChartDataProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CandleChartDataProvider.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol CandleChartDataProvider: BarLineScatterCandleBubbleChartDataProvider { 17 | var candleData: CandleChartData? { get } 18 | } 19 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Interfaces/ChartDataProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChartDataProvider.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol ChartDataProvider { 17 | /// The minimum x-value of the chart, regardless of zoom or translation. 18 | var chartXMin: Double { get } 19 | 20 | /// The maximum x-value of the chart, regardless of zoom or translation. 21 | var chartXMax: Double { get } 22 | 23 | /// The minimum y-value of the chart, regardless of zoom or translation. 24 | var chartYMin: Double { get } 25 | 26 | /// The maximum y-value of the chart, regardless of zoom or translation. 27 | var chartYMax: Double { get } 28 | 29 | var maxHighlightDistance: CGFloat { get } 30 | 31 | var xRange: Double { get } 32 | 33 | var centerOffsets: CGPoint { get } 34 | 35 | var data: ChartData? { get } 36 | 37 | var maxVisibleCount: Int { get } 38 | } 39 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Interfaces/CombinedChartDataProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CombinedChartDataProvider.swoft 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol CombinedChartDataProvider: LineChartDataProvider, BarChartDataProvider, BubbleChartDataProvider, CandleChartDataProvider, ScatterChartDataProvider 17 | { 18 | var combinedData: CombinedChartData? { get } 19 | } 20 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Interfaces/LineChartDataProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LineChartDataProvider.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol LineChartDataProvider: BarLineScatterCandleBubbleChartDataProvider { 17 | var lineData: LineChartData? { get } 18 | 19 | func getAxis(_ axis: YAxis.AxisDependency) -> YAxis 20 | } 21 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Interfaces/ScatterChartDataProvider.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScatterChartDataProvider.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol ScatterChartDataProvider: BarLineScatterCandleBubbleChartDataProvider { 17 | var scatterData: ScatterChartData? { get } 18 | } 19 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Jobs/AnimatedMoveViewJob.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnimatedMoveViewJob.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | open class AnimatedMoveViewJob: AnimatedViewPortJob { 16 | override internal func animationUpdate() { 17 | guard 18 | let viewPortHandler = viewPortHandler, 19 | let transformer = transformer, 20 | let view = view 21 | else { return } 22 | 23 | var pt = CGPoint(x: xOrigin + (CGFloat(xValue) - xOrigin) * phase, 24 | y: yOrigin + (CGFloat(yValue) - yOrigin) * phase) 25 | 26 | transformer.pointValueToPixel(&pt) 27 | viewPortHandler.centerViewPort(pt: pt, chart: view) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Jobs/MoveViewJob.swift: -------------------------------------------------------------------------------- 1 | // 2 | // MoveViewJob.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc(MoveChartViewJob) 16 | open class MoveViewJob: ViewPortJob { 17 | override open func doJob() { 18 | guard 19 | let viewPortHandler = viewPortHandler, 20 | let transformer = transformer, 21 | let view = view 22 | else { return } 23 | 24 | var pt = CGPoint(x: xValue, 25 | y: yValue) 26 | 27 | transformer.pointValueToPixel(&pt) 28 | viewPortHandler.centerViewPort(pt: pt, chart: view) 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Jobs/ViewPortJob.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewPortJob.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | // This defines a viewport modification job, used for delaying or animating viewport changes 16 | @objc(ChartViewPortJob) 17 | open class ViewPortJob: NSObject { 18 | internal var point = CGPoint() 19 | internal weak var viewPortHandler: ViewPortHandler? 20 | internal var xValue: Double = 0.0 21 | internal var yValue: Double = 0.0 22 | internal weak var transformer: Transformer? 23 | internal weak var view: ChartViewBase? 24 | 25 | @objc public init(viewPortHandler: ViewPortHandler, 26 | xValue: Double, 27 | yValue: Double, 28 | transformer: Transformer, 29 | view: ChartViewBase) 30 | { 31 | super.init() 32 | 33 | self.viewPortHandler = viewPortHandler 34 | self.xValue = xValue 35 | self.yValue = yValue 36 | self.transformer = transformer 37 | self.view = view 38 | } 39 | 40 | @objc open func doJob() { 41 | fatalError("`doJob()` must be overridden by subclasses") 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Renderers/Renderer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Renderer.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc(ChartRenderer) 16 | open class Renderer: NSObject { 17 | /// the component that handles the drawing area of the chart and it's offsets 18 | @objc public let viewPortHandler: ViewPortHandler 19 | 20 | @objc public init(viewPortHandler: ViewPortHandler) { 21 | self.viewPortHandler = viewPortHandler 22 | super.init() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Renderers/Scatter/ChevronDownShapeRenderer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChevronDownShapeRenderer.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | import CoreGraphics 12 | import Foundation 13 | 14 | open class ChevronDownShapeRenderer: NSObject, IShapeRenderer { 15 | open func renderShape(context: CGContext, 16 | dataSet: IScatterChartDataSet, 17 | viewPortHandler: ViewPortHandler, 18 | point: CGPoint, 19 | color: NSUIColor) 20 | { 21 | let shapeSize = dataSet.scatterShapeSize 22 | let shapeHalf = shapeSize / 2.0 23 | 24 | context.setLineWidth(1.0) 25 | context.setStrokeColor(color.cgColor) 26 | 27 | context.beginPath() 28 | context.move(to: CGPoint(x: point.x, y: point.y + 2 * shapeHalf)) 29 | context.addLine(to: CGPoint(x: point.x + 2 * shapeHalf, y: point.y)) 30 | context.move(to: CGPoint(x: point.x, y: point.y + 2 * shapeHalf)) 31 | context.addLine(to: CGPoint(x: point.x - 2 * shapeHalf, y: point.y)) 32 | context.strokePath() 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Renderers/Scatter/ChevronUpShapeRenderer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ChevronUpShapeRenderer.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | import CoreGraphics 12 | import Foundation 13 | 14 | open class ChevronUpShapeRenderer: NSObject, IShapeRenderer { 15 | open func renderShape(context: CGContext, 16 | dataSet: IScatterChartDataSet, 17 | viewPortHandler: ViewPortHandler, 18 | point: CGPoint, 19 | color: NSUIColor) 20 | { 21 | let shapeSize = dataSet.scatterShapeSize 22 | let shapeHalf = shapeSize / 2.0 23 | 24 | context.setLineWidth(1.0) 25 | context.setStrokeColor(color.cgColor) 26 | 27 | context.beginPath() 28 | context.move(to: CGPoint(x: point.x, y: point.y - 2 * shapeHalf)) 29 | context.addLine(to: CGPoint(x: point.x + 2 * shapeHalf, y: point.y)) 30 | context.move(to: CGPoint(x: point.x, y: point.y - 2 * shapeHalf)) 31 | context.addLine(to: CGPoint(x: point.x - 2 * shapeHalf, y: point.y)) 32 | context.strokePath() 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Renderers/Scatter/CrossShapeRenderer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CrossShapeRenderer.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | import CoreGraphics 12 | import Foundation 13 | 14 | open class CrossShapeRenderer: NSObject, IShapeRenderer { 15 | open func renderShape(context: CGContext, 16 | dataSet: IScatterChartDataSet, 17 | viewPortHandler: ViewPortHandler, 18 | point: CGPoint, 19 | color: NSUIColor) 20 | { 21 | let shapeSize = dataSet.scatterShapeSize 22 | let shapeHalf = shapeSize / 2.0 23 | 24 | context.setLineWidth(1.0) 25 | context.setStrokeColor(color.cgColor) 26 | 27 | context.beginPath() 28 | context.move(to: CGPoint(x: point.x - shapeHalf, y: point.y)) 29 | context.addLine(to: CGPoint(x: point.x + shapeHalf, y: point.y)) 30 | context.move(to: CGPoint(x: point.x, y: point.y - shapeHalf)) 31 | context.addLine(to: CGPoint(x: point.x, y: point.y + shapeHalf)) 32 | context.strokePath() 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Renderers/Scatter/IShapeRenderer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // IShapeRenderer.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc 16 | public protocol IShapeRenderer: AnyObject { 17 | /// Renders the provided ScatterDataSet with a shape. 18 | /// 19 | /// - Parameters: 20 | /// - context: CGContext for drawing on 21 | /// - dataSet: The DataSet to be drawn 22 | /// - viewPortHandler: Contains information about the current state of the view 23 | /// - point: Position to draw the shape at 24 | /// - color: Color to draw the shape 25 | func renderShape(context: CGContext, 26 | dataSet: IScatterChartDataSet, 27 | viewPortHandler: ViewPortHandler, 28 | point: CGPoint, 29 | color: NSUIColor) 30 | } 31 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Renderers/Scatter/XShapeRenderer.swift: -------------------------------------------------------------------------------- 1 | // 2 | // XShapeRenderer.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | import CoreGraphics 12 | import Foundation 13 | 14 | open class XShapeRenderer: NSObject, IShapeRenderer { 15 | open func renderShape(context: CGContext, 16 | dataSet: IScatterChartDataSet, 17 | viewPortHandler: ViewPortHandler, 18 | point: CGPoint, 19 | color: NSUIColor) 20 | { 21 | let shapeSize = dataSet.scatterShapeSize 22 | let shapeHalf = shapeSize / 2.0 23 | 24 | context.setLineWidth(1.0) 25 | context.setStrokeColor(color.cgColor) 26 | 27 | context.beginPath() 28 | context.move(to: CGPoint(x: point.x - shapeHalf, y: point.y - shapeHalf)) 29 | context.addLine(to: CGPoint(x: point.x + shapeHalf, y: point.y + shapeHalf)) 30 | context.move(to: CGPoint(x: point.x + shapeHalf, y: point.y - shapeHalf)) 31 | context.addLine(to: CGPoint(x: point.x - shapeHalf, y: point.y + shapeHalf)) 32 | context.strokePath() 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Utils/Platform+Color.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform+Color.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | #if canImport(UIKit) 13 | import UIKit 14 | 15 | public typealias NSUIColor = UIColor 16 | private func fetchLabelColor() -> UIColor { 17 | if #available(iOS 13, tvOS 13, *) { 18 | return .label 19 | } else { 20 | return .black 21 | } 22 | } 23 | 24 | private let labelColor: UIColor = fetchLabelColor() 25 | 26 | extension UIColor { 27 | static var labelOrBlack: UIColor { labelColor } 28 | } 29 | #endif 30 | 31 | #if canImport(AppKit) && !targetEnvironment(macCatalyst) 32 | 33 | import AppKit 34 | 35 | public typealias NSUIColor = NSColor 36 | private func fetchLabelColor() -> NSColor { 37 | if #available(macOS 10.14, *) { 38 | return .labelColor 39 | } else { 40 | return .black 41 | } 42 | } 43 | 44 | private let labelColor: NSColor = fetchLabelColor() 45 | 46 | extension NSColor { 47 | static var labelOrBlack: NSColor { labelColor } 48 | } 49 | #endif 50 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Charts/Utils/TransformerHorizontalBarChart.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TransformerHorizontalBarChart.swift 3 | // Charts 4 | // 5 | // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda 6 | // A port of MPAndroidChart for iOS 7 | // Licensed under Apache License 2.0 8 | // 9 | // https://github.com/danielgindi/Charts 10 | // 11 | 12 | import CoreGraphics 13 | import Foundation 14 | 15 | @objc(ChartTransformerHorizontalBarChart) 16 | open class TransformerHorizontalBarChart: Transformer { 17 | /// Prepares the matrix that contains all offsets. 18 | override open func prepareMatrixOffset(inverted: Bool) { 19 | if !inverted { 20 | _matrixOffset = CGAffineTransform(translationX: _viewPortHandler.offsetLeft, y: _viewPortHandler.chartHeight - _viewPortHandler.offsetBottom) 21 | } else { 22 | _matrixOffset = CGAffineTransform(scaleX: -1.0, y: 1.0) 23 | _matrixOffset = _matrixOffset.translatedBy(x: -(_viewPortHandler.chartWidth - _viewPortHandler.offsetRight), 24 | y: _viewPortHandler.chartHeight - _viewPortHandler.offsetBottom) 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Cosmos/CosmosLayerHelper.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | /// Helper class for creating CALayer objects. 4 | class CosmosLayerHelper { 5 | /** 6 | 7 | Creates a text layer for the given text string and font. 8 | 9 | - parameter text: The text shown in the layer. 10 | - parameter font: The text font. It is also used to calculate the layer bounds. 11 | - parameter color: Text color. 12 | 13 | - returns: New text layer. 14 | 15 | */ 16 | class func createTextLayer(_ text: String, font: UIFont, color: UIColor) -> CATextLayer { 17 | let size = NSString(string: text).size(withAttributes: [NSAttributedString.Key.font: font]) 18 | 19 | let layer = CATextLayer() 20 | layer.bounds = CGRect(origin: CGPoint(), size: size) 21 | layer.anchorPoint = CGPoint() 22 | 23 | layer.string = text 24 | layer.font = CGFont(font.fontName as CFString) 25 | layer.fontSize = font.pointSize 26 | layer.foregroundColor = color.cgColor 27 | layer.contentsScale = UIScreen.main.scale 28 | 29 | return layer 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Cosmos/CosmosSize.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | /** 4 | 5 | Helper class for calculating size for the cosmos view. 6 | 7 | */ 8 | class CosmosSize { 9 | /** 10 | 11 | Calculates the size of the cosmos view. It goes through all the star and text layers and makes size the view size is large enough to show all of them. 12 | 13 | */ 14 | class func calculateSizeToFitLayers(_ layers: [CALayer]) -> CGSize { 15 | var size = CGSize() 16 | 17 | for layer in layers { 18 | if layer.frame.maxX > size.width { 19 | size.width = layer.frame.maxX 20 | } 21 | 22 | if layer.frame.maxY > size.height { 23 | size.height = layer.frame.maxY 24 | } 25 | } 26 | 27 | return size 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Cosmos/CosmosText.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | /** 4 | 5 | Positions the text layer to the right of the stars. 6 | 7 | */ 8 | class CosmosText { 9 | /** 10 | 11 | Positions the text layer to the right from the stars. Text is aligned to the center of the star superview vertically. 12 | 13 | - parameter layer: The text layer to be positioned. 14 | - parameter starsSize: The size of the star superview. 15 | - parameter textMargin: The distance between the stars and the text. 16 | 17 | */ 18 | class func position(_ layer: CALayer, starsSize: CGSize, textMargin: Double) { 19 | layer.position.x = starsSize.width + CGFloat(textMargin) 20 | let yOffset = (starsSize.height - layer.bounds.height) / 2 21 | layer.position.y = yOffset 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Cosmos/Helpers/CosmosTouchTarget.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | /** 4 | 5 | Helper function to make sure bounds are big enought to be used as touch target. 6 | The function is used in pointInside(point: CGPoint, withEvent event: UIEvent?) of UIImageView. 7 | 8 | */ 9 | struct CosmosTouchTarget { 10 | static func optimize(_ bounds: CGRect) -> CGRect { 11 | let recommendedHitSize: CGFloat = 44 12 | 13 | var hitWidthIncrease: CGFloat = recommendedHitSize - bounds.width 14 | var hitHeightIncrease: CGFloat = recommendedHitSize - bounds.height 15 | 16 | if hitWidthIncrease < 0 { hitWidthIncrease = 0 } 17 | if hitHeightIncrease < 0 { hitHeightIncrease = 0 } 18 | 19 | let extendedBounds: CGRect = bounds.insetBy(dx: -hitWidthIncrease / 2, 20 | dy: -hitHeightIncrease / 2) 21 | 22 | return extendedBounds 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Cosmos/Helpers/RightToLeft.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | 3 | /** 4 | 5 | Helper functions for dealing with right-to-left languages. 6 | 7 | */ 8 | struct RightToLeft { 9 | static func isRightToLeft(_ view: UIView) -> Bool { 10 | if #available(iOS 9.0, *) { 11 | return UIView.userInterfaceLayoutDirection( 12 | for: view.semanticContentAttribute) == .rightToLeft 13 | } else { 14 | return false 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/Cosmos/StarFillMode.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | /** 4 | 5 | Defines how the star is filled when the rating is not an integer number. For example, if rating is 4.6 and the fill more is Half, the star will appear to be half filled. 6 | 7 | */ 8 | public enum StarFillMode: Int { 9 | /// Show only fully filled stars. For example, fourth star will be empty for 3.2. 10 | case full = 0 11 | 12 | /// Show fully filled and half-filled stars. For example, fourth star will be half filled for 3.6. 13 | case half = 1 14 | 15 | /// Fill star according to decimal rating. For example, fourth star will be 20% filled for 3.2. 16 | case precise = 2 17 | } 18 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/FloatingPanel/FloatingPanelBackdropView.swift: -------------------------------------------------------------------------------- 1 | // Copyright 2018-Present Shin Yamamoto. All rights reserved. MIT license. 2 | 3 | import UIKit 4 | 5 | /// A view that presents a backdrop interface behind a panel. 6 | @objc(FloatingPanelBackdropView) 7 | public class FloatingPanelBackdropView: UIView { 8 | /// The gesture recognizer for tap gestures to dismiss a panel. 9 | public var dismissalTapGestureRecognizer: UITapGestureRecognizer! 10 | } 11 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/FloatingPanel/FloatingPanelGrabberView.swift: -------------------------------------------------------------------------------- 1 | // Copyright 2018-Present Shin Yamamoto. All rights reserved. MIT license. 2 | 3 | import UIKit 4 | 5 | /// A view that presents a grabber handle in the surface of a panel. 6 | @objc(FloatingPanelGrabberView) 7 | public class FloatingPanelGrabberView: UIView { 8 | public var barColor = UIColor(displayP3Red: 0.76, green: 0.77, blue: 0.76, alpha: 1.0) { didSet { backgroundColor = barColor } } 9 | 10 | public required init?(coder aDecoder: NSCoder) { 11 | super.init(coder: aDecoder) 12 | } 13 | 14 | init() { 15 | super.init(frame: .zero) 16 | backgroundColor = barColor 17 | } 18 | 19 | override public func layoutSubviews() { 20 | super.layoutSubviews() 21 | render() 22 | } 23 | 24 | override public func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { 25 | let view = super.hitTest(point, with: event) 26 | return view == self ? nil : view 27 | } 28 | 29 | private func render() { 30 | layer.masksToBounds = true 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/FloatingPanel/FloatingPanelPassthroughView.swift: -------------------------------------------------------------------------------- 1 | // Copyright 2018-Present Shin Yamamoto. All rights reserved. MIT license. 2 | 3 | import UIKit 4 | 5 | @objc(FloatingPanelPassthroughView) 6 | class FloatingPanelPassthroughView: UIView { 7 | public weak var eventForwardingView: UIView? 8 | override public func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { 9 | let hitView = super.hitTest(point, with: event) 10 | switch hitView { 11 | case self: 12 | return eventForwardingView?.hitTest(convert(point, to: eventForwardingView), with: event) 13 | default: 14 | return hitView 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/Classes/Privatized+third+party+code/FloatingPanel/FloatingPanelReference.swift: -------------------------------------------------------------------------------- 1 | // Copyright 2018-Present Shin Yamamoto. All rights reserved. MIT license. 2 | 3 | import UIKit 4 | 5 | /// Constants that specify the edge of the container of a panel. 6 | @objc public enum FloatingPanelReferenceEdge: Int { 7 | case top 8 | case left 9 | case bottom 10 | case right 11 | } 12 | 13 | extension FloatingPanelReferenceEdge { 14 | func inset(of insets: UIEdgeInsets) -> CGFloat { 15 | switch self { 16 | case .top: return insets.top 17 | case .left: return insets.left 18 | case .bottom: return insets.bottom 19 | case .right: return insets.right 20 | } 21 | } 22 | 23 | func mainDimension(_ size: CGSize) -> CGFloat { 24 | switch self { 25 | case .top, .bottom: return size.height 26 | case .left, .right: return size.width 27 | } 28 | } 29 | } 30 | 31 | /// Constants that specify a layout guide to lay out a panel. 32 | @objc public enum FloatingPanelLayoutReferenceGuide: Int { 33 | case superview = 0 34 | case safeArea = 1 35 | } 36 | 37 | extension FloatingPanelLayoutReferenceGuide { 38 | func layoutGuide(vc: UIViewController) -> LayoutGuideProvider { 39 | switch self { 40 | case .safeArea: 41 | return vc.fp_safeAreaLayoutGuide 42 | case .superview: 43 | return vc.view 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /PhobosSwift/UIComponent/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftUIComponent 2 | ================ 3 | # Features 4 | - ghost 5 | - PBSActivityButton 6 | - PBSArticle 7 | - PBSBadgeView 8 | - PBSIconFontKit 9 | - PBSMessageBar 10 | - PBSPageView 11 | - PBSProgressHUD 12 | - PBSWaterfall 13 | 14 | - *Charts* 15 | - *Chosmos* 16 | - *FloatingPanel* 17 | - *ProgressHUD* 18 | 19 | 20 | # Requirements 21 | - iOS 10.0 or later 22 | - Xcode 11.0 or later 23 | - cocoapods 1.10.0 or later 24 | 25 | 26 | # How To Use 27 | - swift 28 | 29 | ``` 30 | 31 | import PhobosSwiftUIComponent 32 | 33 | let button = PBSActivityButton.init(type: .custom, enabledBackgroundColor: UIColor.white, disabledBackgroundColor: UIColor.gray) 34 | 35 | ``` 36 | 37 | # Installation 38 | ## Podfile 39 | 40 | ``` 41 | platform :ios, '10.0' 42 | use_frameworks! 43 | pod 'PhobosSwiftUIComponent', '~> 0.1.0' 44 | ``` 45 | 46 | 47 | # Author 48 | [Restless Developer](https://github.com/restlesscode) 49 | 50 | 51 | 52 | # Licenses 53 | All source code is licensed under the [MIT License](../../LICENSE). 54 | -------------------------------------------------------------------------------- /PhobosSwift/Wechat/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Wechat/Assets/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Wechat/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/restlesscode/phobos-swift/01fb7f835decf5b64a8754bbf2d191f22efd230f/PhobosSwift/Wechat/Classes/.gitkeep -------------------------------------------------------------------------------- /PhobosSwift/Wechat/Classes/PhobosSwiftWechat.swift: -------------------------------------------------------------------------------- 1 | // 2 | // 3 | // PhobosSwiftWechat.swift 4 | // PhobosSwiftWechat 5 | // 6 | // Copyright (c) 2021 Restless Codes Team (https://github.com/restlesscode/) 7 | // 8 | // Permission is hereby granted, free of charge, to any person obtaining a copy 9 | // of this software and associated documentation files (the "Software"), to deal 10 | // in the Software without restriction, including without limitation the rights 11 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | // copies of the Software, and to permit persons to whom the Software is 13 | // furnished to do so, subject to the following conditions: 14 | // 15 | // The above copyright notice and this permission notice shall be included in 16 | // all copies or substantial portions of the Software. 17 | // 18 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | // THE SOFTWARE. 25 | // 26 | 27 | import Foundation 28 | 29 | class PhobosSwiftWechat: NSObject {} 30 | -------------------------------------------------------------------------------- /PhobosSwift/Wechat/README.md: -------------------------------------------------------------------------------- 1 | PhobosSwiftWechat 2 | ================ 3 | # Features 4 | - 基于微信SDK的封装(检查微信版本、是否安装、安装地址、调起微信、处理回调等) 5 | 6 | 7 | # Requirements 8 | - iOS 10.0 or later 9 | - Xcode 11.0 or later 10 | - cocoapods 1.10.0 or later 11 | 12 | 13 | # How To Use 14 | - swift 15 | 16 | ``` 17 | 18 | import PhobosSwiftWechat 19 | 20 | let wechat = PBSWechat.shared 21 | wechat.configure(appId: "", universalLink: "") 22 | 23 | ``` 24 | 25 | # Installation 26 | ## Podfile 27 | 28 | ``` 29 | platform :ios, '10.0' 30 | use_frameworks! 31 | pod 'PhobosSwiftWechat', '~> 0.1.0' 32 | ``` 33 | 34 | 35 | # Author 36 | [Restless Developer](https://github.com/restlesscode) 37 | 38 | 39 | 40 | # Licenses 41 | All source code is licensed under the [MIT License](../../LICENSE). 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PhobosSwift Open Source Framework 2 | 3 | This repository contains all PhobosSwift SDK source. 4 | 5 | PhobosSwift provides useful functions, extensions, and functions written by Swift provided by Restless Code Team. The purpose is to help iOS engineers accelerate mobile development. Learn more [https://twitter.com/CodesRestless](https: //twitter.com/CodesRestless)} 6 | 7 | 8 | ## Installation 9 | See the subsections below for details about the different installation methods. 10 | 1. [Standard pod install](README.md#standard-pod-install) 11 | 12 | ### Standard pod install 13 | ``` 14 | pod 'PhobosSwiftCore' 15 | ``` 16 | 17 | #### Background 18 | 19 | See 20 | [the Podfile Syntax Reference](https://guides.cocoapods.org/syntax/podfile.html#pod) 21 | for instructions and options about overriding pod source locations. 22 | 23 | 24 | ## Contributing 25 | 26 | See [Contributing](CONTRIBUTING.md) for more information on contributing to the PhobosSwift 27 | iOS SDK. 28 | 29 | -------------------------------------------------------------------------------- /fastlane/.env.Default: -------------------------------------------------------------------------------- 1 | #---------- Xcode Select ---------------- 2 | XCODE_SELECT = "/Applications/Xcode.app" 3 | 4 | #------- Pod's Env ------------------ 5 | #FRAMEWORK_NAME = 'PhobosSwift' 6 | 7 | FRAMEWORK_DEMO_PATH = 'Example' 8 | 9 | #SUBSPECS = ',,...' 10 | 11 | #TAG_PREFIX = '' 12 | 13 | #REPO_NAME = 'xxxxxx-spec.git' 14 | 15 | #REPO_GIT_URL = 'https://xxxxx/xxxxxx-spec.git' 16 | 17 | USE_LIBRARIES = false 18 | 19 | SOURCES = 'https://cdn.cocoapods.org/' 20 | 21 | -------------------------------------------------------------------------------- /fastlane/.env.Log: -------------------------------------------------------------------------------- 1 | #---------- Xcode Select ---------------- 2 | XCODE_SELECT = "/Applications/Xcode.app" 3 | 4 | #------- Pod's Env ------------------ 5 | FRAMEWORK_NAME = 'PhobosSwiftLog' 6 | 7 | FRAMEWORK_DEMO_PATH = 'Example' 8 | 9 | TAG_PREFIX = 'Log' 10 | 11 | #REPO_NAME = 'xxxxxx-spec.git' 12 | 13 | #REPO_GIT_URL = 'https://xxxxx/xxxxxx-spec.git' 14 | 15 | USE_LIBRARIES = false 16 | 17 | SOURCES = 'https://cdn.cocoapods.org/' 18 | 19 | -------------------------------------------------------------------------------- /fastlane/.env.Persistence: -------------------------------------------------------------------------------- 1 | #---------- Xcode Select ---------------- 2 | XCODE_SELECT = "/Applications/Xcode.app" 3 | 4 | #------- Pod's Env ------------------ 5 | FRAMEWORK_NAME = 'PhobosSwiftPersistence' 6 | 7 | FRAMEWORK_DEMO_PATH = 'Example' 8 | 9 | SUBSPECS = 'Core,Realm' 10 | 11 | TAG_PREFIX = 'Persistence' 12 | 13 | #REPO_NAME = 'xxxxxx-spec.git' 14 | 15 | #REPO_GIT_URL = 'https://xxxxx/xxxxxx-spec.git' 16 | 17 | USE_LIBRARIES = false 18 | 19 | SOURCES = 'https://cdn.cocoapods.org/' 20 | 21 | -------------------------------------------------------------------------------- /fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | import_from_git( 2 | url: "https://gitee.com/tjerwinchen/fastools.git", # The URL of the repository to import the Fastfile from. 3 | branch: "master", # The branch to checkout on the repository 4 | path: "lib/fastlane/fastlane.pods.rb", # The path of the Fastfile in the repository 5 | #version: "~> 1.0.0" # The version to checkout on the repository. Optimistic match operator can be used to select the latest version within constraints. 6 | ) 7 | 8 | import_from_git( 9 | url: "https://gitee.com/tjerwinchen/fastools.git", # The URL of the repository to import the Fastfile from. 10 | branch: "master", # The branch to checkout on the repository 11 | path: "lib/fastlane/fastlane.framework.rb", # The path of the Fastfile in the repository 12 | #version: "~> 1.0.0" # The version to checkout on the repository. Optimistic match operator can be used to select the latest version within constraints. 13 | ) 14 | 15 | 16 | --------------------------------------------------------------------------------