All Versions
Latest Version
Avg Release Cycle
Latest Release

Changelog History
Page 2

  • v0.6.3 Changes

    • Switch to simple average for Pinch and Rotate smoothing
      • This makes the smoothing more general, ensures a 60fps update rate is maintained, and generally has a nicer feel to it.
      • Downside is that there will be a bit of drift, but that's why this setting is optional!
  • v0.6.2 Changes

    • โž• Add optional smoothing to Pinch and Rotate (on by default).
  • v0.6.1 Changes

    • Treat 'touchcancel' and 'pointercancel' the same way as 'blur'.
      • This is an unfortunate hack, necessitated by an apparent bug in Chrome, wherein only the first (primary?) pointer will receive a 'cancel' event. The other's are cancelled, but no event is emitted. Their IDs are reused for subsequent pointers, making gesture state recoverable, but this is still not a good situation.
      • The downside is that this workaround means that if any single pointer is cancelled, all of the pointers are treated as cancelled. I don't have enough in depth knowledge to say for sure, but I suspect that this doesn't have to be the case. If I have time soon I'll post a ticket to Chrome, at the very least to find out if this is actually a bug (my read of the spec tells me that it is).
      • The upside is that this should be pretty fail-safe, when combined with the 'blur' listener on the window.
  • v0.6.0 Changes

    • ๐Ÿ›  Fix Tap bug preventing rapid taps.
      • 'ended' list wasn't being cleared on an emit, preventing further emits if taps came in rapid succession.
    • 0๏ธโƒฃ Expand default deadzone radius of Swivel.
    • ๐Ÿ›  Fix bugs in Swipe:
      • Make sure swipe state is reset on 'start' and after 'end' phases.
      • Prevent delayed emits if the user stops suddenly and doesn't move again before releasing the pointer.
    • [BREAKING CHANGE] Use inner fields instead of input progress.
      • Breaking because you can't reuse some of the Gesture objects the way you could previously.
      • Slightly more efficient, therefore preferable overall.
      • Rotate still uses input progress so that angle changes can be tracked on a per-input basis, which is more responsive than anything else I've tried so far.
  • v0.5.4 Changes

    • โž• Add 'cancel' phase support for touchcancel and pointercancel.
      • For most gestures, will probably be the same as 'end', but it must be different for gestures that emit on 'end'.
    • โž• Add a 'blur' listener to window to reset the state when the window loses focus.
    • ๐Ÿ›  Fix Swivel bug in Edge: Edge doesn't provide 'x' and 'y' fields with 'getBoundingClientRect', so use 'left' and 'top' instead.
    • ๐Ÿ‘‰ Make Swipes work for multitouch.
  • v0.5.3 Changes

    • ๐Ÿ›  Fix buggy Swivel results caused by >1 active inputs.
    • ๐Ÿ›  Fix bugs in Swipe:
      • Erroneous acceptance of >1 inputs.
      • Velocity going to infinity in some cases (division by 0)
      • Direction calculation could produce errors, switched to using a more common mathematical approach.
    • Normalize Swipe a bit by taking average velocity instead of max.
  • v0.5.2 Changes

    • ๐Ÿ›  Fix bug in Swivel when using the pivotCenter option. Initial angle wasn't being set correctly, causing jumps when initiating a Swivel.
  • v0.5.0 Changes

    • ๐Ÿ“‡ Rename Region#bind() -> Region#addGesture() and Region#unbind() -> Region#removeGestures().
      • I was not happy with the way that the 'bind' naming clashes with the 'bind' function on the Function prototype.
    • Simplified "unbind" function. It now returns null, as the Bindings should not be exposed to the end user.
    • Sped up Binding selection in the Region's arbitrate function, while simultaneously fixing a critical bug!
      • Only the bindings associated with elements on the composed path of the first input to touch the surface will be accessed.
      • In other words, this batch of bindings is cached instead of being recalculated on every input event.
      • Previously, if the user started one input in one bound element, then another input in another bound element, the bindings for both elements would think they have full control, leading to some potentially weird behaviour.
      • If you want this behaviour, you'll now have to simulate it by creating a separate region for each binding.
    • โœ‚ Removed Region#getBindingsByInitialPos
    • โœ‚ Removed State#someInputWasInitiallyInside
    • ๐Ÿ‘Œ Improved test coverage a bit