Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@hscmap/magic-trackpad-detector

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@hscmap/magic-trackpad-detector - npm Package Compare versions

Comparing version 0.0.2 to 0.0.3

5

lib/index.d.ts
export declare class MagicTrackpadDetector {
private history;
tolerance: number;
interval: number;
minN: number;
minN1: number;
minN2: number;
private history;
inertial(e: WheelEvent): boolean;
}

40

lib/index.js

@@ -5,6 +5,7 @@ "use strict";

function MagicTrackpadDetector() {
this.history = new RingBuffer(20);
this.tolerance = 7; // ms
this.interval = 1000 / 60; // events per second
this.minN = 5;
this.minN1 = 7;
this.minN2 = 15;
this.history = new RingBuffer(Math.max(this.minN1, this.minN2));
}

@@ -16,13 +17,32 @@ MagicTrackpadDetector.prototype.inertial = function (e) {

h.push([t0, d0]);
if (h.length < this.minN)
if (h.length < this.minN1)
return false;
for (var i = this.minN - 1; i > 1; --i) {
var o = h.at(-i);
var n = h.at(-i + 1);
var dt = n[0] - o[0];
var dv = n[1] - o[1];
if (dv != 0 && (dt < this.interval - this.tolerance || this.interval + this.tolerance < dt))
if (Math.abs(e.deltaY) > 1) {
for (var i = this.minN1 - 1; i > 1; --i) {
var o = h.at(-i);
var n = h.at(-i + 1);
var dt = n[0] - o[0];
if (dt < this.interval - this.tolerance || this.interval + this.tolerance < dt)
return false;
if (n[1] * o[1] < 0 || n[1] / o[1] > 1)
return false;
}
}
else {
if (h.length < this.minN2)
return false;
if (n[1] * o[1] < 0 || n[1] / o[1] > 1)
var _a = h.at(-this.minN2), to = _a[0], vo = _a[1];
if (Math.abs(vo) <= 1 || t0 - to > 2 * this.interval * this.minN2) {
return false;
}
for (var i = this.minN2 - 1; i > 1; --i) {
var o = h.at(-i);
var n = h.at(-i + 1);
var dt = n[0] - o[0];
if (!(this.interval - this.tolerance <= dt && dt <= this.interval + this.tolerance ||
2 * this.interval - this.tolerance <= dt && dt <= 2 * this.interval + this.tolerance))
return false;
if (n[1] * o[1] < 0 || n[1] / o[1] > 1)
return false;
}
}

@@ -29,0 +49,0 @@ return true;

{
"name": "@hscmap/magic-trackpad-detector",
"version": "0.0.2",
"version": "0.0.3",
"main": "./lib/index.js",

@@ -5,0 +5,0 @@ "types": "./lib/index.d.ts",

# Magic Trackpad's inertial scroll Detector
* Apple's Magic trackpad emits *pseudo inertial* scroll event. This module determines wheter a wheel event is a **real** event (generated by a user's action)Ï or a **pseudo inertial** event.
* Apple's Magic trackpad emits *pseudo inertial* scroll event. This module determines wheter a wheel event is a **real** event (generated by a user's action) or a **pseudo inertial** event.
* [Working Demo](https://michitaro.github.io/magic-trackpad-detector)

@@ -100,2 +100,2 @@

}
```
```
export class MagicTrackpadDetector {
private history = new RingBuffer<[number, number]>(20)
tolerance = 7 // ms
interval = 1000 / 60 // events per second
minN = 5
minN1 = 7
minN2 = 15
private history = new RingBuffer<[number, number]>(Math.max(this.minN1, this.minN2))

@@ -12,13 +13,38 @@ inertial(e: WheelEvent) {

h.push([t0, d0])
if (h.length < this.minN)
if (h.length < this.minN1)
return false
for (let i = this.minN - 1; i > 1; --i) {
const o = h.at(-i)
const n = h.at(-i + 1)
const dt = n[0] - o[0]
const dv = n[1] - o[1]
if (dv != 0 && (dt < this.interval - this.tolerance || this.interval + this.tolerance < dt))
if (Math.abs(e.deltaY) > 1) {
for (let i = this.minN1 - 1; i > 1; --i) {
const o = h.at(-i)
const n = h.at(-i + 1)
const dt = n[0] - o[0]
if (dt < this.interval - this.tolerance || this.interval + this.tolerance < dt)
return false
if (n[1] * o[1] < 0 || n[1] / o[1] > 1)
return false
}
}
else {
if (h.length < this.minN2)
return false
if (n[1] * o[1] < 0 || n[1] / o[1] > 1)
const [to, vo] = h.at(- this.minN2)
if (Math.abs(vo) <= 1 || t0 - to > 2 * this.interval * this.minN2) {
return false
}
for (let i = this.minN2 - 1; i > 1; --i) {
const o = h.at(-i)
const n = h.at(-i + 1)
const dt = n[0] - o[0]
if (
!(
this.interval - this.tolerance <= dt && dt <= this.interval + this.tolerance ||
2 * this.interval - this.tolerance <= dt && dt <= 2 * this.interval + this.tolerance
)
)
return false
if (n[1] * o[1] < 0 || n[1] / o[1] > 1)
return false
}
}

@@ -25,0 +51,0 @@ return true

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc