Socket
Socket
Sign inDemoInstall

most-gestures

Package Overview
Dependencies
17
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    most-gestures

unified desktop/mobile high level pointer gestures, using most.js


Version published
Weekly downloads
668
decreased by-20.85%
Maintainers
1
Install size
1.04 MB
Created
Weekly downloads
 

Readme

Source

most-gestures

GitHub version experimental Build Status Dependency Status devDependency Status

unified desktop/mobile high level pointer gestures, using most.js

This is a set of pointer gesture helpers, unifying pointer apis accross browsers & mobile/desktop works (and manually tested ) in :

  • Chrome (desktop & mobile, MacOS & Android)
  • Firefox
  • Safari (desktop & mobile , MacOs & IOS)
  • Ios & Android web views

It

  • is coded in es6
  • uses most.js observables
  • provides relatively high level tools : ie taps, zooms , drags

Table of Contents

Installation

npm install most-gestures

Usage

import {pointerGestures} from 'most-gestures'

const element = document.getElementById("foo")
const gestures = pointerGestures(element)

//or alternatively
const element = document.getElementById("foo")
const baseInteractions = baseInteractionsFromEvents(element)
const gestures = pointerGestures(baseInteractions)

//now you can use:
/*gestures.taps : tap/click once & release quickly
gestures.drags: press, keep pressed & move around
zooms: mouse wheel & pinch zoom alike
pointerMoves: simple moves
*/

//each one of those is an observable , so to react on taps you can do:
gestures.taps.forEach(function(e){
  console.log('tapped',e)
  })

API

the module exposes two main functions:

baseInteractionsFromEvents(element)

this creates an object containing the low level streams (mouseDowns$, mouseUps$ etc) from a DOM element, you usually don't want to use this directly, use the following function instead.

options allows you to refine the gestures by modifying the following parameters:

Note: these will also get passed along correctly if set on the pointerGestures function below

pointerGestures(baseInteractionsOrElement, options)

you can either pass in a reference to a dom element or the output from baseInteractionsFromEvents(element)

what you are likely interested in, is pointerGestures:

  • gestures.presses (used as a basis for the two below)
  • gestures.taps : quick press/tap & release
  • gestures.holds : press/tap for a long time (defined by the longPressDelay)& release
  • gestures.drags : press & move before releasing
  • gestures.zooms : pinch , scrollwheel etc

they are all observables , so the power is yours !

options allows you to refine the gestures by modifying the following parameters:

  • multiTapDelay: time in ms between multiple taps
  • longPressDelay (default: 250) : time in ms after which a HOLD is emitted
  • maxStaticDeltaSqr (default: 100): maximum delta (in pixels squared) above which we consider a pointer to have moved
  • zoomMultiplier: (default: 200): zoomFactor for normalized interactions across browsers
  • pinchThreshold: (default: 4000) The minimum amount in pixels squared the inputs must move until it is fired.
  • pixelRatio : (default: window.pixelRatio if available)

examples :

gestures.drags.forEach(function(e){
  console.log('dragged',e)
  })

custom gestures:

you can also easily define your custom gestures, based on the existing ones: using map, filter etc on the observables

const singleTaps$ = taps$.filter(x => x.nb === 1).map(e => e.list).map(e => e[0])
const doubleTaps$ = taps$.filter(x => x.nb === 2).map(e => e.list).map(e => e[0])

Contribute

PRs accepted.

Small note: If editing the Readme, please conform to the standard-readme specification.

License

The MIT License (MIT) (unless specified otherwise)

Keywords

FAQs

Last updated on 22 Nov 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc