From b9ad73ca524b7cc1b7e59cc19ac5776a5ab566f9 Mon Sep 17 00:00:00 2001 From: Josh Kelley Date: Mon, 29 Jul 2024 14:36:58 -0400 Subject: [PATCH] More descriptive types for Hammer.js events This required adding @types/hammerjs; see https://stackoverflow.com/a/46011417/25507. --- package-lock.json | 11 +++++++++++ package.json | 1 + types/options.d.ts | 6 +++--- types/tests/exports.ts | 5 ++++- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 80e20a7b..0e2a7171 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "2.0.1", "license": "MIT", "dependencies": { + "@types/hammerjs": "^2.0.45", "hammerjs": "^2.0.8" }, "devDependencies": { @@ -2224,6 +2225,11 @@ "@types/node": "*" } }, + "node_modules/@types/hammerjs": { + "version": "2.0.45", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.45.tgz", + "integrity": "sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==" + }, "node_modules/@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", @@ -20707,6 +20713,11 @@ "@types/node": "*" } }, + "@types/hammerjs": { + "version": "2.0.45", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.45.tgz", + "integrity": "sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==" + }, "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", diff --git a/package.json b/package.json index ed3c91e8..4836a2de 100644 --- a/package.json +++ b/package.json @@ -82,6 +82,7 @@ "chart.js": ">=3.2.0" }, "dependencies": { + "@types/hammerjs": "^2.0.45", "hammerjs": "^2.0.8" } } diff --git a/types/options.d.ts b/types/options.d.ts index 6f6ad051..1d6d5da9 100644 --- a/types/options.d.ts +++ b/types/options.d.ts @@ -1,5 +1,5 @@ import { Chart, Color, Point } from 'chart.js'; - +import { Input as HammerInput } from 'hammerjs'; type Mode = 'x' | 'y' | 'xy'; type Key = 'ctrl' | 'alt' | 'shift' | 'meta'; @@ -167,9 +167,9 @@ export interface PanOptions { * Function called when pan fails because modifier key was not detected. * event is the a hammer event that failed - see https://hammerjs.github.io/api#event-object */ - onPanRejected?: (context: { chart: Chart, event: Event }) => void; + onPanRejected?: (context: { chart: Chart, event: HammerInput }) => void; - onPanStart?: (context: { chart: Chart, event: Event, point: Point }) => boolean | undefined; + onPanStart?: (context: { chart: Chart, event: HammerInput, point: Point }) => boolean | undefined; } export interface ScaleLimits { diff --git a/types/tests/exports.ts b/types/tests/exports.ts index e9d9ff78..03d2a6c0 100644 --- a/types/tests/exports.ts +++ b/types/tests/exports.ts @@ -34,7 +34,10 @@ const chart = new Chart('id', { }, pan: { enabled: true, - mode: 'x' + mode: 'x', + onPanStart({ event }) { + return event.distance > 2; + } }, zoom: { wheel: {