├── .gitignore ├── .travis.yml ├── Example ├── Podfile ├── Podfile.lock ├── Pods │ ├── IGListDiffKit │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── Source │ │ │ └── IGListDiffKit │ │ │ ├── IGListAssert.h │ │ │ ├── IGListBatchUpdateData.h │ │ │ ├── IGListBatchUpdateData.mm │ │ │ ├── IGListCompatibility.h │ │ │ ├── IGListDiff.h │ │ │ ├── IGListDiff.mm │ │ │ ├── IGListDiffKit.h │ │ │ ├── IGListDiffable.h │ │ │ ├── IGListExperiments.h │ │ │ ├── IGListIndexPathResult.h │ │ │ ├── IGListIndexPathResult.m │ │ │ ├── IGListIndexSetResult.h │ │ │ ├── IGListIndexSetResult.m │ │ │ ├── IGListMacros.h │ │ │ ├── IGListMoveIndex.h │ │ │ ├── IGListMoveIndex.m │ │ │ ├── IGListMoveIndexPath.h │ │ │ ├── IGListMoveIndexPath.m │ │ │ ├── Internal │ │ │ ├── IGListIndexPathResultInternal.h │ │ │ ├── IGListIndexSetResultInternal.h │ │ │ ├── IGListMoveIndexInternal.h │ │ │ └── IGListMoveIndexPathInternal.h │ │ │ ├── NSNumber+IGListDiffable.h │ │ │ ├── NSNumber+IGListDiffable.m │ │ │ ├── NSString+IGListDiffable.h │ │ │ └── NSString+IGListDiffable.m │ ├── IGListKit │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── Source │ │ │ ├── IGListDiffKit │ │ │ └── Internal │ │ │ │ ├── IGListIndexPathResultInternal.h │ │ │ │ ├── IGListIndexSetResultInternal.h │ │ │ │ ├── IGListMoveIndexInternal.h │ │ │ │ └── IGListMoveIndexPathInternal.h │ │ │ └── IGListKit │ │ │ ├── IGListAdapter.h │ │ │ ├── IGListAdapter.m │ │ │ ├── IGListAdapterDataSource.h │ │ │ ├── IGListAdapterDelegate.h │ │ │ ├── IGListAdapterMoveDelegate.h │ │ │ ├── IGListAdapterPerformanceDelegate.h │ │ │ ├── IGListAdapterUpdateListener.h │ │ │ ├── IGListAdapterUpdater.h │ │ │ ├── IGListAdapterUpdater.m │ │ │ ├── IGListAdapterUpdaterDelegate.h │ │ │ ├── IGListBatchContext.h │ │ │ ├── IGListBindable.h │ │ │ ├── IGListBindingSectionController.h │ │ │ ├── IGListBindingSectionController.m │ │ │ ├── IGListBindingSectionControllerDataSource.h │ │ │ ├── IGListBindingSectionControllerSelectionDelegate.h │ │ │ ├── IGListBindingSingleSectionController.h │ │ │ ├── IGListBindingSingleSectionController.m │ │ │ ├── IGListCollectionContext.h │ │ │ ├── IGListCollectionScrollingTraits.h │ │ │ ├── IGListCollectionView.h │ │ │ ├── IGListCollectionView.m │ │ │ ├── IGListCollectionViewDelegateLayout.h │ │ │ ├── IGListCollectionViewLayout.h │ │ │ ├── IGListCollectionViewLayout.mm │ │ │ ├── IGListCollectionViewLayoutCompatible.h │ │ │ ├── IGListDisplayDelegate.h │ │ │ ├── IGListGenericSectionController.h │ │ │ ├── IGListGenericSectionController.m │ │ │ ├── IGListKit.h │ │ │ ├── IGListReloadDataUpdater.h │ │ │ ├── IGListReloadDataUpdater.m │ │ │ ├── IGListScrollDelegate.h │ │ │ ├── IGListSectionController.h │ │ │ ├── IGListSectionController.m │ │ │ ├── IGListSingleSectionController.h │ │ │ ├── IGListSingleSectionController.m │ │ │ ├── IGListSupplementaryViewSource.h │ │ │ ├── IGListTransitionData.h │ │ │ ├── IGListTransitionData.m │ │ │ ├── IGListTransitionDelegate.h │ │ │ ├── IGListUpdatingDelegate.h │ │ │ ├── IGListWorkingRangeDelegate.h │ │ │ └── Internal │ │ │ ├── IGListAdapter+DebugDescription.h │ │ │ ├── IGListAdapter+DebugDescription.m │ │ │ ├── IGListAdapter+UICollectionView.h │ │ │ ├── IGListAdapter+UICollectionView.m │ │ │ ├── IGListAdapterInternal.h │ │ │ ├── IGListAdapterProxy.h │ │ │ ├── IGListAdapterProxy.m │ │ │ ├── IGListAdapterUpdater+DebugDescription.h │ │ │ ├── IGListAdapterUpdater+DebugDescription.m │ │ │ ├── IGListAdapterUpdaterHelpers.h │ │ │ ├── IGListAdapterUpdaterHelpers.m │ │ │ ├── IGListAdapterUpdaterInternal.h │ │ │ ├── IGListArrayUtilsInternal.h │ │ │ ├── IGListArrayUtilsInternal.m │ │ │ ├── IGListBatchUpdateData+DebugDescription.h │ │ │ ├── IGListBatchUpdateData+DebugDescription.m │ │ │ ├── IGListBatchUpdateState.h │ │ │ ├── IGListBatchUpdateTransaction.h │ │ │ ├── IGListBatchUpdateTransaction.m │ │ │ ├── IGListBindingSectionController+DebugDescription.h │ │ │ ├── IGListBindingSectionController+DebugDescription.m │ │ │ ├── IGListCollectionViewLayoutInternal.h │ │ │ ├── IGListDataSourceChangeTransaction.h │ │ │ ├── IGListDataSourceChangeTransaction.m │ │ │ ├── IGListDebugger.h │ │ │ ├── IGListDebugger.m │ │ │ ├── IGListDebuggingUtilities.h │ │ │ ├── IGListDebuggingUtilities.m │ │ │ ├── IGListDefaultExperiments.h │ │ │ ├── IGListDisplayHandler.h │ │ │ ├── IGListDisplayHandler.m │ │ │ ├── IGListItemUpdatesCollector.h │ │ │ ├── IGListItemUpdatesCollector.m │ │ │ ├── IGListReloadIndexPath.h │ │ │ ├── IGListReloadIndexPath.m │ │ │ ├── IGListReloadTransaction.h │ │ │ ├── IGListReloadTransaction.m │ │ │ ├── IGListSectionControllerInternal.h │ │ │ ├── IGListSectionMap+DebugDescription.h │ │ │ ├── IGListSectionMap+DebugDescription.m │ │ │ ├── IGListSectionMap.h │ │ │ ├── IGListSectionMap.m │ │ │ ├── IGListUpdateTransactable.h │ │ │ ├── IGListUpdateTransactionBuilder.h │ │ │ ├── IGListUpdateTransactionBuilder.m │ │ │ ├── IGListWorkingRangeHandler.h │ │ │ ├── IGListWorkingRangeHandler.mm │ │ │ ├── UICollectionView+DebugDescription.h │ │ │ ├── UICollectionView+DebugDescription.m │ │ │ ├── UICollectionView+IGListBatchUpdateData.h │ │ │ ├── UICollectionView+IGListBatchUpdateData.m │ │ │ ├── UICollectionViewLayout+InteractiveReordering.h │ │ │ ├── UICollectionViewLayout+InteractiveReordering.m │ │ │ ├── UIScrollView+IGListKit.h │ │ │ └── UIScrollView+IGListKit.m │ ├── Local Podspecs │ │ └── RxIGListKit.podspec.json │ ├── Manifest.lock │ ├── Pods.xcodeproj │ │ ├── project.pbxproj │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ ├── IGListKit.xcscheme │ │ │ ├── RxCocoa.xcscheme │ │ │ ├── RxIGListKit.xcscheme │ │ │ ├── RxRelay.xcscheme │ │ │ └── RxSwift.xcscheme │ ├── RxCocoa │ │ ├── LICENSE.md │ │ ├── Platform │ │ │ ├── DataStructures │ │ │ │ ├── Bag.swift │ │ │ │ ├── InfiniteSequence.swift │ │ │ │ ├── PriorityQueue.swift │ │ │ │ └── Queue.swift │ │ │ ├── DispatchQueue+Extensions.swift │ │ │ ├── Platform.Darwin.swift │ │ │ ├── Platform.Linux.swift │ │ │ └── RecursiveLock.swift │ │ ├── README.md │ │ └── RxCocoa │ │ │ ├── Common │ │ │ ├── ControlTarget.swift │ │ │ ├── DelegateProxy.swift │ │ │ ├── DelegateProxyType.swift │ │ │ ├── Infallible+Bind.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── RxCocoaObjCRuntimeError+Extensions.swift │ │ │ ├── RxTarget.swift │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ └── TextInput.swift │ │ │ ├── Foundation │ │ │ ├── KVORepresentable+CoreGraphics.swift │ │ │ ├── KVORepresentable+Swift.swift │ │ │ ├── KVORepresentable.swift │ │ │ ├── NSObject+Rx+KVORepresentable.swift │ │ │ ├── NSObject+Rx+RawRepresentable.swift │ │ │ ├── NSObject+Rx.swift │ │ │ ├── NotificationCenter+Rx.swift │ │ │ └── URLSession+Rx.swift │ │ │ ├── Runtime │ │ │ ├── _RX.m │ │ │ ├── _RXDelegateProxy.m │ │ │ ├── _RXKVOObserver.m │ │ │ ├── _RXObjCRuntime.m │ │ │ └── include │ │ │ │ ├── RxCocoaRuntime.h │ │ │ │ ├── _RX.h │ │ │ │ ├── _RXDelegateProxy.h │ │ │ │ ├── _RXKVOObserver.h │ │ │ │ └── _RXObjCRuntime.h │ │ │ ├── RxCocoa.h │ │ │ ├── RxCocoa.swift │ │ │ ├── Traits │ │ │ ├── ControlEvent.swift │ │ │ ├── ControlProperty.swift │ │ │ ├── Driver │ │ │ │ ├── BehaviorRelay+Driver.swift │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ ├── ControlProperty+Driver.swift │ │ │ │ ├── Driver+Subscription.swift │ │ │ │ ├── Driver.swift │ │ │ │ ├── Infallible+Driver.swift │ │ │ │ └── ObservableConvertibleType+Driver.swift │ │ │ ├── SharedSequence │ │ │ │ ├── ObservableConvertibleType+SharedSequence.swift │ │ │ │ ├── SchedulerType+SharedSequence.swift │ │ │ │ ├── SharedSequence+Concurrency.swift │ │ │ │ ├── SharedSequence+Operators+arity.swift │ │ │ │ ├── SharedSequence+Operators.swift │ │ │ │ └── SharedSequence.swift │ │ │ └── Signal │ │ │ │ ├── ControlEvent+Signal.swift │ │ │ │ ├── ObservableConvertibleType+Signal.swift │ │ │ │ ├── PublishRelay+Signal.swift │ │ │ │ ├── Signal+Subscription.swift │ │ │ │ └── Signal.swift │ │ │ ├── iOS │ │ │ ├── DataSources │ │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift │ │ │ │ ├── RxPickerViewAdapter.swift │ │ │ │ └── RxTableViewReactiveArrayDataSource.swift │ │ │ ├── Events │ │ │ │ └── ItemEvents.swift │ │ │ ├── NSTextStorage+Rx.swift │ │ │ ├── Protocols │ │ │ │ ├── RxCollectionViewDataSourceType.swift │ │ │ │ ├── RxPickerViewDataSourceType.swift │ │ │ │ └── RxTableViewDataSourceType.swift │ │ │ ├── Proxies │ │ │ │ ├── RxCollectionViewDataSourcePrefetchingProxy.swift │ │ │ │ ├── RxCollectionViewDataSourceProxy.swift │ │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ │ ├── RxNavigationControllerDelegateProxy.swift │ │ │ │ ├── RxPickerViewDataSourceProxy.swift │ │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ │ ├── RxScrollViewDelegateProxy.swift │ │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ │ ├── RxTabBarControllerDelegateProxy.swift │ │ │ │ ├── RxTabBarDelegateProxy.swift │ │ │ │ ├── RxTableViewDataSourcePrefetchingProxy.swift │ │ │ │ ├── RxTableViewDataSourceProxy.swift │ │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ │ ├── RxTextViewDelegateProxy.swift │ │ │ │ └── RxWKNavigationDelegateProxy.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── UIApplication+Rx.swift │ │ │ ├── UIBarButtonItem+Rx.swift │ │ │ ├── UIButton+Rx.swift │ │ │ ├── UICollectionView+Rx.swift │ │ │ ├── UIControl+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ ├── UIGestureRecognizer+Rx.swift │ │ │ ├── UINavigationController+Rx.swift │ │ │ ├── UIPickerView+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIScrollView+Rx.swift │ │ │ ├── UISearchBar+Rx.swift │ │ │ ├── UISearchController+Rx.swift │ │ │ ├── UISegmentedControl+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UITabBar+Rx.swift │ │ │ ├── UITabBarController+Rx.swift │ │ │ ├── UITableView+Rx.swift │ │ │ ├── UITextField+Rx.swift │ │ │ ├── UITextView+Rx.swift │ │ │ └── WKWebView+Rx.swift │ │ │ └── macOS │ │ │ ├── NSButton+Rx.swift │ │ │ ├── NSControl+Rx.swift │ │ │ ├── NSSlider+Rx.swift │ │ │ ├── NSTextField+Rx.swift │ │ │ ├── NSTextView+Rx.swift │ │ │ └── NSView+Rx.swift │ ├── RxRelay │ │ ├── LICENSE.md │ │ ├── README.md │ │ └── RxRelay │ │ │ ├── BehaviorRelay.swift │ │ │ ├── Observable+Bind.swift │ │ │ ├── PublishRelay.swift │ │ │ ├── ReplayRelay.swift │ │ │ └── Utils.swift │ ├── RxSwift │ │ ├── LICENSE.md │ │ ├── Platform │ │ │ ├── AtomicInt.swift │ │ │ ├── DataStructures │ │ │ │ ├── Bag.swift │ │ │ │ ├── InfiniteSequence.swift │ │ │ │ ├── PriorityQueue.swift │ │ │ │ └── Queue.swift │ │ │ ├── DispatchQueue+Extensions.swift │ │ │ ├── Platform.Darwin.swift │ │ │ ├── Platform.Linux.swift │ │ │ └── RecursiveLock.swift │ │ ├── README.md │ │ └── RxSwift │ │ │ ├── AnyObserver.swift │ │ │ ├── Binder.swift │ │ │ ├── Cancelable.swift │ │ │ ├── Concurrency │ │ │ ├── AsyncLock.swift │ │ │ ├── Lock.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ └── SynchronizedUnsubscribeType.swift │ │ │ ├── ConnectableObservableType.swift │ │ │ ├── Date+Dispatch.swift │ │ │ ├── Disposable.swift │ │ │ ├── Disposables │ │ │ ├── AnonymousDisposable.swift │ │ │ ├── BinaryDisposable.swift │ │ │ ├── BooleanDisposable.swift │ │ │ ├── CompositeDisposable.swift │ │ │ ├── Disposables.swift │ │ │ ├── DisposeBag.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── NopDisposable.swift │ │ │ ├── RefCountDisposable.swift │ │ │ ├── ScheduledDisposable.swift │ │ │ ├── SerialDisposable.swift │ │ │ ├── SingleAssignmentDisposable.swift │ │ │ └── SubscriptionDisposable.swift │ │ │ ├── Errors.swift │ │ │ ├── Event.swift │ │ │ ├── Extensions │ │ │ └── Bag+Rx.swift │ │ │ ├── GroupedObservable.swift │ │ │ ├── ImmediateSchedulerType.swift │ │ │ ├── Observable+Concurrency.swift │ │ │ ├── Observable.swift │ │ │ ├── ObservableConvertibleType.swift │ │ │ ├── ObservableType+Extensions.swift │ │ │ ├── ObservableType.swift │ │ │ ├── Observables │ │ │ ├── AddRef.swift │ │ │ ├── Amb.swift │ │ │ ├── AsMaybe.swift │ │ │ ├── AsSingle.swift │ │ │ ├── Buffer.swift │ │ │ ├── Catch.swift │ │ │ ├── CombineLatest+Collection.swift │ │ │ ├── CombineLatest+arity.swift │ │ │ ├── CombineLatest.swift │ │ │ ├── CompactMap.swift │ │ │ ├── Concat.swift │ │ │ ├── Create.swift │ │ │ ├── Debounce.swift │ │ │ ├── Debug.swift │ │ │ ├── Decode.swift │ │ │ ├── DefaultIfEmpty.swift │ │ │ ├── Deferred.swift │ │ │ ├── Delay.swift │ │ │ ├── DelaySubscription.swift │ │ │ ├── Dematerialize.swift │ │ │ ├── DistinctUntilChanged.swift │ │ │ ├── Do.swift │ │ │ ├── ElementAt.swift │ │ │ ├── Empty.swift │ │ │ ├── Enumerated.swift │ │ │ ├── Error.swift │ │ │ ├── Filter.swift │ │ │ ├── First.swift │ │ │ ├── Generate.swift │ │ │ ├── GroupBy.swift │ │ │ ├── Just.swift │ │ │ ├── Map.swift │ │ │ ├── Materialize.swift │ │ │ ├── Merge.swift │ │ │ ├── Multicast.swift │ │ │ ├── Never.swift │ │ │ ├── ObserveOn.swift │ │ │ ├── Optional.swift │ │ │ ├── Producer.swift │ │ │ ├── Range.swift │ │ │ ├── Reduce.swift │ │ │ ├── Repeat.swift │ │ │ ├── RetryWhen.swift │ │ │ ├── Sample.swift │ │ │ ├── Scan.swift │ │ │ ├── Sequence.swift │ │ │ ├── ShareReplayScope.swift │ │ │ ├── SingleAsync.swift │ │ │ ├── Sink.swift │ │ │ ├── Skip.swift │ │ │ ├── SkipUntil.swift │ │ │ ├── SkipWhile.swift │ │ │ ├── StartWith.swift │ │ │ ├── SubscribeOn.swift │ │ │ ├── Switch.swift │ │ │ ├── SwitchIfEmpty.swift │ │ │ ├── Take.swift │ │ │ ├── TakeLast.swift │ │ │ ├── TakeWithPredicate.swift │ │ │ ├── Throttle.swift │ │ │ ├── Timeout.swift │ │ │ ├── Timer.swift │ │ │ ├── ToArray.swift │ │ │ ├── Using.swift │ │ │ ├── Window.swift │ │ │ ├── WithLatestFrom.swift │ │ │ ├── WithUnretained.swift │ │ │ ├── Zip+Collection.swift │ │ │ ├── Zip+arity.swift │ │ │ └── Zip.swift │ │ │ ├── ObserverType.swift │ │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ ├── ObserverBase.swift │ │ │ └── TailRecursiveSink.swift │ │ │ ├── Reactive.swift │ │ │ ├── Rx.swift │ │ │ ├── RxMutableBox.swift │ │ │ ├── SchedulerType.swift │ │ │ ├── Schedulers │ │ │ ├── ConcurrentDispatchQueueScheduler.swift │ │ │ ├── ConcurrentMainScheduler.swift │ │ │ ├── CurrentThreadScheduler.swift │ │ │ ├── HistoricalScheduler.swift │ │ │ ├── HistoricalSchedulerTimeConverter.swift │ │ │ ├── Internal │ │ │ │ ├── DispatchQueueConfiguration.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── ScheduledItem.swift │ │ │ │ └── ScheduledItemType.swift │ │ │ ├── MainScheduler.swift │ │ │ ├── OperationQueueScheduler.swift │ │ │ ├── RecursiveScheduler.swift │ │ │ ├── SchedulerServices+Emulation.swift │ │ │ ├── SerialDispatchQueueScheduler.swift │ │ │ ├── VirtualTimeConverterType.swift │ │ │ └── VirtualTimeScheduler.swift │ │ │ ├── Subjects │ │ │ ├── AsyncSubject.swift │ │ │ ├── BehaviorSubject.swift │ │ │ ├── PublishSubject.swift │ │ │ ├── ReplaySubject.swift │ │ │ └── SubjectType.swift │ │ │ ├── SwiftSupport │ │ │ └── SwiftSupport.swift │ │ │ └── Traits │ │ │ ├── Infallible │ │ │ ├── Infallible+CombineLatest+Collection.swift │ │ │ ├── Infallible+CombineLatest+arity.swift │ │ │ ├── Infallible+Concurrency.swift │ │ │ ├── Infallible+Create.swift │ │ │ ├── Infallible+Debug.swift │ │ │ ├── Infallible+Operators.swift │ │ │ ├── Infallible+Zip+arity.swift │ │ │ ├── Infallible.swift │ │ │ └── ObservableConvertibleType+Infallible.swift │ │ │ └── PrimitiveSequence │ │ │ ├── Completable+AndThen.swift │ │ │ ├── Completable.swift │ │ │ ├── Maybe.swift │ │ │ ├── ObservableType+PrimitiveSequence.swift │ │ │ ├── PrimitiveSequence+Concurrency.swift │ │ │ ├── PrimitiveSequence+Zip+arity.swift │ │ │ ├── PrimitiveSequence.swift │ │ │ └── Single.swift │ └── Target Support Files │ │ ├── IGListDiffKit │ │ ├── IGListDiffKit-Info.plist │ │ ├── IGListDiffKit-dummy.m │ │ ├── IGListDiffKit-prefix.pch │ │ ├── IGListDiffKit-umbrella.h │ │ ├── IGListDiffKit.debug.xcconfig │ │ ├── IGListDiffKit.modulemap │ │ ├── IGListDiffKit.release.xcconfig │ │ └── IGListDiffKit.xcconfig │ │ ├── IGListKit │ │ ├── IGListKit-Info.plist │ │ ├── IGListKit-dummy.m │ │ ├── IGListKit-prefix.pch │ │ ├── IGListKit-umbrella.h │ │ ├── IGListKit.debug.xcconfig │ │ ├── IGListKit.modulemap │ │ ├── IGListKit.release.xcconfig │ │ ├── IGListKit.xcconfig │ │ └── Info.plist │ │ ├── Pods-RxIGListKit_Example │ │ ├── Info.plist │ │ ├── Pods-RxIGListKit_Example-Info.plist │ │ ├── Pods-RxIGListKit_Example-acknowledgements.markdown │ │ ├── Pods-RxIGListKit_Example-acknowledgements.plist │ │ ├── Pods-RxIGListKit_Example-dummy.m │ │ ├── Pods-RxIGListKit_Example-frameworks.sh │ │ ├── Pods-RxIGListKit_Example-resources.sh │ │ ├── Pods-RxIGListKit_Example-umbrella.h │ │ ├── Pods-RxIGListKit_Example.debug.xcconfig │ │ ├── Pods-RxIGListKit_Example.modulemap │ │ └── Pods-RxIGListKit_Example.release.xcconfig │ │ ├── Pods-RxIGListKit_Tests │ │ ├── Info.plist │ │ ├── Pods-RxIGListKit_Tests-Info.plist │ │ ├── Pods-RxIGListKit_Tests-acknowledgements.markdown │ │ ├── Pods-RxIGListKit_Tests-acknowledgements.plist │ │ ├── Pods-RxIGListKit_Tests-dummy.m │ │ ├── Pods-RxIGListKit_Tests-frameworks.sh │ │ ├── Pods-RxIGListKit_Tests-resources.sh │ │ ├── Pods-RxIGListKit_Tests-umbrella.h │ │ ├── Pods-RxIGListKit_Tests.debug.xcconfig │ │ ├── Pods-RxIGListKit_Tests.modulemap │ │ └── Pods-RxIGListKit_Tests.release.xcconfig │ │ ├── RxCocoa │ │ ├── Info.plist │ │ ├── RxCocoa-Info.plist │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.debug.xcconfig │ │ ├── RxCocoa.modulemap │ │ ├── RxCocoa.release.xcconfig │ │ └── RxCocoa.xcconfig │ │ ├── RxIGListKit │ │ ├── Info.plist │ │ ├── RxIGListKit-Info.plist │ │ ├── RxIGListKit-dummy.m │ │ ├── RxIGListKit-prefix.pch │ │ ├── RxIGListKit-umbrella.h │ │ ├── RxIGListKit.debug.xcconfig │ │ ├── RxIGListKit.modulemap │ │ ├── RxIGListKit.release.xcconfig │ │ └── RxIGListKit.xcconfig │ │ ├── RxRelay │ │ ├── RxRelay-Info.plist │ │ ├── RxRelay-dummy.m │ │ ├── RxRelay-prefix.pch │ │ ├── RxRelay-umbrella.h │ │ ├── RxRelay.debug.xcconfig │ │ ├── RxRelay.modulemap │ │ ├── RxRelay.release.xcconfig │ │ └── RxRelay.xcconfig │ │ └── RxSwift │ │ ├── Info.plist │ │ ├── RxSwift-Info.plist │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.debug.xcconfig │ │ ├── RxSwift.modulemap │ │ ├── RxSwift.release.xcconfig │ │ └── RxSwift.xcconfig ├── RxIGListKit.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── RxIGListKit-Example.xcscheme ├── RxIGListKit.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings ├── RxIGListKit │ ├── AppDelegate.swift │ ├── Base.lproj │ │ └── LaunchScreen.xib │ ├── CalendarDayCell.swift │ ├── CalendarViewController.swift │ ├── CenterItem.swift │ ├── CenterLabelCell.swift │ ├── DayViewModel.swift │ ├── Demo.storyboard │ ├── DemoSectionController.swift │ ├── DemosViewController.swift │ ├── DetailLabelCell.swift │ ├── DisplaySectionController.swift │ ├── EmbeddedCollectionViewCell.swift │ ├── EmbeddedSectionController.swift │ ├── EmptyViewController.swift │ ├── ExpandableSectionController.swift │ ├── Feed.swift │ ├── FeedCell.swift │ ├── FeedCell.xib │ ├── FeedSectionController.swift │ ├── FullWidthSelfSizingCell.swift │ ├── GridSectionController.swift │ ├── HorizontalSectionController.swift │ ├── ImageCell.swift │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Info.plist │ ├── LabelCell.swift │ ├── LabelSectionController.swift │ ├── ManuallySelfSizingCell.swift │ ├── MixedDataViewController.swift │ ├── Month.swift │ ├── MonthSectionController.swift │ ├── MonthTitleCell.swift │ ├── MonthTitleViewModel.swift │ ├── NestedAdapterViewController.swift │ ├── NibSelfSizingCell.swift │ ├── NibSelfSizingCell.xib │ ├── Person.swift │ ├── RemoveCell.swift │ ├── RemoveSectionController.swift │ ├── ReorderableSectionController.swift │ ├── ReorderableViewController.swift │ ├── SearchViewController.swift │ ├── SelectionModel.swift │ ├── SingleSectionStoryboardViewController.swift │ ├── SingleSectionViewController.swift │ ├── SpinSection.swift │ ├── StoryboardCell.swift │ ├── StoryboardLabelSectionController.swift │ ├── StoryboardViewController.swift │ ├── TailLoadingViewController.swift │ ├── User.swift │ ├── UserSectionController.swift │ ├── WorkingRangeSectionController.swift │ └── WorkingRangeViewController.swift └── Tests │ ├── Info.plist │ └── Tests.swift ├── LICENSE ├── Package.resolved ├── Package.swift ├── README.md ├── RxIGListKit.podspec ├── RxIGListKit ├── Assets │ └── .gitkeep └── Classes │ ├── .gitkeep │ ├── Extensions.swift │ ├── IGListAdapter+Rx.swift │ ├── ListBindingSectionControllerSwiftWrapper.swift │ ├── RxListAdapterDataSource.swift │ ├── RxListAdapterDataSourceType.swift │ ├── RxListAdapterDelegateProxy.swift │ ├── RxListAdapterMoveDataSource.swift │ ├── RxListAdapterMoveDelegateProxy.swift │ ├── RxListAdapterSingleSectionDataSource.swift │ ├── SectionModelType.swift │ └── Typealias.swift └── _Pods.xcodeproj /.travis.yml: -------------------------------------------------------------------------------- 1 | # references: 2 | # * https://www.objc.io/issues/6-build-tools/travis-ci/ 3 | # * https://github.com/supermarin/xcpretty#usage 4 | 5 | osx_image: xcode10.2 6 | language: objective-c 7 | cache: cocoapods 8 | podfile: Example/Podfile 9 | before_install: 10 | - gem install cocoapods # Since Travis is not always on latest version 11 | - pod install --repo-update --project-directory=Example 12 | script: 13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/RxIGListKit.xcworkspace -scheme RxIGListKit-Example -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO | xcpretty 14 | - pod lib lint 15 | -------------------------------------------------------------------------------- /Example/Podfile: -------------------------------------------------------------------------------- 1 | platform:ios,'11.0' 2 | use_frameworks! 3 | install! 'cocoapods', :disable_input_output_paths => true 4 | 5 | target 'RxIGListKit_Example' do 6 | pod 'RxIGListKit', :path => '../' 7 | 8 | target 'RxIGListKit_Tests' do 9 | inherit! :search_paths 10 | 11 | 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /Example/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - IGListDiffKit (5.0.0) 3 | - IGListKit (5.0.0): 4 | - IGListDiffKit (= 5.0.0) 5 | - RxCocoa (6.7.1): 6 | - RxRelay (= 6.7.1) 7 | - RxSwift (= 6.7.1) 8 | - RxIGListKit (2.0.2): 9 | - IGListKit (~> 5.0.0) 10 | - RxCocoa (~> 6.0) 11 | - RxRelay (6.7.1): 12 | - RxSwift (= 6.7.1) 13 | - RxSwift (6.7.1) 14 | 15 | DEPENDENCIES: 16 | - RxIGListKit (from `../`) 17 | 18 | SPEC REPOS: 19 | https://cdn.cocoapods.org/: 20 | - IGListDiffKit 21 | - IGListKit 22 | - RxCocoa 23 | - RxRelay 24 | - RxSwift 25 | 26 | EXTERNAL SOURCES: 27 | RxIGListKit: 28 | :path: "../" 29 | 30 | SPEC CHECKSUMS: 31 | IGListDiffKit: 02d937d7e714d6f558771f284ed80668d483b522 32 | IGListKit: baf7e87b4c2262cd569c380e46ca5667a4a82c82 33 | RxCocoa: f5609cb4637587a7faa99c5d5787e3ad582b75a4 34 | RxIGListKit: 3c01e20914401ae6a36bbfd4e7bcc6b5f4b574f1 35 | RxRelay: 4151ba01152436b08271e08410135e099880eae5 36 | RxSwift: b9a93a26031785159e11abd40d1a55bcb8057e52 37 | 38 | PODFILE CHECKSUM: 89c9a98f0c97f72d0b45d7e49a640fca9cc7fbe5 39 | 40 | COCOAPODS: 1.15.2 41 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Meta Platforms, Inc. and affiliates. 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 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/IGListAssert.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #ifndef IGAssert 9 | #define IGAssert( condition, ... ) NSCAssert( (condition) , ##__VA_ARGS__) 10 | #endif // IGAssert 11 | 12 | #ifndef IGWarn 13 | #define IGWarn( condition, ... ) NSCAssert( (condition) , ##__VA_ARGS__) 14 | #endif // IGWarn 15 | 16 | #ifndef IGWarnAssert 17 | #define IGWarnAssert( ... ) IGAssert( (NO) , ##__VA_ARGS__) 18 | #endif // IGWarnAssert 19 | 20 | #ifndef IGFailAssert 21 | #define IGFailAssert( ... ) IGAssert( (NO) , ##__VA_ARGS__) 22 | #endif // IGFailAssert 23 | 24 | #ifndef IGFailure 25 | #define IGFailure( ... ) IGAssert( (NO) , ##__VA_ARGS__) 26 | #endif // IGFailure 27 | 28 | 29 | #ifndef IGParameterAssert 30 | #define IGParameterAssert( condition ) IGAssert( (condition) , @"Invalid parameter not satisfying: %@", @#condition) 31 | #endif // IGParameterAssert 32 | 33 | #ifndef IGAssertMainThread 34 | #define IGAssertMainThread() IGAssert( ([NSThread isMainThread] == YES), @"Must be on the main thread") 35 | #endif // IGAssertMainThread 36 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/IGListCompatibility.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if TARGET_OS_EMBEDDED || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST 11 | #import 12 | #else 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/IGListDiffKit.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListCompatibility.h" 9 | 10 | /** 11 | * Project version number for IGListKit. 12 | */ 13 | FOUNDATION_EXPORT double IGListKitVersionNumber; 14 | 15 | /** 16 | * Project version string for IGListKit. 17 | */ 18 | FOUNDATION_EXPORT const unsigned char IGListKitVersionString[]; 19 | 20 | #import "IGListAssert.h" 21 | #import "IGListBatchUpdateData.h" 22 | #import "IGListDiff.h" 23 | #import "IGListDiffable.h" 24 | #import "IGListExperiments.h" 25 | #import "IGListIndexPathResult.h" 26 | #import "IGListIndexSetResult.h" 27 | #import "IGListMoveIndex.h" 28 | #import "IGListMoveIndexPath.h" 29 | #import "NSNumber+IGListDiffable.h" 30 | #import "NSString+IGListDiffable.h" 31 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/IGListDiffable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | /** 11 | The `IGListDiffable` protocol provides methods needed to compare the identity and equality of two objects. 12 | */ 13 | NS_SWIFT_NAME(ListDiffable) 14 | @protocol IGListDiffable 15 | 16 | /** 17 | Returns a key that uniquely identifies the object. 18 | 19 | @return A key that can be used to uniquely identify the object. 20 | 21 | @note Two objects may share the same identifier, but are not equal. A common pattern is to use the `NSObject` 22 | category for automatic conformance. However this means that objects will be identified on their 23 | pointer value so finding updates becomes impossible. 24 | 25 | @warning This value should never be mutated. 26 | */ 27 | - (nonnull id)diffIdentifier; 28 | 29 | /** 30 | Returns whether the receiver and a given object are equal. 31 | 32 | @param object The object to be compared to the receiver. 33 | 34 | @return `YES` if the receiver and object are equal, otherwise `NO`. 35 | */ 36 | - (BOOL)isEqualToDiffableObject:(nullable id)object; 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/IGListMacros.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #ifndef IGLK_SUBCLASSING_RESTRICTED 9 | #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 10 | #define IGLK_SUBCLASSING_RESTRICTED __attribute__((objc_subclassing_restricted)) 11 | #else 12 | #define IGLK_SUBCLASSING_RESTRICTED 13 | #endif // #if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 14 | #endif // #ifndef IGLK_SUBCLASSING_RESTRICTED 15 | 16 | #ifndef IGLK_UNAVAILABLE 17 | #define IGLK_UNAVAILABLE(message) __attribute__((unavailable(message))) 18 | #endif // #ifndef IGLK_UNAVAILABLE 19 | 20 | #if defined(IGLK_LOGGING_ENABLED) && IGLK_LOGGING_ENABLED 21 | #define IGLKLog( s, ... ) do { NSLog( @"IGListKit: %@", [NSString stringWithFormat: (s), ##__VA_ARGS__] ); } while(0) 22 | #else 23 | #define IGLKLog( s, ... ) 24 | #endif 25 | 26 | #ifndef IGLK_DEBUG_DESCRIPTION_ENABLED 27 | #define IGLK_DEBUG_DESCRIPTION_ENABLED DEBUG 28 | #endif // #ifndef IGLK_DEBUG_DESCRIPTION_ENABLED 29 | 30 | #define IGLK_BLOCK_CALL_SAFE(BLOCK, ...) \ 31 | do { \ 32 | __typeof(BLOCK) ig_safe_block = (BLOCK); \ 33 | if (ig_safe_block) { \ 34 | ig_safe_block(__VA_ARGS__); \ 35 | } \ 36 | } while (NO) 37 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/IGListMoveIndex.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /** 13 | An object representing a move between indexes. 14 | */ 15 | NS_SWIFT_NAME(ListMoveIndex) 16 | @interface IGListMoveIndex : NSObject 17 | 18 | /** 19 | An index in the old collection. 20 | */ 21 | @property (nonatomic, assign, readonly) NSInteger from; 22 | 23 | /** 24 | An index in the new collection. 25 | */ 26 | @property (nonatomic, assign, readonly) NSInteger to; 27 | 28 | /** 29 | :nodoc: 30 | */ 31 | - (instancetype)init NS_UNAVAILABLE; 32 | 33 | /** 34 | :nodoc: 35 | */ 36 | + (instancetype)new NS_UNAVAILABLE; 37 | 38 | @end 39 | 40 | NS_ASSUME_NONNULL_END 41 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/IGListMoveIndexPath.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /** 13 | An object representing a move between indexes. 14 | */ 15 | NS_SWIFT_NAME(ListMoveIndexPath) 16 | @interface IGListMoveIndexPath : NSObject 17 | 18 | /** 19 | An index path in the old collection. 20 | */ 21 | @property (nonatomic, strong, readonly) NSIndexPath *from; 22 | 23 | /** 24 | An index path in the new collection. 25 | */ 26 | @property (nonatomic, strong, readonly) NSIndexPath *to; 27 | 28 | /** 29 | :nodoc: 30 | */ 31 | - (instancetype)init NS_UNAVAILABLE; 32 | 33 | /** 34 | :nodoc: 35 | */ 36 | + (instancetype)new NS_UNAVAILABLE; 37 | 38 | @end 39 | 40 | NS_ASSUME_NONNULL_END 41 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/IGListMoveIndexPath.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListMoveIndexPath.h" 9 | 10 | @implementation IGListMoveIndexPath 11 | 12 | - (instancetype)initWithFrom:(NSIndexPath *)from to:(NSIndexPath *)to { 13 | NSParameterAssert(from != nil); 14 | NSParameterAssert(to != nil); 15 | if (self = [super init]) { 16 | _from = from; 17 | _to = to; 18 | } 19 | return self; 20 | } 21 | 22 | - (NSUInteger)hash { 23 | return [_from hash] ^ [_to hash]; 24 | } 25 | 26 | - (BOOL)isEqual:(id)object { 27 | if (object == self) { 28 | return YES; 29 | } 30 | if ([object isKindOfClass:[IGListMoveIndexPath class]]) { 31 | NSIndexPath *f1 = self.from, *f2 = [object from]; 32 | NSIndexPath *t1 = self.to, *t2 = [object to]; 33 | return [f1 isEqual:f2] && [t1 isEqual:t2]; 34 | } 35 | return NO; 36 | } 37 | 38 | - (NSComparisonResult)compare:(id)object { 39 | return [[self from] compare:[object from]]; 40 | } 41 | 42 | - (NSString *)description { 43 | return [NSString stringWithFormat:@"<%@ %p; from: %@; to: %@;>", NSStringFromClass(self.class), self, self.from, self.to]; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/Internal/IGListIndexPathResultInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListIndexPathResult.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface IGListIndexPathResult() 15 | 16 | - (instancetype)initWithInserts:(NSArray *)inserts 17 | deletes:(NSArray *)deletes 18 | updates:(NSArray *)updates 19 | moves:(NSArray *)moves 20 | oldIndexPathMap:(NSMapTable, NSIndexPath *> *)oldIndexPathMap 21 | newIndexPathMap:(NSMapTable, NSIndexPath *> *)newIndexPathMap; 22 | 23 | @property (nonatomic, assign, readonly) NSInteger changeCount; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/Internal/IGListIndexSetResultInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if !__has_include() 11 | #import "IGListIndexSetResult.h" 12 | #else 13 | #import 14 | #endif 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | @interface IGListIndexSetResult() 19 | 20 | - (instancetype)initWithInserts:(NSIndexSet *)inserts 21 | deletes:(NSIndexSet *)deletes 22 | updates:(NSIndexSet *)updates 23 | moves:(NSArray *)moves 24 | oldIndexMap:(NSMapTable, NSNumber *> *)oldIndexMap 25 | newIndexMap:(NSMapTable, NSNumber *> *)newIndexMap; 26 | 27 | @property (nonatomic, assign, readonly) NSInteger changeCount; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/Internal/IGListMoveIndexInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListMoveIndex.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface IGListMoveIndex () 15 | 16 | - (instancetype)initWithFrom:(NSInteger)from to:(NSInteger)to NS_DESIGNATED_INITIALIZER; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/Internal/IGListMoveIndexPathInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface IGListMoveIndexPath () 13 | 14 | - (instancetype)initWithFrom:(NSIndexPath *)from to:(NSIndexPath *)to NS_DESIGNATED_INITIALIZER; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/NSNumber+IGListDiffable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListDiffable.h" 11 | /** 12 | This category provides default `IGListDiffable` conformance for `NSNumber`. 13 | */ 14 | @interface NSNumber (IGListDiffable) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/NSNumber+IGListDiffable.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "NSNumber+IGListDiffable.h" 9 | 10 | @implementation NSNumber (IGListDiffable) 11 | 12 | - (id)diffIdentifier { 13 | return self; 14 | } 15 | 16 | - (BOOL)isEqualToDiffableObject:(id)object { 17 | return [self isEqual:object]; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/NSString+IGListDiffable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListDiffable.h" 11 | 12 | /** 13 | This category provides default `IGListDiffable` conformance for `NSString`. 14 | */ 15 | @interface NSString (IGListDiffable) 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/Pods/IGListDiffKit/Source/IGListDiffKit/NSString+IGListDiffable.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "NSString+IGListDiffable.h" 9 | 10 | @implementation NSString (IGListDiffable) 11 | 12 | - (id)diffIdentifier { 13 | return self; 14 | } 15 | 16 | - (BOOL)isEqualToDiffableObject:(id)object { 17 | return [self isEqual:object]; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Meta Platforms, Inc. and affiliates. 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 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListDiffKit/Internal/IGListIndexPathResultInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListIndexPathResult.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface IGListIndexPathResult() 15 | 16 | - (instancetype)initWithInserts:(NSArray *)inserts 17 | deletes:(NSArray *)deletes 18 | updates:(NSArray *)updates 19 | moves:(NSArray *)moves 20 | oldIndexPathMap:(NSMapTable, NSIndexPath *> *)oldIndexPathMap 21 | newIndexPathMap:(NSMapTable, NSIndexPath *> *)newIndexPathMap; 22 | 23 | @property (nonatomic, assign, readonly) NSInteger changeCount; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListDiffKit/Internal/IGListIndexSetResultInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if !__has_include() 11 | #import "IGListIndexSetResult.h" 12 | #else 13 | #import 14 | #endif 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | @interface IGListIndexSetResult() 19 | 20 | - (instancetype)initWithInserts:(NSIndexSet *)inserts 21 | deletes:(NSIndexSet *)deletes 22 | updates:(NSIndexSet *)updates 23 | moves:(NSArray *)moves 24 | oldIndexMap:(NSMapTable, NSNumber *> *)oldIndexMap 25 | newIndexMap:(NSMapTable, NSNumber *> *)newIndexMap; 26 | 27 | @property (nonatomic, assign, readonly) NSInteger changeCount; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListDiffKit/Internal/IGListMoveIndexInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListMoveIndex.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface IGListMoveIndex () 15 | 16 | - (instancetype)initWithFrom:(NSInteger)from to:(NSInteger)to NS_DESIGNATED_INITIALIZER; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListDiffKit/Internal/IGListMoveIndexPathInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface IGListMoveIndexPath () 13 | 14 | - (instancetype)initWithFrom:(NSIndexPath *)from to:(NSIndexPath *)to NS_DESIGNATED_INITIALIZER; 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/IGListAdapterDelegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | @class IGListAdapter; 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | /** 15 | Conform to `IGListAdapterDelegate` to receive display events for objects in a list. 16 | */ 17 | NS_SWIFT_NAME(ListAdapterDelegate) 18 | @protocol IGListAdapterDelegate 19 | 20 | /** 21 | Notifies the delegate that a list object is about to be displayed. 22 | 23 | @param listAdapter The list adapter sending this information. 24 | @param object The object that will display. 25 | @param index The index of the object in the list. 26 | */ 27 | - (void)listAdapter:(IGListAdapter *)listAdapter willDisplayObject:(id)object atIndex:(NSInteger)index; 28 | 29 | /** 30 | Notifies the delegate that a list object is no longer being displayed. 31 | 32 | @param listAdapter The list adapter sending this information. 33 | @param object The object that ended display. 34 | @param index The index of the object in the list. 35 | */ 36 | - (void)listAdapter:(IGListAdapter *)listAdapter didEndDisplayingObject:(id)object atIndex:(NSInteger)index; 37 | 38 | @end 39 | 40 | NS_ASSUME_NONNULL_END 41 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/IGListAdapterMoveDelegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | @class IGListAdapter; 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | /** 15 | Conform to `IGListAdapterMoveDelegate` to receive interactive reordering requests. 16 | */ 17 | NS_SWIFT_NAME(ListAdapterMoveDelegate) 18 | @protocol IGListAdapterMoveDelegate 19 | 20 | /** 21 | Asks the delegate to move a section object as the result of interactive reordering. 22 | 23 | @param listAdapter The list adapter sending this information. 24 | @param object the object that was moved 25 | @param previousObjects The array of objects prior to the move. 26 | @param objects The array of objects after the move. 27 | */ 28 | - (void)listAdapter:(IGListAdapter *)listAdapter 29 | moveObject:(id)object 30 | from:(NSArray *)previousObjects 31 | to:(NSArray *)objects; 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/IGListBindable.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /** 13 | A protocol for cells that configure themselves given a view model. 14 | */ 15 | NS_SWIFT_NAME(ListBindable) 16 | @protocol IGListBindable 17 | 18 | /** 19 | Tells the cell to configure itself with the given view model. 20 | 21 | @param viewModel The view model for the cell. 22 | 23 | @note The view model can change many times throughout the lifetime of a cell as the model values change and the cell 24 | is reused. Implementations should use only this method to do their configuration. 25 | */ 26 | - (void)bindViewModel:(id)viewModel; 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/IGListCollectionScrollingTraits.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | /** 11 | The current scrolling traits of the underlying collection view. 12 | The attributes are always equal to their corresponding properties on the underlying collection view. 13 | */ 14 | NS_SWIFT_NAME(ListCollectionScrollingTraits) 15 | typedef struct IGListCollectionScrollingTraits { 16 | /// returns YES if user has touched. may not yet have started dragging. 17 | bool isTracking; 18 | /// returns YES if user has started scrolling. this may require some time and or distance to move to initiate dragging 19 | bool isDragging; 20 | /// returns YES if user isn't dragging (touch up) but scroll view is still moving. 21 | bool isDecelerating; 22 | } IGListCollectionScrollingTraits; 23 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/IGListCollectionViewLayoutCompatible.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | /** 13 | A protocol for layouts that defines interaction with an IGListCollectionView, for recieving updated section indexes. 14 | */ 15 | NS_SWIFT_NAME(ListCollectionViewLayoutCompatible) 16 | @protocol IGListCollectionViewLayoutCompatible 17 | 18 | /** 19 | Called to notify the layout that a specific section was modified before invalidation. This can be used to optimize 20 | layout re-calculation. 21 | 22 | @note When updating a collection view (ex: calling `-insertSections`), `-invalidateLayoutWithContext` gets called on 23 | the layout object. However, the invalidation context doesn't provide details on which index paths are being modified, 24 | which typically forces a full layout re-calculation. Layouts can use this method to keep track of which section 25 | actually needs to be updated on the following `-invalidateLayoutWithContext`. See `IGListCollectionView`. 26 | 27 | @param modifiedSection The section that was modified. 28 | */ 29 | - (void)didModifySection:(NSInteger)modifiedSection; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/IGListGenericSectionController.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListGenericSectionController.h" 9 | 10 | @implementation IGListGenericSectionController 11 | 12 | - (void)didUpdateToObject:(id)object { 13 | _object = object; 14 | } 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/IGListReloadDataUpdater.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if !__has_include() 11 | #import "IGListMacros.h" 12 | #else 13 | #import 14 | #endif 15 | 16 | #import "IGListUpdatingDelegate.h" 17 | 18 | NS_ASSUME_NONNULL_BEGIN 19 | 20 | /** 21 | An `IGListReloadDataUpdater` is a concrete type that conforms to `IGListUpdatingDelegate`. 22 | It is an out-of-box updater for `IGListAdapter` objects to use. 23 | 24 | @note This updater performs simple, synchronous updates using `-[UICollectionView reloadData]`. 25 | */ 26 | IGLK_SUBCLASSING_RESTRICTED 27 | NS_SWIFT_NAME(ListReloadDataUpdater) 28 | @interface IGListReloadDataUpdater : NSObject 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/IGListTransitionData.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListTransitionData.h" 9 | 10 | @implementation IGListTransitionData 11 | 12 | - (instancetype)initFromObjects:(NSArray *)fromObjects 13 | toObjects:(NSArray *)toObjects 14 | toSectionControllers:(NSArray *)toSectionControllers { 15 | if (self = [super init]) { 16 | _fromObjects = [fromObjects copy]; 17 | _toObjects = [toObjects copy]; 18 | _toSectionControllers = [toSectionControllers copy]; 19 | } 20 | return self; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListAdapter+DebugDescription.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListAdapter.h" 9 | 10 | @interface IGListAdapter (DebugDescription) 11 | 12 | - (NSArray *)debugDescriptionLines; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListAdapter+UICollectionView.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListAdapter.h" 11 | #import "IGListCollectionViewDelegateLayout.h" 12 | 13 | @interface IGListAdapter (UICollectionView) 14 | < 15 | UICollectionViewDataSource, 16 | IGListCollectionViewDelegateLayout 17 | > 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListAdapterUpdater+DebugDescription.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListAdapterUpdater.h" 9 | 10 | @interface IGListAdapterUpdater (DebugDescription) 11 | 12 | - (NSArray *)debugDescriptionLines; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListAdapterUpdaterInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListAdapterUpdater.h" 11 | #import "IGListBatchUpdateState.h" 12 | 13 | @class IGListUpdateTransactionBuilder; 14 | @protocol IGListUpdateTransactable; 15 | 16 | NS_ASSUME_NONNULL_BEGIN 17 | 18 | @interface IGListAdapterUpdater () 19 | 20 | - (BOOL)hasChanges; 21 | 22 | /// Force an update to start 23 | - (void)update; 24 | 25 | - (id)transaction; 26 | - (IGListUpdateTransactionBuilder *)transactionBuilder; 27 | - (IGListUpdateTransactionBuilder *)lastTransactionBuilder; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListArrayUtilsInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | @protocol IGListDiffable; 11 | 12 | /// Returns a copy of the provided array, with all duplicates 13 | /// of objects with the same `diffIdentifier` value removed. 14 | /// - Parameter objects: The list of diffable objects to filter. 15 | NSArray *objectsWithDuplicateIdentifiersRemoved(NSArray> *objects); 16 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListArrayUtilsInternal.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListArrayUtilsInternal.h" 9 | 10 | #if !__has_include() 11 | #import "IGListBatchUpdateData.h" 12 | #import "IGListDiffable.h" 13 | #else 14 | #import 15 | #import 16 | #endif 17 | 18 | NSArray *objectsWithDuplicateIdentifiersRemoved(NSArray> *objects) { 19 | if (objects == nil) { 20 | return nil; 21 | } 22 | 23 | NSMapTable *identifierMap = [NSMapTable strongToStrongObjectsMapTable]; 24 | NSMutableArray *uniqueObjects = [NSMutableArray new]; 25 | for (id object in objects) { 26 | id diffIdentifier = [object diffIdentifier]; 27 | id previousObject = [identifierMap objectForKey:diffIdentifier]; 28 | if (diffIdentifier != nil 29 | && previousObject == nil) { 30 | [identifierMap setObject:object forKey:diffIdentifier]; 31 | [uniqueObjects addObject:object]; 32 | } else { 33 | IGLKLog(@"Duplicate identifier %@ for object %@ with object %@", diffIdentifier, object, previousObject); 34 | } 35 | } 36 | return uniqueObjects; 37 | } 38 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListBatchUpdateData+DebugDescription.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if !__has_include() 11 | #import "IGListBatchUpdateData.h" 12 | #else 13 | #import 14 | #endif 15 | 16 | @interface IGListBatchUpdateData (DebugDescription) 17 | 18 | - (NSArray *)debugDescriptionLines; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListBatchUpdateState.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | typedef NS_ENUM (NSInteger, IGListBatchUpdateState) { 11 | IGListBatchUpdateStateIdle, 12 | IGListBatchUpdateStateQueuedBatchUpdate, 13 | IGListBatchUpdateStateExecutingBatchUpdateBlock, 14 | IGListBatchUpdateStateExecutedBatchUpdateBlock, 15 | }; 16 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListBindingSectionController+DebugDescription.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListBindingSectionController.h" 9 | 10 | @interface IGListBindingSectionController (DebugDescription) 11 | 12 | - (NSArray *)debugDescriptionLines; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListCollectionViewLayoutInternal.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | static CGRect IGListRectIntegralScaled(CGRect rect) { 9 | CGFloat scale = [[UIScreen mainScreen] scale]; 10 | return CGRectMake(floorf(rect.origin.x * scale) / scale, 11 | floorf(rect.origin.y * scale) / scale, 12 | ceilf(rect.size.width * scale) / scale, 13 | ceilf(rect.size.height * scale) / scale); 14 | } 15 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListDataSourceChangeTransaction.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if !__has_include() 11 | #import "IGListMacros.h" 12 | #else 13 | #import 14 | #endif 15 | 16 | #import "IGListUpdatingDelegate.h" 17 | 18 | #import "IGListUpdateTransactable.h" 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | 22 | /// Handles a `UICollectionView` `dataSource` change 23 | IGLK_SUBCLASSING_RESTRICTED 24 | @interface IGListDataSourceChangeTransaction : NSObject 25 | 26 | - (instancetype)initWithChangeBlock:(IGListDataSourceChangeBlock)block 27 | itemUpdateBlocks:(NSArray *)itemUpdateBlocks 28 | completionBlocks:(NSArray *)completionBlocks NS_DESIGNATED_INITIALIZER; 29 | 30 | - (instancetype)init NS_UNAVAILABLE; 31 | + (instancetype)new NS_UNAVAILABLE; 32 | 33 | @end 34 | 35 | NS_ASSUME_NONNULL_END 36 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListDebugger.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if !__has_include() 11 | #import "IGListMacros.h" 12 | #else 13 | #import 14 | #endif 15 | 16 | @class IGListAdapter; 17 | 18 | IGLK_SUBCLASSING_RESTRICTED 19 | @interface IGListDebugger : NSObject 20 | 21 | + (void)trackAdapter:(IGListAdapter *)adapter; 22 | 23 | + (NSArray *)adapterDescriptions; 24 | 25 | + (void)clear; 26 | 27 | + (NSString *)dump; 28 | 29 | - (instancetype)init NS_UNAVAILABLE; 30 | + (instancetype)new NS_UNAVAILABLE; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListDebugger.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListDebugger.h" 9 | 10 | #import "IGListAdapter+DebugDescription.h" 11 | 12 | @implementation IGListDebugger 13 | 14 | static NSHashTable *livingAdaptersTable = nil; 15 | 16 | + (void)trackAdapter:(IGListAdapter *)adapter { 17 | #if defined(IGLK_DEBUG_DESCRIPTION_ENABLED) && IGLK_DEBUG_DESCRIPTION_ENABLED 18 | if (livingAdaptersTable == nil) { 19 | livingAdaptersTable = [NSHashTable weakObjectsHashTable]; 20 | } 21 | [livingAdaptersTable addObject:adapter]; 22 | #endif // #if IGLK_DEBUG_DESCRIPTION_ENABLED 23 | } 24 | 25 | + (NSArray *)adapterDescriptions { 26 | NSMutableArray *descriptions = [NSMutableArray new]; 27 | for (IGListAdapter *adapter in livingAdaptersTable) { 28 | [descriptions addObject:[adapter debugDescription]]; 29 | } 30 | return descriptions; 31 | } 32 | 33 | + (void)clear { 34 | [livingAdaptersTable removeAllObjects]; 35 | } 36 | 37 | + (NSString *)dump { 38 | return [[self adapterDescriptions] componentsJoinedByString:@"\n"]; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListDebuggingUtilities.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | 11 | NSString *IGListDebugBOOL(BOOL b); 12 | 13 | NSArray *IGListDebugIndentedLines(NSArray *lines); 14 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListDebuggingUtilities.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListDebuggingUtilities.h" 9 | 10 | NSString *IGListDebugBOOL(BOOL b) { 11 | return b ? @"Yes" : @"No"; 12 | } 13 | 14 | NSArray *IGListDebugIndentedLines(NSArray *lines) { 15 | NSMutableArray *newLines = [NSMutableArray new]; 16 | for (NSString *line in lines) { 17 | [newLines addObject:[NSString stringWithFormat:@" %@", line]]; 18 | } 19 | return newLines; 20 | } 21 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListDefaultExperiments.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if __has_include() 11 | #import 12 | #else 13 | #import "IGListExperiments.h" 14 | #endif 15 | 16 | /// Provides a list of experiments that are enabled by default in IGListKit. 17 | static inline IGListExperiment IGListDefaultExperiments(void) { 18 | return IGListExperimentThrowOnInconsistencyException; 19 | } 20 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListItemUpdatesCollector.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #if !__has_include() 11 | #import "IGListMacros.h" 12 | #else 13 | #import 14 | #endif 15 | 16 | @class IGListMoveIndexPath; 17 | @class IGListReloadIndexPath; 18 | 19 | /// Object to collect item updates. 20 | IGLK_SUBCLASSING_RESTRICTED 21 | @interface IGListItemUpdatesCollector : NSObject 22 | 23 | @property (nonatomic, strong, readonly) NSMutableIndexSet *sectionReloads; 24 | @property (nonatomic, strong, readonly) NSMutableArray *itemInserts; 25 | @property (nonatomic, strong, readonly) NSMutableArray *itemDeletes; 26 | @property (nonatomic, strong, readonly) NSMutableArray *itemReloads; 27 | @property (nonatomic, strong, readonly) NSMutableArray *itemMoves; 28 | 29 | - (BOOL)hasChanges; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListItemUpdatesCollector.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListItemUpdatesCollector.h" 9 | 10 | @implementation IGListItemUpdatesCollector 11 | 12 | - (instancetype)init { 13 | if (self = [super init]) { 14 | _sectionReloads = [NSMutableIndexSet new]; 15 | _itemInserts = [NSMutableArray new]; 16 | _itemMoves = [NSMutableArray new]; 17 | _itemDeletes = [NSMutableArray new]; 18 | _itemReloads = [NSMutableArray new]; 19 | } 20 | return self; 21 | } 22 | 23 | - (BOOL)hasChanges { 24 | return [self.sectionReloads count] > 0 25 | || [self.itemInserts count] > 0 26 | || [self.itemMoves count] > 0 27 | || [self.itemReloads count] > 0 28 | || [self.itemDeletes count] > 0; 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListReloadIndexPath.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListReloadIndexPath.h" 9 | 10 | @implementation IGListReloadIndexPath 11 | 12 | - (instancetype)initWithFromIndexPath:(NSIndexPath *)fromIndexPath 13 | toIndexPath:(NSIndexPath *)toIndexPath { 14 | if (self = [super init]) { 15 | _fromIndexPath = fromIndexPath; 16 | _toIndexPath = toIndexPath; 17 | } 18 | return self; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListSectionMap+DebugDescription.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListSectionMap.h" 11 | 12 | @interface IGListSectionMap (DebugDescription) 13 | 14 | - (NSArray *)debugDescriptionLines; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/IGListSectionMap+DebugDescription.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "IGListSectionMap+DebugDescription.h" 9 | 10 | #import "IGListBindingSectionController.h" 11 | 12 | @implementation IGListSectionMap (DebugDescription) 13 | 14 | - (NSArray *)debugDescriptionLines { 15 | NSMutableArray *debug = [NSMutableArray new]; 16 | #if defined(IGLK_DEBUG_DESCRIPTION_ENABLED) && IGLK_DEBUG_DESCRIPTION_ENABLED 17 | [self enumerateUsingBlock:^(id object, IGListSectionController *sectionController, NSInteger section, BOOL *stop) { 18 | if ([sectionController isKindOfClass:[IGListBindingSectionController class]]) { 19 | [debug addObject:[sectionController debugDescription]]; 20 | } else { 21 | [debug addObject:[NSString stringWithFormat:@"Object and section controller at section: %li:", (long)section]]; 22 | [debug addObject:[NSString stringWithFormat:@" %@", object]]; 23 | [debug addObject:[NSString stringWithFormat:@" %@", sectionController]]; 24 | } 25 | }]; 26 | #endif // #if IGLK_DEBUG_DESCRIPTION_ENABLED 27 | return debug; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/UICollectionView+DebugDescription.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | @interface UICollectionView (DebugDescription) 11 | 12 | - (NSArray *)debugDescriptionLines; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/UICollectionView+IGListBatchUpdateData.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | @class IGListBatchUpdateData; 11 | 12 | @interface UICollectionView (IGListBatchUpdateData) 13 | 14 | - (void)ig_applyBatchUpdateData:(IGListBatchUpdateData *)updateData; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/UICollectionView+IGListBatchUpdateData.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "UICollectionView+IGListBatchUpdateData.h" 9 | 10 | #if !__has_include() 11 | #import "IGListBatchUpdateData.h" 12 | #else 13 | #import 14 | #endif 15 | 16 | @implementation UICollectionView (IGListBatchUpdateData) 17 | 18 | - (void)ig_applyBatchUpdateData:(IGListBatchUpdateData *)updateData { 19 | [self deleteItemsAtIndexPaths:updateData.deleteIndexPaths]; 20 | [self insertItemsAtIndexPaths:updateData.insertIndexPaths]; 21 | [self reloadItemsAtIndexPaths:updateData.updateIndexPaths]; 22 | 23 | for (IGListMoveIndexPath *move in updateData.moveIndexPaths) { 24 | [self moveItemAtIndexPath:move.from toIndexPath:move.to]; 25 | } 26 | 27 | for (IGListMoveIndex *move in updateData.moveSections) { 28 | [self moveSection:move.from toSection:move.to]; 29 | } 30 | 31 | [self deleteSections:updateData.deleteSections]; 32 | [self insertSections:updateData.insertSections]; 33 | } 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/UICollectionViewLayout+InteractiveReordering.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | #import "IGListAdapter.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface UICollectionViewLayout (InteractiveReordering) 15 | 16 | - (void)ig_hijackLayoutInteractiveReorderingMethodForAdapter:(IGListAdapter *)adapter; 17 | 18 | - (nullable NSIndexPath *)updatedTargetForInteractivelyMovingItem:(NSIndexPath *)previousIndexPath 19 | toIndexPath:(NSIndexPath *)originalTarget 20 | adapter:(IGListAdapter *)adapter; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/UIScrollView+IGListKit.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import 9 | 10 | @interface UIScrollView (IGListKit) 11 | 12 | - (UIEdgeInsets) ig_contentInset; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Example/Pods/IGListKit/Source/IGListKit/Internal/UIScrollView+IGListKit.m: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | #import "UIScrollView+IGListKit.h" 9 | 10 | @implementation UIScrollView (IGListKit) 11 | 12 | - (UIEdgeInsets) ig_contentInset 13 | { 14 | UIEdgeInsets contentInset = self.contentInset; 15 | if (@available(iOS 11.0, tvOS 11.0, *)) { 16 | contentInset = self.adjustedContentInset; 17 | } 18 | return contentInset; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Example/Pods/Local Podspecs/RxIGListKit.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RxIGListKit", 3 | "version": "2.0.2", 4 | "summary": "A RxSwift wrapper for Instagram IGListKit.", 5 | "description": "A RxSwift wrapper for Instagram IGListKit - A data-driven UICollectionView framework for building fast and flexible lists.\nRxIGListKit bring IGListKit into Reactive world.", 6 | "homepage": "https://github.com/RxSwiftCommunity/RxIGListKit", 7 | "license": { 8 | "type": "MIT", 9 | "file": "LICENSE" 10 | }, 11 | "authors": { 12 | "Bruce-pac": "Bruce_pac312@foxmail.com" 13 | }, 14 | "source": { 15 | "git": "https://github.com/RxSwiftCommunity/RxIGListKit.git", 16 | "tag": "2.0.2" 17 | }, 18 | "platforms": { 19 | "ios": "11.0", 20 | "tvos": "11.0" 21 | }, 22 | "swift_versions": "5.1", 23 | "source_files": "RxIGListKit/Classes/**/*", 24 | "dependencies": { 25 | "RxCocoa": [ 26 | "~> 6.0" 27 | ], 28 | "IGListKit": [ 29 | "~> 5.0.0" 30 | ] 31 | }, 32 | "swift_version": "5.1" 33 | } 34 | -------------------------------------------------------------------------------- /Example/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - IGListDiffKit (5.0.0) 3 | - IGListKit (5.0.0): 4 | - IGListDiffKit (= 5.0.0) 5 | - RxCocoa (6.7.1): 6 | - RxRelay (= 6.7.1) 7 | - RxSwift (= 6.7.1) 8 | - RxIGListKit (2.0.2): 9 | - IGListKit (~> 5.0.0) 10 | - RxCocoa (~> 6.0) 11 | - RxRelay (6.7.1): 12 | - RxSwift (= 6.7.1) 13 | - RxSwift (6.7.1) 14 | 15 | DEPENDENCIES: 16 | - RxIGListKit (from `../`) 17 | 18 | SPEC REPOS: 19 | https://cdn.cocoapods.org/: 20 | - IGListDiffKit 21 | - IGListKit 22 | - RxCocoa 23 | - RxRelay 24 | - RxSwift 25 | 26 | EXTERNAL SOURCES: 27 | RxIGListKit: 28 | :path: "../" 29 | 30 | SPEC CHECKSUMS: 31 | IGListDiffKit: 02d937d7e714d6f558771f284ed80668d483b522 32 | IGListKit: baf7e87b4c2262cd569c380e46ca5667a4a82c82 33 | RxCocoa: f5609cb4637587a7faa99c5d5787e3ad582b75a4 34 | RxIGListKit: 3c01e20914401ae6a36bbfd4e7bcc6b5f4b574f1 35 | RxRelay: 4151ba01152436b08271e08410135e099880eae5 36 | RxSwift: b9a93a26031785159e11abd40d1a55bcb8057e52 37 | 38 | PODFILE CHECKSUM: 89c9a98f0c97f72d0b45d7e49a640fca9cc7fbe5 39 | 40 | COCOAPODS: 1.15.2 41 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Iterator = AnyIterator 12 | 13 | private let repeatedValue: Element 14 | 15 | init(repeatedValue: Element) { 16 | self.repeatedValue = repeatedValue 17 | } 18 | 19 | func makeIterator() -> Iterator { 20 | let repeatedValue = self.repeatedValue 21 | return AnyIterator { repeatedValue } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS) 10 | import Darwin 11 | import Foundation 12 | 13 | extension Thread { 14 | static func setThreadLocalStorageValue(_ value: T?, forKey key: NSCopying) { 15 | let currentThread = Thread.current 16 | let threadDictionary = currentThread.threadDictionary 17 | 18 | if let newValue = value { 19 | threadDictionary[key] = newValue 20 | } 21 | else { 22 | threadDictionary[key] = nil 23 | } 24 | } 25 | 26 | static func getThreadLocalStorageValueForKey(_ key: NSCopying) -> T? { 27 | let currentThread = Thread.current 28 | let threadDictionary = currentThread.threadDictionary 29 | 30 | return threadDictionary[key] as? T 31 | } 32 | } 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Linux.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(Linux) 10 | 11 | import Foundation 12 | 13 | extension Thread { 14 | 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String) { 16 | if let newValue = value { 17 | Thread.current.threadDictionary[key] = newValue 18 | } 19 | else { 20 | Thread.current.threadDictionary[key] = nil 21 | } 22 | } 23 | 24 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 25 | let currentThread = Thread.current 26 | let threadDictionary = currentThread.threadDictionary 27 | 28 | return threadDictionary[key] as? T 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Common/RxTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTarget.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | import RxSwift 12 | 13 | class RxTarget : NSObject 14 | , Disposable { 15 | 16 | private var retainSelf: RxTarget? 17 | 18 | override init() { 19 | super.init() 20 | self.retainSelf = self 21 | 22 | #if TRACE_RESOURCES 23 | _ = Resources.incrementTotal() 24 | #endif 25 | 26 | #if DEBUG 27 | MainScheduler.ensureRunningOnMainThread() 28 | #endif 29 | } 30 | 31 | func dispose() { 32 | #if DEBUG 33 | MainScheduler.ensureRunningOnMainThread() 34 | #endif 35 | self.retainSelf = nil 36 | } 37 | 38 | #if TRACE_RESOURCES 39 | deinit { 40 | _ = Resources.decrementTotal() 41 | } 42 | #endif 43 | } 44 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Common/SectionedViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SectionedViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 1/10/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Data source with access to underlying sectioned model. 12 | public protocol SectionedViewDataSourceType { 13 | /// Returns model at index path. 14 | /// 15 | /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown. 16 | 17 | /// - parameter indexPath: Model index path 18 | /// - returns: Model at index path. 19 | func model(at indexPath: IndexPath) throws -> Any 20 | } 21 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Foundation/KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KVORepresentable.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that is KVO representable (KVO mechanism can be used to observe it). 10 | public protocol KVORepresentable { 11 | /// Associated KVO type. 12 | associatedtype KVOType 13 | 14 | /// Constructs `Self` using KVO value. 15 | init?(KVOValue: KVOType) 16 | } 17 | 18 | extension KVORepresentable { 19 | /// Initializes `KVORepresentable` with optional value. 20 | init?(KVOValue: KVOType?) { 21 | guard let KVOValue = KVOValue else { 22 | return nil 23 | } 24 | 25 | self.init(KVOValue: KVOValue) 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Foundation/NotificationCenter+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NotificationCenter+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 5/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension Reactive where Base: NotificationCenter { 13 | /** 14 | Transforms notifications posted to notification center to observable sequence of notifications. 15 | 16 | - parameter name: Optional name used to filter notifications. 17 | - parameter object: Optional object used to filter notifications. 18 | - returns: Observable sequence of posted notifications. 19 | */ 20 | public func notification(_ name: Notification.Name?, object: AnyObject? = nil) -> Observable { 21 | return Observable.create { [weak object] observer in 22 | let nsObserver = self.base.addObserver(forName: name, object: object, queue: nil) { notification in 23 | observer.on(.next(notification)) 24 | } 25 | 26 | return Disposables.create { 27 | self.base.removeObserver(nsObserver) 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Runtime/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "include/_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Runtime/include/RxCocoaRuntime.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoaRuntime.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Runtime/include/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface _RXDelegateProxy : NSObject 14 | 15 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 16 | 17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ; 18 | 19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 20 | -(BOOL)voidDelegateMethodsContain:(SEL)selector; 21 | 22 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments; 23 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Runtime/include/_RXKVOObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | ################################################################################ 13 | This file is part of RX private API 14 | ################################################################################ 15 | */ 16 | 17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process 18 | @interface _RXKVOObserver : NSObject 19 | 20 | -(instancetype)initWithTarget:(id)target 21 | retainTarget:(BOOL)retainTarget 22 | keyPath:(NSString*)keyPath 23 | options:(NSKeyValueObservingOptions)options 24 | callback:(void (^)(id))callback; 25 | 26 | -(void)dispose; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | #import 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BehaviorRelay+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 10/7/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxRelay 11 | 12 | extension BehaviorRelay { 13 | /// Converts `BehaviorRelay` to `Driver`. 14 | /// 15 | /// - returns: Observable sequence. 16 | public func asDriver() -> Driver { 17 | let source = self.asObservable() 18 | .observe(on:DriverSharingStrategy.scheduler) 19 | return SharedSequence(source) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlEvent+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Driver` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { _ -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlProperty+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlProperty+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlProperty { 12 | /// Converts `ControlProperty` to `Driver` trait. 13 | /// 14 | /// `ControlProperty` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { _ -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Driver/Infallible+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Anton Siliuk on 14/02/2022. 6 | // Copyright © 2022 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension InfallibleType { 12 | /// Converts `InfallibleType` to `Driver`. 13 | /// 14 | /// - returns: Observable sequence. 15 | public func asDriver() -> Driver { 16 | SharedSequence(asObservable().observe(on: DriverSharingStrategy.scheduler)) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Signal/ControlEvent+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/1/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Signal` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asSignal() -> Signal { 16 | return self.asSignal { _ -> Signal in 17 | #if DEBUG 18 | rxFatalError("Somehow signal received error from a source that shouldn't fail.") 19 | #else 20 | return Signal.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/Traits/Signal/PublishRelay+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PublishRelay+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxRelay 11 | 12 | extension PublishRelay { 13 | /// Converts `PublishRelay` to `Signal`. 14 | /// 15 | /// - returns: Observable sequence. 16 | public func asSignal() -> Signal { 17 | let source = self.asObservable() 18 | .observe(on:SignalSharingStrategy.scheduler) 19 | return SharedSequence(source) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | import UIKit 11 | 12 | public typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath) 13 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 14 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 15 | #endif 16 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UICollectionView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxCollectionViewDataSourceType /*: UICollectionViewDataSource*/ { 16 | 17 | /// Type of elements that can be bound to collection view. 18 | associatedtype Element 19 | 20 | /// New observable sequence event observed. 21 | /// 22 | /// - parameter collectionView: Bound collection view. 23 | /// - parameter observedEvent: Event 24 | func collectionView(_ collectionView: UICollectionView, observedEvent: Event) 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPickerViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Sergey Shulga on 05/07/2017. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UIPickerView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxPickerViewDataSourceType { 16 | /// Type of elements that can be bound to picker view. 17 | associatedtype Element 18 | 19 | /// New observable sequence event observed. 20 | /// 21 | /// - parameter pickerView: Bound picker view. 22 | /// - parameter observedEvent: Event 23 | func pickerView(_ pickerView: UIPickerView, observedEvent: Event) 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/26/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UITableView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxTableViewDataSourceType /*: UITableViewDataSource*/ { 16 | 17 | /// Type of elements that can be bound to table view. 18 | associatedtype Element 19 | 20 | /// New observable sequence event observed. 21 | /// 22 | /// - parameter tableView: Bound table view. 23 | /// - parameter observedEvent: Event 24 | func tableView(_ tableView: UITableView, observedEvent: Event) 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxCollectionViewDelegateProxy 16 | : RxScrollViewDelegateProxy { 17 | 18 | /// Typed parent object. 19 | public weak private(set) var collectionView: UICollectionView? 20 | 21 | /// Initializes `RxCollectionViewDelegateProxy` 22 | /// 23 | /// - parameter collectionView: Parent object for delegate proxy. 24 | public init(collectionView: UICollectionView) { 25 | self.collectionView = collectionView 26 | super.init(scrollView: collectionView) 27 | } 28 | } 29 | 30 | extension RxCollectionViewDelegateProxy: UICollectionViewDelegateFlowLayout {} 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPickerViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 5/12/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension UIPickerView: HasDelegate { 15 | public typealias Delegate = UIPickerViewDelegate 16 | } 17 | 18 | open class RxPickerViewDelegateProxy 19 | : DelegateProxy 20 | , DelegateProxyType { 21 | 22 | /// Typed parent object. 23 | public weak private(set) var pickerView: UIPickerView? 24 | 25 | /// - parameter pickerView: Parent object for delegate proxy. 26 | public init(pickerView: ParentObject) { 27 | self.pickerView = pickerView 28 | super.init(parentObject: pickerView, delegateProxy: RxPickerViewDelegateProxy.self) 29 | } 30 | 31 | // Register known implementations 32 | public static func registerKnownImplementations() { 33 | self.register { RxPickerViewDelegateProxy(pickerView: $0) } 34 | } 35 | } 36 | 37 | extension RxPickerViewDelegateProxy: UIPickerViewDelegate {} 38 | #endif 39 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxSearchBarDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension UISearchBar: HasDelegate { 15 | public typealias Delegate = UISearchBarDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxSearchBarDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var searchBar: UISearchBar? 25 | 26 | /// - parameter searchBar: Parent object for delegate proxy. 27 | public init(searchBar: ParentObject) { 28 | self.searchBar = searchBar 29 | super.init(parentObject: searchBar, delegateProxy: RxSearchBarDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxSearchBarDelegateProxy(searchBar: $0) } 35 | } 36 | } 37 | 38 | extension RxSearchBarDelegateProxy: UISearchBarDelegate {} 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxSearchControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 3/17/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension UISearchController: HasDelegate { 15 | public typealias Delegate = UISearchControllerDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxSearchControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var searchController: UISearchController? 25 | 26 | /// - parameter searchController: Parent object for delegate proxy. 27 | public init(searchController: UISearchController) { 28 | self.searchController = searchController 29 | super.init(parentObject: searchController, delegateProxy: RxSearchControllerDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxSearchControllerDelegateProxy(searchController: $0) } 35 | } 36 | } 37 | 38 | extension RxSearchControllerDelegateProxy: UISearchControllerDelegate {} 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTabBarControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Yusuke Kita on 2016/12/07. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension UITabBarController: HasDelegate { 15 | public typealias Delegate = UITabBarControllerDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxTabBarControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var tabBar: UITabBarController? 25 | 26 | /// - parameter tabBar: Parent object for delegate proxy. 27 | public init(tabBar: ParentObject) { 28 | self.tabBar = tabBar 29 | super.init(parentObject: tabBar, delegateProxy: RxTabBarControllerDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxTabBarControllerDelegateProxy(tabBar: $0) } 35 | } 36 | } 37 | 38 | extension RxTabBarControllerDelegateProxy: UITabBarControllerDelegate {} 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxTableViewDelegateProxy 16 | : RxScrollViewDelegateProxy { 17 | 18 | /// Typed parent object. 19 | public weak private(set) var tableView: UITableView? 20 | 21 | /// - parameter tableView: Parent object for delegate proxy. 22 | public init(tableView: UITableView) { 23 | self.tableView = tableView 24 | super.init(scrollView: tableView) 25 | } 26 | 27 | } 28 | 29 | extension RxTableViewDelegateProxy: UITableViewDelegate {} 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTextStorageDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 12/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension NSTextStorage: HasDelegate { 15 | public typealias Delegate = NSTextStorageDelegate 16 | } 17 | 18 | open class RxTextStorageDelegateProxy 19 | : DelegateProxy 20 | , DelegateProxyType { 21 | 22 | /// Typed parent object. 23 | public weak private(set) var textStorage: NSTextStorage? 24 | 25 | /// - parameter textStorage: Parent object for delegate proxy. 26 | public init(textStorage: NSTextStorage) { 27 | self.textStorage = textStorage 28 | super.init(parentObject: textStorage, delegateProxy: RxTextStorageDelegateProxy.self) 29 | } 30 | 31 | // Register known implementations 32 | public static func registerKnownImplementations() { 33 | self.register { RxTextStorageDelegateProxy(textStorage: $0) } 34 | } 35 | } 36 | 37 | extension RxTextStorageDelegateProxy: NSTextStorageDelegate {} 38 | #endif 39 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UIActivityIndicatorView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIActivityIndicatorView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Ivan Persidskiy on 02/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIActivityIndicatorView { 15 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods. 16 | public var isAnimating: Binder { 17 | Binder(self.base) { activityIndicator, active in 18 | if active { 19 | activityIndicator.startAnimating() 20 | } else { 21 | activityIndicator.stopAnimating() 22 | } 23 | } 24 | } 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UIDatePicker+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIDatePicker+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Daniel Tartaglia on 5/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UIDatePicker { 15 | /// Reactive wrapper for `date` property. 16 | public var date: ControlProperty { 17 | value 18 | } 19 | 20 | /// Reactive wrapper for `date` property. 21 | public var value: ControlProperty { 22 | return base.rx.controlPropertyWithDefaultEvents( 23 | getter: { datePicker in 24 | datePicker.date 25 | }, setter: { datePicker, value in 26 | datePicker.date = value 27 | } 28 | ) 29 | } 30 | 31 | /// Reactive wrapper for `countDownDuration` property. 32 | public var countDownDuration: ControlProperty { 33 | return base.rx.controlPropertyWithDefaultEvents( 34 | getter: { datePicker in 35 | datePicker.countDownDuration 36 | }, setter: { datePicker, value in 37 | datePicker.countDownDuration = value 38 | } 39 | ) 40 | } 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UIRefreshControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIRefreshControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yosuke Ishikawa on 1/31/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIRefreshControl { 15 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods. 16 | public var isRefreshing: Binder { 17 | return Binder(self.base) { refreshControl, refresh in 18 | if refresh { 19 | refreshControl.beginRefreshing() 20 | } else { 21 | refreshControl.endRefreshing() 22 | } 23 | } 24 | } 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UISlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Alexander van der Werff on 28/05/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UISlider { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return base.rx.controlPropertyWithDefaultEvents( 19 | getter: { slider in 20 | slider.value 21 | }, setter: { slider, value in 22 | slider.value = value 23 | } 24 | ) 25 | } 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UIStepper+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIStepper+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yuta ToKoRo on 9/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIStepper { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return base.rx.controlPropertyWithDefaultEvents( 19 | getter: { stepper in 20 | stepper.value 21 | }, setter: { stepper, value in 22 | stepper.value = value 23 | } 24 | ) 25 | } 26 | } 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/iOS/UISwitch+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISwitch+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Carlos García on 8/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(visionOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UISwitch { 15 | 16 | /// Reactive wrapper for `isOn` property. 17 | public var isOn: ControlProperty { 18 | value 19 | } 20 | 21 | /// Reactive wrapper for `isOn` property. 22 | /// 23 | /// ⚠️ Versions prior to iOS 10.2 were leaking `UISwitch`'s, so on those versions 24 | /// underlying observable sequence won't complete when nothing holds a strong reference 25 | /// to `UISwitch`. 26 | public var value: ControlProperty { 27 | return base.rx.controlPropertyWithDefaultEvents( 28 | getter: { uiSwitch in 29 | uiSwitch.isOn 30 | }, setter: { uiSwitch, value in 31 | uiSwitch.isOn = value 32 | } 33 | ) 34 | } 35 | 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/macOS/NSButton+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSButton+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 5/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | 11 | import RxSwift 12 | import Cocoa 13 | 14 | extension Reactive where Base: NSButton { 15 | 16 | /// Reactive wrapper for control event. 17 | public var tap: ControlEvent { 18 | self.controlEvent 19 | } 20 | 21 | /// Reactive wrapper for `state` property`. 22 | public var state: ControlProperty { 23 | return self.base.rx.controlProperty( 24 | getter: { control in 25 | return control.state 26 | }, setter: { (control: NSButton, state: NSControl.StateValue) in 27 | control.state = state 28 | } 29 | ) 30 | } 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/macOS/NSSlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSSlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Junior B. on 24/05/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | 11 | import RxSwift 12 | import Cocoa 13 | 14 | extension Reactive where Base: NSSlider { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return self.base.rx.controlProperty( 19 | getter: { control -> Double in 20 | return control.doubleValue 21 | }, 22 | setter: { control, value in 23 | control.doubleValue = value 24 | } 25 | ) 26 | } 27 | 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Example/Pods/RxCocoa/RxCocoa/macOS/NSView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | import Cocoa 11 | import RxSwift 12 | 13 | extension Reactive where Base: NSView { 14 | /// Bindable sink for `alphaValue` property. 15 | public var alpha: Binder { 16 | return Binder(self.base) { view, value in 17 | view.alphaValue = value 18 | } 19 | } 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /Example/Pods/RxRelay/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Example/Pods/RxRelay/RxRelay/PublishRelay.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PublishRelay.swift 3 | // RxRelay 4 | // 5 | // Created by Krunoslav Zaher on 3/28/15. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /// PublishRelay is a wrapper for `PublishSubject`. 12 | /// 13 | /// Unlike `PublishSubject` it can't terminate with error or completed. 14 | public final class PublishRelay: ObservableType { 15 | private let subject: PublishSubject 16 | 17 | /// Accepts `event` and emits it to subscribers 18 | public func accept(_ event: Element) { 19 | self.subject.onNext(event) 20 | } 21 | 22 | /// Initializes with internal empty subject. 23 | public init() { 24 | self.subject = PublishSubject() 25 | } 26 | 27 | /// Subscribes observer 28 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 29 | self.subject.subscribe(observer) 30 | } 31 | 32 | /// - returns: Canonical interface for push style sequence 33 | public func asObservable() -> Observable { 34 | self.subject.asObservable() 35 | } 36 | 37 | /// Convert to an `Infallible` 38 | /// 39 | /// - returns: `Infallible` 40 | public func asInfallible() -> Infallible { 41 | asInfallible(onErrorFallbackTo: .empty()) 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Example/Pods/RxRelay/RxRelay/Utils.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Utils.swift 3 | // RxRelay 4 | // 5 | // Created by Shai Mishali on 09/04/2019. 6 | // Copyright © 2019 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | func rxFatalErrorInDebug(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) { 12 | #if DEBUG 13 | fatalError(lastMessage(), file: file, line: line) 14 | #else 15 | print("\(file):\(line): \(lastMessage())") 16 | #endif 17 | } 18 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Iterator = AnyIterator 12 | 13 | private let repeatedValue: Element 14 | 15 | init(repeatedValue: Element) { 16 | self.repeatedValue = repeatedValue 17 | } 18 | 19 | func makeIterator() -> Iterator { 20 | let repeatedValue = self.repeatedValue 21 | return AnyIterator { repeatedValue } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) || os(visionOS) 10 | import Darwin 11 | import Foundation 12 | 13 | extension Thread { 14 | static func setThreadLocalStorageValue(_ value: T?, forKey key: NSCopying) { 15 | let currentThread = Thread.current 16 | let threadDictionary = currentThread.threadDictionary 17 | 18 | if let newValue = value { 19 | threadDictionary[key] = newValue 20 | } 21 | else { 22 | threadDictionary[key] = nil 23 | } 24 | } 25 | 26 | static func getThreadLocalStorageValueForKey(_ key: NSCopying) -> T? { 27 | let currentThread = Thread.current 28 | let threadDictionary = currentThread.threadDictionary 29 | 30 | return threadDictionary[key] as? T 31 | } 32 | } 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Linux.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(Linux) 10 | 11 | import Foundation 12 | 13 | extension Thread { 14 | 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String) { 16 | if let newValue = value { 17 | Thread.current.threadDictionary[key] = newValue 18 | } 19 | else { 20 | Thread.current.threadDictionary[key] = nil 21 | } 22 | } 23 | 24 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 25 | let currentThread = Thread.current 26 | let threadDictionary = currentThread.threadDictionary 27 | 28 | return threadDictionary[key] as? T 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents disposable resource with state tracking. 10 | public protocol Cancelable : Disposable { 11 | /// Was resource disposed. 12 | var isDisposed: Bool { get } 13 | } 14 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/Lock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Lock.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol Lock { 10 | func lock() 11 | func unlock() 12 | } 13 | 14 | // https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html 15 | typealias SpinLock = RecursiveLock 16 | 17 | extension RecursiveLock : Lock { 18 | @inline(__always) 19 | final func performLocked(_ action: () -> T) -> T { 20 | self.lock(); defer { self.unlock() } 21 | return action() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol LockOwnerType: AnyObject, Lock { 10 | var lock: RecursiveLock { get } 11 | } 12 | 13 | extension LockOwnerType { 14 | func lock() { self.lock.lock() } 15 | func unlock() { self.lock.unlock() } 16 | } 17 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedDisposeType: AnyObject, Disposable, Lock { 10 | func synchronized_dispose() 11 | } 12 | 13 | extension SynchronizedDisposeType { 14 | func synchronizedDispose() { 15 | self.lock(); defer { self.unlock() } 16 | self.synchronized_dispose() 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedOnType: AnyObject, ObserverType, Lock { 10 | func synchronized_on(_ event: Event) 11 | } 12 | 13 | extension SynchronizedOnType { 14 | func synchronizedOn(_ event: Event) { 15 | self.lock(); defer { self.unlock() } 16 | self.synchronized_on(event) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedUnsubscribeType: AnyObject { 10 | associatedtype DisposeKey 11 | 12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey) 13 | } 14 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/ConnectableObservableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ConnectableObservableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /** 10 | Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence. 11 | */ 12 | public protocol ConnectableObservableType : ObservableType { 13 | /** 14 | Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established. 15 | 16 | - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence. 17 | */ 18 | func connect() -> Disposable 19 | } 20 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource. 10 | public protocol Disposable { 11 | /// Dispose resource. 12 | func dispose() 13 | } 14 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BooleanDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 10/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource that can be checked for disposal status. 10 | public final class BooleanDisposable : Cancelable { 11 | 12 | internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true) 13 | private let disposed: AtomicInt 14 | 15 | /// Initializes a new instance of the `BooleanDisposable` class 16 | public init() { 17 | disposed = AtomicInt(0) 18 | } 19 | 20 | /// Initializes a new instance of the `BooleanDisposable` class with given value 21 | public init(isDisposed: Bool) { 22 | self.disposed = AtomicInt(isDisposed ? 1 : 0) 23 | } 24 | 25 | /// - returns: Was resource disposed. 26 | public var isDisposed: Bool { 27 | isFlagSet(self.disposed, 1) 28 | } 29 | 30 | /// Sets the status to disposed, which can be observer through the `isDisposed` property. 31 | public func dispose() { 32 | fetchOr(self.disposed, 1) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/Disposables.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposables.swift 3 | // RxSwift 4 | // 5 | // Created by Mohsen Ramezanpoor on 01/08/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// A collection of utility methods for common disposable operations. 10 | public struct Disposables { 11 | private init() {} 12 | } 13 | 14 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Base class for all disposables. 10 | public class DisposeBase { 11 | init() { 12 | #if TRACE_RESOURCES 13 | _ = Resources.incrementTotal() 14 | #endif 15 | } 16 | 17 | deinit { 18 | #if TRACE_RESOURCES 19 | _ = Resources.decrementTotal() 20 | #endif 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NopDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable that does nothing on disposal. 10 | /// 11 | /// Nop = No Operation 12 | private struct NopDisposable : Disposable { 13 | 14 | fileprivate static let noOp: Disposable = NopDisposable() 15 | 16 | private init() { 17 | 18 | } 19 | 20 | /// Does nothing. 21 | public func dispose() { 22 | } 23 | } 24 | 25 | extension Disposables { 26 | /** 27 | Creates a disposable that does nothing on disposal. 28 | */ 29 | static public func create() -> Disposable { NopDisposable.noOp } 30 | } 31 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct SubscriptionDisposable : Disposable { 10 | private let key: T.DisposeKey 11 | private weak var owner: T? 12 | 13 | init(owner: T, key: T.DisposeKey) { 14 | self.owner = owner 15 | self.key = key 16 | } 17 | 18 | func dispose() { 19 | self.owner?.synchronizedUnsubscribe(self.key) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Bag+Rx.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/19/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | 10 | // MARK: forEach 11 | 12 | @inline(__always) 13 | func dispatch(_ bag: Bag<(Event) -> Void>, _ event: Event) { 14 | bag._value0?(event) 15 | 16 | if bag._onlyFastPath { 17 | return 18 | } 19 | 20 | let pairs = bag._pairs 21 | for i in 0 ..< pairs.count { 22 | pairs[i].value(event) 23 | } 24 | 25 | if let dictionary = bag._dictionary { 26 | for element in dictionary.values { 27 | element(event) 28 | } 29 | } 30 | } 31 | 32 | /// Dispatches `dispose` to all disposables contained inside bag. 33 | func disposeAll(in bag: Bag) { 34 | bag._value0?.dispose() 35 | 36 | if bag._onlyFastPath { 37 | return 38 | } 39 | 40 | let pairs = bag._pairs 41 | for i in 0 ..< pairs.count { 42 | pairs[i].value.dispose() 43 | } 44 | 45 | if let dictionary = bag._dictionary { 46 | for element in dictionary.values { 47 | element.dispose() 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/GroupedObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GroupedObservable.swift 3 | // RxSwift 4 | // 5 | // Created by Tomi Koskinen on 01/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an observable sequence of elements that have a common key. 10 | public struct GroupedObservable : ObservableType { 11 | /// Gets the common key. 12 | public let key: Key 13 | 14 | private let source: Observable 15 | 16 | /// Initializes grouped observable sequence with key and source observable sequence. 17 | /// 18 | /// - parameter key: Grouped observable sequence key 19 | /// - parameter source: Observable sequence that represents sequence of elements for the key 20 | /// - returns: Grouped observable sequence of elements for the specific key 21 | public init(key: Key, source: Observable) { 22 | self.key = key 23 | self.source = source 24 | } 25 | 26 | /// Subscribes `observer` to receive events for this sequence. 27 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 28 | self.source.subscribe(observer) 29 | } 30 | 31 | /// Converts `self` to `Observable` sequence. 32 | public func asObservable() -> Observable { 33 | self.source 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// A type-erased `ObservableType`. 10 | /// 11 | /// It represents a push style sequence. 12 | 13 | public typealias RxObservable = RxSwift.Observable 14 | 15 | public class Observable : ObservableType { 16 | init() { 17 | #if TRACE_RESOURCES 18 | _ = Resources.incrementTotal() 19 | #endif 20 | } 21 | 22 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 23 | rxAbstractMethod() 24 | } 25 | 26 | public func asObservable() -> Observable { self } 27 | 28 | deinit { 29 | #if TRACE_RESOURCES 30 | _ = Resources.decrementTotal() 31 | #endif 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/ObservableConvertibleType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that can be converted to observable sequence (`Observable`). 10 | public protocol ObservableConvertibleType { 11 | /// Type of elements in sequence. 12 | associatedtype Element 13 | 14 | /// Converts `self` to `Observable` sequence. 15 | /// 16 | /// - returns: Observable sequence that represents `self`. 17 | func asObservable() -> Observable 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Decode.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Decode.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 24/07/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public extension ObservableType where Element == Data { 12 | /// Attempt to decode the emitted `Data` using a provided decoder. 13 | /// 14 | /// - parameter type: A `Decodable`-conforming type to attempt to decode to 15 | /// - parameter decoder: A capable decoder, e.g. `JSONDecoder` or `PropertyListDecoder` 16 | /// 17 | /// - note: If using a custom decoder, it must conform to the `DataDecoder` protocol. 18 | /// 19 | /// - returns: An `Observable` of the decoded type 20 | func decode(type: Item.Type, 22 | decoder: Decoder) -> Observable { 23 | map { try decoder.decode(type, from: $0) } 24 | } 25 | } 26 | 27 | /// Represents an entity capable of decoding raw `Data` 28 | /// into a concrete `Decodable` type 29 | public protocol DataDecoder { 30 | func decode(_ type: Item.Type, from data: Data) throws -> Item 31 | } 32 | 33 | extension JSONDecoder: DataDecoder {} 34 | extension PropertyListDecoder: DataDecoder {} 35 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | /** 11 | Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message. 12 | 13 | - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 14 | 15 | - returns: An observable sequence with no elements. 16 | */ 17 | public static func empty() -> Observable { 18 | EmptyProducer() 19 | } 20 | } 21 | 22 | final private class EmptyProducer: Producer { 23 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 24 | observer.on(.completed) 25 | return Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | /** 11 | Returns an observable sequence that terminates with an `error`. 12 | 13 | - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 14 | 15 | - returns: The observable sequence that terminates with specified error. 16 | */ 17 | public static func error(_ error: Swift.Error) -> Observable { 18 | ErrorProducer(error: error) 19 | } 20 | } 21 | 22 | final private class ErrorProducer: Producer { 23 | private let error: Swift.Error 24 | 25 | init(error: Swift.Error) { 26 | self.error = error 27 | } 28 | 29 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 30 | observer.on(.error(self.error)) 31 | return Disposables.create() 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observables/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | 11 | /** 12 | Returns a non-terminating observable sequence, which can be used to denote an infinite duration. 13 | 14 | - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 15 | 16 | - returns: An observable sequence whose observers will never get called. 17 | */ 18 | public static func never() -> Observable { 19 | NeverProducer() 20 | } 21 | } 22 | 23 | final private class NeverProducer: Producer { 24 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 25 | Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/ObserverType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Supports push-style iteration over an observable sequence. 10 | public protocol ObserverType { 11 | /// The type of elements in sequence that observer can observe. 12 | associatedtype Element 13 | 14 | /// Notify observer about sequence event. 15 | /// 16 | /// - parameter event: Event that occurred. 17 | func on(_ event: Event) 18 | } 19 | 20 | /// Convenience API extensions to provide alternate next, error, completed events 21 | extension ObserverType { 22 | 23 | /// Convenience method equivalent to `on(.next(element: Element))` 24 | /// 25 | /// - parameter element: Next element to send to observer(s) 26 | public func onNext(_ element: Element) { 27 | self.on(.next(element)) 28 | } 29 | 30 | /// Convenience method equivalent to `on(.completed)` 31 | public func onCompleted() { 32 | self.on(.completed) 33 | } 34 | 35 | /// Convenience method equivalent to `on(.error(Swift.Error))` 36 | /// - parameter error: Swift.Error to send to observer(s) 37 | public func onError(_ error: Swift.Error) { 38 | self.on(.error(error)) 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousObserver.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | final class AnonymousObserver: ObserverBase { 10 | typealias EventHandler = (Event) -> Void 11 | 12 | private let eventHandler : EventHandler 13 | 14 | init(_ eventHandler: @escaping EventHandler) { 15 | #if TRACE_RESOURCES 16 | _ = Resources.incrementTotal() 17 | #endif 18 | self.eventHandler = eventHandler 19 | } 20 | 21 | override func onCore(_ event: Event) { 22 | self.eventHandler(event) 23 | } 24 | 25 | #if TRACE_RESOURCES 26 | deinit { 27 | _ = Resources.decrementTotal() 28 | } 29 | #endif 30 | } 31 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | class ObserverBase : Disposable, ObserverType { 10 | private let isStopped = AtomicInt(0) 11 | 12 | func on(_ event: Event) { 13 | switch event { 14 | case .next: 15 | if load(self.isStopped) == 0 { 16 | self.onCore(event) 17 | } 18 | case .error, .completed: 19 | if fetchOr(self.isStopped, 1) == 0 { 20 | self.onCore(event) 21 | } 22 | } 23 | } 24 | 25 | func onCore(_ event: Event) { 26 | rxAbstractMethod() 27 | } 28 | 29 | func dispose() { 30 | fetchOr(self.isStopped, 1) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HistoricalScheduler.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/27/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `TimeInterval` for relative time. 12 | public class HistoricalScheduler : VirtualTimeScheduler { 13 | 14 | /** 15 | Creates a new historical scheduler with initial clock value. 16 | 17 | - parameter initialClock: Initial value for virtual clock. 18 | */ 19 | public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) { 20 | super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter()) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct InvocableScheduledItem : InvocableType { 10 | 11 | let invocable: I 12 | let state: I.Value 13 | 14 | init(invocable: I, state: I.Value) { 15 | self.invocable = invocable 16 | self.state = state 17 | } 18 | 19 | func invoke() { 20 | self.invocable.invoke(self.state) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol InvocableType { 10 | func invoke() 11 | } 12 | 13 | protocol InvocableWithValueType { 14 | associatedtype Value 15 | 16 | func invoke(_ value: Value) 17 | } 18 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct ScheduledItem 10 | : ScheduledItemType 11 | , InvocableType { 12 | typealias Action = (T) -> Disposable 13 | 14 | private let action: Action 15 | private let state: T 16 | 17 | private let disposable = SingleAssignmentDisposable() 18 | 19 | var isDisposed: Bool { 20 | self.disposable.isDisposed 21 | } 22 | 23 | init(action: @escaping Action, state: T) { 24 | self.action = action 25 | self.state = state 26 | } 27 | 28 | func invoke() { 29 | self.disposable.setDisposable(self.action(self.state)) 30 | } 31 | 32 | func dispose() { 33 | self.disposable.dispose() 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol ScheduledItemType 10 | : Cancelable 11 | , InvocableType { 12 | func invoke() 13 | } 14 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubjectType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an object that is both an observable sequence as well as an observer. 10 | public protocol SubjectType : ObservableType { 11 | /// The type of the observer that represents this subject. 12 | /// 13 | /// Usually this type is type of subject itself, but it doesn't have to be. 14 | associatedtype Observer: ObserverType 15 | 16 | /// Returns observer interface for subject. 17 | /// 18 | /// - returns: Observer interface for subject. 19 | func asObserver() -> Observer 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/SwiftSupport/SwiftSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwiftSupport.swift 3 | // RxSwift 4 | // 5 | // Created by Volodymyr Gorbenko on 3/6/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | typealias IntMax = Int64 12 | public typealias RxAbstractInteger = FixedWidthInteger 13 | 14 | extension SignedInteger { 15 | func toIntMax() -> IntMax { 16 | IntMax(self) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Traits/Infallible/Infallible+Concurrency.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Concurrency.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 22/09/2021. 6 | // Copyright © 2021 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if swift(>=5.6) && canImport(_Concurrency) && !os(Linux) 10 | // MARK: - Infallible 11 | @available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) 12 | public extension InfallibleType { 13 | /// Allows iterating over the values of an Infallible 14 | /// asynchronously via Swift's concurrency features (`async/await`) 15 | /// 16 | /// A sample usage would look like so: 17 | /// 18 | /// ```swift 19 | /// for await value in observable.values { 20 | /// // Handle emitted values 21 | /// } 22 | /// ``` 23 | var values: AsyncStream { 24 | AsyncStream { continuation in 25 | let disposable = subscribe( 26 | onNext: { value in continuation.yield(value) }, 27 | onCompleted: { continuation.finish() } 28 | ) 29 | continuation.onTermination = { @Sendable termination in 30 | if termination == .cancelled { 31 | disposable.dispose() 32 | } 33 | } 34 | } 35 | } 36 | } 37 | #endif 38 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Traits/Infallible/Infallible+Debug.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Debug.swift 3 | // RxSwift 4 | // 5 | // Created by Marcelo Fabri on 11/05/2023. 6 | // Copyright © 2023 RxSwift. All rights reserved. 7 | // 8 | 9 | extension InfallibleType { 10 | /** 11 | Prints received events for all observers on standard output. 12 | 13 | - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html) 14 | 15 | - parameter identifier: Identifier that is printed together with event description to standard output. 16 | - parameter trimOutput: Should output be trimmed to max 40 characters. 17 | - returns: An Infallible sequence whose events are printed to standard output. 18 | */ 19 | public func debug(_ identifier: String? = nil, trimOutput: Bool = false, file: String = #file, line: UInt = #line, function: String = #function) 20 | -> Infallible { 21 | Infallible( 22 | asObservable() 23 | .debug(identifier, trimOutput: trimOutput, file: file, line: line, function: function) 24 | ) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Example/Pods/RxSwift/RxSwift/Traits/Infallible/ObservableConvertibleType+Infallible.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType+Infallible.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 27/08/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | public extension ObservableConvertibleType { 10 | /// Convert to an `Infallible` 11 | /// 12 | /// - returns: `Infallible` 13 | func asInfallible(onErrorJustReturn element: Element) -> Infallible { 14 | Infallible(self.asObservable().catchAndReturn(element)) 15 | } 16 | 17 | /// Convert to an `Infallible` 18 | /// 19 | /// - parameter infallible: Fall back to this provided infallible on error 20 | /// 21 | /// 22 | /// - returns: `Infallible` 23 | func asInfallible(onErrorFallbackTo infallible: Infallible) -> Infallible { 24 | Infallible(self.asObservable().catch { _ in infallible.asObservable() }) 25 | } 26 | 27 | /// Convert to an `Infallible` 28 | /// 29 | /// - parameter onErrorRecover: Recover with the this infallible closure 30 | /// 31 | /// - returns: `Infallible` 32 | func asInfallible(onErrorRecover: @escaping (Swift.Error) -> Infallible) -> Infallible { 33 | Infallible(asObservable().catch { onErrorRecover($0).asObservable() }) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListDiffKit/IGListDiffKit-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 5.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListDiffKit/IGListDiffKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_IGListDiffKit : NSObject 3 | @end 4 | @implementation PodsDummy_IGListDiffKit 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListDiffKit/IGListDiffKit-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListDiffKit/IGListDiffKit-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "IGListAssert.h" 14 | #import "IGListBatchUpdateData.h" 15 | #import "IGListCompatibility.h" 16 | #import "IGListDiff.h" 17 | #import "IGListDiffable.h" 18 | #import "IGListDiffKit.h" 19 | #import "IGListExperiments.h" 20 | #import "IGListIndexPathResult.h" 21 | #import "IGListIndexSetResult.h" 22 | #import "IGListMacros.h" 23 | #import "IGListMoveIndex.h" 24 | #import "IGListMoveIndexPath.h" 25 | #import "NSNumber+IGListDiffable.h" 26 | #import "NSString+IGListDiffable.h" 27 | 28 | FOUNDATION_EXPORT double IGListDiffKitVersionNumber; 29 | FOUNDATION_EXPORT const unsigned char IGListDiffKitVersionString[]; 30 | 31 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListDiffKit/IGListDiffKit.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 4 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | OTHER_CFLAGS = $(inherited) -fmodules 7 | OTHER_CPLUSPLUSFLAGS = -fcxx-modules 8 | OTHER_LDFLAGS = $(inherited) -l"c++" -framework "UIKit" 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/IGListDiffKit 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListDiffKit/IGListDiffKit.modulemap: -------------------------------------------------------------------------------- 1 | framework module IGListDiffKit { 2 | umbrella header "IGListDiffKit-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListDiffKit/IGListDiffKit.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 4 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | OTHER_CFLAGS = $(inherited) -fmodules 7 | OTHER_CPLUSPLUSFLAGS = -fcxx-modules 8 | OTHER_LDFLAGS = $(inherited) -l"c++" -framework "UIKit" 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/IGListDiffKit 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListDiffKit/IGListDiffKit.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_LDFLAGS = $(inherited) -l"c++" -framework "UIKit" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/IGListDiffKit 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListKit/IGListKit-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 5.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListKit/IGListKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_IGListKit : NSObject 3 | @end 4 | @implementation PodsDummy_IGListKit 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListKit/IGListKit-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListKit/IGListKit.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 4 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IGListKit 5 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit" 6 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 7 | OTHER_CFLAGS = $(inherited) -fmodules 8 | OTHER_CPLUSPLUSFLAGS = -fcxx-modules 9 | OTHER_LDFLAGS = $(inherited) -l"c++" -framework "IGListDiffKit" -framework "UIKit" 10 | PODS_BUILD_DIR = ${BUILD_DIR} 11 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 12 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 13 | PODS_ROOT = ${SRCROOT} 14 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/IGListKit 15 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 16 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 17 | SKIP_INSTALL = YES 18 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 19 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListKit/IGListKit.modulemap: -------------------------------------------------------------------------------- 1 | framework module IGListKit { 2 | umbrella header "IGListKit-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListKit/IGListKit.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 4 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IGListKit 5 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit" 6 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 7 | OTHER_CFLAGS = $(inherited) -fmodules 8 | OTHER_CPLUSPLUSFLAGS = -fcxx-modules 9 | OTHER_LDFLAGS = $(inherited) -l"c++" -framework "IGListDiffKit" -framework "UIKit" 10 | PODS_BUILD_DIR = ${BUILD_DIR} 11 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 12 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 13 | PODS_ROOT = ${SRCROOT} 14 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/IGListKit 15 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 16 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 17 | SKIP_INSTALL = YES 18 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 19 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListKit/IGListKit.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_CXX_LANGUAGE_STANDARD = c++11 2 | CLANG_CXX_LIBRARY = libc++ 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IGListKit 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | OTHER_LDFLAGS = $(inherited) -l"c++" -framework "UIKit" 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/IGListKit 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/IGListKit/Info.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 | 3.4.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Example/Info.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 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Example/Pods-RxIGListKit_Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Example/Pods-RxIGListKit_Example-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxIGListKit_Example : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxIGListKit_Example 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Example/Pods-RxIGListKit_Example-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_RxIGListKit_ExampleVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_RxIGListKit_ExampleVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Example/Pods-RxIGListKit_Example.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxIGListKit_Example { 2 | umbrella header "Pods-RxIGListKit_Example-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Tests/Info.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 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Tests/Pods-RxIGListKit_Tests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Tests/Pods-RxIGListKit_Tests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Tests/Pods-RxIGListKit_Tests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Tests/Pods-RxIGListKit_Tests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_RxIGListKit_Tests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_RxIGListKit_Tests 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Tests/Pods-RxIGListKit_Tests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_RxIGListKit_TestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_RxIGListKit_TestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/Pods-RxIGListKit_Tests/Pods-RxIGListKit_Tests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_RxIGListKit_Tests { 2 | umbrella header "Pods-RxIGListKit_Tests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/Info.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 | 4.4.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 6.7.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "RxCocoaRuntime.h" 14 | #import "_RX.h" 15 | #import "_RXDelegateProxy.h" 16 | #import "_RXKVOObserver.h" 17 | #import "_RXObjCRuntime.h" 18 | #import "RxCocoa.h" 19 | 20 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 21 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 22 | 23 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa.debug.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 7 | OTHER_LDFLAGS = $(inherited) -framework "RxRelay" -framework "RxSwift" 8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa.release.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 7 | OTHER_LDFLAGS = $(inherited) -framework "RxRelay" -framework "RxSwift" 8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/Info.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 | 0.1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/RxIGListKit-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 2.0.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/RxIGListKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxIGListKit : NSObject 3 | @end 4 | @implementation PodsDummy_RxIGListKit 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/RxIGListKit-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/RxIGListKit-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double RxIGListKitVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxIGListKitVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/RxIGListKit.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxIGListKit 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit" "${PODS_CONFIGURATION_BUILD_DIR}/IGListKit" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 6 | OTHER_LDFLAGS = $(inherited) -framework "IGListKit" -framework "RxCocoa" -framework "UIKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 11 | PODS_ROOT = ${SRCROOT} 12 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 13 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 14 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 15 | SKIP_INSTALL = YES 16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/RxIGListKit.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxIGListKit { 2 | umbrella header "RxIGListKit-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/RxIGListKit.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxIGListKit 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit" "${PODS_CONFIGURATION_BUILD_DIR}/IGListKit" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 6 | OTHER_LDFLAGS = $(inherited) -framework "IGListKit" -framework "RxCocoa" -framework "UIKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 11 | PODS_ROOT = ${SRCROOT} 12 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 13 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 14 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 15 | SKIP_INSTALL = YES 16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxIGListKit/RxIGListKit.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxIGListKit 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/IGListDiffKit" "${PODS_CONFIGURATION_BUILD_DIR}/IGListKit" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../.. 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 6.7.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxRelay : NSObject 3 | @end 4 | @implementation PodsDummy_RxRelay 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double RxRelayVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxRelayVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay.debug.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxRelay 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 7 | OTHER_LDFLAGS = $(inherited) -framework "RxSwift" 8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxRelay 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxRelay { 2 | umbrella header "RxRelay-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay.release.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxRelay 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 7 | OTHER_LDFLAGS = $(inherited) -framework "RxSwift" 8 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 9 | PODS_BUILD_DIR = ${BUILD_DIR} 10 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 11 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 12 | PODS_ROOT = ${SRCROOT} 13 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxRelay 14 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 15 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 16 | SKIP_INSTALL = YES 17 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 18 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxRelay/RxRelay.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxRelay 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxRelay 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/Info.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 | 4.4.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | ${PODS_DEVELOPMENT_LANGUAGE} 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 | 6.7.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift.debug.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift.release.xcconfig: -------------------------------------------------------------------------------- 1 | APPLICATION_EXTENSION_API_ONLY = YES 2 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | LIBRARY_SEARCH_PATHS = $(inherited) "${TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" /usr/lib/swift 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE} 10 | PODS_ROOT = ${SRCROOT} 11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 14 | SKIP_INSTALL = YES 15 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 16 | -------------------------------------------------------------------------------- /Example/Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 11 | -------------------------------------------------------------------------------- /Example/RxIGListKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/RxIGListKit.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/RxIGListKit.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/RxIGListKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Example/RxIGListKit/CenterItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CenterItem.swift 3 | // RxIGListKit_Example 4 | // 5 | // Created by Bruce-pac on 2019/3/25. 6 | // Copyright © 2019 RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import IGListKit 11 | 12 | class CenterItem: ListDiffable { 13 | let name: String 14 | init(name: String) { 15 | self.name = name 16 | } 17 | func diffIdentifier() -> NSObjectProtocol { 18 | return name as NSObjectProtocol 19 | } 20 | func isEqual(toDiffableObject object: ListDiffable?) -> Bool { 21 | guard let object = object as? CenterItem else { return false } 22 | return name == object.name 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Example/RxIGListKit/CenterLabelCell.swift: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) Facebook, Inc. and its affiliates. 3 | 4 | The examples provided by Facebook are for non-commercial testing and evaluation 5 | purposes only. Facebook reserves all rights not expressly granted. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 10 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 11 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 12 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | */ 14 | 15 | import UIKit 16 | 17 | final class CenterLabelCell: UICollectionViewCell { 18 | 19 | lazy private var label: UILabel = { 20 | let view = UILabel() 21 | view.backgroundColor = .clear 22 | view.textAlignment = .center 23 | view.textColor = .white 24 | view.font = .boldSystemFont(ofSize: 18) 25 | self.contentView.addSubview(view) 26 | return view 27 | }() 28 | 29 | var text: String? { 30 | get { 31 | return label.text 32 | } 33 | set { 34 | label.text = newValue 35 | } 36 | } 37 | 38 | override func layoutSubviews() { 39 | super.layoutSubviews() 40 | label.frame = contentView.bounds 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Example/RxIGListKit/EmbeddedCollectionViewCell.swift: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) Facebook, Inc. and its affiliates. 3 | 4 | The examples provided by Facebook are for non-commercial testing and evaluation 5 | purposes only. Facebook reserves all rights not expressly granted. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 10 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 11 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 12 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | */ 14 | 15 | import IGListKit 16 | import UIKit 17 | 18 | final class EmbeddedCollectionViewCell: UICollectionViewCell { 19 | 20 | lazy var collectionView: UICollectionView = { 21 | let layout = UICollectionViewFlowLayout() 22 | layout.scrollDirection = .horizontal 23 | let view = UICollectionView(frame: .zero, collectionViewLayout: layout) 24 | view.backgroundColor = .clear 25 | view.alwaysBounceVertical = false 26 | view.alwaysBounceHorizontal = true 27 | self.contentView.addSubview(view) 28 | return view 29 | }() 30 | 31 | override func layoutSubviews() { 32 | super.layoutSubviews() 33 | collectionView.frame = contentView.frame 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Example/RxIGListKit/Feed.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Feed.swift 3 | // RxIGListKit_Example 4 | // 5 | // Created by Bruce-pac on 2019/3/24. 6 | // Copyright © 2019 RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import IGListDiffKit 11 | import RxIGListKit 12 | 13 | class Feed: SectionModelDiffable { 14 | 15 | typealias ObjectType = Feed 16 | 17 | func diffIdentifier() -> NSObjectProtocol { 18 | return id as NSObjectProtocol 19 | } 20 | 21 | func isEqual(toDiffableObject object: ListDiffable?) -> Bool { 22 | guard let object = object as? Feed else { return false } 23 | return id == object.id 24 | } 25 | 26 | var id: Int = 1 27 | var name: String = "" 28 | init(id: Int, name: String) { 29 | self.id = id 30 | self.name = name 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /Example/RxIGListKit/FeedCell.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FeedCell.swift 3 | // RxIGListKit_Example 4 | // 5 | // Created by Bruce-pac on 2019/3/24. 6 | // Copyright © 2019 RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class FeedCell: UICollectionViewCell { 12 | 13 | @IBOutlet weak var label: UILabel! 14 | override func awakeFromNib() { 15 | super.awakeFromNib() 16 | // Initialization code 17 | } 18 | 19 | func bindViewModel(model: Feed) { 20 | label.text = model.name 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /Example/RxIGListKit/FeedSectionController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // FeedSectionController.swift 3 | // RxIGListKit_Example 4 | // 5 | // Created by Bruce-pac on 2019/3/30. 6 | // Copyright © 2019 RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import IGListKit 11 | 12 | class FeedSectionController: ListSectionController { 13 | 14 | var object: Feed! 15 | 16 | override func numberOfItems() -> Int { 17 | return 1 18 | } 19 | 20 | override func sizeForItem(at index: Int) -> CGSize { 21 | let width: CGFloat! = collectionContext?.containerSize.width 22 | return CGSize(width: width, height: 40) 23 | } 24 | 25 | override func cellForItem(at index: Int) -> UICollectionViewCell { 26 | guard let cell = collectionContext?.dequeueReusableCell(withNibName: "FeedCell", bundle: nil, for: self, at: index) as? FeedCell else { fatalError() } 27 | cell.bindViewModel(model: object) 28 | return cell 29 | } 30 | 31 | override func didUpdate(to object: Any) { 32 | self.object = object as? Feed 33 | } 34 | 35 | override func didSelectItem(at index: Int) { 36 | print("didSelectItem at \(index)") 37 | } 38 | 39 | override func canMoveItem(at index: Int) -> Bool { 40 | return true 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Example/RxIGListKit/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ios-marketing", 45 | "size" : "1024x1024", 46 | "scale" : "1x" 47 | } 48 | ], 49 | "info" : { 50 | "version" : 1, 51 | "author" : "xcode" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Example/RxIGListKit/Info.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 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /Example/RxIGListKit/LabelSectionController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LabelSectionController.swift 3 | // RxIGListKit_Example 4 | // 5 | // Created by Bruce-pac on 2019/4/4. 6 | // Copyright © 2019 RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import IGListKit 11 | 12 | final class LabelSectionController: ListSectionController { 13 | 14 | private var object: String? 15 | 16 | override func sizeForItem(at index: Int) -> CGSize { 17 | return CGSize(width: collectionContext!.containerSize.width, height: 55) 18 | } 19 | 20 | override func cellForItem(at index: Int) -> UICollectionViewCell { 21 | guard let cell = collectionContext?.dequeueReusableCell(of: LabelCell.self, for: self, at: index) as? LabelCell else { 22 | fatalError() 23 | } 24 | cell.text = object 25 | return cell 26 | } 27 | 28 | override func didUpdate(to object: Any) { 29 | self.object = String(describing: object) 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Example/RxIGListKit/Month.swift: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) Facebook, Inc. and its affiliates. 3 | 4 | The examples provided by Facebook are for non-commercial testing and evaluation 5 | purposes only. Facebook reserves all rights not expressly granted. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 10 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 11 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 12 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | */ 14 | 15 | import Foundation 16 | import IGListKit 17 | 18 | final class Month { 19 | 20 | let name: String 21 | let days: Int 22 | 23 | // day int mapped to an array of appointment names 24 | let appointments: [Int: [NSString]] 25 | 26 | init(name: String, days: Int, appointments: [Int: [NSString]]) { 27 | self.name = name 28 | self.days = days 29 | self.appointments = appointments 30 | } 31 | 32 | } 33 | 34 | extension Month: ListDiffable { 35 | 36 | func diffIdentifier() -> NSObjectProtocol { 37 | return name as NSObjectProtocol 38 | } 39 | 40 | func isEqual(toDiffableObject object: ListDiffable?) -> Bool { 41 | return true 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /Example/RxIGListKit/MonthTitleViewModel.swift: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) Facebook, Inc. and its affiliates. 3 | 4 | The examples provided by Facebook are for non-commercial testing and evaluation 5 | purposes only. Facebook reserves all rights not expressly granted. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 10 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 11 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 12 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | */ 14 | 15 | import Foundation 16 | import IGListKit 17 | 18 | final class MonthTitleViewModel { 19 | 20 | let name: String 21 | 22 | init(name: String) { 23 | self.name = name 24 | } 25 | 26 | } 27 | 28 | extension MonthTitleViewModel: ListDiffable { 29 | 30 | func diffIdentifier() -> NSObjectProtocol { 31 | return name as NSObjectProtocol 32 | } 33 | 34 | func isEqual(toDiffableObject object: ListDiffable?) -> Bool { 35 | if self === object { return true } 36 | guard object is MonthTitleViewModel else { return false } 37 | // name is checked in the diffidentifier, so we can assume its equal 38 | return true 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Example/RxIGListKit/NibSelfSizingCell.swift: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) Facebook, Inc. and its affiliates. 3 | 4 | The examples provided by Facebook are for non-commercial testing and evaluation 5 | purposes only. Facebook reserves all rights not expressly granted. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 10 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 11 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 12 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | */ 14 | 15 | import UIKit 16 | 17 | final class NibSelfSizingCell: UICollectionViewCell { 18 | 19 | @IBOutlet weak var contentLabel: UILabel! 20 | 21 | private var content: String? { 22 | get { 23 | return contentLabel.text 24 | } 25 | set { 26 | contentLabel.text = newValue 27 | } 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /Example/RxIGListKit/Person.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Person.swift 3 | // RxIGListKit_Example 4 | // 5 | // Created by Bruce-pac on 2019/4/7. 6 | // Copyright © 2019 RxSwiftCommunity. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import IGListKit 11 | import RxIGListKit 12 | 13 | final class Person: SectionModelDiffable { 14 | 15 | let pk: Int 16 | let name: String 17 | 18 | init(pk: Int, name: String) { 19 | self.pk = pk 20 | self.name = name 21 | } 22 | 23 | func diffIdentifier() -> NSObjectProtocol { 24 | return pk as NSNumber 25 | } 26 | 27 | func isEqual(toDiffableObject object: ListDiffable?) -> Bool { 28 | guard let object = object as? Person else { return false } 29 | return self.name == object.name 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /Example/RxIGListKit/SelectionModel.swift: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) Facebook, Inc. and its affiliates. 3 | 4 | The examples provided by Facebook are for non-commercial testing and evaluation 5 | purposes only. Facebook reserves all rights not expressly granted. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 10 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 11 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 12 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | */ 14 | 15 | import IGListKit 16 | 17 | enum SelectionModelType: Int { 18 | case none, fullWidth, nib 19 | } 20 | 21 | final class SelectionModel: NSObject { 22 | 23 | let options: [String] 24 | let type: SelectionModelType 25 | 26 | init(options: [String], type: SelectionModelType = .none) { 27 | self.options = options 28 | self.type = type 29 | } 30 | 31 | } 32 | 33 | extension SelectionModel: ListDiffable { 34 | 35 | func diffIdentifier() -> NSObjectProtocol { 36 | return self 37 | } 38 | 39 | func isEqual(toDiffableObject object: ListDiffable?) -> Bool { 40 | return isEqual(object) 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /Example/RxIGListKit/StoryboardCell.swift: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) Facebook, Inc. and its affiliates. 3 | 4 | The examples provided by Facebook are for non-commercial testing and evaluation 5 | purposes only. Facebook reserves all rights not expressly granted. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 10 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 11 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 12 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | */ 14 | 15 | import UIKit 16 | 17 | final class StoryboardCell: UICollectionViewCell { 18 | @IBOutlet private weak var textLabel: UILabel! 19 | 20 | var text: String? { 21 | get { 22 | return textLabel.text 23 | } 24 | set { 25 | textLabel.text = newValue 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Example/RxIGListKit/User.swift: -------------------------------------------------------------------------------- 1 | /** 2 | Copyright (c) Facebook, Inc. and its affiliates. 3 | 4 | The examples provided by Facebook are for non-commercial testing and evaluation 5 | purposes only. Facebook reserves all rights not expressly granted. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 8 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 9 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 10 | FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 11 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 12 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 13 | */ 14 | 15 | import IGListKit 16 | 17 | final class User: ListDiffable { 18 | 19 | let pk: Int 20 | let name: String 21 | let handle: String 22 | 23 | init(pk: Int, name: String, handle: String) { 24 | self.pk = pk 25 | self.name = name 26 | self.handle = handle 27 | } 28 | 29 | // MARK: ListDiffable 30 | 31 | func diffIdentifier() -> NSObjectProtocol { 32 | return pk as NSObjectProtocol 33 | } 34 | 35 | func isEqual(toDiffableObject object: ListDiffable?) -> Bool { 36 | guard self !== object else { return true } 37 | guard let object = object as? User else { return false } 38 | return name == object.name && handle == object.handle 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Example/Tests/Info.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 | BNDL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1 23 | 24 | 25 | -------------------------------------------------------------------------------- /Example/Tests/Tests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | import RxIGListKit 3 | 4 | class Tests: XCTestCase { 5 | 6 | override func setUp() { 7 | super.setUp() 8 | // Put setup code here. This method is called before the invocation of each test method in the class. 9 | } 10 | 11 | override func tearDown() { 12 | // Put teardown code here. This method is called after the invocation of each test method in the class. 13 | super.tearDown() 14 | } 15 | 16 | func testExample() { 17 | // This is an example of a functional test case. 18 | XCTAssert(true, "Pass") 19 | } 20 | 21 | func testPerformanceExample() { 22 | // This is an example of a performance test case. 23 | self.measure() { 24 | // Put the code you want to measure the time of here. 25 | } 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 RxSwiftCommunity 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 | -------------------------------------------------------------------------------- /Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "object": { 3 | "pins": [ 4 | { 5 | "package": "IGListKit", 6 | "repositoryURL": "git@github.com:Instagram/IGListKit.git", 7 | "state": { 8 | "branch": null, 9 | "revision": "baf38ea4d438ef3cc6c6deb8615e1910e03f02bb", 10 | "version": "5.0.0" 11 | } 12 | }, 13 | { 14 | "package": "RxSwift", 15 | "repositoryURL": "git@github.com:ReactiveX/RxSwift.git", 16 | "state": { 17 | "branch": null, 18 | "revision": "b06a8c8596e4c3e8e7788e08e720e3248563ce6a", 19 | "version": "6.7.1" 20 | } 21 | } 22 | ] 23 | }, 24 | "version": 1 25 | } 26 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.1 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "RxIGListKit", 8 | platforms: [.iOS(.v11),.tvOS(.v11)], 9 | products: [ 10 | // Products define the executables and libraries produced by a package, and make them visible to other packages. 11 | .library( 12 | name: "RxIGListKit", 13 | targets: ["RxIGListKit"]), 14 | ], 15 | dependencies: [ 16 | .package(url: "git@github.com:ReactiveX/RxSwift.git", .upToNextMajor(from: "6.0.0")), 17 | .package(url: "git@github.com:Instagram/IGListKit.git", .upToNextMajor(from: "5.0.0"))], 18 | targets: [ 19 | // Targets are the basic building blocks of a package. A target can define a module or a test suite. 20 | // Targets can depend on other targets in this package, and on products in packages which this package depends on. 21 | .target( 22 | name: "RxIGListKit", 23 | dependencies: ["RxCocoa", "IGListKit"], 24 | path: "RxIGListKit/Classes"), 25 | .testTarget( 26 | name: "RxIGListKit_Tests", 27 | dependencies: ["RxIGListKit"], 28 | path: "Example/Tests"), 29 | ], 30 | swiftLanguageVersions: [.v5] 31 | ) 32 | -------------------------------------------------------------------------------- /RxIGListKit.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint RxIGListKit.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'RxIGListKit' 11 | s.version = '2.1.0' 12 | s.summary = "A RxSwift wrapper for Instagram IGListKit." 13 | 14 | s.description = <<-DESC 15 | A RxSwift wrapper for Instagram IGListKit - A data-driven UICollectionView framework for building fast and flexible lists. 16 | RxIGListKit bring IGListKit into Reactive world. 17 | DESC 18 | 19 | s.homepage = 'https://github.com/RxSwiftCommunity/RxIGListKit' 20 | s.license = { :type => 'MIT', :file => 'LICENSE' } 21 | s.author = { 'Bruce-pac' => 'Bruce_pac312@foxmail.com' } 22 | s.source = { :git => 'https://github.com/RxSwiftCommunity/RxIGListKit.git', :tag => s.version.to_s } 23 | # s.social_media_url = 'https://twitter.com/' 24 | 25 | s.ios.deployment_target = '11.0' 26 | s.tvos.deployment_target = '11.0' 27 | 28 | s.swift_version = '5.1' 29 | 30 | s.source_files = 'RxIGListKit/Classes/**/*' 31 | 32 | s.dependency 'RxCocoa', '~> 6.0' 33 | s.dependency 'IGListKit', '~> 5.0.0' 34 | end 35 | -------------------------------------------------------------------------------- /RxIGListKit/Assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxIGListKit/1b54c03b8002f3dd007e7db43505fa26dfe8f5ec/RxIGListKit/Assets/.gitkeep -------------------------------------------------------------------------------- /RxIGListKit/Classes/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RxSwiftCommunity/RxIGListKit/1b54c03b8002f3dd007e7db43505fa26dfe8f5ec/RxIGListKit/Classes/.gitkeep -------------------------------------------------------------------------------- /RxIGListKit/Classes/Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Extensions.swift 3 | // RxIGListKit 4 | // 5 | // Created by Bruce-pac on 2019/4/4. 6 | // 7 | 8 | import Foundation 9 | import protocol IGListDiffKit.ListDiffable 10 | 11 | extension NSString: SectionModelType {} 12 | 13 | extension NSNumber: SectionModelType{} 14 | 15 | extension String: SectionModelType { 16 | public typealias ObjectType = NSString 17 | public var object: NSString { 18 | return self as NSString 19 | } 20 | } 21 | 22 | extension Int: SectionModelType { 23 | public typealias ObjectType = NSNumber 24 | public var object: NSNumber { 25 | return self as NSNumber 26 | } 27 | } 28 | 29 | extension UInt: SectionModelType { 30 | public typealias ObjectType = NSNumber 31 | public var object: NSNumber { 32 | return self as NSNumber 33 | } 34 | } 35 | 36 | extension Float: SectionModelType { 37 | public typealias ObjectType = NSNumber 38 | public var object: NSNumber { 39 | return self as NSNumber 40 | } 41 | } 42 | 43 | extension Double: SectionModelType { 44 | public typealias ObjectType = NSNumber 45 | public var object: NSNumber { 46 | return self as NSNumber 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /RxIGListKit/Classes/RxListAdapterDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxListAdapterDataSourceType.swift 3 | // RxIGListKit 4 | // 5 | // Created by Bruce-pac on 2019/4/6. 6 | // 7 | 8 | import Foundation 9 | import IGListKit 10 | import RxSwift 11 | 12 | public protocol RxListAdapterDataSourceType: AnyObject { 13 | associatedtype Element 14 | func listAdapter(_ adapter: ListAdapter, observedEvent: Event) 15 | } 16 | -------------------------------------------------------------------------------- /RxIGListKit/Classes/RxListAdapterMoveDataSource.swift: -------------------------------------------------------------------------------- 1 | // 2 | // File.swift 3 | // RxIGListKit 4 | // 5 | // Created by Bruce-pac on 2019/4/4. 6 | // 7 | 8 | import Foundation 9 | import IGListKit 10 | import RxSwift 11 | 12 | public protocol ListAdapterMoving: AnyObject { 13 | var moving: Bool { get set } 14 | func setMoving() 15 | } 16 | 17 | extension ListAdapterMoving { 18 | public func setMoving() { 19 | moving = true 20 | } 21 | } 22 | 23 | public final class RxListAdapterMoveDataSource: RxListAdapterDataSource, ListAdapterMoving { 24 | public var moving: Bool = false 25 | 26 | public override func listAdapter(_ adapter: ListAdapter, observedEvent: Event<[E]>) { 27 | switch observedEvent { 28 | case .next(let e): 29 | objects = e 30 | if moving { 31 | moving.toggle() 32 | return 33 | } 34 | adapter.performUpdates(animated: true) { _ in 35 | } 36 | default: 37 | print(observedEvent) 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /RxIGListKit/Classes/SectionModelType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SectionObjectType.swift 3 | // RxIGListKit 4 | // 5 | // Created by Bruce-pac on 2019/3/30. 6 | // 7 | 8 | import Foundation 9 | import protocol IGListDiffKit.ListDiffable 10 | 11 | public protocol SectionModelType { 12 | associatedtype ObjectType: ListDiffable 13 | var object: ObjectType { get } 14 | } 15 | 16 | public extension SectionModelType where Self: ListDiffable, Self.ObjectType == Self { 17 | var object: ObjectType { 18 | return self 19 | } 20 | } 21 | 22 | public typealias SectionModelDiffable = SectionModelType & ListDiffable 23 | -------------------------------------------------------------------------------- /RxIGListKit/Classes/Typealias.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Typealias.swift 3 | // RxIGListKit 4 | // 5 | // Created by Bruce-pac on 2019/5/3. 6 | // 7 | 8 | import Foundation 9 | import UIKit 10 | import protocol IGListKit.ListCollectionContext 11 | import protocol IGListDiffKit.ListDiffable 12 | 13 | public typealias RxListSingleSectionCellConfigureBlock = (E, Cell) -> Void 14 | public typealias RxListSingleSectionCellSizeBlock = (E, ListCollectionContext?) -> CGSize 15 | 16 | public typealias WillDisplayObjectEvent = (object: ListDiffable, index: NSInteger) 17 | public typealias DidEndDisplayingObjectEvent = (object: ListDiffable, index: NSInteger) 18 | public typealias MoveObjectEvent = (object: ListDiffable, from: [ListDiffable], to: [ListDiffable]) 19 | public typealias ListWillEndDraggingEvent = (view: UICollectionView, velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) 20 | -------------------------------------------------------------------------------- /_Pods.xcodeproj: -------------------------------------------------------------------------------- 1 | Example/Pods/Pods.xcodeproj --------------------------------------------------------------------------------