From 6b738d15beff56fb0166014855192a775ece86e5 Mon Sep 17 00:00:00 2001 From: Boris Yankov Date: Sun, 23 Dec 2012 18:05:19 +0200 Subject: [PATCH] Add hammer.js --- README.md | 1 + hammerjs/hammerjs-0.6.d.ts | 73 ++++++++++++++++++++++++++++++++++++++ hammerjs/hammerjs-tests.ts | 32 +++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 hammerjs/hammerjs-0.6.d.ts create mode 100644 hammerjs/hammerjs-tests.ts diff --git a/README.md b/README.md index a309fbba52..c6ab088f34 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ Complete * [Foundation](http://foundation.zurb.com/) (by [Boris Yankov](https://github.com/borisyankov)) * [GoogleMaps](https://developers.google.com/maps/) (by [Esben Nepper](https://github.com/eNepper)) * [Handlebars](http://handlebarsjs.com/) (by [Boris Yankov](https://github.com/borisyankov)) +* [Hammer.js](http://eightmedia.github.com/hammer.js/) (by [Boris Yankov](https://github.com/borisyankov)) * [Highcharts](http://www.highcharts.com/) (by [damianog](https://github.com/damianog)) * [History.js](https://github.com/balupton/History.js/) (by [Boris Yankov](https://github.com/borisyankov)) * [Humane.js](http://wavded.github.com/humane-js/) (by [John Vrbanac](https://github.com/jmvrbanac)) diff --git a/hammerjs/hammerjs-0.6.d.ts b/hammerjs/hammerjs-0.6.d.ts new file mode 100644 index 0000000000..5cdb87c7c8 --- /dev/null +++ b/hammerjs/hammerjs-0.6.d.ts @@ -0,0 +1,73 @@ +// Type definitions for Hammer.js 0.6 +// Project: http://eightmedia.github.com/hammer.js/ +// Definitions by: Boris Yankov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + + +/// + +interface HammerOptions { + prevent_default?: bool; + css_hacks?: bool; + swipe?: bool; + swipe_time?: number; + swipe_min_distance?: number; + drag?: bool; + drag_vertical?: bool; + drag_horizontal?: bool; + drag_min_distance?: number; + transform?: bool; + scale_treshold?: number; + rotation_treshold?: number; + tap?: bool; + tap_double?: bool; + tap_max_interval?: number; + tap_max_distance?: number; + tap_double_distance?: number; + hold?: bool; + hold_timeout?: number; +} + +interface HammerPoint { + x: number; + y: number; +} + +interface HammerEvent { + originalEvent: Event; + position: HammerPoint; + touches: HammerPoint[]; +} + +interface HammertTransformEvent extends HammerEvent { + scale: number; + rotation: number; +} + +interface HammerDirectionEvent extends HammerEvent { + angle: number; + direction: string; + distance: number; + distanceX: number; + distanceY: number; +} + +class Hammer { + constructor (element: any, options?: HammerOptions); + + ondragstart: (event: HammerDirectionEvent) => void; + ondrag: (event: HammerDirectionEvent) => void; + ondragend: (event: HammerDirectionEvent) => void; + onswipe: (event: HammerDirectionEvent) => void; + ontap: (event: HammerEvent) => void; + ondoubletap: (event: HammerEvent) => void; + onhold: (event: HammerEvent) => void; + ontransformstart: (event: HammertTransformEvent) => void; + ontransform: (event: HammertTransformEvent) => void; + ontransformend: (event: HammertTransformEvent) => void; + onrelease: (event: HammerEvent) => void; +} + +interface JQuery { + hammer(options?: HammerOptions): JQuery; +} \ No newline at end of file diff --git a/hammerjs/hammerjs-tests.ts b/hammerjs/hammerjs-tests.ts new file mode 100644 index 0000000000..db1bb053a3 --- /dev/null +++ b/hammerjs/hammerjs-tests.ts @@ -0,0 +1,32 @@ +/// +/// + +var hammer = new Hammer(document.getElementById("container")); +hammer.ondragstart = function (ev) { }; +hammer.ondrag = function (ev) { }; +hammer.ondragend = function (ev) { }; +hammer.onswipe = function (ev) { }; + +hammer.ontap = function (ev) { }; +hammer.ondoubletap = function (ev) { }; +hammer.onhold = function (ev) { }; + +hammer.ontransformstart = function (ev) { }; +hammer.ontransform = function (ev) { }; +hammer.ontransformend = function (ev) { }; + +hammer.onrelease = function (ev) { }; + +$("#element") + .hammer({ + // Options + }) + .bind("tap", function (ev) { + console.log(ev); + }); + +$("#container").hammer({ + prevent_default: false, + drag_vertical: false +}).bind("hold tap doubletap transformstart transform transformend dragstart drag dragend release swipe", function (ev) { +}); \ No newline at end of file