This major release of Material Motion focuses includes improvements to the transitioning architecture, the reactive architecture, and new features on many of the interactions.
• The IndefiniteObservable
dependency has been bumped to 4.0.0. View the release notes.
• The Metadata
and Inspectable
types have been removed from Material Motion. All related APIs have been simplified accordingly.
• The MotionRuntime.toGraphViz
API has been removed. There is no replacement API.
• Tossable
's init(system:draggable:)
has been removed. Use init(spring:draggable:)
instead.
• SelfDismissingTransition
's willPresent(fore:dismisser:)
is no longer a static method. Implement the method as an instance method instead.
• Transition
is now a class protocol. This means that only object-types can conform to Transition
.
• TransitionController
's dismisser
has been removed. All methods have been moved directly to the TransitionController object.
• Tween
's keyPositions
has been removed. Use offsets
instead.
• MotionRuntime
's interactions(for:filter:)
has been removed. Use interactions(ofType:for:)
instead.
• Subscriptions no longer automatically unsubscribe when the Subscription object is released. Subscriptions will stay active for as long as the head of the stream is alive.
• Reactive types are now global and shared across all instances of MotionRuntime. You can use Reactive(object)
to fetch a cached reactive version of a supported type.
• MotionRuntime now supports a .get
for UISlider instances. This will return an Observable of the slider's value.
• New operator ignoreUntil
.
• New reactive variant of operator rubberBanded(outsideOf:maxLength:)
.
• New operator for float types toString(format:)
.
• New ReactiveScrollViewDelegate
API turns UIScrollViewDelegate events into observable streams.
For example, the delegate itself is an observable on the scroll view's content offset:
let delegate = ReactiveScrollViewDelegate()
scrollView.delegate = delegate
delegate.x().subscribeToValue { contentOffset in
print(contentOffset)
}
• New ReactiveButtonTarget
API for building reactive UIButtons.
• MotionRuntime
has a new API start(_:when:is:)
for starting interactions when another interaction reaches a given state.
• MotionRuntime
has a new isBeingManipulated
stream. This stream emits true when any Manipulable
interaction becomes active and false when all Manipulable
interactions come to rest.
• MotionRuntime
now has a new isBeingManipulated
property that indicates whether any manipulation interaction is active.
Any interaction that conforms to the new Manipulation
type will affect the runtime's isBeingManipulated
property.
• Draggable
now has a resistance
property that can be used to create drag resistance beyond a draggable region.
draggable.resistance.perimeter.value = someRect
• Tween
has new properties for creating repeating animations: repeatCount
, repeatDuration
, and autoreverses
.
These properties directly map to the corresponding properties in Core Animation.
• TransitionTween
has new initializer values delayBefore
and delayAfter
.
delayBefore
is the delay used when transitioning forward. delayAfter
is the delay used when transitioning backward.
• The gesture property for gesture-based interactions is now optional. When nil, the interaction will do nothing.
This is primarily useful when building transitions that have optional interactivity.
• New TransitionWithFallback
protocol allows transitions to swap themselves out for another transition instance.
• New TransitionWithPresentation
protocol allows transitions to customize their presentation using an iOS presentation controller. See the modal dialog case study for an example of using this new functionality.
• New TransitionWithTermination
protocol allows transitions to perform cleanup logic at the end of a transition.
• TransitionContext
's gestureRecognizers
is now settable. This makes it possible to add arbitrary gesture recognizers to a transition.
- Attempt to reduce the flakiness of the PropertiesNotReleasedWhenDereferenced test. (Jeff Verkoeyen)
- Move fallback calculations to later in the transition lifecycle. (Jeff Verkoeyen)
- Add a backgroundColor property to Reactive+CALayer. (Jeff Verkoeyen)
- Add a defaultModalPresentationStyle API for transitions with presentation. (Jeff Verkoeyen)
- Allow TransitionWithPresentation to return nil for conditional presentation. (Jeff Verkoeyen)
- Add support for fallback transitions. (Jeff Verkoeyen)
- Make TransitionWithPresentation's method an instance method. (Jeff Verkoeyen)
- Don't attempt to slow down CASpringAnimation animations when slow-motion animations is enabled. (Jeff Verkoeyen)
- Add support for pre/post delay to TransitionTween. (Jeff Verkoeyen)
- Also slow down the beginTime for tweens when simulator slow motion is enabled. (Jeff Verkoeyen)
- When emitting Tweens with a delay, set the fill mode to backward. (Jeff Verkoeyen)
- Resolve new Xcode 8.3.2 warnings. (Jeff Verkoeyen)
- Remove all deprecated APIs in preparation for major release. (Jeff Verkoeyen)
- Remove Metadata. (Jeff Verkoeyen)
- Rename keyPositions to offsets (Eric Tang)
- Add a reactive button target type and an initial isHighlighted stream. (Jeff Verkoeyen)
- Add format support to the toString operator for numerical types. (Jeff Verkoeyen)
- Add runtime.get for UISlider instances. (Jeff Verkoeyen)
- Add reactive UILabel type with text property. (Jeff Verkoeyen)
- When using a transition with presentation, use the .custom modal presentation style. (Jeff Verkoeyen)
- Allow transition types to be instantiated and stored on the transition controller. (Jeff Verkoeyen)
- Remove the foreAlignmentEdge property from the transition controller. (Jeff Verkoeyen)
- Add support for customizing transition presentation. (Jeff Verkoeyen)
- Avoid excessive TransitionTween emissions when the transition direction changes. (Jeff Verkoeyen)
- Added ignoreUntil and simplified slop (Eric Tang)
- Added unit test (Eric Tang)
- Swap params for runtime.interactions() API (Eric Tang)
- Fix build failure. (Jeff Verkoeyen)
- Add a ReactiveScrollViewDelegate and replace usage of the MotionRuntime in the carousel demo. (Jeff Verkoeyen)
- Mark all MotionObservable subscribe methods with @discardableResult. (Jeff Verkoeyen)
- Add a new Reactive type for querying reactive properties. (Jeff Verkoeyen)
- Shorten the delayBy test delay. (Jeff Verkoeyen)
- Added new start function to MotionRuntime (Eric Tang)
- Reduce flakiness of delay test. (Jeff Verkoeyen)
- Move Timeline to a timeline folder. (Jeff Verkoeyen)
- Bump IndefiniteObservable to 4.0 and add explicit unsubscriptions to the runtime. (Jeff Verkoeyen)
- Add repeat APIs to Tween (Eric Tang)
- Change runtime.interactions API to use an ofType: argument instead of a block. (Jeff Verkoeyen)
- Add a resistance property to Draggable. (Jeff Verkoeyen)
- Add a Manipulation type and implement UIKit view controller transitioning interactivity APIs. (Jeff Verkoeyen)
- View controllers are only interactive if at least one gesture recognizer is active. (Jeff Verkoeyen)
- Ensure that system animations take effect during view controller transitions. (Jeff Verkoeyen)
- Operators that use _map no longer transform velocity by default. (Jeff Verkoeyen)
- When no gesture recognizer is provided to a gestural interaction that expects one, the interaction now does nothing. (Jeff Verkoeyen)
- Fix build failure. (Jeff Verkoeyen)
- Add foreAlignmentEdge property to TransitionController. (Jeff Verkoeyen)
- Deprecate transitionController.dismisser and move the APIs into TransitionController. (Jeff Verkoeyen)
- Add missing imports. (Jeff Verkoeyen)
- Add missing Foundation import. (Jeff Verkoeyen)
- Add Togglable conformity to Rotatable and Scalable. (Jeff Verkoeyen)
Auto-generated by running:
apidiff origin/stable release-candidate swift MaterialMotion.xcworkspace MaterialMotion
removed protocol: Inspectable
removed class: Metadata
new var: resistance
in Draggable
modified class: Draggable
Type of change: | Declaration |
---|---|
From: | public final class Draggable : Gesturable<UIPanGestureRecognizer>, Interaction, Togglable, Stateful |
To: | public final class Draggable : Gesturable<UIPanGestureRecognizer>, Interaction, Togglable, Manipulation |
new protocol: Manipulation
modified class: Rotatable
Type of change: | Declaration |
---|---|
From: | public final class Rotatable : Gesturable<UIRotationGestureRecognizer>, Interaction, Togglable, Stateful |
To: | public final class Rotatable : Gesturable<UIRotationGestureRecognizer>, Interaction, Togglable, Manipulation |
modified class: Scalable
Type of change: | Declaration |
---|---|
From: | public final class Scalable : Gesturable<UIPinchGestureRecognizer>, Interaction, Togglable, Stateful |
To: | public final class Scalable : Gesturable<UIPinchGestureRecognizer>, Interaction, Togglable, Manipulation |
removed method: init(system:draggable:)
in Tossable
new var: offsets
in Tween
new var: repeatCount
in Tween
new var: repeatDuration
in Tween
new var: autoreverses
in Tween
removed var: keyPositions
in Tween
new method: ignoreUntil(_:)
in MotionObservableConvertible
new method: rubberBanded(outsideOf:maxLength:)
in MotionObservableConvertible
new method: toString(format:)
in MotionObservableConvertible
new method: interactions(ofType:for:)
in MotionRuntime
new method: start(_:when:is:)
in MotionRuntime
new var: isBeingManipulated
in MotionRuntime
removed method: interactions(for:filter:)
in MotionRuntime
removed method: asGraphviz()
in MotionRuntime
new class: ReactiveButtonTarget
new var: didHighlight
in ReactiveButtonTarget
removed class: ReactiveUIView
removed class: ReactiveCAShapeLayer
new class: ReactiveScrollViewDelegate
new method: willPresent(fore:dismisser:)
in SelfDismissingTransition
removed static method: willPresent(fore:dismisser:)
in SelfDismissingTransition
removed method: init()
in Transition
modified protocol: Transition
Type of change: | Declaration |
---|---|
From: | public protocol Transition |
To: | public protocol Transition : class |
new protocol: TransitionWithFallback
new method: fallbackTansition(withContext:)
in TransitionWithFallback
new protocol: TransitionWithPresentation
new method: presentationController(forPresented:presenting:source:)
in TransitionWithPresentation
new method: defaultModalPresentationStyle()
in TransitionWithPresentation
new protocol: TransitionWithTermination
new method: didEndTransition(withContext:runtime:)
in TransitionWithTermination
modified var: gestureRecognizers
in TransitionContext
Type of change: | Declaration |
---|---|
From: | public var gestureRecognizers: Set<UIGestureRecognizer> { get } |
To: | public let gestureRecognizers: Set<UIGestureRecognizer> |
new method: disableSimultaneousRecognition(of:)
in TransitionController
new var: presentationController
in TransitionController
new method: topEdgeDismisserDelegate(for:)
in TransitionController
new var: gestureRecognizers
in TransitionController
new var: transition
in TransitionController
new var: gestureDelegate
in TransitionController
new method: dismissWhenGestureRecognizerBegins(_:)
in TransitionController
removed var: transitionType
in TransitionController
removed var: dismisser
in TransitionController
- Update modal dialog example to make use of a presentation controller. (Jeff Verkoeyen)
- Update CocoaPods to 1.2.1. (Jeff Verkoeyen)
- Add Discord badge (Brenton Simpson)
- Remove use of Reactive type in carousel example. (Jeff Verkoeyen)
- Make both push back case studies use a light status bar in the modal view. (Jeff Verkoeyen)
Highlights:
- First contribution from Eric Tang adding support for
DispatchTimeInterval
initialization of time-based interactions and operators. - New visualization tools for streams.
- All gestural interactions can now be reactively enabled and disabled.
- Transitions APIs are evolving as we begin work on components. View the roadmap for more details.
• defaultTransitionSpringTension
and defaultTransitionSpringFriction
's values have been swapped to match the actual default values for tension and friction. These values were previously incorrectly reversed.
• Operators that do not support Core Animation will no longer throw runtime assertions when receiving Core Animation events. We have an open issue to explore nicer handling of operators and properties that do not support Core Animation.
• MotionRuntime now allows you to retrieve interactions associated with a given target with the new interactions(for:filter:)
API.
Example usage:
let draggables = runtime.interactions(for: view) { $0 as? Draggable }
• PathTween
, Tween
, TransitionTween
each have a new convenience initializer that accepts the DispatchTimeInterval
enum, making it possible to specify explicit time units. Contributed by Eric Tang.
Example usage:
let tween = Tween<CGFloat>(duration: .milliseconds(300), values: [1, 0])
• Draggable
, Rotatable
, Scalable
, and DirectlyManipulable
now all conform to the Togglable
type, meaning they can be reactively enabled and disabled.
Example usage:
draggable.enabled.value = false // Disables the interaction
• delay(by:)
now accepts a DispatchTimeInterval
enum, making it possible to specify explicit time units. Contributed by Eric Tang.
let delayedStream = stream.delay(by: .seconds(1))
• toString()
transforms any stream into a string representation. This is part of our Reactive Controls milestone.
let stringStream = stream.toStream()
• visualize(in:)
allows you to display a stream's values and changes in your app with a new visualization overlay that appears atop your runtime's container view.
Example usage:
runtime.add(tossable, to: view) { $0.visualize(in: runtime.visualizationView) }
• MotionRuntime's add
method now requires that targets conform to AnyObject. This will not affect any of the existing Interactions included with Material Motion. What this change means is that you can no longer build interactions that target non-object types.
• TransitionController is now a pure Swift class type. This means TransitionController is no longer visible to Objective-C code. See #108 for our discussion on Objective-C support.
• TransitionController
now exposes a transitioningDelegate
property. TransitionController
no longer conforms to UIViewControllerTransitioningDelegate
.
// Before
viewController.transitioningDelegate = viewController.transitionController
// After
viewController.transitioningDelegate = viewController.transitionController.transitioningDelegate
- Added convenience constructor that takes DispatchTimeInterval for duration (#107) (Eric Tang)
- Make ViewControllerDismisser a pure Swift class. (Jeff Verkoeyen)
- Make TransitionController a pure Swift class. (Jeff Verkoeyen)
- Add runtime.interactions(for:) API for fetching interactions associated with a given target. (Jeff Verkoeyen)
- Properly compare visualize's label text against the prefixed value string. (Jeff Verkoeyen)
- Add visualize operator and remove runtime.visualize. (Jeff Verkoeyen)
- Make all gestural interactions conform to Togglable. (Jeff Verkoeyen)
- Use a reasonable fallback when adding visualization views to the runtime container view. (Jeff Verkoeyen)
- Add runtime.visualize for visualizing values emitted by streams. (Jeff Verkoeyen)
- Remove runtime assertion when core animation events are sent to operators that don't support them. (Jeff Verkoeyen)
- Add toString operator. (Jeff Verkoeyen)
- Swap the default transition tension/friction values to match the proper variable names. (Jeff Verkoeyen)
Auto-generated by running:
apidiff origin/stable release-candidate swift MaterialMotion.xcworkspace MaterialMotion
new method: interactions(for:filter:)
in MotionRuntime
modified method: add(_:to:constraints:)
in MotionRuntime
: targets must now conform to AnyObject.
new var: visualizationView
in MotionRuntime
new method: delay(by:)
in MotionObservableConvertible
new method: toString()
in MotionObservableConvertible
new method: visualize(_:in:)
in MotionObservableConvertible
modified class: DirectlyManipulable
Type of change: | Declaration |
---|---|
From: | public final class DirectlyManipulable : NSObject, Interaction, Stateful |
To: | public final class DirectlyManipulable : NSObject, Interaction, Togglable, Stateful |
modified class: Draggable
Type of change: | Declaration |
---|---|
From: | public final class Draggable : Gesturable<UIPanGestureRecognizer>, Interaction, Stateful |
To: | public final class Draggable : Gesturable<UIPanGestureRecognizer>, Interaction, Togglable, Stateful |
new var: enabled
in Gesturable
new method: init(duration:path:system:timeline:)
in PathTween
modified class: Rotatable
Type of change: | Declaration |
---|---|
From: | public final class Rotatable : Gesturable<UIRotationGestureRecognizer>, Interaction, Stateful |
To: | public final class Rotatable : Gesturable<UIRotationGestureRecognizer>, Interaction, Togglable, Stateful |
modified class: Scalable
Type of change: | Declaration |
---|---|
From: | public final class Scalable : Gesturable<UIPinchGestureRecognizer>, Interaction, Stateful |
To: | public final class Scalable : Gesturable<UIPinchGestureRecognizer>, Interaction, Togglable, Stateful |
new method: init(duration:values:system:timeline:)
in Tween
new method: init(duration:forwardValues:direction:forwardKeyPositions:system:timeline:)
in TransitionTween
modified class: TransitionController
Type of change: | Declaration |
---|---|
From: | public final class TransitionController : NSObject |
To: | public final class TransitionController |
new var: transitioningDelegate
in TransitionController
new var: gestureRecognizers
in ViewControllerDismisser
This is a patch release resolving a crashing bug when runtime.shouldVisualizeMotion
was enabled and an ArcMove
interaction was added to a view without a parent.
- Use a reasonable fallback when adding visualization views to the runtime container view. (Jeff Verkoeyen)
This minor release introduces a new operator, startWith
, which is meant to replace the initialValue
operator.
The new startWith
operator replaces initialValue
and behaves slightly differently: startWith
returns a memory stream, which is a stream that stores the last value it received and emits it upon subscription. What this means is that the provided initial value will only be emitted once, ever, and that the resulting stream is guaranteed to emit a value on subscription.
You can use startWith to take a stream that may not initially emit values (like a gesture stream) and prime it with an initial value. For example, we use startWith in the "How to use reactive constraints" example in order to ensure that our axis line property is primed with a value.
let axisCenterX = runtime.get(axisLine.layer).position.x()
runtime.add(Draggable(), to: exampleView) { $0
.startWith(exampleView.layer.position)
.xLocked(to: axisCenterX)
}
runtime.add(Draggable(), to: axisLine) { $0.yLocked(to: axisLine.layer.position.y) }
initialValue(_:)
has been deprecated in favor of the newstartWith(_:)
operator.
- Deprecate initialValue and provide startWith as a replacement. (Jeff Verkoeyen)
- Renamed normalized.swift to normalizedBy.swift. (Jeff Verkoeyen)
- Rename unit test file rewriteTo.swift to rewriteToTests.swift. (Jeff Verkoeyen)
Auto-generated by running:
apidiff origin/stable release-candidate swift MaterialMotion.xcworkspace MaterialMotion
new method: startWith(_:)
in MotionObservableConvertible
deprecated method: initialValue(_:)
in MotionObservableConvertible
: Use startWith(_:)
instead.
- Fix README example. (Jeff Verkoeyen)
- Fix typo. (Jeff Verkoeyen)
This is our first minor release. It includes two new interactions and improvements to APIs for the common cases.
- TransitionSpring's configuration now defaults to Core Animation's default values. If you prefer to continue using the original Spring defaults you can use the following snippet:
spring.tension.value = defaultSpringTension
spring.friction.value = defaultSpringFriction
spring.mass.value = defaultSpringMass
spring.suggestedDuration.value = 0
- Tossable's
init(system:draggable:)
is deprecated in favor ofinit(spring:draggable:)
.
New interactions: ChangeDirection
and SlopRegion
.
Gesturable interactions can now be initialized with a sequence of gesture recognizers. This makes it easier to create gesturable interactions in transitions where the gesture recognizers are provided as a set.
Spring's system now defaults to Core Animation.
There is a new API for getting a gesture recognizer delegate that's able to coordinate a "drag to dismiss" transition with a vertical scroll view.
let pan = UIPanGestureRecognizer()
pan.delegate = transitionController.dismisser.topEdgeDismisserDelegate(for: scrollView)
- Store interactions before adding them so that order is maintained when interactions add other interactions. (Jeff Verkoeyen)
- Avoid over-completion of chained property animations. (Jeff Verkoeyen)
- Fix bug causing properties-chained-to-properties to not animate correctly. (Jeff Verkoeyen)
- Add SlopRegion interaction. (Jeff Verkoeyen)
- Add topEdgeDismisserDelegate API to ViewControllerDismisser. (Jeff Verkoeyen)
- Add Gesturable convenience initializer for extracting the first gesture recognizer from a sequence of gesture recognizers. (Jeff Verkoeyen)
- Rename ChangeDirectionOnRelease(of:) to ChangeDirection(withVelocityOf:) (Jeff Verkoeyen)
- Fix crashing bug when connecting properties to one another. (Jeff Verkoeyen)
- Add ChangeDirectionOnRelease interaction. (Jeff Verkoeyen)
- Make TransitionSpring and Spring T type conform to Subtractable so that coreAnimation can be set as the default system. (Jeff Verkoeyen)
- TransitionSpring configuration now defaults to Core Animation configuration defaults. (Jeff Verkoeyen)
Auto-generated by running:
apidiff origin/stable release-candidate swift MaterialMotion.xcworkspace MaterialMotion
new global var: defaultTransitionSpringFriction
new global var: defaultTransitionSpringSuggestedDuration
new global var: defaultTransitionSpringTension
new global var: defaultTransitionSpringMass
new class: ChangeDirection
new class: SlopRegion
Affects Draggable
, Rotatable
, and Scalable
.
new method: init(withFirstGestureIn:)
in Gesturable
Type of change: | Declaration |
---|---|
From: | public class Spring<T> : Interaction, Togglable, Stateful where T : Zeroable |
To: | public class Spring<T> : Interaction, Togglable, Stateful where T : Subtractable, T : Zeroable |
modified method: init(threshold:system:)
in Spring
Type of change: | Declaration |
---|---|
From: | public init(threshold: CGFloat, system: @escaping SpringToStream<T>) |
To: | public init(threshold: CGFloat = 1, system: @escaping SpringToStream<T> = coreAnimation) |
modified method: init(spring:draggable:)
in Tossable
Type of change: | Declaration |
---|---|
From: | public init(spring: Spring<CGPoint>, draggable: Draggable = Draggable()) |
To: | public init(spring: Spring<CGPoint> = Spring(), draggable: Draggable = Draggable()) |
deprecated method: init(system:draggable:)
in Tossable
. Use init(spring:draggable:)
instead.
modified class: TransitionSpring
Type of change: | Declaration |
---|---|
From: | public final class TransitionSpring<T> : Spring<T> where T : Zeroable |
To: | public final class TransitionSpring<T> : Spring<T> where T : Subtractable, T : Zeroable |
modified method: init(back:fore:direction:threshold:system:)
in TransitionSpring
Type of change: | Declaration |
---|---|
From: | public init(back backwardDestination: T, fore forwardDestination: T, direction: ReactiveProperty<TransitionDirection>, threshold: CGFloat, system: @escaping SpringToStream<T>) |
To: | public init(back backwardDestination: T, fore forwardDestination: T, direction: ReactiveProperty<TransitionDirection>, threshold: CGFloat = default, system: @escaping SpringToStream<T> = default) |
new method: topEdgeDismisserDelegate(for:)
in ViewControllerDismisser
new var: onCompletion
in CoreAnimationChannelAdd
removed var: onCompletion
in CoreAnimationChannelAdd
- Modify the PushBackTransition example to use connected properties instead of multiple springs. (Jeff Verkoeyen)
- Simplify the interactive push back transition example. (Jeff Verkoeyen)
- Add syntax highlighting languages to the README. (Jeff Verkoeyen)
- Add example Podfile to the README. (Jeff Verkoeyen)
Initial stable release of Material Motion. Includes:
- Interactions with constraint support.
- Runtime visualization using graphviz.
- Many case studies in the Catalog app.
- A Swift playground.
- Reintroduce property core animation event forwarding. (Jeff Verkoeyen)
- And one last missing import. (Jeff Verkoeyen)
- Add one more missing import. (Jeff Verkoeyen)
- Add more missing UIKit imports. (Jeff Verkoeyen)
- Add missing import statements throughout the codebase. (Jeff Verkoeyen)
- Slow down Core Animation animations when simulator slow motion animations is enabled. (Jeff Verkoeyen)
- Add default coordinate space to SetPositionOnTap initializer. (Jeff Verkoeyen)
- Rename TransitionContext.Direction to TransitionDirection. (Jeff Verkoeyen)
- Add x-/yLockedTo tests. (Jeff Verkoeyen)
- Use a different y value for normalize tests. (Jeff Verkoeyen)
- Rename threshold event to threshold side and drop the -when prefix. (Jeff Verkoeyen)
- Add threshold tests. (Jeff Verkoeyen)
- Add rubberBanded tests. (Jeff Verkoeyen)
- Remove subtractedFrom operator. (Jeff Verkoeyen)
- Add offsetBy and scaledBy tests. (Jeff Verkoeyen)
- Add normalize tests. (Jeff Verkoeyen)
- Add anchorPointAdjustment tests. (Jeff Verkoeyen)
- Fix bug causing Tween never to come to rest. (Jeff Verkoeyen)
- Add rewrite tests. (Jeff Verkoeyen)
- Add merge tests. (Jeff Verkoeyen)
- Add inverted tests. (Jeff Verkoeyen)
- Add distanceFrom tests and improve reactive implementation. (Jeff Verkoeyen)
- Add initialValue tests. (Jeff Verkoeyen)
- Remove unnecessary testing imports. (Jeff Verkoeyen)
- Add valve tests. (Jeff Verkoeyen)
- Add upper-/lowerBound tests. (Jeff Verkoeyen)
- Add delay tests. (Jeff Verkoeyen)
- Add dedupe tests. (Jeff Verkoeyen)
- Add slop tests. (Jeff Verkoeyen)
- Default untyped integer literals to be CGFloat ReactiveProperties. (Jeff Verkoeyen)
- Rearrange the operator unit tests to match the source file layout. (Jeff Verkoeyen)
- Add Addable/Subtractable tests. (Jeff Verkoeyen)
- Add _remember tests. (Jeff Verkoeyen)
- Add Core Animation _map tests. (Jeff Verkoeyen)
- Add TransitionTween interaction. (Jeff Verkoeyen)
- Add support for reactively re-animating Tweens when values or keyPositions changes. (Jeff Verkoeyen)
- Make TransitionContext.Direction conform to Invertible. (Jeff Verkoeyen)
- Add rewrite operator that accepts an observable. (Jeff Verkoeyen)
- Add Invertible type and general-purpose inverted operator. (Jeff Verkoeyen)
- Add support for additive Core Animation tweens. (Jeff Verkoeyen)
- Make additive calculations more generic in preparation for keyframe additive animation support. (Jeff Verkoeyen)
- Ensure that Gesturable interactions that use an existing gesture recognizer prime the initial state. (Jeff Verkoeyen)
- Remove superfluous Equatable conformity in coreAnimationSpringToStream. (Jeff Verkoeyen)
- Add width/height reactive properties to CALayer. (Jeff Verkoeyen)
- Make all classes final that can be. (Jeff Verkoeyen)
- Add NoConstraints typealias for interactions that don't support constraints. (Jeff Verkoeyen)
- Add draggable.finalVelocity API. (Jeff Verkoeyen)
- Rename runtime.disable to runtime.toggle. (Jeff Verkoeyen)
- Use primary/secondary colors for metadata readouts. (Jeff Verkoeyen)
- Simulate atRest/active eventing for tap gestures so that they can be used to start animations. (Jeff Verkoeyen)
- Resolve Xcode 8.3 warnings. (Jeff Verkoeyen)
- Add Tween example and hacky runtime.start(when) mechanism. (Jeff Verkoeyen)
- Add Scalable/Tossable interaction demos and fix bug in Tossable state reporting. (Jeff Verkoeyen)
- Update name to MaterialMotion. (Jeff Verkoeyen)
- Provide a default for ArcMove's initializer. (Jeff Verkoeyen)
- Add rotatable example and make Rotatable/Scalable conform to Stateful. (Jeff Verkoeyen)
- Remove old demos and general usage of POP in preparation for moving POP to an external dependency. (Jeff Verkoeyen)
- Make coreAnimation the default system for all tweens and tossable. (Jeff Verkoeyen)
- Add AggregateMotionState for treating many MotionState streams as a single stream. (Jeff Verkoeyen)
- Bump supported SDK to iOS 9. (Jeff Verkoeyen)
- Pull the core animation reactive property builder out of ReactiveCALayer so that apps can create custom core animation properties. (Jeff Verkoeyen)
- Fix bug with runtime.get and gesture recognizer typing. (Jeff Verkoeyen)
- Remove reactive UIView center properties. (Jeff Verkoeyen)
- Documentation pass at all operators. (Jeff Verkoeyen)
- Document TransitionSpring. (Jeff Verkoeyen)
- Document the Tossable interaction. (Jeff Verkoeyen)
- Document the PathTween interaction. (Jeff Verkoeyen)
- Move Interaction conformity to the type definition. (Jeff Verkoeyen)
- Flesh out docs for ArcMove and AdjustsAnchorPoint. (Jeff Verkoeyen)
- Adjust MotionObservable subscription APIs to encourage forwarding channels rather than creating a terminal subscription. (Jeff Verkoeyen)
- Rename translated to translation(addedTo:). (Jeff Verkoeyen)
- Rename onRecognitionState to whenRecognitionState. (Jeff Verkoeyen)
- Change the reactive object cache to use ObjectIdentifier as the key and consolidate the caches to one dictionary. (Jeff Verkoeyen)
- Fix minor typo in documentation. (Jeff Verkoeyen)
- Rename Tap to SetPositionOnTap and document the class. (Jeff Verkoeyen)
- Document the Spring interaction. (Jeff Verkoeyen)
- Support generic T value types for POP springs. (Jeff Verkoeyen)
- Clean up the Tween documentation. (Jeff Verkoeyen)
- Make all gestural interaction classes final. (Jeff Verkoeyen)
- Document Draggable, Rotatable, and Scalable. (Jeff Verkoeyen)
- Flesh out the DirectlyManipulable docs. (Jeff Verkoeyen)
- Move Metadata deeper into the operator implementations. (Jeff Verkoeyen)
- Minor modernization of ReactiveProperty method signature. (Jeff Verkoeyen)
- Reduce the public API footprint of Metadata. (Jeff Verkoeyen)
- Move MotionState to Stateful.swift. (Jeff Verkoeyen)
- Document and clean up the MotionRuntime APIs. (Jeff Verkoeyen)
- Add constraint support to spring/tossable. (Jeff Verkoeyen)
- Minor docs cleanup of Interaction. (Jeff Verkoeyen)
- Rename the library to ReactiveMotion. (Jeff Verkoeyen)
- Move all examples to the Catalog target and resolve all API visibility failures. (Jeff Verkoeyen)
- Move files into subfolders to clean up the root folder's classes. (Jeff Verkoeyen)
- Document and simplify the Interaction types. (Jeff Verkoeyen)
- Add constraint support to Tween. (Jeff Verkoeyen)
- Add constraint support to additive animations. (Jeff Verkoeyen)
- Add constraint support to Rotatable/Scalable. (Jeff Verkoeyen)
- Introduce interaction constraints. (Jeff Verkoeyen)
- Flatten the Interaction types down to a single Interaction protocol. (Jeff Verkoeyen)
- 100% coverage of ReactiveProperty. (Jeff Verkoeyen)
- Implement a reactive variant of xLockedTo. (Jeff Verkoeyen)
- Add initialValue operator. (Jeff Verkoeyen)
- 100% coverage of MotionObservable. (Jeff Verkoeyen)
- Move TimelineView to the examples supplemental directory rather than src. (Jeff Verkoeyen)
- Remove ReactivePropertyConvertible. (Jeff Verkoeyen)
- Simplify the runtime.connect generic signatures. (Jeff Verkoeyen)
- Add x/yLockedTo constraints. (Jeff Verkoeyen)
- Remove literal convertibles. (Jeff Verkoeyen)
- Introduce runtime.connect. (Jeff Verkoeyen)
- Fix bug with Tossable being used with TransitionSpring instances. (Jeff Verkoeyen)
- Remove Core Animation forwarding from ReactiveProperty. (Jeff Verkoeyen)
- Remove the Tossable Destination type. (Jeff Verkoeyen)
- Remove TransitionInteraction type. (Jeff Verkoeyen)
- Make use of StatefulInteraction type for transition completion. (Jeff Verkoeyen)
- Introduce Togglable- and StatefulInteraction types and runtime.enable that makes use of them. (Jeff Verkoeyen)
- Remove asStream conversions. (Jeff Verkoeyen)
- Request that Transition instances return the list of streams that define completion. (Jeff Verkoeyen)
- Move most interaction protocol implementations to extensions. (Jeff Verkoeyen)
- Make coordinate space an explicit argument on the Tap interaction. (Jeff Verkoeyen)
- Rework the gestural interactions to use constant properties where applicable. (Jeff Verkoeyen)
- Remove excessive .asStream invocations by adding a property-to-property runtime.add method. (Jeff Verkoeyen)
- Move timeline channel event into the .add event and ensure that visualization views are remembered by the _remember operator. (Jeff Verkoeyen)
- Resolve memory leak in Spring implementation. (Jeff Verkoeyen)
- Make Tween's system property a private const. (Jeff Verkoeyen)
- Make timeline a constant on Tween. (Jeff Verkoeyen)
- Make all non-reactive ArcMove properties constant. (Jeff Verkoeyen)
- Make all non-reactive properties on AdjustsAnchorPoint constant. (Jeff Verkoeyen)
- Creates a TimelineView in /supplemental (Andres Ugarte)
- Only keep one animation at a time (Andres Ugarte)
- Improve support for Springs being added to many targets. (Jeff Verkoeyen)
- Resolve warnings detected by Xcode 8.3. (Jeff Verkoeyen)
- Fix previous commit affecting implicit animations on CALayer. (Jeff Verkoeyen)
- Disable actions when writing to CALayer properties. (Jeff Verkoeyen)
- Fix recursive call to .zero() (Andres Ugarte)
- Debug layer for paths and tweaks to the Arc example (Andres Ugarte)
- Make all Tween properties be reactive properties and use shadow pattern to avoid retain cycles in system implementation. (Jeff Verkoeyen)
- Consolidate arc move logic into the interaction file. (Jeff Verkoeyen)
- Rename mapRange to rewriteRange. (Jeff Verkoeyen)
- Rename mapTo to rewriteTo. (Jeff Verkoeyen)
- Add fab transition demo. (Jeff Verkoeyen)
- Moving all source to follow the new systems naming convention. (Jeff Verkoeyen)
- Remove the term director from the code base. (Jeff Verkoeyen)
- Store the last-seen initial value for translated, rotated, and scaled. (Jeff Verkoeyen)
- Remove destinations operator in favor of rewrite. (Jeff Verkoeyen)
- Rename rubberBand.swift to rubberBanded.swift. (Jeff Verkoeyen)
- Threshold and slop now both emit simple events which must be rewritten to more complex types. (Jeff Verkoeyen)
- Split threshold into threshold and thresholdRange. (Jeff Verkoeyen)
- Rename read to _read and move it to foundation. (Jeff Verkoeyen)
- Touch up valve implementation. (Jeff Verkoeyen)
- Clean up and rename arguments for mapRange. (Jeff Verkoeyen)
- Add docs to inverted. (Jeff Verkoeyen)
- Rename distance file to distanceFrom. (Jeff Verkoeyen)
- Add dedupe docs. (Jeff Verkoeyen)
- Rename anchored to anchorPointAdjustment and touch up the docs. (Jeff Verkoeyen)
- Move x and y operators to their own files. (Jeff Verkoeyen)
- Move offset, scaled, and subtracted out to their own files. (Jeff Verkoeyen)
- Move normalized operators out to their own file. (Jeff Verkoeyen)
- Rename _memoize to _remember. (Jeff Verkoeyen)
- Remove unnecessary block from _memoize implementation. (Jeff Verkoeyen)
- Remove dead code in _memoize. (Jeff Verkoeyen)
- Rename min/max to lowerBound/upperBound, respectively. (Jeff Verkoeyen)
- Move min and max out to their own files. (Jeff Verkoeyen)
- Remove excessive asStream cast from operators. (Jeff Verkoeyen)
- Remove dead code and move private APIs to bottom of MotionRuntime. (Jeff Verkoeyen)
- Remove MotionRuntime child APIs. (Jeff Verkoeyen)
- Tidy up and document ReactiveProperty. (Jeff Verkoeyen)
- Add Core Animation event test. (Jeff Verkoeyen)
- Add literals as streams tests. (Jeff Verkoeyen)
- Clean up the MotionObservable implementation and improve test coverage. (Jeff Verkoeyen)
- Rename multicast to _memoize. (Jeff Verkoeyen)
- Comment out debug code. (Jeff Verkoeyen)
- Add metadata and inspection APIs. (Jeff Verkoeyen)
- Remove unused state property from MotionRuntime. (Jeff Verkoeyen)
- Remove multicast operator from anchored. (Jeff Verkoeyen)
- Minor docs standardization in Timeline. (Jeff Verkoeyen)
- Add next-only subscribe method to MotionObservable. (Jeff Verkoeyen)
- Fix memory leak in Spring. (Jeff Verkoeyen)
- Fix memory leak in ReactiveProperty. (Jeff Verkoeyen)
- Remove strong references to the reactive CALayer instance. (Jeff Verkoeyen)
- Clean up and document the Timeline APIs. (Jeff Verkoeyen)
- Extract PathTween from Tween. (Jeff Verkoeyen)
- Expose a Spring instance on Tossable. (Jeff Verkoeyen)
- Remove the state channel. (Jeff Verkoeyen)
- Spring shape updated to better support enabling/disabling and state observation. (Jeff Verkoeyen)
- Tween now makes use of reactive state property instead of state channel. (Jeff Verkoeyen)
- Add whenAllAtRest method to the runtime. (Jeff Verkoeyen)
- Remove core animation assertion in reactive property. (Jeff Verkoeyen)
- Add convenience createProperty for Zeroable types. (Jeff Verkoeyen)
- Add reactive backgroundColor UIView property. (Jeff Verkoeyen)
- Add asMotionState operator for UIGestureRecognizer. (Jeff Verkoeyen)
- Add a completion block to the core animation channel. (Jeff Verkoeyen)
- Expose threshold on TransitionSpring and provide threshold throughout all examples. (Jeff Verkoeyen)
- Add ArcMove interaction. (Jeff Verkoeyen)
- Add Timeline and support for scrubbing core animation layers (Jeff Verkoeyen)
- Support delay in Core Animation tweens. (Jeff Verkoeyen)
- Make the Tween's duration a motion observable (Andres Ugarte)
- Add arcMove path builder function. (Jeff Verkoeyen)
- Add support to Tween for path animations. (Jeff Verkoeyen)
- Add target view support to all gestural interactions. (Jeff Verkoeyen)
- Add default view replicator instance to Transition. (Jeff Verkoeyen)
- valve no longer immediately connects to the upstream. (Jeff Verkoeyen)
- Add support for decomposition of iOS 9 multi-dimensional spring velocity. (Jeff Verkoeyen)
- Don't allow Spring's initialVelocity to change after the stream has been subscribed. (Jeff Verkoeyen)
- Move compose API from TransitionSpring to Spring. (Jeff Verkoeyen)
- Add convenience initializers for gestural interactions to extract gesture recognizers from an array of gesture recognizers. (Jeff Verkoeyen)
- Fix build break due to symbol changes. (Jeff Verkoeyen)
- Add gesture filter operator. (Jeff Verkoeyen)
- Add size reactive property to CALayer. (Jeff Verkoeyen)
- Add slop operator. (Jeff Verkoeyen)
- Add active and atRest operators for gesture streams. (Jeff Verkoeyen)
- Add context view retriever API to Transition. (Jeff Verkoeyen)
- Add translation operator. (Jeff Verkoeyen)
- Change Core Animation's scale key path to transform.scale.xy. (Jeff Verkoeyen)
- Make translated a public operator on reactive UIPanGestureRecognizer. (Jeff Verkoeyen)
- Forward coreAnimation channel events from log operator. (Jeff Verkoeyen)
- Don't adjust anchor point when pan gesture recognizers change state. (Jeff Verkoeyen)
- Add Subtractable and Zeroable conformity to CGSize. (Jeff Verkoeyen)
- Reorder threshold arguments. (Jeff Verkoeyen)
- Make threshold's within parameter a motion observable (Andres Ugarte)
- Allow threshold output to be optional. (Jeff Verkoeyen)
- Add ViewReplicator class. (Jeff Verkoeyen)
- Add inverted operator for Bool streams. (Jeff Verkoeyen)
- Add dedupe operator. (Jeff Verkoeyen)
- Rename debugging.swift to log.swift. (Jeff Verkoeyen)
- Expose the transition controller dismisser. (Jeff Verkoeyen)
- Always layout the fore view controller's view if needed during a transition. (Jeff Verkoeyen)
- Provide a simpler translated operator on reactive drag gesture recognizers. (Jeff Verkoeyen)
- Provide transition directors with the runtime instance directly. (Jeff Verkoeyen)
- TransitionSpring is now a Spring interaction. (Jeff Verkoeyen)
- Allow Springs to be used as property interactions. (Jeff Verkoeyen)
- Update Tween API to match that of Spring. (Jeff Verkoeyen)
- Move Spring and Tween to the interactions folder. (Jeff Verkoeyen)
- Rename TweenSource to TweenToStream. (Jeff Verkoeyen)
- Rename core animation and pop source files to -to-stream convention. (Jeff Verkoeyen)
- Store the container view in ReactiveUIGestureRecognizer and expose a simpler velocityOnReleaseStream API. (Jeff Verkoeyen)
- Rename GestureSource to GestureToStream. (Jeff Verkoeyen)
- Rename ScrollSource to ScrollViewToStream. (Jeff Verkoeyen)
- Rename SpringSource to SpringToStream. (Jeff Verkoeyen)
- Set the default timing function for Tween to the system easeInOut. (Jeff Verkoeyen)
- Add mass and suggested duration to the Spring type. (Jeff Verkoeyen)
- Remove excessive cast in Spring initializer. (Jeff Verkoeyen)
- Replace property.setValue with property.value setter. (Jeff Verkoeyen)
- Remove the SpringConfiguration object and pass Spring directly to the SpringSytem. (Jeff Verkoeyen)
- Rework of Interaction APIs. (Jeff Verkoeyen)
- Allow CGFloat and CGPoint to be used as streams and properties. (Jeff Verkoeyen)
- Add reactive types. (Jeff Verkoeyen)
- Add a containerView to MotionRuntime. (Jeff Verkoeyen)
- Rename sources to systems. (Jeff Verkoeyen)
- Simplify the property declarations for Spring. (Jeff Verkoeyen)
- Core Animation systems pass model value down the next channel. (Jeff Verkoeyen)
- Add anchored operator. (Jeff Verkoeyen)
- Introduce ReactivePropertyConvertible. (Jeff Verkoeyen)
- Make ReactiveProperty a MotionObservableConvertible. (Jeff Verkoeyen)
- Add rubberBand operators. (Jeff Verkoeyen)
- Add merge operator. (Jeff Verkoeyen)
- Introduce MotionObservableConvertible. (Jeff Verkoeyen)
- Reactive properties now create and own their own stream. (Jeff Verkoeyen)
- Rename constant to mapTo. (Jeff Verkoeyen)
- Delete Callback API. (Jeff Verkoeyen)
- Add mapRange operator. (Jeff Verkoeyen)
- Spring now owns its own MotionObservable. (Jeff Verkoeyen)
- Add read operator. (Jeff Verkoeyen)
- Rename map to rewrite. (Jeff Verkoeyen)
- Add multicast operator. (Jeff Verkoeyen)
- Add method for connecting and storing Interactions to MotionRuntime. (Jeff Verkoeyen)
- Add valve operator. (Jeff Verkoeyen)
- Add DirectlyManipulable, Draggable, Rotatable, and Scalable interactions. (Jeff Verkoeyen)
- Add rotated operator. (Jeff Verkoeyen)
- Expose spring configuration as two distinct properties. (Jeff Verkoeyen)
- Add normalized operator for point/size. (Jeff Verkoeyen)
- Add scaled operator. (Jeff Verkoeyen)
- Add option to log for including context. (Jeff Verkoeyen)
- Add anchor point reactive property for CALayer. (Jeff Verkoeyen)
- Add scale reactive property to CALayer. (Jeff Verkoeyen)
- Move CALayer rotation property to CALayer property builder. (Jeff Verkoeyen)
- Expose simulatorDragCoefficient API. (Jeff Verkoeyen)
- Add rotation and scale velocity operators for their related gesture recognizer streams. (Jeff Verkoeyen)
- Provide the model value in the core animation channel. (Jeff Verkoeyen)
- Implement child runtimes. (Jeff Verkoeyen)
- Support initial velocity with core animation springs. (Jeff Verkoeyen)
- Emit the last known state when a property is subscribed to. (Jeff Verkoeyen)
- Expose the spring in AttachWithSpring. (Jeff Verkoeyen)
- Add UIGestureRecognizer property for isEnabled. (Jeff Verkoeyen)
- Add isUserInteractionEnabled property for UIView. (Jeff Verkoeyen)
- Add subtracted operator. (Jeff Verkoeyen)
- Add support for callbacks to the motion runtime. (Jeff Verkoeyen)
- Add map operator. (Jeff Verkoeyen)
- Add min/max operators. (Jeff Verkoeyen)
- Allow threshold to support any Comparable type. (Jeff Verkoeyen)
- Add log operator. (Jeff Verkoeyen)
- Rename onRecognitionState for many states to onRecognitionStates. (Jeff Verkoeyen)
- Add distance operators. (Jeff Verkoeyen)
- Allow the runtime to write any motion observable to a property. (Jeff Verkoeyen)
- Make MotionRuntime's state a reactive property. (Jeff Verkoeyen)
- Fix bugs and clean up the threshold operator API. (Jeff Verkoeyen)
- Add drag stack example. (Jeff Verkoeyen)
- Add arithmetic operators. (Jeff Verkoeyen)
- Add constant operator. (Jeff Verkoeyen)
- Add threshold operator. (Jeff Verkoeyen)
- Expose gesture recognizers on the Transition object. (Jeff Verkoeyen)
- Don't disable user interaction during a transition. (Jeff Verkoeyen)
- Add transition dismisser API. (Jeff Verkoeyen)
- Add support for removing in-flight Core Animation animations. (Jeff Verkoeyen)
- Expose initialVelocity on the TransitionSpring interaction. (Jeff Verkoeyen)
- Rename MotionAggregator to MotionRuntime. (Jeff Verkoeyen)
- Add support for Core Animation in MotionObservable. (Jeff Verkoeyen)
- Implement TransitionSpring. (Jeff Verkoeyen)
- Add destinations operator for Transition.Direction. (Jeff Verkoeyen)
- Make Transition direction a reactive property. (Jeff Verkoeyen)
- Make AttachWithSpring generic. (Jeff Verkoeyen)
- Send state updates for core animation-backed spring animations. (Jeff Verkoeyen)
- Use the provided non-nil keyPath. (Jeff Verkoeyen)
- Add coreAnimationTweenSource. (Jeff Verkoeyen)
- Add TweenSource type. (Jeff Verkoeyen)
- Add Tween type. (Jeff Verkoeyen)
- Port the transitions-objc stack to the new streams runtime. (Jeff Verkoeyen)
- Add MotionAggregator delegate. (Jeff Verkoeyen)
- Make the MotionAggregator's aggregateState readonly. (Jeff Verkoeyen)
- Add Tossable interaction. (Jeff Verkoeyen)
- Implementation of Core Animation spring source. (Jeff Verkoeyen)
- Implement Tap interaction. (Jeff Verkoeyen)
- Add Attach interaction. (Jeff Verkoeyen)
- Start pop springs in the active state. (Jeff Verkoeyen)
- Add tap to change destination interaction. (Jeff Verkoeyen)
- Add Interaction type. (Jeff Verkoeyen)
- Add createProperty API. (Jeff Verkoeyen)
- Add KVO-backed scroll source documentation. (Jeff Verkoeyen)
- Add popSpringSource. (Jeff Verkoeyen)
- Add ScrollSource. (Jeff Verkoeyen)
- Add GestureSource type. (Jeff Verkoeyen)
- Add SpringSource type. (Jeff Verkoeyen)
- Add Spring plan. (Jeff Verkoeyen)
- Fix build failure. (Jeff Verkoeyen)
- Add translated operator. (Jeff Verkoeyen)
- Add velocity operator for UIPanGestureRecognizer. (Jeff Verkoeyen)
- Implement observable properties. (Jeff Verkoeyen)
- Move state emitting logic up in the toggled implementation. (Jeff Verkoeyen)
- Add subscription docs to toggled. (Jeff Verkoeyen)
- Add toggled operator. (Jeff Verkoeyen)
- Typedef all MotionObservable block types. (Jeff Verkoeyen)
- Mark ScopedProperty as a final class. (Jeff Verkoeyen)
- Move next channel to end of _nextOperator operation block. (Jeff Verkoeyen)
- Make MotionObserver a public type. (Jeff Verkoeyen)
- Mark MotionObservable as a final class. (Jeff Verkoeyen)
- Rename _operator to _nextOperator. (Jeff Verkoeyen)
- Rename location to centroid. (Jeff Verkoeyen)
- Fix broken tests. (Jeff Verkoeyen)
- Update and lock the IndefiniteObservable dependency to 3.0 (Jeff Verkoeyen)
- Add x/y operators on CGPoint. (Jeff Verkoeyen)
- Move all operators to a protocol type, ExtendableMotionObservable. (Jeff Verkoeyen)
- Rename GestureSource.swift to gestureSource.swift (Jeff Verkoeyen)
- Add MotionAggregator implementation. (Jeff Verkoeyen)
- Remove is: argument from onRecognitionState. (Jeff Verkoeyen)
- Make location use _map instead of _operator. (Jeff Verkoeyen)
- Pass the next channel to _operator operations rather than the observer. (Jeff Verkoeyen)
- Rename ScopedWriteable to ScopedWritable. (Jeff Verkoeyen)
- Add recognitionState operators. (Jeff Verkoeyen)
- Add gestureSource. (Jeff Verkoeyen)
- Use T instead of V for generic value types. (Jeff Verkoeyen)
- Add write operator. (Jeff Verkoeyen)
- Move foundation operators to foundation/ folder. (Jeff Verkoeyen)
- Implement ScopedProperty and some basic UIView properties. (Jeff Verkoeyen)
- Remove spec links. (Jeff Verkoeyen)
- Add _filter operator. (Jeff Verkoeyen)
- Add _map operator. (Jeff Verkoeyen)
- Add _operator operator. (Jeff Verkoeyen)
- Standardize internal generic types. (Jeff Verkoeyen)
- Add initial implementation of MotionObservable. (Jeff Verkoeyen)
- Add an ink splash effect to the material expansion demo. (Jeff Verkoeyen)
- Reorder badges. (Jeff Verkoeyen)
- Remove swift from readme title. (Jeff Verkoeyen)
- Update README.md (featherless)
- Add Swift and iOS version number badges. (Jeff Verkoeyen)
- Move ArcMove back to the interactions table. (Jeff Verkoeyen)
- Enable code coverage when building the catalog. (Jeff Verkoeyen)
- Trim down the arc move example's code and move most logic to the example source. (Jeff Verkoeyen)
- Restore the timeline to the ArcMove example. (Jeff Verkoeyen)
- Add material expansion case study to the README. (Jeff Verkoeyen)
- Add a Material Expansion example. (Jeff Verkoeyen)
- Remove example from the Catalog. (Jeff Verkoeyen)
- Remove "How to use constraints" example. (Jeff Verkoeyen)
- Add "How to apply constraints" page. (Jeff Verkoeyen)
- Add a "Visualizing the runtime" page. (Jeff Verkoeyen)
- Fix small typo. (Jeff Verkoeyen)
- Add "How to create new interactions" to the playground. (Jeff Verkoeyen)
- Run automated linter. (Jeff Verkoeyen)
- Add "How to combine interactions" doc. (Jeff Verkoeyen)
- Fix catalog build. (Jeff Verkoeyen)
- Fix unit tests. (Jeff Verkoeyen)
- Rewording the how to use a spring page. (Jeff Verkoeyen)
- Add how to use a spring playground page. (Jeff Verkoeyen)
- Add Introduction section to playground. (Jeff Verkoeyen)
- Clean up playground examples using primary colors. (Jeff Verkoeyen)
- Use primary color in interactive push back transition. (Jeff Verkoeyen)
- Fix alphabetical ordering of examples. (Jeff Verkoeyen)
- Fix urls. (Jeff Verkoeyen)
- Move arc move to a material design section. (Jeff Verkoeyen)
- Add carousel case study to the readme. (Jeff Verkoeyen)
- Add modal dialog case study to the readme. (Jeff Verkoeyen)
- Add fab transition to readme. (Jeff Verkoeyen)
- Fix project naming and imports. (Jeff Verkoeyen)
- Fix podfile. (Jeff Verkoeyen)
- Remove link. (Jeff Verkoeyen)
- Fix link. (Jeff Verkoeyen)
- Fix links. (Jeff Verkoeyen)
- Add contextual transition case study to the readme. (Jeff Verkoeyen)
- Add sticker picker case study. (Jeff Verkoeyen)
- Touching up the wording. (Jeff Verkoeyen)
- Fix import statement. (Jeff Verkoeyen)
- Fix library name in README.md. (Jeff Verkoeyen)
- Add interaction table to README.md. (Jeff Verkoeyen)
- Clean up visual style for all examples. (Jeff Verkoeyen)
- Remove pop dependency. (Jeff Verkoeyen)
- Fix urls again. (Jeff Verkoeyen)
- Fix project link. (Jeff Verkoeyen)
- Add a swift playground with a couple pages of examples. (Jeff Verkoeyen)
- Organizing the example view controllers in groups and cleaning up their implementations. (Jeff Verkoeyen)
- Cleaning up the example structure. (Jeff Verkoeyen)
- Fix title of catalog app. (Jeff Verkoeyen)
- Fix travis script invocation. (Jeff Verkoeyen)
- Add a crummy custom operator example. (Jeff Verkoeyen)
- Add a reactive draggable constraint example. (Jeff Verkoeyen)
- Create two dedicated Draggable examples. (Jeff Verkoeyen)
- Simplify the contextual transition demo. (Jeff Verkoeyen)
- Clean up the interactive push back transition demo. (Jeff Verkoeyen)
- Simplify the modal dialog example using Tossable and TransitionSpring. (Jeff Verkoeyen)
- Ensure that a flick with enough velocity will dismiss the contextual transition. (Jeff Verkoeyen)
- Update Podfile.lock. (Jeff Verkoeyen)
- Point to repo. (Jeff Verkoeyen)
- Remove all IndefiniteObservable imports. (Jeff Verkoeyen)
- Add a carousel demo. (Jeff Verkoeyen)
- Add arc move example. (Jeff Verkoeyen)
- Add a sticker picker example. (Jeff Verkoeyen)
- Add a contextual transition. (Jeff Verkoeyen)
- Small tweaks to InteractivePushBack transition example (Andres Ugarte)
- Minor cleanup of the push back example. (Jeff Verkoeyen)
- Use TransitionSpring in the push back example. (Jeff Verkoeyen)
- Remove excess type signature in Tween initialization. (Jeff Verkoeyen)
- Add interactive push back example. (Jeff Verkoeyen)
- Add push back transition example. (Jeff Verkoeyen)
- Center views in the the examples (Andres Ugarte)
- Rasterize cards to reduce perceived aliasing (Andres Ugarte)
- Minor cleanup of directly manipulable example. (Jeff Verkoeyen)
- Add directly manipulable example. (Jeff Verkoeyen)
- Interactive deck of cards. (Jeff Verkoeyen)
- Update IndefiniteObservable. (Jeff Verkoeyen)
- Update Podfile.lock (Jeff Verkoeyen)
- Rename TapProducer to TapSubscription. (Jeff Verkoeyen)
- Send emails on build failure. (Jeff Verkoeyen)