From 76a755c0077e99fcf189e1d76745ebccec2e42e3 Mon Sep 17 00:00:00 2001 From: Mike Deverell Date: Sat, 23 Jul 2016 22:44:18 -0400 Subject: [PATCH] Update/fix HammerJS typings (#9968) * clarify and fix 'options' object types; Hammer.Manager requires an EventTarget, not HTMLElement * fix RecognizerTuple type --- hammerjs/hammerjs.d.ts | 71 ++++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 20 deletions(-) diff --git a/hammerjs/hammerjs.d.ts b/hammerjs/hammerjs.d.ts index bfc6e7cb4f..6b7cc7fb19 100644 --- a/hammerjs/hammerjs.d.ts +++ b/hammerjs/hammerjs.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Hammer.js 2.0.4 +// Type definitions for Hammer.js 2.0.8 // Project: http://hammerjs.github.io/ // Definitions by: Philip Bulley , Han Lin Yap // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -11,7 +11,7 @@ declare module "hammerjs" { interface HammerStatic { - new( element:HTMLElement | SVGElement, options?:any ): HammerManager; + new( element:HTMLElement | SVGElement, options?:HammerOptions ): HammerManager; defaults:HammerDefaults; @@ -68,16 +68,22 @@ interface HammerStatic prefixed( obj:any, property:string ):string; } -interface HammerDefaults +type RecognizerTuple = + [RecognizerStatic] + | [RecognizerStatic, RecognizerOptions] + | [RecognizerStatic, RecognizerOptions, string | string[]] + | [RecognizerStatic, RecognizerOptions, string | string[], (string | Recognizer) | (string | Recognizer)[]]; + +interface HammerDefaults extends HammerOptions { domEvents:boolean; enable:boolean; - preset:any[]; + preset:RecognizerTuple[]; touchAction:string; cssProps:CssProps; - inputClass():void; - inputTarget():void; + inputClass:() => void; + inputTarget:EventTarget; } interface CssProps @@ -90,13 +96,25 @@ interface CssProps userSelect:string; } -interface HammerOptions extends HammerDefaults +interface HammerOptions { + cssProps?:CssProps; + domEvents?:boolean; + enable?:boolean | ((manager: HammerManager) => boolean); + preset?:RecognizerTuple[]; + touchAction?:string; + recognizers?:RecognizerTuple[]; + inputClass?:() => void; + inputTarget?:EventTarget; } interface HammerManagerConstructor { - new( element:HTMLElement, options?:any ):HammerManager; + new( element:EventTarget, options?:HammerOptions ):HammerManager; +} + +interface HammerListener { + (event:HammerInput): void } interface HammerManager @@ -109,8 +127,8 @@ interface HammerManager emit( event:string, data:any ):void; get( recogniser:Recognizer ):Recognizer; get( recogniser:string ):Recognizer; - off( events:string, handler?:( event:HammerInput ) => void ):void; - on( events:string, handler:( event:HammerInput ) => void ):void; + off( events:string, handler?:HammerListener ):void; + on( events:string, handler:HammerListener ):void; recognize( inputData:any ):void; remove( recogniser:Recognizer ):HammerManager; remove( recogniser:string ):HammerManager; @@ -157,7 +175,7 @@ declare class HammerInput direction:number; /** Direction moved from it's starting point. Matches the DIRECTION constants. */ - offsetDirection:string; + offsetDirection:number; /** Scaling that has been done when multi-touch. 1 on a single touch. */ scale:number; @@ -221,9 +239,22 @@ declare class TouchMouseInput extends HammerInput constructor( manager:HammerManager, callback:Function ); } +interface RecognizerOptions { + direction?: number; + enable?: boolean | ((recognizer: Recognizer, inputData: HammerInput) => boolean); + event?: string; + interval?: number; + pointers?: number; + posThreshold?: number; + taps?: number + threshold?: number; + time?: number; + velocity?: number; +} + interface RecognizerStatic { - new( options?:any ):Recognizer; + new( options?:RecognizerOptions ):Recognizer; } interface Recognizer @@ -246,7 +277,7 @@ interface Recognizer requireFailure( otherRecognizer:Recognizer ):Recognizer; requireFailure( otherRecognizer:string ):Recognizer; reset():void; - set( options?:any ):Recognizer; + set( options?:RecognizerOptions ):Recognizer; tryEmit( input:HammerInput ):void; } @@ -258,12 +289,12 @@ interface AttrRecognizerStatic interface AttrRecognizer extends Recognizer { - new( options?:any ):AttrRecognizer; + new( options?:RecognizerOptions ):AttrRecognizer; } interface PanRecognizerStatic { - new( options?:any ):PanRecognizer; + new( options?:RecognizerOptions ):PanRecognizer; } interface PanRecognizer extends AttrRecognizer @@ -272,7 +303,7 @@ interface PanRecognizer extends AttrRecognizer interface PinchRecognizerStatic { - new( options?:any ):PinchRecognizer; + new( options?:RecognizerOptions ):PinchRecognizer; } interface PinchRecognizer extends AttrRecognizer @@ -281,7 +312,7 @@ interface PinchRecognizer extends AttrRecognizer interface PressRecognizerStatic { - new( options?:any ):PressRecognizer; + new( options?:RecognizerOptions ):PressRecognizer; } interface PressRecognizer extends AttrRecognizer @@ -290,7 +321,7 @@ interface PressRecognizer extends AttrRecognizer interface RotateRecognizerStatic { - new( options?:any ):RotateRecognizer; + new( options?:RecognizerOptions ):RotateRecognizer; } interface RotateRecognizer extends AttrRecognizer @@ -299,7 +330,7 @@ interface RotateRecognizer extends AttrRecognizer interface SwipeRecognizerStatic { - new( options?:any ):SwipeRecognizer; + new( options?:RecognizerOptions ):SwipeRecognizer; } interface SwipeRecognizer extends AttrRecognizer @@ -308,7 +339,7 @@ interface SwipeRecognizer extends AttrRecognizer interface TapRecognizerStatic { - new( options?:any ):TapRecognizer; + new( options?:RecognizerOptions ):TapRecognizer; } interface TapRecognizer extends AttrRecognizer