Avg Release Cycle
- 🚀 Official first release! The engine is no longer considered to be in beta.
- ♻️ Refactor Smoothable to be a data type, not a mixin.
- ✂ Remove the Binding class and integrate with the Gesture class. It was more of a hindrance than a help on its own.
- Provide automatic detection of enabled and disabled gestures, including using keys to enable and disable, in a simple way such that gestures don't need to check if their enabled inside their hooks.
- 'cancel' phase is now properly called.
- Region class now takes an optional 'options' object instead of lots of arguments.
- ✂ Remove the 'getProgressOfGesture' method from the Input class. Gestures should track their progress internally, on their own instance!
- ✂ Remove the 'radius' property from the outgoing data. It didn't seem useful and was just cluttering the output.
- 👉 Use Sets for tracking Gestures inside the Region instead of Arrays. (Faster access operations).
- ⚡️ Update the Press gesture to allow multiple presses, one after the other, by adding successive inputs. Effectively makes it a multi-touch press! Single touch press is still possible using the min/maxInputs options!
- 👉 Use a Pivotable base gesture type for Swivel and Pull.
- 👌 Improved documentation by showing all of westures-core
- 🔄 Change pivotCenter -> dynamicPivot, default to false
- Clean up Rotate implementation to reduce reliance on side effects
- 0️⃣ Switch to using pointer events by default, combined with setting touch-action: none on the gesture elements (not the region itself).
- Provide options on the Region for choosing whether to prefer pointer events over mouse/touch events (preferPointer) and what to set the touch-action property to on gesture elements (touchAction).
- 0️⃣ Default to using the window as the region if no element provided.
- ➕ Add mouseleave to the CANCEL_EVENTS
- 📦 Include the core engine as a git submodule instead of relying on the npm package.
- Keeps the core code out of node_modules which simplifies a lot of things...
- ➕ Add a Pull gesture. Pull is to Pinch as Swivel is to Rotate. In other words, the data is calculated relative to a fixed point, rather than relative to the other input points.
- Simplify the Swivel class a bit.
- ⚡️ Update dev support packages and switch to parcel-bundler for the distributable instead of browserify. This bundle is now found in the dist/ folder, along with a source map. Support for the old 'bundle.js' and 'bundle.min.js' is approximately maintained by providing two copies of 'dist/index.js' under those names. They will be removed in subsequent releases.
- 👌 Improvements to the Press gesture. No longer fails as touches are added,
supports layering of Presses. For example, you can have presses that respond
to 1,2,3,... however many touches all attached to the same element, and they
will each fire in turn as touches are added (but not as they are removed!).
- [POSSIBLE BREAKING] The 'numInputs' option was renamed to 'minInputs'.
- ✂ Remove confusing and unnceessary console.warn() statements from core engine.
- 👌 Improvements to the Press gesture. No longer fails as touches are added, supports layering of Presses. For example, you can have presses that respond to 1,2,3,... however many touches all attached to the same element, and they will each fire in turn as touches are added (but not as they are removed!).
- ➕ Add a check that ensures smoothing will only ever be applied on devices that need it. That is, devices with 'coarse' pointers.
- [POSSIBLE BREAKING] But only for those who have implemented their own
Smoothable gesture with a non-zero identity value (e.g. Rotate has an identity
of 0, as that represents no change, and Pinch has an identity of 1, as that
represents no change). Such gestures will now need to declare their own
identity value after calling super() in the constructor.
- The smoothing algorithm used by the Smoothable mixin has been simplified. There is no delay to emits, as analysis of the data revealed this really only occurred for the first emit. Instead a simple rolling average is maintained.
- Additionally, note that
this.smooth(data, field)must be called instead of
- ➕ Add an experimental Press gesture.
- [POSSIBLE BREAKING] But only for those who have implemented their own Smoothable gesture with a non-zero identity value (e.g. Rotate has an identity of 0, as that represents no change, and Pinch has an identity of 1, as that represents no change). Such gestures will now need to declare their own identity value after calling super() in the constructor.
- 🛠 Fix bug in gestures that used the Smoothable mixin which prevented their default 'smoothing' setting from being used.
- 0️⃣ Turn on smoothing by default in Pan.
- ➕ Add
bundle.js. Should add Edge support, and at the very least opens up the possibility of expanding browser support a bit.
- ➕ Add
- 👉 Use new Smoothable mixin from
westures-corefor Pan, Pinch, Rotate, and Swivel. Set smoothing as enabled by default, except in Pan (may enable later...)
- Place the
angularMinusfunction into its own file, so that it can be used by both Rotate and Swivel.
- 👉 Make Swivel multitouch-capable.
- 🔄 Change names of emitted data properties to be more idiomatic. 'rotation' for Rotate and Swivel instead of delta, 'scale' for Pinch and 'translation' for Pan instead of change.
- Point2D#midpoint was renamed to Point2D#centroid
- centroid and radius were added to base data for emits.
- Preference is now given to data from the gesture over base data in the case of property name collisions.
- 👉 Use new Smoothable mixin from