popmotion
Version:
The animator's toolbox
1,727 lines (922 loc) • 37.4 kB
Markdown
# Changelog
Popmotion adheres to [Semantic Versioning](http://semver.org/).
## [11.0.5] 2022-08-15
### Update
- `tslib` and `typescript`.
## [11.0.4] 2022-08-10
### Update
- Adding `types` to `exports` field.
## [11.0.3] 2021-12-03
### Update
- Dynamic `restDelta` for smoother springs at low values.
## [11.0.2] 2021-12-02
### Update
- Locking dependencies.
## [11.0.1] 2021-12-02
### Update
- Locking dependencies.
## [11.0.0] 2021-11-03
### Changed
- `mixColor` always outputs RGB, even when mixing HSLA.
### Added
- Animate HSLA with linear color mix.
- Animate between HSLA, RGBA and Hex with `mixColor`.
## [10.0.2] 2021-10-22
### Fixed
- Updating `framesync`.
## [10.0.0] 2021-09-23
### Fixed
- Fixing `exports` and `module` in `package.json`. This will break (unsupported) direct file imports.
### [9.4.1] 2021-09-21
### Changed
- Change `mixComplex` "too complex" error to warning, and allowing instant interpolation when `p > 0`.
### [9.4.0] 2021-06-18
### Added
- `onStop` to `inertia`.
### [9.3.6] 2021-05-11
### Fix
- Correctly end spring animation if provided `bounce` without `duration`.
### [9.3.5] 2021-03-30
### Update
- Updating `framesync`.
### [9.3.4] 2021-03-19
### Fixed
- Updating `style-value-types`.
### [9.3.3] 2021-03-19
### Fixed
- Fixing `main` entry point.
### [9.3.2] 2021-03-19
### Added
- Adding `exports` to `package.json`.
### Updated
- `tslib` to latest.
### [9.3.1] 2021-03-02
### Fixed
- Scheduling of first animation frame was previously set to `immediate`, leading to double animations for animations stopped/started within the same frame.
### [9.3.0] 2021-03-01
### Fixed
- Unbundling ES code to facilitate code-splitting in Webpack.
## [9.2.1] 2020-02-22
### Update
- Upgrading to `style-value-types@4.0.3`.
## [9.2.0] 2020-02-22
### Update
- Upgrading to `framesync@5.1.0` for better Node compatibility.
## [9.1.0] 2020-01-08
### Update
- Support for hex alpha in `mixColor`.
## [9.0.2] 2020-12-18
### Update
- Dependency updates.
## [9.0.1] 2020-12-01
### Fixed
- If `offsets` is a different length to `values`, rather than throw an error we now just generate default offsets.
## [9.0.0] 2020-10-24
- Full API revamp, see documentation.
## [8.7.5] 2020-09-03
### Fixed
- Refreshing published bundle.
## [8.7.2] 2020-04-28
### Fixed
- Decay and inertia correctly start motion at from prop when using modifyTarget
- Decay and inertia no longer round target calculation
- Inertia calls modifyTarget even with zero-velocity
### Changed
- Inertia implementation refinements
## [8.7.1] 2019-11-14
### Upgrade
- Upgraded to Typescript 3.7.
## [8.7.0] 2019-06-25
### Added
- `repeatDelay` prop to `tween`.
## [8.6.10] 2019-05-09
### Fixed
- Fixing undefined action creator. (https://github.com/Popmotion/popmotion/issues/794)[#794]
## [8.6.9] 2019-05-01
### Update
- Dependencies.
## [8.6.8] 2019-04-01
### Update
- `@popmotion/popcorn@0.3.6`
## [8.6.7] 2019-04-01
### Fixed
- Making `inertia.complete` call conditional on there not being a subsequent animation. (https://github.com/Popmotion/popmotion/pull/763)[#763]
## [8.6.6] 2019-04-01
### Update
- `@popmotion/popcorn@0.3.5`
## [8.6.5] 2019-04-01
### Update
- Changing the behaviour of `inertia` to always spring back if the initial value is out of bounds. On multi-axis `inertia` animations it used to be possible that both values are out of bounds and only one was travelling towards its bound - this led to a situation where one animation used a spring and the other used decay.
## [8.6.4] 2019-03-12
### Upgrade
- Upgrading `style-value-types@3.1.0`.
## [8.6.3] 2019-02-21
### Fixed
- Correctly integrating remainder of `elapsed` in yoyo tweens to ensure multiple concurrent tweens stay in sync.
## [8.6.2] 2019-01-28
### Updated
- Tightened type definitions for TransitionMapFactory [#714](https://github.com/Popmotion/popmotion/pull/714)
## [8.6.1] 2019-01-23
### Added
- Adding `bounceStiffness`, `bounceDamping`, `restDelta`, `timeConstant` and `power` options to `inertia`.
## [8.6.0] 2019-01-16
### Added
- `inertia` animation.
## [8.5.5] 2018-12-28
### Update
- `stylefire@8.3.4`
## [8.5.4] 2018-12-10
### Fixed
- When a subscriber is added, only that subscriber is fired with the latest value.
## [8.5.3] 2018-11-20
### Fixed
- Ensuring `.stop()` is part of `ColdSubscription` definition.
## [8.5.2] 2018-11-16
### Upgrade
- Moving to `popcorn@0.2.0`
## [8.5.0] 2018-11-01
### Fixed
- Enforcing minor upgrade to Popcorn.
## [8.4.2] 2018-11-01
### Fixed
- Migrating functions to Popcorn.
## [8.4.1] 2018-09-29
### Fixed
- Calling `transform.steps()` should round properly to each step. [#528](https://github.com/Popmotion/popmotion/issues/528)
## [8.4.0] 2018-09-21
### Updated
- Moved to `framesync@4.0.0`
## [8.3.8] 2018-08-30
### Fixed
- Calling `tween.resume()` would speed the tween up by firing multiple timers. [#395](https://github.com/Popmotion/popmotion/issues/395)
## [8.3.7] 2018-08-30
### Fixed
- Updating latest style-value-types and stylefire
## [8.3.6] 2018-08-21
### Fixed
- Fixed `postinstall` script by removing Chalk.
## [8.3.4] 2018-08-20
### Fixed
- Forcing `multitouch` to use `passive: true`.
## [8.3.2] 2018-06-27
### Fixed
- Forced fix from `style-value-types@3.0.3`
## [8.3.2] 2018-06-27
### Fixed
- Updated color regex in `style-value-types`
## [8.3.1] 2018-06-27
### Fixed
- Fixing some TypeScript definition incompatibilities with newer versions of TS.
## [8.3.0] 2018-06-20
### Added
- Support for animating value types:
- `px`
- `deg`
- `%`
- `vw`
- `vh`
- Complex types including:
- SVG paths
- CSS gradients
- CSS shadows
## [8.2.5] 2018-06-13
### Fixed
- Removing `import`s from output declaration files.
## [8.2.4] 2018-06-08
### Added
- Exporting popular types from index.ts.
## [8.2.3] 2018-05-28
### Fixed
- Renaming `popmotion.min.js` back to `popmotion.global.min.js`
## [8.2.1] 2018-05-17
### Fixed
- Removing `process.env.NODE_ENV` from bundled hey-listen
## [8.2.0] 2018-05-17
### Changed
- Added Rollup to build process. Now just 11.1kb.
### Deprecated
- `css` and `svg` functions from `stylefire`. Use `styler` instead.
## [8.1.23] 2018-05-10
### Fixed
- If an action stops more than once, `parallel` doesn't increase the stop counter.
## [8.1.22] 2018-03-23
### Fixed
- Making `easing` type optional in `interpolate`.
## [8.1.21] 2018-03-13
### Updated
- Updating `stylefire`.
## [8.1.20] 2018-03-13
### Updated
- Updating `stylefire`.
## [8.1.19] 2018-03-13
### Updated
- Updating `stylefire`.
## [8.1.18] 2018-03-13
### Updated
- Changed `Update` type definition to `Function`.
## [8.1.17] 2018-03-09
### Updated
- Stylefire updated to `1.2.6`
## [8.1.16] 2018-03-06
### Fixed
- `value` now fires a velocity check at the end of the following frame to set velocity to `0` if it hasn't been updated.
## [8.1.15] 2018-03-06
### Updated
- Stylefire updated to `1.2.5`
## [8.1.14] 2018-03-04
### Updated
- Stylefire updated to `1.2.4`
## [8.1.13] 2018-03-04
### Updated
- Stylefire updated to `1.2.3`
## [8.1.12] 2018-03-04
### Update
- Running `parseFloat` on string values when returning velocity.
- Stylefire and Style Value Types upgrade
## [8.1.11] 2018-02-19
### Update
- `interpolate` roughly 200x faster when interpolating between just two numbers.
## [8.1.10] 2018-02-04
### Fixed
- Stylefire update.
## [8.1.9] 2018-01-22
### Fixed
- Fix removeEventListener in Chrome 46 [#248](https://github.com/Popmotion/popmotion/pull/248)
## [8.1.8] 2018-01-15
### Fixed
- Fixing TS errors for `stop`
## [8.1.7] 2018-01-04
### Changed
- Updating Framesync to improve performance at 30fps.
## [8.1.6] 2018-01-03
### Fixed
- Fix build.
## [8.1.5] 2018-01-03
### Fixed
- Upgrading Stylefire.
- Corrected types on `tween`.
## [8.1.4] 2017-12-22
### Added
- `generateStaticSpring` transformer.
## [8.1.3] 2017-12-18
### Added
- `conditional` transformer.
## [8.1.2] 2017-12-12
### Changed
- Removed `esnext` and `module` settings from package.json, added `src` to exclude.
## [8.1.1] 2017-12-12
### Changed
- Adding README.md to package.
## [8.1.0] 2017-12-12
### Release!
## [8.0.37@beta] 2017-12-11
### Changed
- `everyFrame` now outputs the `timeSinceStart` rather than the current framestamp (which can be taken from `framesync`).
### Fixed
- Actions that use internal `everyFrame` actions now stop the timer when complete.
## [8.0.35@beta] 2017-12-09
### Added
- The API matching of `parallel` and `composite` can now accept arguments with the same shape. For instance:
```javascript
composite({
x: physics(),
y: physics(),
}).setSpringStrength({ x: 100, y: 50 })
```
## [8.0.34@beta] 2017-12-05
### Changed
- `keyframes` prop `ease` is now `easings`. `ease` applies easing to the overall tween.
## [8.0.33@beta] 2017-12-04
### Added
- `timeline` animation.
### Changed
- `stagger` now outputs array.
## [8.0.32@beta] 2017-11-28
### Added
- New `schedule` compositor.
### Changed
- `transformChildValues` is now `transformMap`, and finally docced.
## [8.0.31@beta] 2017-11-27
### Fixed
- Stopped new instances of actions mutating shared vars.
## [8.0.30@beta] 2017-11-24
### Fixed
- Published with wrong version of Stylefire.
## [8.0.29@beta] 2017-11-24
### Fixed
- Ensuring `everyFrame` stops when it's bloody well told to.
## [8.0.28@beta] 2017-11-22
### Changed
- Upgrading Stylefire
## [8.0.27@beta] 2017-11-16
### Fixed
- `delay` waits appropriate number of time before `complete`.
## [8.0.26@beta] 2017-11-16
### Fixed
- Fixing `scale` delta equation and firing `preventDefault` on multitouch events.
## [8.0.25@beta] 2017-11-16
### Fixed
- Providing `multitouch` `scale` and `rotate` props outputs the delta as applied to those values.
## [8.0.24@beta] 2017-11-16
### Added
- `keyframes` `ease` property can now be a single function.
- `multitouch` accepts initial `scale` and `rotate` properties.
- `filter` chainable to actions and reactions.
### Changed
- `touch` becomes `multitouch`.
- `reaction` becomes `multicast`.
- `onFrame` becomes `everyFrame`.
## [8.0.22@beta] 2017-11-16
### Fixed
- Fixed `tween` flip.
## [8.0.21@beta] 2017-11-16
### Added
- `scale` and `rotate` properties to `touch`.
- `listen` action.
## [8.0.20@beta] 2017-11-14
### Fixed
- Fixed `isActive` bug with observable. Should look at removing this in favor of Reaction.
## [8.0.19@beta] 2017-11-14
## [8.0.18@beta] 2017-11-14
### Changed
- Changed `spring` equation.
## [8.0.17@beta] 2017-11-14
### Changed
- Changed `spring` equation.
## [8.0.16@beta] 2017-11-14
### Fixed
- Reactivating a reaction when provided a new parent.
## [8.0.15@beta] 2017-11-14
### Fixed
- Re-reversing `spring` initial velocity.
## [8.0.14@beta] 2017-11-14
### Fixed
- Not reversing `spring` initial velocity.
## [8.0.13@beta] 2017-11-14
### Fixed
- `keyframes` composite undefined value fixed.
## [8.0.12@beta] 2017-11-11
### Added
- `value` handles objects and arrays.
- `reaction` and `value` automatically stop previous action if used to start a new one.
### Fixed
- `composite` APIs now map return values to the provided object, rather than as a flat array.
## [8.0.11@beta] 2017-11-10
### Added
- Object, array and colour support to `keyframes`.
### Changed
- `pointerDelta` has been removed, `pointer` now accepts an initial point.
## [8.0.10@beta] 2017-11-09
### Fixed
- Fixing broken entry point in `package.json`.
## [8.0.9@beta] 2017-11-08
### Added
- Color support to all vector actions.
## [8.0.8@beta] 2017-11-08
### Added
- `crossfade`, `delay`, `merge` and `stagger` compositors.
## [8.0.7@beta] 2017-11-07
### Added
- `chain` compositor.
## [8.0.4@beta] 2017-10-30
### Added
- New reactive API.
- `keyframes` animation.
- `decay` animation.
- `delta` transformer.
### Removed
- `flow` alias for `pipe`
- Transformers: `add`/`subtract`/`divide`/`multiply`/`conditional`/`alpha`/`percent`/`degrees`/`px`/`rgbUnit`/`rgba`/`hex`/`color`/`hsla`
- Renderers: Moved to [Stylefire](https://github.com/Popmotion/stylefire)
- Render Loop: Moved to [Framesync](https://github.com/Popmotion/framesync)
- Color Tween: Moved to [Popmotion Color Tween](https://github.com/Popmotion/popmotion-color-tween)
- Value Types: Moved to [Style Value Types](https://github.com/Popmotion/style-value-types)
### Changed
- `physics` prop `to` is now `to`
- `physics` prop `spring` is now `springStrength`
- `physics` prop `autoStopSpeed` is now `restSpeed`.
- `spring` prop `restDisplacement` is now `restDelta`.
## [7.8.2] 2017-10-02
### Changed
- Now publishing `dist` folder on npm for use on CodePen via unpkg.com
### Changed
- `spring` transformer becomes `linearSpring` to avoid clashing with the `spring` action.
## [7.8.1] 2017-08-29
### Fixed
- Fixing mistake where Framesync's renamed `currentFrameTime` was exported instead of the previously-named `currentFrameTimestamp`.
## [7.8.0] 2017-08-29
- Spinning off `framesync` to it's own module and deprecating render loop functions for removal in `8.0.0`.
## [7.7.1] 2017-08-27
### Fixed
- Bug in `touches` (via [Mars](https://twitter.com/marsi))
## [7.7.0] 2017-08-24
### Added
- `touches` action for multitouch support. (via [Mars](https://twitter.com/marsi))
- `parallel.getChildren` method now returns array of children actions.
- `parallel` can now accept an `onUpdate` function that is provided an array of latest child values.
## [7.6.2] 2017-08-17
### Fixed
- Composite Actions were firing `onUpdate` as soon as registered.
## [7.6.1] 2017-08-17
### Fixed
- Actions were firing `onUpdate` as soon as registered.
## [7.6.0] 2017-08-07
### Added
- New `spring` action based on an interpretation of Apple's `CASpringAnimation` by [@skevy](https://github.com/skevy)
## [7.5.6] 2017-08-04
### Fixed
- Prevent `Value.toUpdate` from being undefined.
## [7.5.5] 2017-08-02
### Fixed
- Only firing `onStop` on an action bound to a value if the action is active.
## [7.5.4] 2017-07-31
### Fixed
- A key is only added to Renderer's `changedValues` array if it doesn't already exist for that frame.
## [7.5.3] 2017-07-18
### Fixed
- Consistency issue with scheduling update on `value.set` - area to look at in the future.
## [7.5.2] 2017-07-18
### Fixed
- Bug with `css` translate map.
## [7.5.1] 2017-07-17
### Fixed
- Fixed a bug with `smooth`, preventing it from working if the initial given numbers were `0`, or if it was called twice in the same frame.
## [7.5.0] 2017-07-17
### Added
- Enforced order for css `transform` properties.
## [7.4.0] 2017-07-16
### Added
- Added `seek` to `tween`.
## [7.3.1] 2017-07-13
### Added
- Updated `snap` transform to take numbers for regular interval snapping.
## [7.3.0] 2017-07-13
### Added
- New `snap` transformer.
## [7.2.9] 2017-07-12
### Changed
- `trackOffset` now calls `get` instead of `getBeforeTransform`.
## [7.2.8] 2017-07-12
### Fixed
- `angle` calculation fixed.
## [7.2.7] 2017-07-11
### Fixed
- `steps` now returning actual value rather than stepped progress.
## [7.2.6] 2017-07-05
### Fixed
- `speedPerSecond` divide by `0` bug.
## [7.2.5] 2017-07-05
### Fixed
- `lastUpdated` set to `0` on action start to prevent `NaN` velocities.
## [7.2.4] 2017-07-05
### Fixed
- `prev = current` on action start, to prevent `NaN` velocities.
## [7.2.3] 2017-07-04
### Fixed
- `pointer` events are now `passive: true` if `preventDefault` is also set to `true` to fix bug introduced by Chrome 56.
## [7.2.2] 2017-07-03
### Changed
- `composite` action is now `passive: true` to enable composition of other passive actions.
## [7.2.0] 2017-06-26
### Added
- `value` can now be provided to an action's `onUpdate` for automatic action management.
## [7.1.1] 2017-06-23
- Minor bugfix.
## [7.1.0] 2017-06-23
### Added
- `complex` `valueType`.
## [7.0.3] 2017-06-23
### Fixed
- Changed `pointer` to read mouse event `client` positioning instead of `page`, to make consistent with touch events.
## [7.0.2] 2017-06-23
- Minor bugfix.
## [7.0.1] 2017-06-23
- Minor bugfix.
## [7.0.0] 2017-06-22
### Features
- `trackOffset` action returns to simplify the process of tracking the offset of other actions.
- `esnext` package.json property supported.
### Deprecated
- `flow` is now `pipe`, to avoid terminology clashes with [Flow](https://flow.org/). `flow` will continue to work until `7.1.0`.
### Removed
- `blendTweens` is now an optional include.
## [6.7.2] 2017-06-01
### Fixed
- Removing dependencies from `package.json`
## [6.7.1] 2017-06-01
### Fixed
- `colorTween` now uses `transform` property to convert from progress to color, which fixes composition compatibility.
## [6.7.0] 2017-06-01
### Added
- `transform` property for actions. If set, any values passed to `onUpdate` or returned from `get` will be run through this function.
- `getBeforeTransform` method added for actions. Will return the current value, before transform is applied.
## [6.3.5] 2017-03-03
### Added
- `applyOffset` transformer.
## [6.3.4] 2017-03-01
### Fixed
- Undocumented range easing property in `interpolate` transformer was looking at the wrong index.
## [6.3.3] 2017-18-01
### Added
- `top`, `left`, `bottom` and `right` CSS renderer value types.
## [6.3.2] 2017-11-01
### Added
- `smooth` transformer
## [6.3.1] 2017-11-01
### Fixed
- `transformChildValues` transformer now keeps a local mutable state rather than mutating the provided state.
## [6.3.0] 2017-11-01
### Added
- Actions now have an `output` shorthand for setting the `onUpdate` property.
## [6.2.1] 2017-09-01
### Added
- Updated bezier tween blend algorithm.
- Exposed bezier resolver as a transformer.
## [6.2.0] 2017-09-01
### Added
- Bezier tween blending
## [6.1.0] 2017-06-01
- Public release of new API
## [6.0.0@alpha] 2017-01-01
- New API
## [5.0.20] 2016-11-15
### Fixed
- Accidentally transpiled a version of 6.0.
## [5.0.19] 2016-11-15
### Added
- `track` Can take `preventDefault` as optional second param. Defaults to `true`.
## [5.0.18] 2016-08-08
### Fixed
- Firing `onActivateLoop` even if task is already active to prevent `once` from running more than once.
## [5.0.17] 2016-05-08
### Fixed
- Actually fixing spring clamping this time.
## [5.0.16] 2016-05-08
### Fixed
- Spring physics action now automatically ending when target is reached.
## [5.0.15] 2016-18-07
### Fixed
- Missing compilation of `5.0.14`
## [5.0.14] 2016-18-07
### Fixed
- Preventing `current` being overwritten by value type default properties.
- `Tween`s now finish automatically when scrubbed, fixing timeline/stagger bug where tweens wouldn't end.
## [5.0.13] 2016-06-07
### Fixed
- `track.start` and `track.stop` now returning `this`, allowing chaining.
- `from` restored as `track` default value.
## [5.0.12] 2016-06-01
### Fixed
- @[jamieowen](https://github.com/jamieowen): `transform` now being prefixed correctly.
- [#156](https://github.com/Popmotion/popmotion/issues/156): Explicit tween `from` values now honoured by `flow.start`.
### Changed
- Converted project from 4 space indent to 2.
## [5.0.11] 2016-05-21
### Changed
- Tween `blend` property set to `false` by default.
### Fixed
- Mouse tracking in Firefox - `Object.watch` is truthy in Firefox.
## [5.0.10] 2016-05-21
### Fixed
- @[FreakTheMighty](https://github.com/FreakTheMighty): Setting bound pointer listener to ensure correct removal on `Pointer.stop`.
## [5.0.9] 2016-05-21
### Fixed
- @[jamieowen](https://github.com/jamieowen): Prefixed properties now being set correctly.
## [5.0.8] 2016-05-15
### Added
- Unit tests for `transformers.createMapper`.
### Fixed
- Fixed mapped values calculated from `transformers.createMapper` mappers that are outside of the input range returning `undefined`.
## [5.0.7] 2016-04-20
### Changed
- Subsequent actions started on a flow are only given the flow's velocity if their velocity is 0.
## [5.0.6] 2016-04-17
### Changed
- Inherited actions now receive a `parentId` property with the `id` of their parent action.
## [5.0.5] 2016-04-13
### Fixed
- On `set`, `current` was returning undefined if `values` prop set as value, forcing an `adapter` read.
## [5.0.4] 2016-04-13
### Fixed
- If `adapter` returns a string that should be a pure number, we parse that as a float.
## [5.0.3] 2016-04-06
### Fixed
- Regression from testing `5.0.2`.
## [5.0.2] 2016-04-06
### Fixed
- Fixing entry point in `package.json`.
## [5.0.1] 2016-03-30
Minor bugfixes.
## [5.0.0] 2016-03-29
### Popmotion 5.0: timelines, streamlined API, tween blending, still 12kb.
**Warning:** This is a major API revision. Previous Popmotion code **will** be incompatible with this upgrade.
### Added
- **Timelines**: Super-simple yet fully-featured nestable timelines to easily sequence `tweens`.
- **Tween blending**: Smooth transitions between overlapping tweens.
- **Standalone actions**: `tween`, `physics` and `track` can all run without the need for an `actor`.
- **Adapters**: Minimal `get`/`set` API wrappers for smoothing differences between DOM, SVG and frameworks.
- **Transformers**: Composable functions to transform values between update and render.
- **Unified physics engine**: Handles `velocity`, `friction` and `spring` in one unified `physics` action.
- **Small**: All this for less than 12kb minified & gzipped.
- **Smaller**: Rewritten entirely using ES6 exports to allow tree-shaking, ignoring the parts of Popmotion you don't include.
- **Global time dilation**: `setGlobalDilation` method can change the global time.
- **Flow layer**: Replaces Actors and can work entirely in the background to manage multiple actions on the same object.
- Support `points` property for `polygon` and `polyline` tags.
- **MIT**: Changed licence to MIT.
### Removed
- `new` - dropped in favour of factory functions (ie `new Tween()` becomes `tween()`). This will allow further non-API-breaking optimisations.
- `Actor` dropped in favour of `flow`. The Actor model was monolithic, flows are automatically generated for `element`s in the background and can be accessed optionally via `detectFlow`.
- `process`: Now `task`. Prevents conflict with global common in browsers.
- Removed Action `watch` property in favour of more flexible `transform`: Simply provide a function that returns a different value.
- Native Meteor support, as we kept forgetting to update it.
- jQuery support - provide elements as returned from `$('.yourElement').get()` instead.
- `Sequence`: Dropped in favour of the `timeline` function.
- `Iterator`: Dropped in favour of using native array methods and the new `stagger` function.
- `Simulate`: Dropped in favour of unified `physics` action.
### Changed
- `friction` now a value between `0` and `1` - `0` provides no friction, `1` will strip all velocity within a single frame.
## [4.3.4] 2015-12-30
### Fixed
- `Simulate.hasChanged` incorrectly calculated.
## [4.3.3] 2015-12-29
### Fixed
- Added `acceleration` to list of properties that can be set as functions, resolved when an Action starts.
## [4.3.2] 2015-12-26
### Fixed
- Recursion bug with `Actor.sync` under specific circumstances.
## [4.3.1] 2015-12-24
### Removed
- `deceleration` from `Simulate`.
### Fixed
- Fixed bug where `Tween` would start as ended if initialised during `update` ie via a `Sequence`.
## [4.3.0] 2015-12-17
### Added
- `scale` value type hooked up to CSS and SVG roles.
- `utils.camelToDash` utility function for converting camelCase props to dash-case.
### Changed
- Default `Simulate` `stopSpeed` changed from `5` to `0.0001` to account for tiny numbers like 0-1.
## [4.2.7] 2015-12-09
### Fixed
- SVG properties set ie `fillOpacity` are now getting set as `fill-opacity`.
## [4.2.6] 2015-12-08
### Fixed
- Fixed recursive loop when splitting Actor values.
## [4.2.5] 2015-12-07
### Added
- `opacity`, `fillOpacity` and `strokeOpacity` to `ui.svg` Role type map.
## [4.2.4] 2015-12-07
### Added
- `Simulate.autoEnd` property, set to `false` to prevent simulations from automatically ending.
### Fixed
- TweenControls `reverse` now work on completed Tweens.
## [4.2.3] 2015-12-06
### Added
- Actors automatically `sync` on init.
## [4.2.2] 2015-12-03
### Update
- Moving from Babel's official es2015 preset to a custom build.
## [4.2.1] 2015-12-03
### Update
- Updating Babel to fix transpilation errors in IE10.
## [4.2.0] 2015-12-02
### Changed
- Moving to dual commercial and GPLv3 licence.
## [4.1.0] 2015-11-28
### Added
- Actor value `watch` property can now be a function returning any numerical value.
- Added `smooth` for all actions.
- Added `calc.toDecimal` calculator function.
## [4.0.0] 2015-11-20
### Added
- New core processing loop. Separates processes into four stages: `update`, `preRender`, `render`, `postRender`.
- `Process.once` to fire a Process for a single frame.
- Run background processes by passing `true` to `Process.setBackground` or as the last argument to the `Process` constructor. Background processes won't spin up the process loop when activated, only running when non-background processes are active.
### Changed
- `new ui.Process()` takes `callback, scope` instead of `scope, callback`.
- `Process` callbacks now receive `scope` as the first argument, then `framestamp, frameDuration`.
### Removed
- `Process.every`, `Process.reset` and `Process.fire`. Processes should only be started/stopped with `Process.start` and `Process.stop` respectively, to ensure they're run as part of the main loop. `every` is redundant with a combination of `setInterval` and `Process.once`.
- `Process.start` no longer takes a time period as an argument - use `setTimeout` to `Process.stop`.
## [3.8.1] 2015-11-19
### Fixed
- Pow easings incorrectly named var.
## [3.8.0] 2015-11-19
### Added
- Elliot Geno's awesome `'anticipate'` easing. Follow him at [@ElliotGeno](https://twitter.com/ElliotGeno/).
- In-built easings now available in the `ui.ease` namespace. So instead of providing `'backOut'` you can reference it literally - `ui.ease.anticipate`.
- Create modified easing function strengths, for instance `ease: ui.modifyEase(ui.ease.backOut, 2)`. `'ease'` and `'back'` in/out/inOut variants and `'anticipate'` are available. You must provide the literal reference rather than string reference.
## [3.7.1] 2015-11-11
### Changed
- Refactored core clock to increase performance in lower-end devices.
## [3.7.0] 2015-11-07
### Changed
- Software licence changed. Popmotion is now free for non-commercial uses, and requires a per-project licence for commercial projects.
- More files converted to ES6 syntax.
- Moved back to small for production compilation.
- Upgraded Babel from 5 to 6.
### Added
- Beginning suite of Mocha unit tests.
## [3.6.3] 2015-11-03
### Added
- Extra tests to ensure Popmotion is loading correctly in Meteor.
### Fixed
- Explicit test for rAF for when `window` is available and `requestAnimationFrame` isn't.
## [3.6.2] 2015-11-02
### Added
- Meteor support. Published on [Atmosphere](https://atmospherejs.com/popmotion/popmotion) as `popmotion:popmotion`.
### Fixed
- `performance` and `window` checks in Node.
## [3.6.1] 2015-10-29
### Fixed
- Smoothing lower than frameduration produced odd values.
- Smooth by `0` `Infinity` error
## [3.6.0] 2015-10-29
### Added
- New `transform(value, key, actor)` property for `Actor` values. Allows you to return a new value after its been processed by an action, but before it's been limited/rounded etc.
- Exposed our `Track` `smooth` calculator as `ui.calc.smooth`.
### Changed
- Refactored some files to cut down on filesize.
### Fixed
- Fixed a regression from `3.3.3` that fixed `performance` in IE9.
## [3.5.0] 2015-10-21
### Added
- Roles are now getter/setters, if `get` and `set` methods are present. For example: CSS role has getter/setters, so you can call:
ui.css(element, {
position: 'absolute',
top: 0
});
## [3.4.4] 2015-10-22
### Fixed
- `Actor.stop().start()` was failing to run.
## [3.4.3] 2015-10-21
### Fixed
- `Actor.sync` now returns `Actor` rather than the bound sync `Action`.
## [3.4.2] 2015-10-21
### Fixed
- `svg` tags are now assigned `ui.css` role.
## [3.4.1] 2015-10-17
### Fixed
- Delaying test element creation in CSS Role prevents error in server-side rendering.
## [3.4.0] 2015-10-16
### Added
- `Sequence` class, for creating a sequence of non-sequential actions.
- `onComplete` property to `Iterator.stagger`.
- Pass an action as the `Iterator.each` and `Iterator.stagger` `method` argument to automatically run `start` on each `Actor`.
### Changed
- Using rAF-provided timestamp instead of `performance.now` for smoother motion.
## [3.3.3] 2015-10-13
### Fixed
- @stoikerty: Fixed `performance.now` check for IE9.
## [3.3.2] 2015-10-10
### Fixed
- `Pointer` events now properly unbound on `Actor` stop.
## [3.3.1] 2015-10-09
### Added
- `Actor.smooth` now settable on a per-value basis.
- `direct` value property added to take direct input values instead of inputOffset.
## [3.3.0] 2015-10-08
### Added
- `smooth` property added to `Track` - smoothes out values coming from `Input` sources.
## [3.2.1] 2015-10-07
### Fixed
- `watch` no longer overwritten on `set`.
## [3.2.0] 2015-10-06
### Added
- `ui.select` now caches and finds cached Actors bound to DOM elements. If one Actor is found, it returns an Actor. If multiple Actors are found, an Iterator.
- `reverse` method to `Iterator`.
## [3.1.7] 2015-10-05
## Fixed
- Adjusting `hasChanged` logic to always fire on first frame.
- Changing `Iterator.stagger` logic for more even staggers.
## [3.1.6] 2015-10-05
## Fixed
- Manually moved the library class filenames to uppercase.
## [3.1.5] 2015-10-05
## Fixed
- Renamed some class files to uppercase to fix include fails in some Browserify compilations.
## [3.1.4] 2015-10-05
## Added
- Simulation functions are now sent `value <object>, frameDuration <int>, timeStarted <timestamp>` as arguments.
## [3.1.3] 2015-10-04
## Fixed
- Actions fired within an `onComplete` wouldn't start because the number of active Actions was being counted incorrectly.
## [3.1.2] 2015-10-03
### Fixed
- Major Firefox bug 1) `values` false-positive test for `watch` property, now explicitly checking for `string`.
- Major Firefox bug 2) `element.style.hasOwnProperty()` always returning false, switching to `in element.style`.
## [3.1.1] 2015-10-02
### Fixed
- Clearing Actor then/next queue on `start`.
- Saving all arguments to queue via `then` so we can pass Inputs.
## [3.1.0] 2015-10-01
### Added
- Action-specific `onStart`, `onUpdate`, `onFrame` and `onComplete` callbacks. These callbacks will be active only for the duration of the action, while callbacks attached to the host Actor will persist through all actions.
### Changed
- `onStart` callbacks are now fired immediately before the Actor is activated, giving actions extra time to initiate and make use of the [< 100ms response window](https://aerotwist.com/blog/flip-your-animations/).
### Fixed
- Bugfix for deep-copying Actions on Action start. That was a whoops and a half.
## [3.0.4] 2015-09-30
### Fixed
- Bugfix for subvalues not being flipped correctly.
## [3.0.3] 2015-09-30
### Fixed
- SVG Role divide by 0 error when `scale` === 0.
## [3.0.2] 2015-09-29
### Fixed
- Bugfix where Popmotion would attempt to split numerical values.
- Bugfix for `complex` valueType regex where negative numbers were made positive.
## [3.0.0] 2015-09-29
### Added
- Full SVG support.
- Multiple simultaneous Actions on a single Actor - mix Simulations, Tracking and Tweens on the same elements!
- Animate complex strings, like `path` `d` attributes.
- Iterator - to allow single classes to be extended the ActorCollector has been dropped in favour of a generic Iterator class, which can iterate over any set of classes. This also makes it clearer when you're interacting with multiple items vs a single Actor, and these items are not longer limited to Actors.
- Roles - `ui.css`, `ui.attr`, `ui.svg`, `ui.draw`. These are auto-assigned to Actors when initialised with an `element` property, but can also be manually assigned with the `as` property on Actor initialisation.
- Actors can have multiple roles by providing an array to `as`.
- New roles can be created with `new ui.Role()`.
- Value names can be translated before a Role accesses it, via a Role's `map` property. For example `ui.cssRole` maps `x` to `translateX`.
- Action classes/definitions - `Tween`, `Simulate`, `Track`
### Removed
- `ui.addRoute` - see Roles
- `ui.addPreset`, `ui.addAction` - see Tween, Simulate and Track classes
- `ActorCollection` - see Iterator
- `play`, `run`, `track` Actor methods - use `start`
### Changed
- `addToQueue` Actor method is now `then` and takes Tween, Simulate and Track instances instead of raw properties.
- `mapLink` Actor value property is now `mapFrom`.
- Default tween `duration` set to `300`.
- Default tween `ease` set to `"easeOut"`.
- `reverse`, `reset` -> `restart`, `seek` methods moved to `TweenControls` (returned when a `Tween` is passed to `start`)
### Deprecated
- `flipValues`, `reverse`, `reset`, `resetProgress`, `resetOrigins` and `seek` Actor methods - these are all going to be moved to the `Tween` class in `3.2.0`
## [2.0.4] 2015-08-10
### Fixed
- Fixing `bounce` and `capture` simulation calls.
## [2.0.3] 2015-08-10
### Removed
- Removed undocumented `ui.addSimulation` - new simulations now passed as function instead of simulation name.
## [2.0.2] 2015-08-10
### Changed
- `Actor.seek` no longer an Action, much higher performance.
## [2.0.1] 2015-08-07
### Changed
- Only numerical properties can be set as functions to be resolved on action start.
## [2.0.0] 2015-08-07
### Removed
- `ui.addEasing()`
### Added
- New easing functions are now generated with `new ui.Easing()` and provided as the `ease` property. When provided an easeIn function, `in`, `out` and `inOut` methods are returned.
## [1.0.0] 2015-08-06
**Note:** Forked from Redshift v2.1.1.
### Changed
- `redshift` object name now `ui`.
- Terminology changes to fix API semantics:
- **Action:** Actor
- **ActionCollection:** ActionCollection
- **Rubix:** Action (as in, an Action an Actor can perform)
### Added
- Add new easing functions with `ui.addEasing()`. Provide the easeIn function and Popmotion will generate easeOut and easeInOut variants.
- Add new simulation functions to `run` with `ui.addSimulation()`.
- Any value can be a special **value type**, ie a color. `'#FFF'` splits into four numerical properties, `Red`, `Blue`, `Green` and `Alpha`.
- Add new value types with `ui.addValueType()`.
- HSLA value type support.
## [2.1.1] 2015-06-11
### Fixed
- Change Action `rubix` from `"seek"` to `"play"` onEnd.
## [2.1.0] 2015-06-11
### Added
- Added `.seek()` method to Actions.
## [2.0.5] 2015-06-02
### Added
- ActionGroup returns array of values when a getter is called.
## [2.0.4] 2015-06-01
### Fixed
- `onStart` regression from 2.0.0 - only firing for 'values' route.
## [2.0.3] 2015-06-01
### Fixed
- Fixing hasChanged regression, prevented .run() from stopping automatically.
## [2.0.2] 2015-06-01
### Fixed
- Adding Alpha property to all split color values (default: 1), in case a value has mixed RGB and RGBA properties.
## [2.0.1] 2015-06-01
### Added
- CSS values travelling through a splitter (ie backgroundColor is split into RGB values) can be set as functions like normal values.
## [2.0.0] 2015-06-01
### Changed
- Upgraded stepped easing algorithm.
- `Action.hasChanged` set to `true` when `Action.isActive(true)`
### Removed
- `.props()` method removed - properties now saved directly to Action object.
- `.data()` functionality removed, just set properties of Action instead.
- `.flip()` is now `.flipValues()`.
## [1.4.1] 2015-05-31
### Fixed
- ActionGroup.stagger() wasn't returning `this`
## [1.4.0] 2015-05-31
### Added
- Action Groups for controlling multiple Actions at once.
- Stagger method for Action Groups.
- DOM selection support for creating Actions prepopulated with DOM elements.
### Fixed
- Calling .play(preset) while Action was in progress failed to add that call to the play queue.
- Added check for Process timers before clearing as clearTimeout is costing ~.4ms.