2025-03-24 22:56:10 +01:00

1727 lines
36 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.