├── LICENSE
├── NestedScrollView.gif
├── NestedSliding
├── NestedSliding.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ ├── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcuserdata
│ │ │ └── wangcong.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ └── xcuserdata
│ │ └── wangcong.xcuserdatad
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
├── NestedSliding.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcuserdata
│ │ └── wangcong.xcuserdatad
│ │ ├── UserInterfaceState.xcuserstate
│ │ └── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
├── NestedSliding
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── avatar.imageset
│ │ │ ├── Contents.json
│ │ │ └── avatar.jpg
│ │ ├── cellhead.imageset
│ │ │ ├── Contents.json
│ │ │ └── cellhead.jpg
│ │ ├── close.imageset
│ │ │ ├── Contents.json
│ │ │ ├── close@2x.png
│ │ │ └── close@3x.png
│ │ ├── close_white.imageset
│ │ │ ├── Contents.json
│ │ │ ├── close_white@2x.png
│ │ │ └── close_white@3x.png
│ │ └── header.imageset
│ │ │ ├── Contents.json
│ │ │ ├── header@2x.png
│ │ │ └── header@3x.png
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ ├── NestedSlidingChildViewController.swift
│ ├── NestedSlidingViewController.swift
│ ├── View
│ │ ├── HeaderView.swift
│ │ ├── HeaderView.xib
│ │ ├── NestedSlidingTableViewCell.swift
│ │ ├── NestedSlidingTableViewCell.xib
│ │ ├── OtherView.swift
│ │ ├── OtherView.xib
│ │ ├── SegmentView.swift
│ │ ├── SegmentView.xib
│ │ ├── UIScreen+Extension.swift
│ │ └── UIView+Extension.swift
│ └── ViewController.swift
├── NestedSlidingTests
│ ├── Info.plist
│ └── NestedSlidingTests.swift
├── NestedSlidingUITests
│ ├── Info.plist
│ └── NestedSlidingUITests.swift
├── Podfile
├── Podfile.lock
└── Pods
│ ├── MJRefresh
│ ├── LICENSE
│ ├── MJRefresh
│ │ ├── Base
│ │ │ ├── MJRefreshAutoFooter.h
│ │ │ ├── MJRefreshAutoFooter.m
│ │ │ ├── MJRefreshBackFooter.h
│ │ │ ├── MJRefreshBackFooter.m
│ │ │ ├── MJRefreshComponent.h
│ │ │ ├── MJRefreshComponent.m
│ │ │ ├── MJRefreshFooter.h
│ │ │ ├── MJRefreshFooter.m
│ │ │ ├── MJRefreshHeader.h
│ │ │ └── MJRefreshHeader.m
│ │ ├── Custom
│ │ │ ├── Footer
│ │ │ │ ├── Auto
│ │ │ │ │ ├── MJRefreshAutoGifFooter.h
│ │ │ │ │ ├── MJRefreshAutoGifFooter.m
│ │ │ │ │ ├── MJRefreshAutoNormalFooter.h
│ │ │ │ │ ├── MJRefreshAutoNormalFooter.m
│ │ │ │ │ ├── MJRefreshAutoStateFooter.h
│ │ │ │ │ └── MJRefreshAutoStateFooter.m
│ │ │ │ └── Back
│ │ │ │ │ ├── MJRefreshBackGifFooter.h
│ │ │ │ │ ├── MJRefreshBackGifFooter.m
│ │ │ │ │ ├── MJRefreshBackNormalFooter.h
│ │ │ │ │ ├── MJRefreshBackNormalFooter.m
│ │ │ │ │ ├── MJRefreshBackStateFooter.h
│ │ │ │ │ └── MJRefreshBackStateFooter.m
│ │ │ └── Header
│ │ │ │ ├── MJRefreshGifHeader.h
│ │ │ │ ├── MJRefreshGifHeader.m
│ │ │ │ ├── MJRefreshNormalHeader.h
│ │ │ │ ├── MJRefreshNormalHeader.m
│ │ │ │ ├── MJRefreshStateHeader.h
│ │ │ │ └── MJRefreshStateHeader.m
│ │ ├── MJRefresh.bundle
│ │ │ ├── arrow@2x.png
│ │ │ ├── en.lproj
│ │ │ │ └── Localizable.strings
│ │ │ ├── zh-Hans.lproj
│ │ │ │ └── Localizable.strings
│ │ │ └── zh-Hant.lproj
│ │ │ │ └── Localizable.strings
│ │ ├── MJRefresh.h
│ │ ├── MJRefreshConst.h
│ │ ├── MJRefreshConst.m
│ │ ├── NSBundle+MJRefresh.h
│ │ ├── NSBundle+MJRefresh.m
│ │ ├── UIScrollView+MJExtension.h
│ │ ├── UIScrollView+MJExtension.m
│ │ ├── UIScrollView+MJRefresh.h
│ │ ├── UIScrollView+MJRefresh.m
│ │ ├── UIView+MJExtension.h
│ │ └── UIView+MJExtension.m
│ └── README.md
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ ├── project.pbxproj
│ └── xcuserdata
│ │ └── wangcong.xcuserdatad
│ │ └── xcschemes
│ │ ├── MJRefresh.xcscheme
│ │ ├── Pods-NestedSliding.xcscheme
│ │ ├── Pods-NestedSlidingTests.xcscheme
│ │ ├── Pods-NestedSlidingUITests.xcscheme
│ │ ├── RxCocoa.xcscheme
│ │ ├── RxSwift.xcscheme
│ │ └── xcschememanagement.plist
│ ├── RxCocoa
│ ├── LICENSE.md
│ ├── Platform
│ │ ├── DataStructures
│ │ │ ├── Bag.swift
│ │ │ ├── InfiniteSequence.swift
│ │ │ ├── PriorityQueue.swift
│ │ │ └── Queue.swift
│ │ ├── DeprecationWarner.swift
│ │ ├── DispatchQueue+Extensions.swift
│ │ ├── Platform.Darwin.swift
│ │ ├── Platform.Linux.swift
│ │ └── RecursiveLock.swift
│ ├── README.md
│ └── RxCocoa
│ │ ├── Common
│ │ ├── Binder.swift
│ │ ├── ControlTarget.swift
│ │ ├── DelegateProxy.swift
│ │ ├── DelegateProxyType.swift
│ │ ├── KeyPathBinder.swift
│ │ ├── NSLayoutConstraint+Rx.swift
│ │ ├── Observable+Bind.swift
│ │ ├── RxCocoaObjCRuntimeError+Extensions.swift
│ │ ├── RxTarget.swift
│ │ ├── SectionedViewDataSourceType.swift
│ │ └── TextInput.swift
│ │ ├── Deprecated.swift
│ │ ├── Foundation
│ │ ├── KVORepresentable+CoreGraphics.swift
│ │ ├── KVORepresentable+Swift.swift
│ │ ├── KVORepresentable.swift
│ │ ├── Logging.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
│ │ ├── BehaviorRelay.swift
│ │ ├── ControlEvent.swift
│ │ ├── ControlProperty.swift
│ │ ├── Driver
│ │ │ ├── BehaviorRelay+Driver.swift
│ │ │ ├── ControlEvent+Driver.swift
│ │ │ ├── ControlProperty+Driver.swift
│ │ │ ├── Driver+Subscription.swift
│ │ │ ├── Driver.swift
│ │ │ └── ObservableConvertibleType+Driver.swift
│ │ ├── PublishRelay.swift
│ │ ├── SharedSequence
│ │ │ ├── ObservableConvertibleType+SharedSequence.swift
│ │ │ ├── SchedulerType+SharedSequence.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
│ │ └── RxWebViewDelegateProxy.swift
│ │ ├── UIActivityIndicatorView+Rx.swift
│ │ ├── UIAlertAction+Rx.swift
│ │ ├── UIApplication+Rx.swift
│ │ ├── UIBarButtonItem+Rx.swift
│ │ ├── UIButton+Rx.swift
│ │ ├── UICollectionView+Rx.swift
│ │ ├── UIControl+Rx.swift
│ │ ├── UIDatePicker+Rx.swift
│ │ ├── UIGestureRecognizer+Rx.swift
│ │ ├── UIImageView+Rx.swift
│ │ ├── UILabel+Rx.swift
│ │ ├── UINavigationController+Rx.swift
│ │ ├── UINavigationItem+Rx.swift
│ │ ├── UIPageControl+Rx.swift
│ │ ├── UIPickerView+Rx.swift
│ │ ├── UIProgressView+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
│ │ ├── UITabBarItem+Rx.swift
│ │ ├── UITableView+Rx.swift
│ │ ├── UITextField+Rx.swift
│ │ ├── UITextView+Rx.swift
│ │ ├── UIView+Rx.swift
│ │ ├── UIViewController+Rx.swift
│ │ └── UIWebView+Rx.swift
│ ├── RxSwift
│ ├── LICENSE.md
│ ├── Platform
│ │ ├── DataStructures
│ │ │ ├── Bag.swift
│ │ │ ├── InfiniteSequence.swift
│ │ │ ├── PriorityQueue.swift
│ │ │ └── Queue.swift
│ │ ├── DeprecationWarner.swift
│ │ ├── DispatchQueue+Extensions.swift
│ │ ├── Platform.Darwin.swift
│ │ ├── Platform.Linux.swift
│ │ └── RecursiveLock.swift
│ ├── README.md
│ └── RxSwift
│ │ ├── AnyObserver.swift
│ │ ├── Cancelable.swift
│ │ ├── Concurrency
│ │ ├── AsyncLock.swift
│ │ ├── Lock.swift
│ │ ├── LockOwnerType.swift
│ │ ├── SynchronizedDisposeType.swift
│ │ ├── SynchronizedOnType.swift
│ │ └── SynchronizedUnsubscribeType.swift
│ │ ├── ConnectableObservableType.swift
│ │ ├── Deprecated.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
│ │ └── String+Rx.swift
│ │ ├── GroupedObservable.swift
│ │ ├── ImmediateSchedulerType.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
│ │ ├── Concat.swift
│ │ ├── Create.swift
│ │ ├── Debounce.swift
│ │ ├── Debug.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
│ │ ├── TakeUntil.swift
│ │ ├── TakeWhile.swift
│ │ ├── Throttle.swift
│ │ ├── Timeout.swift
│ │ ├── Timer.swift
│ │ ├── ToArray.swift
│ │ ├── Using.swift
│ │ ├── Window.swift
│ │ ├── WithLatestFrom.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
│ │ ├── Completable+AndThen.swift
│ │ ├── Completable.swift
│ │ ├── Maybe.swift
│ │ ├── ObservableType+PrimitiveSequence.swift
│ │ ├── PrimitiveSequence+Zip+arity.swift
│ │ ├── PrimitiveSequence.swift
│ │ └── Single.swift
│ └── Target Support Files
│ ├── MJRefresh
│ ├── Info.plist
│ ├── MJRefresh-dummy.m
│ ├── MJRefresh-prefix.pch
│ ├── MJRefresh-umbrella.h
│ ├── MJRefresh.modulemap
│ └── MJRefresh.xcconfig
│ ├── Pods-NestedSliding
│ ├── Info.plist
│ ├── Pods-NestedSliding-acknowledgements.markdown
│ ├── Pods-NestedSliding-acknowledgements.plist
│ ├── Pods-NestedSliding-dummy.m
│ ├── Pods-NestedSliding-frameworks.sh
│ ├── Pods-NestedSliding-resources.sh
│ ├── Pods-NestedSliding-umbrella.h
│ ├── Pods-NestedSliding.debug.xcconfig
│ ├── Pods-NestedSliding.modulemap
│ └── Pods-NestedSliding.release.xcconfig
│ ├── Pods-NestedSlidingTests
│ ├── Info.plist
│ ├── Pods-NestedSlidingTests-acknowledgements.markdown
│ ├── Pods-NestedSlidingTests-acknowledgements.plist
│ ├── Pods-NestedSlidingTests-dummy.m
│ ├── Pods-NestedSlidingTests-frameworks.sh
│ ├── Pods-NestedSlidingTests-resources.sh
│ ├── Pods-NestedSlidingTests-umbrella.h
│ ├── Pods-NestedSlidingTests.debug.xcconfig
│ ├── Pods-NestedSlidingTests.modulemap
│ └── Pods-NestedSlidingTests.release.xcconfig
│ ├── Pods-NestedSlidingUITests
│ ├── Info.plist
│ ├── Pods-NestedSlidingUITests-acknowledgements.markdown
│ ├── Pods-NestedSlidingUITests-acknowledgements.plist
│ ├── Pods-NestedSlidingUITests-dummy.m
│ ├── Pods-NestedSlidingUITests-frameworks.sh
│ ├── Pods-NestedSlidingUITests-resources.sh
│ ├── Pods-NestedSlidingUITests-umbrella.h
│ ├── Pods-NestedSlidingUITests.debug.xcconfig
│ ├── Pods-NestedSlidingUITests.modulemap
│ └── Pods-NestedSlidingUITests.release.xcconfig
│ ├── RxCocoa
│ ├── Info.plist
│ ├── RxCocoa-dummy.m
│ ├── RxCocoa-prefix.pch
│ ├── RxCocoa-umbrella.h
│ ├── RxCocoa.modulemap
│ └── RxCocoa.xcconfig
│ └── RxSwift
│ ├── Info.plist
│ ├── RxSwift-dummy.m
│ ├── RxSwift-prefix.pch
│ ├── RxSwift-umbrella.h
│ ├── RxSwift.modulemap
│ └── RxSwift.xcconfig
└── README.md
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 wangcong
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 |
--------------------------------------------------------------------------------
/NestedScrollView.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedScrollView.gif
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding.xcodeproj/project.xcworkspace/xcuserdata/wangcong.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding.xcodeproj/project.xcworkspace/xcuserdata/wangcong.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding.xcodeproj/xcuserdata/wangcong.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | NestedSliding.xcscheme
8 |
9 | orderHint
10 | 6
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding.xcworkspace/xcuserdata/wangcong.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding.xcworkspace/xcuserdata/wangcong.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding.xcworkspace/xcuserdata/wangcong.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
20 |
21 |
22 |
24 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.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" : "ipad",
45 | "size" : "20x20",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "size" : "20x20",
51 | "scale" : "2x"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "size" : "29x29",
56 | "scale" : "1x"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "size" : "29x29",
61 | "scale" : "2x"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "size" : "40x40",
66 | "scale" : "1x"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "size" : "40x40",
71 | "scale" : "2x"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "size" : "76x76",
76 | "scale" : "1x"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "size" : "76x76",
81 | "scale" : "2x"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "size" : "83.5x83.5",
86 | "scale" : "2x"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "size" : "1024x1024",
91 | "scale" : "1x"
92 | }
93 | ],
94 | "info" : {
95 | "version" : 1,
96 | "author" : "xcode"
97 | }
98 | }
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/avatar.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "avatar.jpg",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/avatar.imageset/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding/Assets.xcassets/avatar.imageset/avatar.jpg
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/cellhead.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "cellhead.jpg",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/cellhead.imageset/cellhead.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding/Assets.xcassets/cellhead.imageset/cellhead.jpg
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "close@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "close@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/close.imageset/close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding/Assets.xcassets/close.imageset/close@2x.png
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/close.imageset/close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding/Assets.xcassets/close.imageset/close@3x.png
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/close_white.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "close_white@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "close_white@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/close_white.imageset/close_white@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding/Assets.xcassets/close_white.imageset/close_white@2x.png
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/close_white.imageset/close_white@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding/Assets.xcassets/close_white.imageset/close_white@3x.png
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/header.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "header@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "header@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/header.imageset/header@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding/Assets.xcassets/header.imageset/header@2x.png
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Assets.xcassets/header.imageset/header@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/NestedSliding/Assets.xcassets/header.imageset/header@3x.png
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(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 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIMainStoryboardFile
26 | Main
27 | UIRequiredDeviceCapabilities
28 |
29 | armv7
30 |
31 | UISupportedInterfaceOrientations
32 |
33 | UIInterfaceOrientationPortrait
34 | UIInterfaceOrientationLandscapeLeft
35 | UIInterfaceOrientationLandscapeRight
36 |
37 | UISupportedInterfaceOrientations~ipad
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationPortraitUpsideDown
41 | UIInterfaceOrientationLandscapeLeft
42 | UIInterfaceOrientationLandscapeRight
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/View/HeaderView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HeaderView.swift
3 | // NestedSliding
4 | //
5 | // Created by wangcong on 2018/9/7.
6 | // Copyright © 2018年 wangcong. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class HeaderView: UIView {
12 |
13 | static let defaultHeight: CGFloat = 240
14 |
15 |
16 | @IBOutlet weak var closeButton: UIButton!
17 | @IBOutlet weak var titleLabel: UILabel!
18 | @IBOutlet weak var avatar: UIImageView!
19 | @IBOutlet weak var navBar: UIView!
20 |
21 | @IBOutlet weak var heightNavBar: NSLayoutConstraint!
22 |
23 | static let instance = Bundle.main.loadNibNamed("HeaderView", owner: nil, options: nil)?.first as? HeaderView
24 |
25 | override func awakeFromNib() {
26 | super.awakeFromNib()
27 | avatar.layer.cornerRadius = 10
28 | heightNavBar.constant = UIScreen.naviBarHeight
29 | }
30 |
31 | func updateUI() {
32 |
33 | let change = HeaderView.defaultHeight - height
34 | let navBarDelta: CGFloat = _validRange(height: change, max: HeaderView.defaultHeight - UIScreen.naviBarHeight)
35 | navBar.backgroundColor = UIColor.white.withAlphaComponent(navBarDelta)
36 | if navBarDelta >= 0.9 {
37 | closeButton.setImage(UIImage(named: "close"), for: .normal)
38 | titleLabel.textColor = UIColor.darkText
39 | } else {
40 | closeButton.setImage(UIImage(named: "close_white"), for: .normal)
41 | titleLabel.textColor = UIColor.white
42 | }
43 | }
44 |
45 | private func _validRange(height: CGFloat, max: CGFloat) -> CGFloat {
46 | let ratio = height / max
47 |
48 | if ratio > 1 {
49 | return 1
50 | } else if ratio < 0 {
51 | return 0
52 | }
53 |
54 | return ratio
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/View/NestedSlidingTableViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NestedSlidingTableViewCell.swift
3 | // NestedSliding
4 | //
5 | // Created by wangcong on 2018/9/8.
6 | // Copyright © 2018年 wangcong. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class NestedSlidingTableViewCell: UITableViewCell {
12 |
13 | @IBOutlet weak var label: UILabel!
14 | override func awakeFromNib() {
15 | super.awakeFromNib()
16 | // Initialization code
17 | }
18 |
19 | override func setSelected(_ selected: Bool, animated: Bool) {
20 | super.setSelected(selected, animated: animated)
21 |
22 | // Configure the view for the selected state
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/View/OtherView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // OtherView.swift
3 | // NestedSliding
4 | //
5 | // Created by wangcong on 2018/9/9.
6 | // Copyright © 2018年 wangcong. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | class OtherView: UIView {
12 |
13 | static let defaultHeight: CGFloat = 90
14 |
15 | @IBOutlet weak var scrollView: UIScrollView!
16 |
17 | static let instance = Bundle.main.loadNibNamed("OtherView", owner: nil, options: nil)?.first as? OtherView
18 |
19 | override func awakeFromNib() {
20 | super.awakeFromNib()
21 |
22 | scrollView.contentSize = CGSize(width: 800, height: OtherView.defaultHeight)
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/View/SegmentView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SegmentView.swift
3 | // NestedSliding
4 | //
5 | // Created by wangcong on 2018/9/7.
6 | // Copyright © 2018年 wangcong. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | // 这里是个demo,就简单实现一下
12 | class SegmentView: UIView {
13 |
14 | @IBOutlet weak var label0: UILabel!
15 | @IBOutlet weak var label1: UILabel!
16 | @IBOutlet weak var label2: UILabel!
17 | @IBOutlet weak var label3: UILabel!
18 |
19 | private var labels: [UILabel] = []
20 |
21 | static let instance = Bundle.main.loadNibNamed("SegmentView", owner: nil, options: nil)?.first as? SegmentView
22 |
23 | override func awakeFromNib() {
24 | super.awakeFromNib()
25 | labels.append(label0)
26 | labels.append(label1)
27 | labels.append(label2)
28 | labels.append(label3)
29 | highlight(index: 0)
30 | }
31 |
32 | func highlight(index: Int) {
33 | for (i, label) in labels.enumerated() {
34 | label.textColor = i == index ? UIColor.red : UIColor.lightGray
35 | }
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSliding/View/UIScreen+Extension.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIScreen+Extension.swift
3 | // NestedSliding
4 | //
5 | // Created by wangcong on 2018/9/7.
6 | // Copyright © 2018年 wangcong. All rights reserved.
7 | //
8 |
9 | import UIKit
10 |
11 | extension UIScreen {
12 |
13 | static var width: CGFloat {
14 | get {
15 | return UIScreen.main.bounds.size.width
16 | }
17 | }
18 |
19 | static var height: CGFloat {
20 | get {
21 | return UIScreen.main.bounds.size.height
22 | }
23 | }
24 |
25 | static var size: CGSize {
26 | get {
27 | return UIScreen.main.bounds.size
28 | }
29 | }
30 |
31 | static func isIpone4_5() -> Bool {
32 | return UIScreen.width == 320 ? true : false
33 | }
34 |
35 | static func isIpone6_7() -> Bool {
36 | return UIScreen.width == 375 ? true : false
37 | }
38 |
39 | static func isIpone6_7_Plus() -> Bool {
40 | return UIScreen.width == 414 ? true : false
41 | }
42 |
43 | static func isIphoneX() -> Bool {
44 | let height = UIScreen.main.bounds.size.height
45 | return height >= 737 && height <= 812
46 | }
47 |
48 | static var statusBarHeight: CGFloat {
49 | get {
50 | return isIphoneX() ? 44 : 20
51 | }
52 | }
53 |
54 | static var naviBarHeight:CGFloat {
55 | get {
56 | return isIphoneX() ? 88 : 64
57 | }
58 | }
59 |
60 | static var tabBarHeight:CGFloat {
61 | get {
62 | return isIphoneX() ? 83 : 49
63 | }
64 | }
65 |
66 | static var homeIndicatorMoreHeight:CGFloat {
67 | get {
68 | return isIphoneX() ? 34 : 0
69 | }
70 | }
71 |
72 | static var statusBarMoreHeight:CGFloat {
73 | get {
74 | return isIphoneX() ? 24 : 0
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSlidingTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(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 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSlidingTests/NestedSlidingTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NestedSlidingTests.swift
3 | // NestedSlidingTests
4 | //
5 | // Created by wangcong on 2018/9/7.
6 | // Copyright © 2018年 wangcong. All rights reserved.
7 | //
8 |
9 | import XCTest
10 | @testable import NestedSliding
11 |
12 | class NestedSlidingTests: XCTestCase {
13 |
14 | override func setUp() {
15 | super.setUp()
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 | }
18 |
19 | override func tearDown() {
20 | // Put teardown code here. This method is called after the invocation of each test method in the class.
21 | super.tearDown()
22 | }
23 |
24 | func testExample() {
25 | // This is an example of a functional test case.
26 | // Use XCTAssert and related functions to verify your tests produce the correct results.
27 | }
28 |
29 | func testPerformanceExample() {
30 | // This is an example of a performance test case.
31 | self.measure {
32 | // Put the code you want to measure the time of here.
33 | }
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSlidingUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(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 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/NestedSliding/NestedSlidingUITests/NestedSlidingUITests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NestedSlidingUITests.swift
3 | // NestedSlidingUITests
4 | //
5 | // Created by wangcong on 2018/9/7.
6 | // Copyright © 2018年 wangcong. All rights reserved.
7 | //
8 |
9 | import XCTest
10 |
11 | class NestedSlidingUITests: XCTestCase {
12 |
13 | override func setUp() {
14 | super.setUp()
15 |
16 | // Put setup code here. This method is called before the invocation of each test method in the class.
17 |
18 | // In UI tests it is usually best to stop immediately when a failure occurs.
19 | continueAfterFailure = false
20 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
21 | XCUIApplication().launch()
22 |
23 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
24 | }
25 |
26 | override func tearDown() {
27 | // Put teardown code here. This method is called after the invocation of each test method in the class.
28 | super.tearDown()
29 | }
30 |
31 | func testExample() {
32 | // Use recording to get started writing UI tests.
33 | // Use XCTAssert and related functions to verify your tests produce the correct results.
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/NestedSliding/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'NestedSliding' do
5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
6 | use_frameworks!
7 |
8 | # Pods for NestedSliding
9 | pod 'MJRefresh'
10 | pod 'RxSwift'
11 | pod 'RxCocoa'
12 |
13 | target 'NestedSlidingTests' do
14 | inherit! :search_paths
15 | # Pods for testing
16 | end
17 |
18 | target 'NestedSlidingUITests' do
19 | inherit! :search_paths
20 | # Pods for testing
21 | end
22 |
23 | end
24 |
--------------------------------------------------------------------------------
/NestedSliding/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - MJRefresh (3.1.15.3)
3 | - RxCocoa (4.2.0):
4 | - RxSwift (~> 4.0)
5 | - RxSwift (4.2.0)
6 |
7 | DEPENDENCIES:
8 | - MJRefresh
9 | - RxCocoa
10 | - RxSwift
11 |
12 | SPEC REPOS:
13 | https://github.com/cocoapods/specs.git:
14 | - MJRefresh
15 | - RxCocoa
16 | - RxSwift
17 |
18 | SPEC CHECKSUMS:
19 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7
20 | RxCocoa: 0b54909c902e1e581212a03e690bbd94032d8baa
21 | RxSwift: 99e10317ddfcc7fbe01356aafd118fde4a0be104
22 |
23 | PODFILE CHECKSUM: 13225f0f911a96d3b129f03e4d87e8019eaaeba3
24 |
25 | COCOAPODS: 1.5.3
26 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2015 MJRefresh (https://github.com/CoderMJLee/MJRefresh)
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Base/MJRefreshAutoFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshFooter.h"
10 |
11 | @interface MJRefreshAutoFooter : MJRefreshFooter
12 | /** 是否自动刷新(默认为YES) */
13 | @property (assign, nonatomic, getter=isAutomaticallyRefresh) BOOL automaticallyRefresh;
14 |
15 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
16 | @property (assign, nonatomic) CGFloat appearencePercentTriggerAutoRefresh MJRefreshDeprecated("请使用triggerAutomaticallyRefreshPercent属性");
17 |
18 | /** 当底部控件出现多少时就自动刷新(默认为1.0,也就是底部控件完全出现时,才会自动刷新) */
19 | @property (assign, nonatomic) CGFloat triggerAutomaticallyRefreshPercent;
20 |
21 | /** 是否每一次拖拽只发一次请求 */
22 | @property (assign, nonatomic, getter=isOnlyRefreshPerDrag) BOOL onlyRefreshPerDrag;
23 | @end
24 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Base/MJRefreshBackFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshFooter.h"
10 |
11 | @interface MJRefreshBackFooter : MJRefreshFooter
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Base/MJRefreshFooter.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshFooter.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/5.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 上拉刷新控件
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | @interface MJRefreshFooter : MJRefreshComponent
13 | /** 创建footer */
14 | + (instancetype)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
15 | /** 创建footer */
16 | + (instancetype)footerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
17 |
18 | /** 提示没有更多的数据 */
19 | - (void)endRefreshingWithNoMoreData;
20 | - (void)noticeNoMoreData MJRefreshDeprecated("使用endRefreshingWithNoMoreData");
21 |
22 | /** 重置没有更多的数据(消除没有更多数据的状态) */
23 | - (void)resetNoMoreData;
24 |
25 | /** 忽略多少scrollView的contentInset的bottom */
26 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetBottom;
27 |
28 | /** 自动根据有无数据来显示和隐藏(有数据就显示,没有数据隐藏。默认是NO) */
29 | @property (assign, nonatomic, getter=isAutomaticallyHidden) BOOL automaticallyHidden MJRefreshDeprecated("不建议使用此属性,开发者请自行控制footer的显示和隐藏。基于安全考虑,在未来的某些版本此属性可能作废");
30 | @end
31 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Base/MJRefreshHeader.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // MJRefreshHeader.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 下拉刷新控件:负责监控用户下拉的状态
9 |
10 | #import "MJRefreshComponent.h"
11 |
12 | @interface MJRefreshHeader : MJRefreshComponent
13 | /** 创建header */
14 | + (instancetype)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock;
15 | /** 创建header */
16 | + (instancetype)headerWithRefreshingTarget:(id)target refreshingAction:(SEL)action;
17 |
18 | /** 这个key用来存储上一次下拉刷新成功的时间 */
19 | @property (copy, nonatomic) NSString *lastUpdatedTimeKey;
20 | /** 上一次下拉刷新成功的时间 */
21 | @property (strong, nonatomic, readonly) NSDate *lastUpdatedTime;
22 |
23 | /** 忽略多少scrollView的contentInset的top */
24 | @property (assign, nonatomic) CGFloat ignoredScrollViewContentInsetTop;
25 | @end
26 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoGifFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | @interface MJRefreshAutoGifFooter : MJRefreshAutoStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoNormalFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoStateFooter.h"
10 |
11 | @interface MJRefreshAutoNormalFooter : MJRefreshAutoStateFooter
12 | /** 菊花的样式 */
13 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
14 | @end
15 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshAutoStateFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshAutoFooter.h"
10 |
11 | @interface MJRefreshAutoStateFooter : MJRefreshAutoFooter
12 | /** 文字距离圈圈、箭头的距离 */
13 | @property (assign, nonatomic) CGFloat labelLeftInset;
14 | /** 显示刷新状态的label */
15 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
16 |
17 | /** 设置state状态下的文字 */
18 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
19 |
20 | /** 隐藏刷新状态的文字 */
21 | @property (assign, nonatomic, getter=isRefreshingTitleHidden) BOOL refreshingTitleHidden;
22 | @end
23 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackGifFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | @interface MJRefreshBackGifFooter : MJRefreshBackStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackNormalFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackStateFooter.h"
10 |
11 | @interface MJRefreshBackNormalFooter : MJRefreshBackStateFooter
12 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
13 | /** 菊花的样式 */
14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
15 | @end
16 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshBackStateFooter.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/6/13.
6 | // Copyright © 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshBackFooter.h"
10 |
11 | @interface MJRefreshBackStateFooter : MJRefreshBackFooter
12 | /** 文字距离圈圈、箭头的距离 */
13 | @property (assign, nonatomic) CGFloat labelLeftInset;
14 | /** 显示刷新状态的label */
15 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
16 | /** 设置state状态下的文字 */
17 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
18 |
19 | /** 获取state状态下的title */
20 | - (NSString *)titleForState:(MJRefreshState)state;
21 | @end
22 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshGifHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshGifHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshStateHeader.h"
10 |
11 | @interface MJRefreshGifHeader : MJRefreshStateHeader
12 | @property (weak, nonatomic, readonly) UIImageView *gifView;
13 |
14 | /** 设置state状态下的动画图片images 动画持续时间duration*/
15 | - (void)setImages:(NSArray *)images duration:(NSTimeInterval)duration forState:(MJRefreshState)state;
16 | - (void)setImages:(NSArray *)images forState:(MJRefreshState)state;
17 | @end
18 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshNormalHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshNormalHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshStateHeader.h"
10 |
11 | @interface MJRefreshNormalHeader : MJRefreshStateHeader
12 | @property (weak, nonatomic, readonly) UIImageView *arrowView;
13 | /** 菊花的样式 */
14 | @property (assign, nonatomic) UIActivityIndicatorViewStyle activityIndicatorViewStyle;
15 | @end
16 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/Custom/Header/MJRefreshStateHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // MJRefreshStateHeader.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 15/4/24.
6 | // Copyright (c) 2015年 小码哥. All rights reserved.
7 | //
8 |
9 | #import "MJRefreshHeader.h"
10 |
11 | @interface MJRefreshStateHeader : MJRefreshHeader
12 | #pragma mark - 刷新时间相关
13 | /** 利用这个block来决定显示的更新时间文字 */
14 | @property (copy, nonatomic) NSString *(^lastUpdatedTimeText)(NSDate *lastUpdatedTime);
15 | /** 显示上一次刷新时间的label */
16 | @property (weak, nonatomic, readonly) UILabel *lastUpdatedTimeLabel;
17 |
18 | #pragma mark - 状态相关
19 | /** 文字距离圈圈、箭头的距离 */
20 | @property (assign, nonatomic) CGFloat labelLeftInset;
21 | /** 显示刷新状态的label */
22 | @property (weak, nonatomic, readonly) UILabel *stateLabel;
23 | /** 设置state状态下的文字 */
24 | - (void)setTitle:(NSString *)title forState:(MJRefreshState)state;
25 | @end
26 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/arrow@2x.png
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/en.lproj/Localizable.strings
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ApterKing/NestedScrollView/4fa2abdb588fa69cf267d8617e893cd6c9c8604f/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hans.lproj/Localizable.strings
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefresh.bundle/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | "MJRefreshHeaderIdleText" = "下拉可以刷新";
2 | "MJRefreshHeaderPullingText" = "鬆開立即刷新";
3 | "MJRefreshHeaderRefreshingText" = "正在刷新數據中...";
4 |
5 | "MJRefreshAutoFooterIdleText" = "點擊或上拉加載更多";
6 | "MJRefreshAutoFooterRefreshingText" = "正在加載更多的數據...";
7 | "MJRefreshAutoFooterNoMoreDataText" = "已經全部加載完畢";
8 |
9 | "MJRefreshBackFooterIdleText" = "上拉可以加載更多";
10 | "MJRefreshBackFooterPullingText" = "鬆開立即加載更多";
11 | "MJRefreshBackFooterRefreshingText" = "正在加載更多的數據...";
12 | "MJRefreshBackFooterNoMoreDataText" = "已經全部加載完畢";
13 |
14 | "MJRefreshHeaderLastTimeText" = "最後更新:";
15 | "MJRefreshHeaderDateTodayText" = "今天";
16 | "MJRefreshHeaderNoneLastDateText" = "無記錄";
17 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefresh.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 |
4 | #import "UIScrollView+MJRefresh.h"
5 | #import "UIScrollView+MJExtension.h"
6 | #import "UIView+MJExtension.h"
7 |
8 | #import "MJRefreshNormalHeader.h"
9 | #import "MJRefreshGifHeader.h"
10 |
11 | #import "MJRefreshBackNormalFooter.h"
12 | #import "MJRefreshBackGifFooter.h"
13 | #import "MJRefreshAutoNormalFooter.h"
14 | #import "MJRefreshAutoGifFooter.h"
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/MJRefreshConst.m:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | #import
4 |
5 | const CGFloat MJRefreshLabelLeftInset = 25;
6 | const CGFloat MJRefreshHeaderHeight = 54.0;
7 | const CGFloat MJRefreshFooterHeight = 44.0;
8 | const CGFloat MJRefreshFastAnimationDuration = 0.25;
9 | const CGFloat MJRefreshSlowAnimationDuration = 0.4;
10 |
11 | NSString *const MJRefreshKeyPathContentOffset = @"contentOffset";
12 | NSString *const MJRefreshKeyPathContentInset = @"contentInset";
13 | NSString *const MJRefreshKeyPathContentSize = @"contentSize";
14 | NSString *const MJRefreshKeyPathPanState = @"state";
15 |
16 | NSString *const MJRefreshHeaderLastUpdatedTimeKey = @"MJRefreshHeaderLastUpdatedTimeKey";
17 |
18 | NSString *const MJRefreshHeaderIdleText = @"MJRefreshHeaderIdleText";
19 | NSString *const MJRefreshHeaderPullingText = @"MJRefreshHeaderPullingText";
20 | NSString *const MJRefreshHeaderRefreshingText = @"MJRefreshHeaderRefreshingText";
21 |
22 | NSString *const MJRefreshAutoFooterIdleText = @"MJRefreshAutoFooterIdleText";
23 | NSString *const MJRefreshAutoFooterRefreshingText = @"MJRefreshAutoFooterRefreshingText";
24 | NSString *const MJRefreshAutoFooterNoMoreDataText = @"MJRefreshAutoFooterNoMoreDataText";
25 |
26 | NSString *const MJRefreshBackFooterIdleText = @"MJRefreshBackFooterIdleText";
27 | NSString *const MJRefreshBackFooterPullingText = @"MJRefreshBackFooterPullingText";
28 | NSString *const MJRefreshBackFooterRefreshingText = @"MJRefreshBackFooterRefreshingText";
29 | NSString *const MJRefreshBackFooterNoMoreDataText = @"MJRefreshBackFooterNoMoreDataText";
30 |
31 | NSString *const MJRefreshHeaderLastTimeText = @"MJRefreshHeaderLastTimeText";
32 | NSString *const MJRefreshHeaderDateTodayText = @"MJRefreshHeaderDateTodayText";
33 | NSString *const MJRefreshHeaderNoneLastDateText = @"MJRefreshHeaderNoneLastDateText";
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/NSBundle+MJRefresh.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSBundle+MJRefresh.h
3 | // MJRefreshExample
4 | //
5 | // Created by MJ Lee on 16/6/13.
6 | // Copyright © 2016年 小码哥. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface NSBundle (MJRefresh)
12 | + (instancetype)mj_refreshBundle;
13 | + (UIImage *)mj_arrowImage;
14 | + (NSString *)mj_localizedStringForKey:(NSString *)key value:(NSString *)value;
15 | + (NSString *)mj_localizedStringForKey:(NSString *)key;
16 | @end
17 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/UIScrollView+MJExtension.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+Extension.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | @interface UIScrollView (MJExtension)
13 | @property (readonly, nonatomic) UIEdgeInsets mj_inset;
14 |
15 | @property (assign, nonatomic) CGFloat mj_insetT;
16 | @property (assign, nonatomic) CGFloat mj_insetB;
17 | @property (assign, nonatomic) CGFloat mj_insetL;
18 | @property (assign, nonatomic) CGFloat mj_insetR;
19 |
20 | @property (assign, nonatomic) CGFloat mj_offsetX;
21 | @property (assign, nonatomic) CGFloat mj_offsetY;
22 |
23 | @property (assign, nonatomic) CGFloat mj_contentW;
24 | @property (assign, nonatomic) CGFloat mj_contentH;
25 | @end
26 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/UIScrollView+MJRefresh.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIScrollView+MJRefresh.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 15/3/4.
7 | // Copyright (c) 2015年 小码哥. All rights reserved.
8 | // 给ScrollView增加下拉刷新、上拉刷新的功能
9 |
10 | #import
11 | #import "MJRefreshConst.h"
12 |
13 | @class MJRefreshHeader, MJRefreshFooter;
14 |
15 | @interface UIScrollView (MJRefresh)
16 | /** 下拉刷新控件 */
17 | @property (strong, nonatomic) MJRefreshHeader *mj_header;
18 | @property (strong, nonatomic) MJRefreshHeader *header MJRefreshDeprecated("使用mj_header");
19 | /** 上拉刷新控件 */
20 | @property (strong, nonatomic) MJRefreshFooter *mj_footer;
21 | @property (strong, nonatomic) MJRefreshFooter *footer MJRefreshDeprecated("使用mj_footer");
22 |
23 | #pragma mark - other
24 | - (NSInteger)mj_totalDataCount;
25 | @property (copy, nonatomic) void (^mj_reloadDataBlock)(NSInteger totalDataCount);
26 | @end
27 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/UIView+MJExtension.h:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIView+Extension.h
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import
11 |
12 | @interface UIView (MJExtension)
13 | @property (assign, nonatomic) CGFloat mj_x;
14 | @property (assign, nonatomic) CGFloat mj_y;
15 | @property (assign, nonatomic) CGFloat mj_w;
16 | @property (assign, nonatomic) CGFloat mj_h;
17 | @property (assign, nonatomic) CGSize mj_size;
18 | @property (assign, nonatomic) CGPoint mj_origin;
19 | @end
20 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/MJRefresh/MJRefresh/UIView+MJExtension.m:
--------------------------------------------------------------------------------
1 | // 代码地址: https://github.com/CoderMJLee/MJRefresh
2 | // 代码地址: http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6%8B%89%E4%B8%8A%E6%8B%89%E5%88%B7%E6%96%B0/52326ce26803fabc46000000
3 | // UIView+Extension.m
4 | // MJRefreshExample
5 | //
6 | // Created by MJ Lee on 14-5-28.
7 | // Copyright (c) 2014年 小码哥. All rights reserved.
8 | //
9 |
10 | #import "UIView+MJExtension.h"
11 |
12 | @implementation UIView (MJExtension)
13 | - (void)setMj_x:(CGFloat)mj_x
14 | {
15 | CGRect frame = self.frame;
16 | frame.origin.x = mj_x;
17 | self.frame = frame;
18 | }
19 |
20 | - (CGFloat)mj_x
21 | {
22 | return self.frame.origin.x;
23 | }
24 |
25 | - (void)setMj_y:(CGFloat)mj_y
26 | {
27 | CGRect frame = self.frame;
28 | frame.origin.y = mj_y;
29 | self.frame = frame;
30 | }
31 |
32 | - (CGFloat)mj_y
33 | {
34 | return self.frame.origin.y;
35 | }
36 |
37 | - (void)setMj_w:(CGFloat)mj_w
38 | {
39 | CGRect frame = self.frame;
40 | frame.size.width = mj_w;
41 | self.frame = frame;
42 | }
43 |
44 | - (CGFloat)mj_w
45 | {
46 | return self.frame.size.width;
47 | }
48 |
49 | - (void)setMj_h:(CGFloat)mj_h
50 | {
51 | CGRect frame = self.frame;
52 | frame.size.height = mj_h;
53 | self.frame = frame;
54 | }
55 |
56 | - (CGFloat)mj_h
57 | {
58 | return self.frame.size.height;
59 | }
60 |
61 | - (void)setMj_size:(CGSize)mj_size
62 | {
63 | CGRect frame = self.frame;
64 | frame.size = mj_size;
65 | self.frame = frame;
66 | }
67 |
68 | - (CGSize)mj_size
69 | {
70 | return self.frame.size;
71 | }
72 |
73 | - (void)setMj_origin:(CGPoint)mj_origin
74 | {
75 | CGRect frame = self.frame;
76 | frame.origin = mj_origin;
77 | self.frame = frame;
78 | }
79 |
80 | - (CGPoint)mj_origin
81 | {
82 | return self.frame.origin;
83 | }
84 | @end
85 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - MJRefresh (3.1.15.3)
3 | - RxCocoa (4.2.0):
4 | - RxSwift (~> 4.0)
5 | - RxSwift (4.2.0)
6 |
7 | DEPENDENCIES:
8 | - MJRefresh
9 | - RxCocoa
10 | - RxSwift
11 |
12 | SPEC REPOS:
13 | https://github.com/cocoapods/specs.git:
14 | - MJRefresh
15 | - RxCocoa
16 | - RxSwift
17 |
18 | SPEC CHECKSUMS:
19 | MJRefresh: b48380ae2b927b46c4ef000de9adb8dc748e1df7
20 | RxCocoa: 0b54909c902e1e581212a03e690bbd94032d8baa
21 | RxSwift: 99e10317ddfcc7fbe01356aafd118fde4a0be104
22 |
23 | PODFILE CHECKSUM: 13225f0f911a96d3b129f03e4d87e8019eaaeba3
24 |
25 | COCOAPODS: 1.5.3
26 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Pods.xcodeproj/xcuserdata/wangcong.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | MJRefresh.xcscheme
8 |
9 | isShown
10 |
11 | orderHint
12 | 0
13 |
14 | Pods-NestedSliding.xcscheme
15 |
16 | isShown
17 |
18 | orderHint
19 | 1
20 |
21 | Pods-NestedSlidingTests.xcscheme
22 |
23 | isShown
24 |
25 | orderHint
26 | 2
27 |
28 | Pods-NestedSlidingUITests.xcscheme
29 |
30 | isShown
31 |
32 | orderHint
33 | 3
34 |
35 | RxCocoa.xcscheme
36 |
37 | isShown
38 |
39 | orderHint
40 | 4
41 |
42 | RxSwift.xcscheme
43 |
44 | isShown
45 |
46 | orderHint
47 | 5
48 |
49 |
50 | SuppressBuildableAutocreation
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/LICENSE.md:
--------------------------------------------------------------------------------
1 | **The MIT License**
2 | **Copyright © 2015 Krunoslav Zaher**
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.
--------------------------------------------------------------------------------
/NestedSliding/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 Element = E
12 | typealias Iterator = AnyIterator
13 |
14 | private let _repeatedValue: E
15 |
16 | init(repeatedValue: E) {
17 | _repeatedValue = repeatedValue
18 | }
19 |
20 | func makeIterator() -> Iterator {
21 | let repeatedValue = _repeatedValue
22 | return AnyIterator {
23 | return repeatedValue
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/Platform/DeprecationWarner.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DeprecationWarner.swift
3 | // Platform
4 | //
5 | // Created by Shai Mishali on 1/9/18.
6 | // Copyright © 2018 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | #if DEBUG
12 | class DeprecationWarner {
13 | private static var warned = Set()
14 | private static var _lock = NSRecursiveLock()
15 |
16 | static func warnIfNeeded(_ kind: Kind) {
17 | _lock.lock(); defer { _lock.unlock() }
18 | guard !warned.contains(kind) else { return }
19 |
20 | warned.insert(kind)
21 | print("ℹ️ [DEPRECATED] \(kind.message)")
22 | }
23 | }
24 |
25 | extension DeprecationWarner {
26 | enum Kind {
27 | case variable
28 | case globalTestFunctionNext
29 | case globalTestFunctionError
30 | case globalTestFunctionCompleted
31 |
32 | var message: String {
33 | switch self {
34 | case .variable: return "`Variable` is planned for future deprecation. Please consider `BehaviorRelay` as a replacement. Read more at: https://git.io/vNqvx"
35 | case .globalTestFunctionNext: return "The `next()` global function is planned for future deprecation. Please use `Recorded.next()` instead."
36 | case .globalTestFunctionError: return "The `error()` global function is planned for future deprecation. Please use `Recorded.error()` instead."
37 | case .globalTestFunctionCompleted: return "The `completed()` global function is planned for future deprecation. Please use `Recorded.completed()` instead."
38 | }
39 | }
40 | }
41 | }
42 | #endif
43 |
44 |
--------------------------------------------------------------------------------
/NestedSliding/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 | return DispatchQueue.getSpecific(key: token) != nil
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/NestedSliding/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 class Foundation.NSRecursiveLock
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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Common/KeyPathBinder.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KeyPathBinder.swift
3 | // RxCocoa
4 | //
5 | // Created by Ryo Aoyama on 2/7/18.
6 | // Copyright © 2018 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if swift(>=3.2)
10 | import RxSwift
11 |
12 | extension Reactive where Base: AnyObject {
13 |
14 | /// Bindable sink for arbitrary property using the given key path.
15 | /// Binding runs on the MainScheduler.
16 | ///
17 | /// - parameter keyPath: Key path to write to the property.
18 | public subscript(keyPath: ReferenceWritableKeyPath) -> Binder {
19 | return Binder(self.base) { base, value in
20 | base[keyPath: keyPath] = value
21 | }
22 | }
23 |
24 | /// Bindable sink for arbitrary property using the given key path.
25 | /// Binding runs on the specified scheduler.
26 | ///
27 | /// - parameter keyPath: Key path to write to the property.
28 | /// - parameter scheduler: Scheduler to run bindings on.
29 | public subscript(keyPath: ReferenceWritableKeyPath, on scheduler: ImmediateSchedulerType) -> Binder {
30 | return Binder(self.base, scheduler: scheduler) { base, value in
31 | base[keyPath: keyPath] = value
32 | }
33 | }
34 |
35 | }
36 | #endif
37 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Common/NSLayoutConstraint+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSLayoutConstraint+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(Linux)
10 |
11 | #if os(macOS)
12 | import Cocoa
13 | #else
14 | import UIKit
15 | #endif
16 |
17 | import RxSwift
18 |
19 | #if os(iOS) || os(macOS) || os(tvOS)
20 | extension Reactive where Base: NSLayoutConstraint {
21 | /// Bindable sink for `constant` property.
22 | public var constant: Binder {
23 | return Binder(self.base) { constraint, constant in
24 | constraint.constant = constant
25 | }
26 | }
27 |
28 | /// Bindable sink for `active` property.
29 | @available(iOS 8, OSX 10.10, *)
30 | public var active: Binder {
31 | return Binder(self.base) { constraint, value in
32 | constraint.isActive = value
33 | }
34 | }
35 | }
36 |
37 | #endif
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/NestedSliding/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 class Foundation.NSObject
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.ensureExecutingOnScheduler()
28 | #endif
29 | }
30 |
31 | func dispose() {
32 | #if DEBUG
33 | MainScheduler.ensureExecutingOnScheduler()
34 | #endif
35 | self.retainSelf = nil
36 | }
37 |
38 | #if TRACE_RESOURCES
39 | deinit {
40 | _ = Resources.decrementTotal()
41 | }
42 | #endif
43 | }
44 |
--------------------------------------------------------------------------------
/NestedSliding/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 struct Foundation.IndexPath
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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KVORepresentable+CoreGraphics.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 11/14/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if !os(Linux)
10 |
11 | import RxSwift
12 | import CoreGraphics
13 |
14 | import class Foundation.NSValue
15 |
16 | #if arch(x86_64) || arch(arm64)
17 | let CGRectType = "{CGRect={CGPoint=dd}{CGSize=dd}}"
18 | let CGSizeType = "{CGSize=dd}"
19 | let CGPointType = "{CGPoint=dd}"
20 | #elseif arch(i386) || arch(arm)
21 | let CGRectType = "{CGRect={CGPoint=ff}{CGSize=ff}}"
22 | let CGSizeType = "{CGSize=ff}"
23 | let CGPointType = "{CGPoint=ff}"
24 | #endif
25 |
26 | extension CGRect : KVORepresentable {
27 | public typealias KVOType = NSValue
28 |
29 | /// Constructs self from `NSValue`.
30 | public init?(KVOValue: KVOType) {
31 | if strcmp(KVOValue.objCType, CGRectType) != 0 {
32 | return nil
33 | }
34 | var typedValue = CGRect(x: 0, y: 0, width: 0, height: 0)
35 | KVOValue.getValue(&typedValue)
36 | self = typedValue
37 | }
38 | }
39 |
40 | extension CGPoint : KVORepresentable {
41 | public typealias KVOType = NSValue
42 |
43 | /// Constructs self from `NSValue`.
44 | public init?(KVOValue: KVOType) {
45 | if strcmp(KVOValue.objCType, CGPointType) != 0 {
46 | return nil
47 | }
48 | var typedValue = CGPoint(x: 0, y: 0)
49 | KVOValue.getValue(&typedValue)
50 | self = typedValue
51 | }
52 | }
53 |
54 | extension CGSize : KVORepresentable {
55 | public typealias KVOType = NSValue
56 |
57 | /// Constructs self from `NSValue`.
58 | public init?(KVOValue: KVOType) {
59 | if strcmp(KVOValue.objCType, CGSizeType) != 0 {
60 | return nil
61 | }
62 | var typedValue = CGSize(width: 0, height: 0)
63 | KVOValue.getValue(&typedValue)
64 | self = typedValue
65 | }
66 | }
67 |
68 | #endif
69 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Foundation/Logging.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Logging.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/3/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import struct Foundation.URLRequest
10 |
11 | /// Simple logging settings for RxCocoa library.
12 | public struct Logging {
13 | public typealias LogURLRequest = (URLRequest) -> Bool
14 |
15 | /// Log URL requests to standard output in curl format.
16 | public static var URLRequests: LogURLRequest = { _ in
17 | #if DEBUG
18 | return true
19 | #else
20 | return false
21 | #endif
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Foundation/NSObject+Rx+RawRepresentable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+Rx+RawRepresentable.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 11/9/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if !os(Linux)
10 |
11 | import RxSwift
12 |
13 | import Foundation.NSObject
14 |
15 | extension Reactive where Base: NSObject {
16 | /**
17 | Specialization of generic `observe` method.
18 |
19 | This specialization first observes `KVORepresentable` value and then converts it to `RawRepresentable` value.
20 |
21 | It is useful for observing bridged ObjC enum values.
22 |
23 | For more information take a look at `observe` method.
24 | */
25 | public func observe(_ type: E.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable where E.RawValue: KVORepresentable {
26 | return observe(E.RawValue.KVOType.self, keyPath, options: options, retainSelf: retainSelf)
27 | .map(E.init)
28 | }
29 | }
30 |
31 | #if !DISABLE_SWIZZLING
32 |
33 | // observeWeakly + RawRepresentable
34 | extension Reactive where Base: NSObject {
35 |
36 | /**
37 | Specialization of generic `observeWeakly` method.
38 |
39 | This specialization first observes `KVORepresentable` value and then converts it to `RawRepresentable` value.
40 |
41 | It is useful for observing bridged ObjC enum values.
42 |
43 | For more information take a look at `observeWeakly` method.
44 | */
45 | public func observeWeakly(_ type: E.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial]) -> Observable where E.RawValue: KVORepresentable {
46 | return observeWeakly(E.RawValue.KVOType.self, keyPath, options: options)
47 | .map(E.init)
48 | }
49 | }
50 | #endif
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/NestedSliding/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 class Foundation.NotificationCenter
10 | import struct Foundation.Notification
11 |
12 | import RxSwift
13 |
14 | extension Reactive where Base: NotificationCenter {
15 | /**
16 | Transforms notifications posted to notification center to observable sequence of notifications.
17 |
18 | - parameter name: Optional name used to filter notifications.
19 | - parameter object: Optional object used to filter notifications.
20 | - returns: Observable sequence of posted notifications.
21 | */
22 | public func notification(_ name: Notification.Name?, object: AnyObject? = nil) -> Observable {
23 | return Observable.create { [weak object] observer in
24 | let nsObserver = self.base.addObserver(forName: name, object: object, queue: nil) { notification in
25 | observer.on(.next(notification))
26 | }
27 |
28 | return Disposables.create {
29 | self.base.removeObserver(nsObserver)
30 | }
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Runtime/_RXKVOObserver.m:
--------------------------------------------------------------------------------
1 | //
2 | // _RXKVOObserver.m
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/11/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import "include/_RXKVOObserver.h"
10 |
11 | @interface _RXKVOObserver ()
12 |
13 | @property (nonatomic, unsafe_unretained) id target;
14 | @property (nonatomic, strong ) id retainedTarget;
15 | @property (nonatomic, copy ) NSString *keyPath;
16 | @property (nonatomic, copy ) void (^callback)(id);
17 |
18 | @end
19 |
20 | @implementation _RXKVOObserver
21 |
22 | -(instancetype)initWithTarget:(id)target
23 | retainTarget:(BOOL)retainTarget
24 | keyPath:(NSString*)keyPath
25 | options:(NSKeyValueObservingOptions)options
26 | callback:(void (^)(id))callback {
27 | self = [super init];
28 | if (!self) return nil;
29 |
30 | self.target = target;
31 | if (retainTarget) {
32 | self.retainedTarget = target;
33 | }
34 | self.keyPath = keyPath;
35 | self.callback = callback;
36 |
37 | [self.target addObserver:self forKeyPath:self.keyPath options:options context:nil];
38 |
39 | return self;
40 | }
41 |
42 | -(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
43 | @synchronized(self) {
44 | self.callback(change[NSKeyValueChangeNewKey]);
45 | }
46 | }
47 |
48 | -(void)dispose {
49 | [self.target removeObserver:self forKeyPath:self.keyPath context:nil];
50 | self.target = nil;
51 | self.retainedTarget = nil;
52 | }
53 |
54 | @end
55 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 "_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[];
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Traits/BehaviorRelay.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BehaviorRelay.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 |
11 | /// BehaviorRelay is a wrapper for `BehaviorSubject`.
12 | ///
13 | /// Unlike `BehaviorSubject` it can't terminate with error or completed.
14 | public final class BehaviorRelay: ObservableType {
15 | public typealias E = Element
16 |
17 | private let _subject: BehaviorSubject
18 |
19 | /// Accepts `event` and emits it to subscribers
20 | public func accept(_ event: Element) {
21 | _subject.onNext(event)
22 | }
23 |
24 | /// Current value of behavior subject
25 | public var value: Element {
26 | // this try! is ok because subject can't error out or be disposed
27 | return try! _subject.value()
28 | }
29 |
30 | /// Initializes behavior relay with initial value.
31 | public init(value: Element) {
32 | _subject = BehaviorSubject(value: value)
33 | }
34 |
35 | /// Subscribes observer
36 | public func subscribe(_ observer: O) -> Disposable where O.E == E {
37 | return _subject.subscribe(observer)
38 | }
39 |
40 | /// - returns: Canonical interface for push style sequence
41 | public func asObservable() -> Observable {
42 | return _subject.asObservable()
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
11 | extension BehaviorRelay {
12 | /// Converts `BehaviorRelay` to `Driver`.
13 | ///
14 | /// - returns: Observable sequence.
15 | public func asDriver() -> Driver {
16 | let source = self.asObservable()
17 | .observeOn(DriverSharingStrategy.scheduler)
18 | return SharedSequence(source)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/NestedSliding/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 { (error) -> 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 |
--------------------------------------------------------------------------------
/NestedSliding/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 { (error) -> 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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Traits/Driver/ObservableConvertibleType+Driver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObservableConvertibleType+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 ObservableConvertibleType {
12 | /**
13 | Converts observable sequence to `Driver` trait.
14 |
15 | - parameter onErrorJustReturn: Element to return in case of error and after that complete the sequence.
16 | - returns: Driver trait.
17 | */
18 | public func asDriver(onErrorJustReturn: E) -> Driver {
19 | let source = self
20 | .asObservable()
21 | .observeOn(DriverSharingStrategy.scheduler)
22 | .catchErrorJustReturn(onErrorJustReturn)
23 | return Driver(source)
24 | }
25 |
26 | /**
27 | Converts observable sequence to `Driver` trait.
28 |
29 | - parameter onErrorDriveWith: Driver that continues to drive the sequence in case of error.
30 | - returns: Driver trait.
31 | */
32 | public func asDriver(onErrorDriveWith: Driver) -> Driver {
33 | let source = self
34 | .asObservable()
35 | .observeOn(DriverSharingStrategy.scheduler)
36 | .catchError { _ in
37 | onErrorDriveWith.asObservable()
38 | }
39 | return Driver(source)
40 | }
41 |
42 | /**
43 | Converts observable sequence to `Driver` trait.
44 |
45 | - parameter onErrorRecover: Calculates driver that continues to drive the sequence in case of error.
46 | - returns: Driver trait.
47 | */
48 | public func asDriver(onErrorRecover: @escaping (_ error: Swift.Error) -> Driver) -> Driver {
49 | let source = self
50 | .asObservable()
51 | .observeOn(DriverSharingStrategy.scheduler)
52 | .catchError { error in
53 | onErrorRecover(error).asObservable()
54 | }
55 | return Driver(source)
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Traits/PublishRelay.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PublishRelay.swift
3 | // RxCocoa
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 | public typealias E = Element
16 |
17 | private let _subject: PublishSubject
18 |
19 | // Accepts `event` and emits it to subscribers
20 | public func accept(_ event: Element) {
21 | _subject.onNext(event)
22 | }
23 |
24 | /// Initializes variable with initial value.
25 | public init() {
26 | _subject = PublishSubject()
27 | }
28 |
29 | /// Subscribes observer
30 | public func subscribe(_ observer: O) -> Disposable where O.E == E {
31 | return _subject.subscribe(observer)
32 | }
33 |
34 | /// - returns: Canonical interface for push style sequence
35 | public func asObservable() -> Observable {
36 | return _subject.asObservable()
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Traits/SharedSequence/SchedulerType+SharedSequence.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SchedulerType+SharedSequence.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 8/27/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import RxSwift
10 |
11 | public enum SharingScheduler {
12 | /// Default scheduler used in SharedSequence based traits.
13 | public private(set) static var make: () -> SchedulerType = { MainScheduler() }
14 |
15 | /**
16 | This method can be used in unit tests to ensure that built in shared sequences are using mock schedulers instead
17 | of main schedulers.
18 |
19 | **This shouldn't be used in normal release builds.**
20 | */
21 | static public func mock(scheduler: SchedulerType, action: () -> ()) {
22 | return mock(makeScheduler: { scheduler }, action: action)
23 | }
24 |
25 | /**
26 | This method can be used in unit tests to ensure that built in shared sequences are using mock schedulers instead
27 | of main schedulers.
28 |
29 | **This shouldn't be used in normal release builds.**
30 | */
31 | static public func mock(makeScheduler: @escaping () -> SchedulerType, action: () -> ()) {
32 | let originalMake = make
33 | make = makeScheduler
34 |
35 | action()
36 |
37 | // If you remove this line , compiler buggy optimizations will change behavior of this code
38 | _forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(makeScheduler)
39 | // Scary, I know
40 |
41 | make = originalMake
42 | }
43 | }
44 |
45 | #if os(Linux)
46 | import Glibc
47 | #else
48 | import func Foundation.arc4random
49 | #endif
50 |
51 | func _forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(_ scheduler: () -> SchedulerType) {
52 | let a: Int32 = 1
53 | #if os(Linux)
54 | let b = 314 + Int32(Glibc.random() & 1)
55 | #else
56 | let b = 314 + Int32(arc4random() & 1)
57 | #endif
58 | if a == b {
59 | print(scheduler())
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/NestedSliding/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 { (error) -> 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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Traits/Signal/ObservableConvertibleType+Signal.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObservableConvertibleType+Signal.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 ObservableConvertibleType {
12 | /**
13 | Converts observable sequence to `Signal` trait.
14 |
15 | - parameter onErrorJustReturn: Element to return in case of error and after that complete the sequence.
16 | - returns: Signal trait.
17 | */
18 | public func asSignal(onErrorJustReturn: E) -> Signal {
19 | let source = self
20 | .asObservable()
21 | .observeOn(SignalSharingStrategy.scheduler)
22 | .catchErrorJustReturn(onErrorJustReturn)
23 | return Signal(source)
24 | }
25 |
26 | /**
27 | Converts observable sequence to `Driver` trait.
28 |
29 | - parameter onErrorDriveWith: Driver that continues to drive the sequence in case of error.
30 | - returns: Signal trait.
31 | */
32 | public func asSignal(onErrorSignalWith: Signal) -> Signal {
33 | let source = self
34 | .asObservable()
35 | .observeOn(SignalSharingStrategy.scheduler)
36 | .catchError { _ in
37 | onErrorSignalWith.asObservable()
38 | }
39 | return Signal(source)
40 | }
41 |
42 | /**
43 | Converts observable sequence to `Driver` trait.
44 |
45 | - parameter onErrorRecover: Calculates driver that continues to drive the sequence in case of error.
46 | - returns: Signal trait.
47 | */
48 | public func asSignal(onErrorRecover: @escaping (_ error: Swift.Error) -> Signal) -> Signal {
49 | let source = self
50 | .asObservable()
51 | .observeOn(SignalSharingStrategy.scheduler)
52 | .catchError { error in
53 | onErrorRecover(error).asObservable()
54 | }
55 | return Signal(source)
56 | }
57 | }
58 |
59 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
11 | extension PublishRelay {
12 | /// Converts `PublishRelay` to `Signal`.
13 | ///
14 | /// - returns: Observable sequence.
15 | public func asSignal() -> Signal {
16 | let source = self.asObservable()
17 | .observeOn(SignalSharingStrategy.scheduler)
18 | return SharedSequence(source)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/Traits/Signal/Signal.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Signal.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 9/26/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import RxSwift
10 |
11 | /**
12 | Trait that represents observable sequence with following properties:
13 |
14 | - it never fails
15 | - it delivers events on `MainScheduler.instance`
16 | - `share(scope: .whileConnected)` sharing strategy
17 |
18 | Additional explanation:
19 | - all observers share sequence computation resources
20 | - there is no replaying of sequence elements on new observer subscription
21 | - computation of elements is reference counted with respect to the number of observers
22 | - if there are no subscribers, it will release sequence computation resources
23 |
24 | In case trait that models state propagation is required, please check `Driver`.
25 |
26 | `Signal` can be considered a builder pattern for observable sequences that model imperative events part of the application.
27 |
28 | To find out more about units and how to use them, please visit `Documentation/Traits.md`.
29 | */
30 | public typealias Signal = SharedSequence
31 |
32 | public struct SignalSharingStrategy : SharingStrategyProtocol {
33 | public static var scheduler: SchedulerType { return SharingScheduler.make() }
34 |
35 | public static func share(_ source: Observable) -> Observable {
36 | return source.share(scope: .whileConnected)
37 | }
38 | }
39 |
40 | extension SharedSequenceConvertibleType where SharingStrategy == SignalSharingStrategy {
41 | /// Adds `asPublisher` to `SharingSequence` with `PublishSharingStrategy`.
42 | public func asSignal() -> Signal {
43 | return asSharedSequence()
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/NSTextStorage+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSTextStorage+Rx.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)
10 | import RxSwift
11 | import UIKit
12 |
13 | extension Reactive where Base: NSTextStorage {
14 |
15 | /// Reactive wrapper for `delegate`.
16 | ///
17 | /// For more information take a look at `DelegateProxyType` protocol documentation.
18 | public var delegate: DelegateProxy {
19 | return RxTextStorageDelegateProxy.proxy(for: base)
20 | }
21 |
22 | /// Reactive wrapper for `delegate` message.
23 | public var didProcessEditingRangeChangeInLength: Observable<(editedMask:NSTextStorageEditActions, editedRange:NSRange, delta:Int)> {
24 | return delegate
25 | .methodInvoked(#selector(NSTextStorageDelegate.textStorage(_:didProcessEditing:range:changeInLength:)))
26 | .map { a in
27 | let editedMask = NSTextStorageEditActions(rawValue: try castOrThrow(UInt.self, a[1]) )
28 | let editedRange = try castOrThrow(NSValue.self, a[2]).rangeValue
29 | let delta = try castOrThrow(Int.self, a[3])
30 |
31 | return (editedMask, editedRange, delta)
32 | }
33 | }
34 | }
35 | #endif
36 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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) -> Void
25 | }
26 |
27 | #endif
28 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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) -> Void
25 | }
26 |
27 | #endif
28 |
--------------------------------------------------------------------------------
/NestedSliding/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)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | /// For more information take a look at `DelegateProxyType`.
15 | open class RxCollectionViewDelegateProxy
16 | : RxScrollViewDelegateProxy
17 | , UICollectionViewDelegate
18 | , UICollectionViewDelegateFlowLayout {
19 |
20 | /// Typed parent object.
21 | public weak private(set) var collectionView: UICollectionView?
22 |
23 | /// Initializes `RxCollectionViewDelegateProxy`
24 | ///
25 | /// - parameter collectionView: Parent object for delegate proxy.
26 | public init(collectionView: UICollectionView) {
27 | self.collectionView = collectionView
28 | super.init(scrollView: collectionView)
29 | }
30 | }
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxNavigationControllerDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Diogo on 13/04/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension UINavigationController: HasDelegate {
15 | public typealias Delegate = UINavigationControllerDelegate
16 | }
17 |
18 | /// For more information take a look at `DelegateProxyType`.
19 | open class RxNavigationControllerDelegateProxy
20 | : DelegateProxy
21 | , DelegateProxyType
22 | , UINavigationControllerDelegate {
23 |
24 | /// Typed parent object.
25 | public weak private(set) var navigationController: UINavigationController?
26 |
27 | /// - parameter navigationController: Parent object for delegate proxy.
28 | public init(navigationController: ParentObject) {
29 | self.navigationController = navigationController
30 | super.init(parentObject: navigationController, delegateProxy: RxNavigationControllerDelegateProxy.self)
31 | }
32 |
33 | // Register known implementations
34 | public static func registerKnownImplementations() {
35 | self.register { RxNavigationControllerDelegateProxy(navigationController: $0) }
36 | }
37 | }
38 | #endif
39 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 | , UIPickerViewDelegate {
22 |
23 | /// Typed parent object.
24 | public weak private(set) var pickerView: UIPickerView?
25 |
26 | /// - parameter pickerView: Parent object for delegate proxy.
27 | public init(pickerView: ParentObject) {
28 | self.pickerView = pickerView
29 | super.init(parentObject: pickerView, delegateProxy: RxPickerViewDelegateProxy.self)
30 | }
31 |
32 | // Register known implementationss
33 | public static func registerKnownImplementations() {
34 | self.register { RxPickerViewDelegateProxy(pickerView: $0) }
35 | }
36 | }
37 | #endif
38 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 | , UISearchBarDelegate {
23 |
24 | /// Typed parent object.
25 | public weak private(set) var searchBar: UISearchBar?
26 |
27 | /// - parameter searchBar: Parent object for delegate proxy.
28 | public init(searchBar: ParentObject) {
29 | self.searchBar = searchBar
30 | super.init(parentObject: searchBar, delegateProxy: RxSearchBarDelegateProxy.self)
31 | }
32 |
33 | // Register known implementations
34 | public static func registerKnownImplementations() {
35 | self.register { RxSearchBarDelegateProxy(searchBar: $0) }
36 | }
37 | }
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 | @available(iOS 8.0, *)
20 | open class RxSearchControllerDelegateProxy
21 | : DelegateProxy
22 | , DelegateProxyType
23 | , UISearchControllerDelegate {
24 |
25 | /// Typed parent object.
26 | public weak private(set) var searchController: UISearchController?
27 |
28 | /// - parameter searchController: Parent object for delegate proxy.
29 | public init(searchController: UISearchController) {
30 | self.searchController = searchController
31 | super.init(parentObject: searchController, delegateProxy: RxSearchControllerDelegateProxy.self)
32 | }
33 |
34 | // Register known implementations
35 | public static func registerKnownImplementations() {
36 | self.register { RxSearchControllerDelegateProxy(searchController: $0) }
37 | }
38 | }
39 |
40 | #endif
41 |
--------------------------------------------------------------------------------
/NestedSliding/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 | , UITabBarControllerDelegate {
23 |
24 | /// Typed parent object.
25 | public weak private(set) var tabBar: UITabBarController?
26 |
27 | /// - parameter tabBar: Parent object for delegate proxy.
28 | public init(tabBar: ParentObject) {
29 | self.tabBar = tabBar
30 | super.init(parentObject: tabBar, delegateProxy: RxTabBarControllerDelegateProxy.self)
31 | }
32 |
33 | // Register known implementations
34 | public static func registerKnownImplementations() {
35 | self.register { RxTabBarControllerDelegateProxy(tabBar: $0) }
36 | }
37 | }
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTabBarDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Jesse Farless on 5/14/16.
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 UITabBar: HasDelegate {
15 | public typealias Delegate = UITabBarDelegate
16 | }
17 |
18 | /// For more information take a look at `DelegateProxyType`.
19 | open class RxTabBarDelegateProxy
20 | : DelegateProxy
21 | , DelegateProxyType
22 | , UITabBarDelegate {
23 |
24 | /// Typed parent object.
25 | public weak private(set) var tabBar: UITabBar?
26 |
27 | /// - parameter tabBar: Parent object for delegate proxy.
28 | public init(tabBar: ParentObject) {
29 | self.tabBar = tabBar
30 | super.init(parentObject: tabBar, delegateProxy: RxTabBarDelegateProxy.self)
31 | }
32 |
33 | // Register known implementations
34 | public static func registerKnownImplementations() {
35 | self.register { RxTabBarDelegateProxy(tabBar: $0) }
36 | }
37 |
38 | /// For more information take a look at `DelegateProxyType`.
39 | open class func currentDelegate(for object: ParentObject) -> UITabBarDelegate? {
40 | return object.delegate
41 | }
42 |
43 | /// For more information take a look at `DelegateProxyType`.
44 | open class func setCurrentDelegate(_ delegate: UITabBarDelegate?, to object: ParentObject) {
45 | object.delegate = delegate
46 | }
47 | }
48 |
49 | #endif
50 |
--------------------------------------------------------------------------------
/NestedSliding/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)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | /// For more information take a look at `DelegateProxyType`.
15 | open class RxTableViewDelegateProxy
16 | : RxScrollViewDelegateProxy
17 | , UITableViewDelegate {
18 |
19 | /// Typed parent object.
20 | public weak private(set) var tableView: UITableView?
21 |
22 | /// - parameter tableView: Parent object for delegate proxy.
23 | public init(tableView: UITableView) {
24 | self.tableView = tableView
25 | super.init(scrollView: tableView)
26 | }
27 |
28 | }
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 | , NSTextStorageDelegate {
22 |
23 | /// Typed parent object.
24 | public weak private(set) var textStorage: NSTextStorage?
25 |
26 | /// - parameter textStorage: Parent object for delegate proxy.
27 | public init(textStorage: NSTextStorage) {
28 | self.textStorage = textStorage
29 | super.init(parentObject: textStorage, delegateProxy: RxTextStorageDelegateProxy.self)
30 | }
31 |
32 | // Register known implementations
33 | public static func registerKnownImplementations() {
34 | self.register { RxTextStorageDelegateProxy(textStorage: $0) }
35 | }
36 | }
37 | #endif
38 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTextViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Yuta ToKoRo on 7/19/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | /// For more information take a look at `DelegateProxyType`.
15 | open class RxTextViewDelegateProxy
16 | : RxScrollViewDelegateProxy
17 | , UITextViewDelegate {
18 |
19 | /// Typed parent object.
20 | public weak private(set) var textView: UITextView?
21 |
22 | /// - parameter textview: Parent object for delegate proxy.
23 | public init(textView: UITextView) {
24 | self.textView = textView
25 | super.init(scrollView: textView)
26 | }
27 |
28 | // MARK: delegate methods
29 |
30 | /// For more information take a look at `DelegateProxyType`.
31 | @objc open func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
32 | /**
33 | We've had some issues with observing text changes. This is here just in case we need the same hack in future and that
34 | we wouldn't need to change the public interface.
35 | */
36 | let forwardToDelegate = self.forwardToDelegate() as? UITextViewDelegate
37 | return forwardToDelegate?.textView?(textView,
38 | shouldChangeTextIn: range,
39 | replacementText: text) ?? true
40 | }
41 | }
42 |
43 | #endif
44 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxWebViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxWebViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Andrew Breckenridge on 9/26/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension UIWebView: HasDelegate {
15 | public typealias Delegate = UIWebViewDelegate
16 | }
17 |
18 | open class RxWebViewDelegateProxy
19 | : DelegateProxy
20 | , DelegateProxyType
21 | , UIWebViewDelegate {
22 |
23 | /// Typed parent object.
24 | public weak private(set) var webView: UIWebView?
25 |
26 | /// - parameter webView: Parent object for delegate proxy.
27 | public init(webView: ParentObject) {
28 | self.webView = webView
29 | super.init(parentObject: webView, delegateProxy: RxWebViewDelegateProxy.self)
30 | }
31 |
32 | // Register known implementations
33 | public static func registerKnownImplementations() {
34 | self.register { RxWebViewDelegateProxy(webView: $0) }
35 | }
36 | }
37 |
38 | #endif
39 |
--------------------------------------------------------------------------------
/NestedSliding/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)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIActivityIndicatorView {
15 |
16 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods.
17 | public var isAnimating: Binder {
18 | return Binder(self.base) { activityIndicator, active in
19 | if active {
20 | activityIndicator.startAnimating()
21 | } else {
22 | activityIndicator.stopAnimating()
23 | }
24 | }
25 | }
26 |
27 | }
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UIAlertAction+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIAlertAction+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Andrew Breckenridge on 5/7/16.
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 Reactive where Base: UIAlertAction {
15 |
16 | /// Bindable sink for `enabled` property.
17 | public var isEnabled: Binder {
18 | return Binder(self.base) { alertAction, value in
19 | alertAction.isEnabled = value
20 | }
21 | }
22 |
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UIApplication+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIApplication+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Mads Bøgeskov on 18/01/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIApplication {
15 |
16 | /// Bindable sink for `networkActivityIndicatorVisible`.
17 | public var isNetworkActivityIndicatorVisible: Binder {
18 | return Binder(self.base) { application, active in
19 | application.isNetworkActivityIndicatorVisible = active
20 | }
21 | }
22 | }
23 | #endif
24 |
25 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 | return 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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UIImageView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UIImageView {
15 |
16 | /// Bindable sink for `image` property.
17 | public var image: Binder {
18 | return Binder(base) { imageView, image in
19 | imageView.image = image
20 | }
21 | }
22 | }
23 |
24 | #endif
25 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UILabel+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UILabel+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UILabel {
15 |
16 | /// Bindable sink for `text` property.
17 | public var text: Binder {
18 | return Binder(self.base) { label, text in
19 | label.text = text
20 | }
21 | }
22 |
23 | /// Bindable sink for `attributedText` property.
24 | public var attributedText: Binder {
25 | return Binder(self.base) { label, text in
26 | label.attributedText = text
27 | }
28 | }
29 |
30 | }
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UINavigationItem+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UINavigationItem+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by kumapo on 2016/05/09.
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 Reactive where Base: UINavigationItem {
15 |
16 | /// Bindable sink for `title` property.
17 | public var title: Binder {
18 | return Binder(self.base) { navigationItem, text in
19 | navigationItem.title = text
20 | }
21 | }
22 |
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UIPageControl+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIPageControl+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Francesco Puntillo on 14/04/2016.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UIPageControl {
15 |
16 | /// Bindable sink for `currentPage` property.
17 | public var currentPage: Binder {
18 | return Binder(self.base) { controller, page in
19 | controller.currentPage = page
20 | }
21 | }
22 |
23 | /// Bindable sink for `numberOfPages` property.
24 | public var numberOfPages: Binder {
25 | return Binder(self.base) { controller, page in
26 | controller.numberOfPages = page
27 | }
28 | }
29 |
30 | }
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UIProgressView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIProgressView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Samuel Bae on 2/27/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UIProgressView {
15 |
16 | /// Bindable sink for `progress` property
17 | public var progress: Binder {
18 | return Binder(self.base) { progressView, progress in
19 | progressView.progress = progress
20 | }
21 | }
22 |
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UISegmentedControl+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISegmentedControl+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(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UISegmentedControl {
15 | /// Reactive wrapper for `selectedSegmentIndex` property.
16 | public var selectedSegmentIndex: ControlProperty {
17 | return value
18 | }
19 |
20 | /// Reactive wrapper for `selectedSegmentIndex` property.
21 | public var value: ControlProperty {
22 | return base.rx.controlPropertyWithDefaultEvents(
23 | getter: { segmentedControl in
24 | segmentedControl.selectedSegmentIndex
25 | }, setter: { segmentedControl, value in
26 | segmentedControl.selectedSegmentIndex = value
27 | }
28 | )
29 | }
30 |
31 | /// Reactive wrapper for `setEnabled(_:forSegmentAt:)`
32 | public func enabledForSegment(at index: Int) -> Binder {
33 | return Binder(self.base) { (segmentedControl, segmentEnabled) -> () in
34 | segmentedControl.setEnabled(segmentEnabled, forSegmentAt: index)
35 | }
36 | }
37 |
38 | /// Reactive wrapper for `setTitle(_:forSegmentAt:)`
39 | public func titleForSegment(at index: Int) -> Binder {
40 | return Binder(self.base) { (segmentedControl, title) -> () in
41 | segmentedControl.setTitle(title, forSegmentAt: index)
42 | }
43 | }
44 |
45 | /// Reactive wrapper for `setImage(_:forSegmentAt:)`
46 | public func imageForSegment(at index: Int) -> Binder {
47 | return Binder(self.base) { (segmentedControl, image) -> () in
48 | segmentedControl.setImage(image, forSegmentAt: index)
49 | }
50 | }
51 |
52 | }
53 |
54 | #endif
55 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 | /// Reactive wrapper for `stepValue` property.
28 | public var stepValue: Binder {
29 | return Binder(self.base) { stepper, value in
30 | stepper.stepValue = value
31 | }
32 | }
33 |
34 | }
35 |
36 | #endif
37 |
38 |
--------------------------------------------------------------------------------
/NestedSliding/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)
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 | return value
19 | }
20 |
21 | /**
22 | Reactive wrapper for `isOn` property.
23 |
24 | **⚠️ Versions prior to iOS 10.2 were leaking `UISwitch`s, so on those versions
25 | underlying observable sequence won't complete when nothing holds a strong reference
26 | to UISwitch.⚠️**
27 | */
28 | public var value: ControlProperty {
29 | return base.rx.controlPropertyWithDefaultEvents(
30 | getter: { uiSwitch in
31 | uiSwitch.isOn
32 | }, setter: { uiSwitch, value in
33 | uiSwitch.isOn = value
34 | }
35 | )
36 | }
37 |
38 | }
39 |
40 | #endif
41 |
42 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UITabBarItem+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITabBarItem+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Mateusz Derks on 04/03/16.
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 Reactive where Base: UITabBarItem {
15 |
16 | /// Bindable sink for `badgeValue` property.
17 | public var badgeValue: Binder {
18 | return Binder(self.base) { tabBarItem, badgeValue in
19 | tabBarItem.badgeValue = badgeValue
20 | }
21 | }
22 |
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UITextField+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITextField+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 2/21/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UITextField {
15 | /// Reactive wrapper for `text` property.
16 | public var text: ControlProperty {
17 | return value
18 | }
19 |
20 | /// Reactive wrapper for `text` property.
21 | public var value: ControlProperty {
22 | return base.rx.controlPropertyWithDefaultEvents(
23 | getter: { textField in
24 | textField.text
25 | },
26 | setter: { textField, value in
27 | // This check is important because setting text value always clears control state
28 | // including marked text selection which is imporant for proper input
29 | // when IME input method is used.
30 | if textField.text != value {
31 | textField.text = value
32 | }
33 | }
34 | )
35 | }
36 |
37 | /// Bindable sink for `attributedText` property.
38 | public var attributedText: ControlProperty {
39 | return base.rx.controlPropertyWithDefaultEvents(
40 | getter: { textField in
41 | textField.attributedText
42 | },
43 | setter: { textField, value in
44 | // This check is important because setting text value always clears control state
45 | // including marked text selection which is imporant for proper input
46 | // when IME input method is used.
47 | if textField.attributedText != value {
48 | textField.attributedText = value
49 | }
50 | }
51 | )
52 | }
53 |
54 | }
55 |
56 | #endif
57 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UIView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+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(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIView {
15 | /// Bindable sink for `hidden` property.
16 | public var isHidden: Binder {
17 | return Binder(self.base) { view, hidden in
18 | view.isHidden = hidden
19 | }
20 | }
21 |
22 | /// Bindable sink for `alpha` property.
23 | public var alpha: Binder {
24 | return Binder(self.base) { view, alpha in
25 | view.alpha = alpha
26 | }
27 | }
28 |
29 | /// Bindable sink for `isUserInteractionEnabled` property.
30 | public var isUserInteractionEnabled: Binder {
31 | return Binder(self.base) { view, userInteractionEnabled in
32 | view.isUserInteractionEnabled = userInteractionEnabled
33 | }
34 | }
35 |
36 | }
37 |
38 | #endif
39 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UIViewController+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Kyle Fuller on 27/05/2016.
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 Reactive where Base: UIViewController {
15 |
16 | /// Bindable sink for `title`.
17 | public var title: Binder {
18 | return Binder(self.base) { viewController, title in
19 | viewController.title = title
20 | }
21 | }
22 |
23 | }
24 | #endif
25 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxCocoa/RxCocoa/iOS/UIWebView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIWebView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Andrew Breckenridge on 8/30/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIWebView {
15 |
16 | /// Reactive wrapper for `delegate`.
17 | /// For more information take a look at `DelegateProxyType` protocol documentation.
18 | public var delegate: DelegateProxy {
19 | return RxWebViewDelegateProxy.proxy(for: base)
20 | }
21 |
22 | /// Reactive wrapper for `delegate` message.
23 | public var didStartLoad: Observable {
24 | return delegate
25 | .methodInvoked(#selector(UIWebViewDelegate.webViewDidStartLoad(_:)))
26 | .map {_ in}
27 | }
28 |
29 | /// Reactive wrapper for `delegate` message.
30 | public var didFinishLoad: Observable {
31 | return delegate
32 | .methodInvoked(#selector(UIWebViewDelegate.webViewDidFinishLoad(_:)))
33 | .map {_ in}
34 | }
35 |
36 | /// Reactive wrapper for `delegate` message.
37 | public var didFailLoad: Observable {
38 | return delegate
39 | .methodInvoked(#selector(UIWebViewDelegate.webView(_:didFailLoadWithError:)))
40 | .map { a in
41 | return try castOrThrow(Error.self, a[1])
42 | }
43 | }
44 | }
45 |
46 | #endif
47 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/LICENSE.md:
--------------------------------------------------------------------------------
1 | **The MIT License**
2 | **Copyright © 2015 Krunoslav Zaher**
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.
--------------------------------------------------------------------------------
/NestedSliding/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 Element = E
12 | typealias Iterator = AnyIterator
13 |
14 | private let _repeatedValue: E
15 |
16 | init(repeatedValue: E) {
17 | _repeatedValue = repeatedValue
18 | }
19 |
20 | func makeIterator() -> Iterator {
21 | let repeatedValue = _repeatedValue
22 | return AnyIterator {
23 | return repeatedValue
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/Platform/DeprecationWarner.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DeprecationWarner.swift
3 | // Platform
4 | //
5 | // Created by Shai Mishali on 1/9/18.
6 | // Copyright © 2018 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | #if DEBUG
12 | class DeprecationWarner {
13 | private static var warned = Set()
14 | private static var _lock = NSRecursiveLock()
15 |
16 | static func warnIfNeeded(_ kind: Kind) {
17 | _lock.lock(); defer { _lock.unlock() }
18 | guard !warned.contains(kind) else { return }
19 |
20 | warned.insert(kind)
21 | print("ℹ️ [DEPRECATED] \(kind.message)")
22 | }
23 | }
24 |
25 | extension DeprecationWarner {
26 | enum Kind {
27 | case variable
28 | case globalTestFunctionNext
29 | case globalTestFunctionError
30 | case globalTestFunctionCompleted
31 |
32 | var message: String {
33 | switch self {
34 | case .variable: return "`Variable` is planned for future deprecation. Please consider `BehaviorRelay` as a replacement. Read more at: https://git.io/vNqvx"
35 | case .globalTestFunctionNext: return "The `next()` global function is planned for future deprecation. Please use `Recorded.next()` instead."
36 | case .globalTestFunctionError: return "The `error()` global function is planned for future deprecation. Please use `Recorded.error()` instead."
37 | case .globalTestFunctionCompleted: return "The `completed()` global function is planned for future deprecation. Please use `Recorded.completed()` instead."
38 | }
39 | }
40 | }
41 | }
42 | #endif
43 |
44 |
--------------------------------------------------------------------------------
/NestedSliding/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 | return DispatchQueue.getSpecific(key: token) != nil
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/NestedSliding/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 class Foundation.NSRecursiveLock
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 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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: () -> Void) {
20 | lock(); defer { unlock() }
21 | action()
22 | }
23 |
24 | @inline(__always)
25 | final func calculateLocked(_ action: () -> T) -> T {
26 | lock(); defer { unlock() }
27 | return action()
28 | }
29 |
30 | @inline(__always)
31 | final func calculateLockedOrFail(_ action: () throws -> T) throws -> T {
32 | lock(); defer { unlock() }
33 | let result = try action()
34 | return result
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/NestedSliding/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 : class, Lock {
10 | var _lock: RecursiveLock { get }
11 | }
12 |
13 | extension LockOwnerType {
14 | func lock() {
15 | _lock.lock()
16 | }
17 |
18 | func unlock() {
19 | _lock.unlock()
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/NestedSliding/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 : class, Disposable, Lock {
10 | func _synchronized_dispose()
11 | }
12 |
13 | extension SynchronizedDisposeType {
14 | func synchronizedDispose() {
15 | lock(); defer { unlock() }
16 | _synchronized_dispose()
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/NestedSliding/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 : class, ObserverType, Lock {
10 | func _synchronized_on(_ event: Event)
11 | }
12 |
13 | extension SynchronizedOnType {
14 | func synchronizedOn(_ event: Event) {
15 | lock(); defer { unlock() }
16 | _synchronized_on(event)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/NestedSliding/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 : class {
10 | associatedtype DisposeKey
11 |
12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey)
13 | }
14 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Disposables/BinaryDisposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BinaryDisposable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 6/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents two disposable resources that are disposed together.
10 | private final class BinaryDisposable : DisposeBase, Cancelable {
11 |
12 | private var _isDisposed: AtomicInt = 0
13 |
14 | // state
15 | private var _disposable1: Disposable?
16 | private var _disposable2: Disposable?
17 |
18 | /// - returns: Was resource disposed.
19 | var isDisposed: Bool {
20 | return _isDisposed > 0
21 | }
22 |
23 | /// Constructs new binary disposable from two disposables.
24 | ///
25 | /// - parameter disposable1: First disposable
26 | /// - parameter disposable2: Second disposable
27 | init(_ disposable1: Disposable, _ disposable2: Disposable) {
28 | _disposable1 = disposable1
29 | _disposable2 = disposable2
30 | super.init()
31 | }
32 |
33 | /// Calls the disposal action if and only if the current instance hasn't been disposed yet.
34 | ///
35 | /// After invoking disposal action, disposal action will be dereferenced.
36 | func dispose() {
37 | if AtomicCompareAndSwap(0, 1, &_isDisposed) {
38 | _disposable1?.dispose()
39 | _disposable2?.dispose()
40 | _disposable1 = nil
41 | _disposable2 = nil
42 | }
43 | }
44 | }
45 |
46 | extension Disposables {
47 |
48 | /// Creates a disposable with the given disposables.
49 | public static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Cancelable {
50 | return BinaryDisposable(disposable1, disposable2)
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/NestedSliding/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 var _isDisposed = false
14 |
15 | /// Initializes a new instance of the `BooleanDisposable` class
16 | public init() {
17 | }
18 |
19 | /// Initializes a new instance of the `BooleanDisposable` class with given value
20 | public init(isDisposed: Bool) {
21 | self._isDisposed = isDisposed
22 | }
23 |
24 | /// - returns: Was resource disposed.
25 | public var isDisposed: Bool {
26 | return _isDisposed
27 | }
28 |
29 | /// Sets the status to disposed, which can be observer through the `isDisposed` property.
30 | public func dispose() {
31 | _isDisposed = true
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 | let _ = Resources.incrementTotal()
14 | #endif
15 | }
16 |
17 | deinit {
18 | #if TRACE_RESOURCES
19 | let _ = Resources.decrementTotal()
20 | #endif
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/NestedSliding/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 | fileprivate struct NopDisposable : Disposable {
13 |
14 | fileprivate static let noOp: Disposable = NopDisposable()
15 |
16 | fileprivate 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 {
30 | return NopDisposable.noOp
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Disposables/ScheduledDisposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScheduledDisposable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 6/13/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | private let disposeScheduledDisposable: (ScheduledDisposable) -> Disposable = { sd in
10 | sd.disposeInner()
11 | return Disposables.create()
12 | }
13 |
14 | /// Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler.
15 | public final class ScheduledDisposable : Cancelable {
16 | public let scheduler: ImmediateSchedulerType
17 |
18 | private var _isDisposed: AtomicInt = 0
19 |
20 | // state
21 | private var _disposable: Disposable?
22 |
23 | /// - returns: Was resource disposed.
24 | public var isDisposed: Bool {
25 | return _isDisposed == 1
26 | }
27 |
28 | /**
29 | Initializes a new instance of the `ScheduledDisposable` that uses a `scheduler` on which to dispose the `disposable`.
30 |
31 | - parameter scheduler: Scheduler where the disposable resource will be disposed on.
32 | - parameter disposable: Disposable resource to dispose on the given scheduler.
33 | */
34 | public init(scheduler: ImmediateSchedulerType, disposable: Disposable) {
35 | self.scheduler = scheduler
36 | _disposable = disposable
37 | }
38 |
39 | /// Disposes the wrapped disposable on the provided scheduler.
40 | public func dispose() {
41 | let _ = scheduler.schedule(self, action: disposeScheduledDisposable)
42 | }
43 |
44 | func disposeInner() {
45 | if AtomicCompareAndSwap(0, 1, &_isDisposed) {
46 | _disposable!.dispose()
47 | _disposable = nil
48 | }
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/NestedSliding/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 | _owner = owner
15 | _key = key
16 | }
17 |
18 | func dispose() {
19 | _owner?.synchronizedUnsubscribe(_key)
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Errors.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Errors.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/28/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | let RxErrorDomain = "RxErrorDomain"
10 | let RxCompositeFailures = "RxCompositeFailures"
11 |
12 | /// Generic Rx error codes.
13 | public enum RxError
14 | : Swift.Error
15 | , CustomDebugStringConvertible {
16 | /// Unknown error occurred.
17 | case unknown
18 | /// Performing an action on disposed object.
19 | case disposed(object: AnyObject)
20 | /// Aritmetic overflow error.
21 | case overflow
22 | /// Argument out of range error.
23 | case argumentOutOfRange
24 | /// Sequence doesn't contain any elements.
25 | case noElements
26 | /// Sequence contains more than one element.
27 | case moreThanOneElement
28 | /// Timeout error.
29 | case timeout
30 | }
31 |
32 | extension RxError {
33 | /// A textual representation of `self`, suitable for debugging.
34 | public var debugDescription: String {
35 | switch self {
36 | case .unknown:
37 | return "Unknown error occurred."
38 | case .disposed(let object):
39 | return "Object `\(object)` was already disposed."
40 | case .overflow:
41 | return "Arithmetic overflow occurred."
42 | case .argumentOutOfRange:
43 | return "Argument out of range."
44 | case .noElements:
45 | return "Sequence doesn't contain any elements."
46 | case .moreThanOneElement:
47 | return "Sequence contains more than one element."
48 | case .timeout:
49 | return "Sequence timeout."
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/NestedSliding/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) -> ()>, _ event: Event) {
14 | if bag._onlyFastPath {
15 | bag._value0?(event)
16 | return
17 | }
18 |
19 | let value0 = bag._value0
20 | let dictionary = bag._dictionary
21 |
22 | if let value0 = value0 {
23 | value0(event)
24 | }
25 |
26 | let pairs = bag._pairs
27 | for i in 0 ..< pairs.count {
28 | pairs[i].value(event)
29 | }
30 |
31 | if let dictionary = dictionary {
32 | for element in dictionary.values {
33 | element(event)
34 | }
35 | }
36 | }
37 |
38 | /// Dispatches `dispose` to all disposables contained inside bag.
39 | func disposeAll(in bag: Bag) {
40 | if bag._onlyFastPath {
41 | bag._value0?.dispose()
42 | return
43 | }
44 |
45 | let value0 = bag._value0
46 | let dictionary = bag._dictionary
47 |
48 | if let value0 = value0 {
49 | value0.dispose()
50 | }
51 |
52 | let pairs = bag._pairs
53 | for i in 0 ..< pairs.count {
54 | pairs[i].value.dispose()
55 | }
56 |
57 | if let dictionary = dictionary {
58 | for element in dictionary.values {
59 | element.dispose()
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Extensions/String+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String+Rx.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 12/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension String {
10 | /// This is needed because on Linux Swift doesn't have `rangeOfString(..., options: .BackwardsSearch)`
11 | func lastIndexOf(_ character: Character) -> Index? {
12 | var index = endIndex
13 | while index > startIndex {
14 | index = self.index(before: index)
15 | if self[index] == character {
16 | return index
17 | }
18 | }
19 |
20 | return nil
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/NestedSliding/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 | public typealias E = Element
12 |
13 | /// Gets the common key.
14 | public let key: Key
15 |
16 | private let source: Observable
17 |
18 | /// Initializes grouped observable sequence with key and source observable sequence.
19 | ///
20 | /// - parameter key: Grouped observable sequence key
21 | /// - parameter source: Observable sequence that represents sequence of elements for the key
22 | /// - returns: Grouped observable sequence of elements for the specific key
23 | public init(key: Key, source: Observable) {
24 | self.key = key
25 | self.source = source
26 | }
27 |
28 | /// Subscribes `observer` to receive events for this sequence.
29 | public func subscribe(_ observer: O) -> Disposable where O.E == E {
30 | return self.source.subscribe(observer)
31 | }
32 |
33 | /// Converts `self` to `Observable` sequence.
34 | public func asObservable() -> Observable {
35 | return source
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/ImmediateSchedulerType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ImmediateSchedulerType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 5/31/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents an object that immediately schedules units of work.
10 | public protocol ImmediateSchedulerType {
11 | /**
12 | Schedules an action to be executed immediately.
13 |
14 | - parameter state: State passed to the action to be executed.
15 | - parameter action: Action to be executed.
16 | - returns: The disposable object used to cancel the scheduled action (best effort).
17 | */
18 | func schedule(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable
19 | }
20 |
21 | extension ImmediateSchedulerType {
22 | /**
23 | Schedules an action to be executed recursively.
24 |
25 | - parameter state: State passed to the action to be executed.
26 | - parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.
27 | - returns: The disposable object used to cancel the scheduled action (best effort).
28 | */
29 | public func scheduleRecursive(_ state: State, action: @escaping (_ state: State, _ recurse: (State) -> ()) -> ()) -> Disposable {
30 | let recursiveScheduler = RecursiveImmediateScheduler(action: action, scheduler: self)
31 |
32 | recursiveScheduler.schedule(state)
33 |
34 | return Disposables.create(with: recursiveScheduler.dispose)
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/NestedSliding/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 | public class Observable : ObservableType {
13 | /// Type of elements in sequence.
14 | public typealias E = Element
15 |
16 | init() {
17 | #if TRACE_RESOURCES
18 | let _ = Resources.incrementTotal()
19 | #endif
20 | }
21 |
22 | public func subscribe(_ observer: O) -> Disposable where O.E == E {
23 | rxAbstractMethod()
24 | }
25 |
26 | public func asObservable() -> Observable {
27 | return self
28 | }
29 |
30 | deinit {
31 | #if TRACE_RESOURCES
32 | let _ = Resources.decrementTotal()
33 | #endif
34 | }
35 |
36 | // this is kind of ugly I know :(
37 | // Swift compiler reports "Not supported yet" when trying to override protocol extensions, so ¯\_(ツ)_/¯
38 |
39 | /// Optimizations for map operator
40 | internal func composeMap(_ transform: @escaping (Element) throws -> R) -> Observable {
41 | return _map(source: self, transform: transform)
42 | }
43 | }
44 |
45 |
--------------------------------------------------------------------------------
/NestedSliding/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 E
13 |
14 | /// Converts `self` to `Observable` sequence.
15 | ///
16 | /// - returns: Observable sequence that represents `self`.
17 | func asObservable() -> Observable
18 | }
19 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/ObservableType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObservableType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 8/8/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents a push style sequence.
10 | public protocol ObservableType : ObservableConvertibleType {
11 | /**
12 | Subscribes `observer` to receive events for this sequence.
13 |
14 | ### Grammar
15 |
16 | **Next\* (Error | Completed)?**
17 |
18 | * sequences can produce zero or more elements so zero or more `Next` events can be sent to `observer`
19 | * once an `Error` or `Completed` event is sent, the sequence terminates and can't produce any other elements
20 |
21 | It is possible that events are sent from different threads, but no two events can be sent concurrently to
22 | `observer`.
23 |
24 | ### Resource Management
25 |
26 | When sequence sends `Complete` or `Error` event all internal resources that compute sequence elements
27 | will be freed.
28 |
29 | To cancel production of sequence elements and free resources immediately, call `dispose` on returned
30 | subscription.
31 |
32 | - returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources.
33 | */
34 | func subscribe(_ observer: O) -> Disposable where O.E == E
35 | }
36 |
37 | extension ObservableType {
38 |
39 | /// Default implementation of converting `ObservableType` to `Observable`.
40 | public func asObservable() -> Observable {
41 | // temporary workaround
42 | //return Observable.create(subscribe: self.subscribe)
43 | return Observable.create { o in
44 | return self.subscribe(o)
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Observables/AddRef.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AddRef.swift
3 | // RxSwift
4 | //
5 | // Created by Junior B. on 30/10/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | final class AddRefSink : Sink, ObserverType {
10 | typealias Element = O.E
11 |
12 | override init(observer: O, cancel: Cancelable) {
13 | super.init(observer: observer, cancel: cancel)
14 | }
15 |
16 | func on(_ event: Event) {
17 | switch event {
18 | case .next(_):
19 | forwardOn(event)
20 | case .completed, .error(_):
21 | forwardOn(event)
22 | dispose()
23 | }
24 | }
25 | }
26 |
27 | final class AddRef : Producer {
28 | typealias EventHandler = (Event) throws -> Void
29 |
30 | private let _source: Observable
31 | private let _refCount: RefCountDisposable
32 |
33 | init(source: Observable, refCount: RefCountDisposable) {
34 | _source = source
35 | _refCount = refCount
36 | }
37 |
38 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element {
39 | let releaseDisposable = _refCount.retain()
40 | let sink = AddRefSink(observer: observer, cancel: cancel)
41 | let subscription = Disposables.create(releaseDisposable, _source.subscribe(sink))
42 |
43 | return (sink: sink, subscription: subscription)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Observables/AsMaybe.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AsMaybe.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/12/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | fileprivate final class AsMaybeSink : Sink, ObserverType {
10 | typealias ElementType = O.E
11 | typealias E = ElementType
12 |
13 | private var _element: Event? = nil
14 |
15 | func on(_ event: Event) {
16 | switch event {
17 | case .next:
18 | if _element != nil {
19 | forwardOn(.error(RxError.moreThanOneElement))
20 | dispose()
21 | }
22 |
23 | _element = event
24 | case .error:
25 | forwardOn(event)
26 | dispose()
27 | case .completed:
28 | if let element = _element {
29 | forwardOn(element)
30 | }
31 | forwardOn(.completed)
32 | dispose()
33 | }
34 | }
35 | }
36 |
37 | final class AsMaybe: Producer {
38 | fileprivate let _source: Observable
39 |
40 | init(source: Observable) {
41 | _source = source
42 | }
43 |
44 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element {
45 | let sink = AsMaybeSink(observer: observer, cancel: cancel)
46 | let subscription = _source.subscribe(sink)
47 | return (sink: sink, subscription: subscription)
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Observables/AsSingle.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AsSingle.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/12/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | fileprivate final class AsSingleSink : Sink, ObserverType {
10 | typealias ElementType = O.E
11 | typealias E = ElementType
12 |
13 | private var _element: Event? = nil
14 |
15 | func on(_ event: Event) {
16 | switch event {
17 | case .next:
18 | if _element != nil {
19 | forwardOn(.error(RxError.moreThanOneElement))
20 | dispose()
21 | }
22 |
23 | _element = event
24 | case .error:
25 | forwardOn(event)
26 | dispose()
27 | case .completed:
28 | if let element = _element {
29 | forwardOn(element)
30 | forwardOn(.completed)
31 | }
32 | else {
33 | forwardOn(.error(RxError.noElements))
34 | }
35 | dispose()
36 | }
37 | }
38 | }
39 |
40 | final class AsSingle: Producer {
41 | fileprivate let _source: Observable
42 |
43 | init(source: Observable) {
44 | _source = source
45 | }
46 |
47 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element {
48 | let sink = AsSingleSink(observer: observer, cancel: cancel)
49 | let subscription = _source.subscribe(sink)
50 | return (sink: sink, subscription: subscription)
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Observables/Dematerialize.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Dematerialize.swift
3 | // RxSwift
4 | //
5 | // Created by Jamie Pinkham on 3/13/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension ObservableType where E: EventConvertible {
10 | /**
11 | Convert any previously materialized Observable into it's original form.
12 | - seealso: [materialize operator on reactivex.io](http://reactivex.io/documentation/operators/materialize-dematerialize.html)
13 | - returns: The dematerialized observable sequence.
14 | */
15 | public func dematerialize() -> Observable {
16 | return Dematerialize(source: self.asObservable())
17 | }
18 |
19 | }
20 |
21 | fileprivate final class DematerializeSink: Sink, ObserverType where O.E == Element.ElementType {
22 | fileprivate func on(_ event: Event) {
23 | switch event {
24 | case .next(let element):
25 | forwardOn(element.event)
26 | if element.event.isStopEvent {
27 | dispose()
28 | }
29 | case .completed:
30 | forwardOn(.completed)
31 | dispose()
32 | case .error(let error):
33 | forwardOn(.error(error))
34 | dispose()
35 | }
36 | }
37 | }
38 |
39 | final fileprivate class Dematerialize: Producer {
40 | private let _source: Observable
41 |
42 | init(source: Observable) {
43 | _source = source
44 | }
45 |
46 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element.ElementType {
47 | let sink = DematerializeSink(observer: observer, cancel: cancel)
48 | let subscription = _source.subscribe(sink)
49 | return (sink: sink, subscription: subscription)
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/NestedSliding/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 | return EmptyProducer()
19 | }
20 | }
21 |
22 | final fileprivate class EmptyProducer : Producer {
23 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
24 | observer.on(.completed)
25 | return Disposables.create()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/NestedSliding/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 | return ErrorProducer(error: error)
19 | }
20 | }
21 |
22 | final fileprivate class ErrorProducer : Producer {
23 | private let _error: Swift.Error
24 |
25 | init(error: Swift.Error) {
26 | _error = error
27 | }
28 |
29 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
30 | observer.on(.error(_error))
31 | return Disposables.create()
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Observables/First.swift:
--------------------------------------------------------------------------------
1 | //
2 | // First.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 7/31/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | fileprivate final class FirstSink : Sink, ObserverType where O.E == Element? {
10 | typealias E = Element
11 | typealias Parent = First
12 |
13 | func on(_ event: Event) {
14 | switch event {
15 | case .next(let value):
16 | forwardOn(.next(value))
17 | forwardOn(.completed)
18 | dispose()
19 | case .error(let error):
20 | forwardOn(.error(error))
21 | dispose()
22 | case .completed:
23 | forwardOn(.next(nil))
24 | forwardOn(.completed)
25 | dispose()
26 | }
27 | }
28 | }
29 |
30 | final class First: Producer {
31 | fileprivate let _source: Observable
32 |
33 | init(source: Observable) {
34 | _source = source
35 | }
36 |
37 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element? {
38 | let sink = FirstSink(observer: observer, cancel: cancel)
39 | let subscription = _source.subscribe(sink)
40 | return (sink: sink, subscription: subscription)
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Observables/Materialize.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Materialize.swift
3 | // RxSwift
4 | //
5 | // Created by sergdort on 08/03/2017.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension ObservableType {
10 | /**
11 | Convert any Observable into an Observable of its events.
12 | - seealso: [materialize operator on reactivex.io](http://reactivex.io/documentation/operators/materialize-dematerialize.html)
13 | - returns: An observable sequence that wraps events in an Event. The returned Observable never errors, but it does complete after observing all of the events of the underlying Observable.
14 | */
15 | public func materialize() -> Observable> {
16 | return Materialize(source: self.asObservable())
17 | }
18 | }
19 |
20 | fileprivate final class MaterializeSink: Sink, ObserverType where O.E == Event {
21 |
22 | func on(_ event: Event) {
23 | forwardOn(.next(event))
24 | if event.isStopEvent {
25 | forwardOn(.completed)
26 | dispose()
27 | }
28 | }
29 | }
30 |
31 | final fileprivate class Materialize: Producer> {
32 | private let _source: Observable
33 |
34 | init(source: Observable) {
35 | _source = source
36 | }
37 |
38 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == E {
39 | let sink = MaterializeSink(observer: observer, cancel: cancel)
40 | let subscription = _source.subscribe(sink)
41 |
42 | return (sink: sink, subscription: subscription)
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/NestedSliding/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 | return NeverProducer()
20 | }
21 | }
22 |
23 | final fileprivate class NeverProducer : Producer {
24 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
25 | return Disposables.create()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Observables/Sink.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Sink.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/19/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | class Sink : Disposable {
10 | fileprivate let _observer: O
11 | fileprivate let _cancel: Cancelable
12 | fileprivate var _disposed: Bool
13 |
14 | #if DEBUG
15 | fileprivate let _synchronizationTracker = SynchronizationTracker()
16 | #endif
17 |
18 | init(observer: O, cancel: Cancelable) {
19 | #if TRACE_RESOURCES
20 | let _ = Resources.incrementTotal()
21 | #endif
22 | _observer = observer
23 | _cancel = cancel
24 | _disposed = false
25 | }
26 |
27 | final func forwardOn(_ event: Event) {
28 | #if DEBUG
29 | _synchronizationTracker.register(synchronizationErrorMessage: .default)
30 | defer { _synchronizationTracker.unregister() }
31 | #endif
32 | if _disposed {
33 | return
34 | }
35 | _observer.on(event)
36 | }
37 |
38 | final func forwarder() -> SinkForward {
39 | return SinkForward(forward: self)
40 | }
41 |
42 | final var disposed: Bool {
43 | return _disposed
44 | }
45 |
46 | func dispose() {
47 | _disposed = true
48 | _cancel.dispose()
49 | }
50 |
51 | deinit {
52 | #if TRACE_RESOURCES
53 | let _ = Resources.decrementTotal()
54 | #endif
55 | }
56 | }
57 |
58 | final class SinkForward: ObserverType {
59 | typealias E = O.E
60 |
61 | private let _forward: Sink
62 |
63 | init(forward: Sink) {
64 | _forward = forward
65 | }
66 |
67 | final func on(_ event: Event) {
68 | switch event {
69 | case .next:
70 | _forward._observer.on(event)
71 | case .error, .completed:
72 | _forward._observer.on(event)
73 | _forward._cancel.dispose()
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Observables/StartWith.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StartWith.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 4/6/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension ObservableType {
10 |
11 | /**
12 | Prepends a sequence of values to an observable sequence.
13 |
14 | - seealso: [startWith operator on reactivex.io](http://reactivex.io/documentation/operators/startwith.html)
15 |
16 | - parameter elements: Elements to prepend to the specified sequence.
17 | - returns: The source sequence prepended with the specified values.
18 | */
19 | public func startWith(_ elements: E ...)
20 | -> Observable {
21 | return StartWith(source: self.asObservable(), elements: elements)
22 | }
23 | }
24 |
25 | final fileprivate class StartWith: Producer {
26 | let elements: [Element]
27 | let source: Observable
28 |
29 | init(source: Observable, elements: [Element]) {
30 | self.source = source
31 | self.elements = elements
32 | super.init()
33 | }
34 |
35 | override func run(_ observer: O, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where O.E == Element {
36 | for e in elements {
37 | observer.on(.next(e))
38 | }
39 |
40 | return (sink: Disposables.create(), subscription: source.subscribe(observer))
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/NestedSliding/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 E
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: E))`
24 | ///
25 | /// - parameter element: Next element to send to observer(s)
26 | public func onNext(_ element: E) {
27 | on(.next(element))
28 | }
29 |
30 | /// Convenience method equivalent to `on(.completed)`
31 | public func onCompleted() {
32 | 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 | on(.error(error))
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/NestedSliding/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 Element = ElementType
11 |
12 | typealias EventHandler = (Event) -> Void
13 |
14 | private let _eventHandler : EventHandler
15 |
16 | init(_ eventHandler: @escaping EventHandler) {
17 | #if TRACE_RESOURCES
18 | let _ = Resources.incrementTotal()
19 | #endif
20 | _eventHandler = eventHandler
21 | }
22 |
23 | override func onCore(_ event: Event) {
24 | return _eventHandler(event)
25 | }
26 |
27 | #if TRACE_RESOURCES
28 | deinit {
29 | let _ = Resources.decrementTotal()
30 | }
31 | #endif
32 | }
33 |
--------------------------------------------------------------------------------
/NestedSliding/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 | typealias E = ElementType
11 |
12 | private var _isStopped: AtomicInt = 0
13 |
14 | func on(_ event: Event) {
15 | switch event {
16 | case .next:
17 | if _isStopped == 0 {
18 | onCore(event)
19 | }
20 | case .error, .completed:
21 | if AtomicCompareAndSwap(0, 1, &_isStopped) {
22 | onCore(event)
23 | }
24 | }
25 | }
26 |
27 | func onCore(_ event: Event) {
28 | rxAbstractMethod()
29 | }
30 |
31 | func dispose() {
32 | _ = AtomicCompareAndSwap(0, 1, &_isStopped)
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/RxMutableBox.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxMutableBox.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 5/22/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Creates mutable reference wrapper for any type.
10 | final class RxMutableBox : CustomDebugStringConvertible {
11 | /// Wrapped value
12 | var value : T
13 |
14 | /// Creates reference wrapper for `value`.
15 | ///
16 | /// - parameter value: Value to wrap.
17 | init (_ value: T) {
18 | self.value = value
19 | }
20 | }
21 |
22 | extension RxMutableBox {
23 | /// - returns: Box description.
24 | var debugDescription: String {
25 | return "MutatingBox(\(self.value))"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/NestedSliding/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 struct Foundation.Date
10 |
11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `NSTimeInterval` 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 |
--------------------------------------------------------------------------------
/NestedSliding/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 | _invocable = invocable
16 | _state = state
17 | }
18 |
19 | func invoke() {
20 | _invocable.invoke(_state)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 | return _disposable.isDisposed
21 | }
22 |
23 | init(action: @escaping Action, state: T) {
24 | _action = action
25 | _state = state
26 | }
27 |
28 | func invoke() {
29 | _disposable.setDisposable(_action(_state))
30 | }
31 |
32 | func dispose() {
33 | _disposable.dispose()
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Schedulers/OperationQueueScheduler.swift:
--------------------------------------------------------------------------------
1 | //
2 | // OperationQueueScheduler.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 4/4/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import class Foundation.OperationQueue
10 | import class Foundation.BlockOperation
11 | import Dispatch
12 |
13 | /// Abstracts the work that needs to be performed on a specific `NSOperationQueue`.
14 | ///
15 | /// This scheduler is suitable for cases when there is some bigger chunk of work that needs to be performed in background and you want to fine tune concurrent processing using `maxConcurrentOperationCount`.
16 | public class OperationQueueScheduler: ImmediateSchedulerType {
17 | public let operationQueue: OperationQueue
18 |
19 | /// Constructs new instance of `OperationQueueScheduler` that performs work on `operationQueue`.
20 | ///
21 | /// - parameter operationQueue: Operation queue targeted to perform work on.
22 | public init(operationQueue: OperationQueue) {
23 | self.operationQueue = operationQueue
24 | }
25 |
26 | /**
27 | Schedules an action to be executed recursively.
28 |
29 | - parameter state: State passed to the action to be executed.
30 | - parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.
31 | - returns: The disposable object used to cancel the scheduled action (best effort).
32 | */
33 | public func schedule(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {
34 | let cancel = SingleAssignmentDisposable()
35 |
36 | let operation = BlockOperation {
37 | if cancel.isDisposed {
38 | return
39 | }
40 |
41 |
42 | cancel.setDisposable(action(state))
43 | }
44 |
45 | self.operationQueue.addOperation(operation)
46 |
47 | return cancel
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/NestedSliding/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 SubjectObserverType : ObserverType
15 |
16 | /// Returns observer interface for subject.
17 | ///
18 | /// - returns: Observer interface for subject.
19 | func asObserver() -> SubjectObserverType
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/NestedSliding/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 | #if swift(>=4.0)
12 | typealias IntMax = Int64
13 | public typealias RxAbstractInteger = FixedWidthInteger
14 |
15 | extension SignedInteger {
16 | func toIntMax() -> IntMax {
17 | return IntMax(self)
18 | }
19 | }
20 | #else
21 | public typealias RxAbstractInteger = SignedInteger
22 |
23 | extension Array {
24 | public mutating func swapAt(_ i: Int, _ j: Int) {
25 | swap(&self[i], &self[j])
26 | }
27 | }
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/RxSwift/RxSwift/Traits/ObservableType+PrimitiveSequence.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObservableType+PrimitiveSequence.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 9/17/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension ObservableType {
10 | /**
11 | The `asSingle` operator throws a `RxError.noElements` or `RxError.moreThanOneElement`
12 | if the source Observable does not emit exactly one element before successfully completing.
13 |
14 | - seealso: [single operator on reactivex.io](http://reactivex.io/documentation/operators/first.html)
15 |
16 | - returns: An observable sequence that emits a single element or throws an exception if more (or none) of them are emitted.
17 | */
18 | public func asSingle() -> Single {
19 | return PrimitiveSequence(raw: AsSingle(source: self.asObservable()))
20 | }
21 |
22 | /**
23 | The `asMaybe` operator throws a ``RxError.moreThanOneElement`
24 | if the source Observable does not emit at most one element before successfully completing.
25 |
26 | - seealso: [single operator on reactivex.io](http://reactivex.io/documentation/operators/first.html)
27 |
28 | - returns: An observable sequence that emits a single element, completes or throws an exception if more of them are emitted.
29 | */
30 | public func asMaybe() -> Maybe {
31 | return PrimitiveSequence(raw: AsMaybe(source: self.asObservable()))
32 | }
33 | }
34 |
35 | extension ObservableType where E == Never {
36 | /**
37 | - returns: An observable sequence that completes.
38 | */
39 | public func asCompletable()
40 | -> Completable {
41 | return PrimitiveSequence(raw: self.asObservable())
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/MJRefresh/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.1.15
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/MJRefresh/MJRefresh-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MJRefresh : NSObject
3 | @end
4 | @implementation PodsDummy_MJRefresh
5 | @end
6 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/MJRefresh/MJRefresh-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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/MJRefresh/MJRefresh-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 "MJRefreshAutoFooter.h"
14 | #import "MJRefreshBackFooter.h"
15 | #import "MJRefreshComponent.h"
16 | #import "MJRefreshFooter.h"
17 | #import "MJRefreshHeader.h"
18 | #import "MJRefreshAutoGifFooter.h"
19 | #import "MJRefreshAutoNormalFooter.h"
20 | #import "MJRefreshAutoStateFooter.h"
21 | #import "MJRefreshBackGifFooter.h"
22 | #import "MJRefreshBackNormalFooter.h"
23 | #import "MJRefreshBackStateFooter.h"
24 | #import "MJRefreshGifHeader.h"
25 | #import "MJRefreshNormalHeader.h"
26 | #import "MJRefreshStateHeader.h"
27 | #import "MJRefresh.h"
28 | #import "MJRefreshConst.h"
29 | #import "NSBundle+MJRefresh.h"
30 | #import "UIScrollView+MJExtension.h"
31 | #import "UIScrollView+MJRefresh.h"
32 | #import "UIView+MJExtension.h"
33 |
34 | FOUNDATION_EXPORT double MJRefreshVersionNumber;
35 | FOUNDATION_EXPORT const unsigned char MJRefreshVersionString[];
36 |
37 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/MJRefresh/MJRefresh.modulemap:
--------------------------------------------------------------------------------
1 | framework module MJRefresh {
2 | umbrella header "MJRefresh-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/MJRefresh/MJRefresh.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | PODS_BUILD_DIR = ${BUILD_DIR}
4 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
5 | PODS_ROOT = ${SRCROOT}
6 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MJRefresh
7 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
8 | SKIP_INSTALL = YES
9 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSliding/Pods-NestedSliding-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_NestedSliding : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_NestedSliding
5 | @end
6 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSliding/Pods-NestedSliding-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_NestedSlidingVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_NestedSlidingVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSliding/Pods-NestedSliding.debug.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers"
6 | OTHER_LDFLAGS = $(inherited) -framework "MJRefresh" -framework "RxCocoa" -framework "RxSwift"
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_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSliding/Pods-NestedSliding.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_NestedSliding {
2 | umbrella header "Pods-NestedSliding-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSliding/Pods-NestedSliding.release.xcconfig:
--------------------------------------------------------------------------------
1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers"
6 | OTHER_LDFLAGS = $(inherited) -framework "MJRefresh" -framework "RxCocoa" -framework "RxSwift"
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_PODFILE_DIR_PATH = ${SRCROOT}/.
11 | PODS_ROOT = ${SRCROOT}/Pods
12 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingTests/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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingTests/Pods-NestedSlidingTests-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 | Generated by CocoaPods - https://cocoapods.org
4 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingTests/Pods-NestedSlidingTests-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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingTests/Pods-NestedSlidingTests-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_NestedSlidingTests : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_NestedSlidingTests
5 | @end
6 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingTests/Pods-NestedSlidingTests-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_NestedSlidingTestsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_NestedSlidingTestsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingTests/Pods-NestedSlidingTests.debug.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
8 | PODS_ROOT = ${SRCROOT}/Pods
9 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingTests/Pods-NestedSlidingTests.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_NestedSlidingTests {
2 | umbrella header "Pods-NestedSlidingTests-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingTests/Pods-NestedSlidingTests.release.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
8 | PODS_ROOT = ${SRCROOT}/Pods
9 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingUITests/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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingUITests/Pods-NestedSlidingUITests-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 | Generated by CocoaPods - https://cocoapods.org
4 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingUITests/Pods-NestedSlidingUITests-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 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingUITests/Pods-NestedSlidingUITests-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_NestedSlidingUITests : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_NestedSlidingUITests
5 | @end
6 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingUITests/Pods-NestedSlidingUITests-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_NestedSlidingUITestsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_NestedSlidingUITestsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingUITests/Pods-NestedSlidingUITests.debug.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
8 | PODS_ROOT = ${SRCROOT}/Pods
9 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingUITests/Pods-NestedSlidingUITests.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_NestedSlidingUITests {
2 | umbrella header "Pods-NestedSlidingUITests-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/Pods-NestedSlidingUITests/Pods-NestedSlidingUITests.release.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
4 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" -iquote "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
8 | PODS_ROOT = ${SRCROOT}/Pods
9 |
--------------------------------------------------------------------------------
/NestedSliding/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.2.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_RxCocoa : NSObject
3 | @end
4 | @implementation PodsDummy_RxCocoa
5 | @end
6 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 "RxCocoa.h"
14 | #import "RxCocoaRuntime.h"
15 | #import "_RX.h"
16 | #import "_RXDelegateProxy.h"
17 | #import "_RXKVOObserver.h"
18 | #import "_RXObjCRuntime.h"
19 |
20 | FOUNDATION_EXPORT double RxCocoaVersionNumber;
21 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];
22 |
23 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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}/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 |
--------------------------------------------------------------------------------
/NestedSliding/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.2.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/NestedSliding/Pods/Target Support Files/RxSwift/RxSwift-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_RxSwift : NSObject
3 | @end
4 | @implementation PodsDummy_RxSwift
5 | @end
6 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/NestedSliding/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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # NestedScrollView
2 | 一种N个UIScrollView嵌套的解决方案
3 |
4 | 
5 |
--------------------------------------------------------------------------------