Skip to content

@web-engine-dev/gesture

Advanced input gesture recognition for web-engine-dev.

Features

  • Tap Detection: Single, double, multi-tap
  • Swipe Recognition: Directional swipes with velocity
  • Pinch/Zoom: Two-finger scale gestures
  • Rotation: Two-finger rotation gestures
  • Pan: Multi-finger dragging
  • Custom Gestures: Define your own patterns

Installation

bash
npm install @web-engine-dev/gesture
# or
pnpm add @web-engine-dev/gesture

Quick Start

typescript
import {
  GestureRecognizer,
  TapRecognizer,
  SwipeRecognizer,
  PinchRecognizer,
} from '@web-engine-dev/gesture';

// Create gesture recognizer
const gestures = new GestureRecognizer(canvas);

// Add recognizers
gestures.add(new TapRecognizer());
gestures.add(new SwipeRecognizer());
gestures.add(new PinchRecognizer());

// Listen for gestures
gestures.on('tap', (event) => {
  console.log('Tap at:', event.position);
});

gestures.on('swipe', (event) => {
  console.log('Swipe:', event.direction, event.velocity);
});

gestures.on('pinch', (event) => {
  console.log('Pinch scale:', event.scale);
});

API Overview

Tap Recognizer

typescript
const tap = new TapRecognizer({
  maxDuration: 300, // Max tap duration (ms)
  maxMovement: 10, // Max movement (px)
  tapTimeout: 300, // Double-tap window (ms)
});

gestures.on('tap', (e) => {
  console.log(e.tapCount); // 1, 2, 3...
  console.log(e.position);
});

Swipe Recognizer

typescript
const swipe = new SwipeRecognizer({
  minVelocity: 0.3, // Pixels per ms
  minDistance: 30, // Minimum swipe distance
});

gestures.on('swipe', (e) => {
  console.log(e.direction); // 'left', 'right', 'up', 'down'
  console.log(e.velocity);
  console.log(e.distance);
});

Pinch Recognizer

typescript
const pinch = new PinchRecognizer({
  minScale: 0.1, // Minimum scale change
});

gestures.on('pinchstart', (e) => console.log('Pinch started'));
gestures.on('pinchmove', (e) => {
  console.log('Scale:', e.scale); // Current scale
  console.log('Delta:', e.deltaScale); // Scale change
  console.log('Center:', e.center); // Pinch center
});
gestures.on('pinchend', (e) => console.log('Pinch ended'));

Pan Recognizer

typescript
const pan = new PanRecognizer({
  minFingers: 1,
  maxFingers: 2,
});

gestures.on('pan', (e) => {
  console.log('Delta:', e.delta);
  console.log('Position:', e.position);
});

Rotation Recognizer

typescript
const rotate = new RotationRecognizer();

gestures.on('rotate', (e) => {
  console.log('Rotation:', e.rotation); // Radians
  console.log('Delta:', e.deltaRotation);
});

Proprietary software. All rights reserved.