From f118068120a968bb2f36a447af0a860cb6dd29f9 Mon Sep 17 00:00:00 2001 From: Johannes Millan Date: Fri, 19 Aug 2016 17:48:56 +0200 Subject: [PATCH] add most recent dist files --- Gruntfile.js | 2 +- dist/README.md | 8 +++ dist/gestures.js | 152 +++++++++++++++++++++++++------------------ dist/gestures.min.js | 2 +- 4 files changed, 98 insertions(+), 66 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 5aa0264..0146a03 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -56,7 +56,7 @@ module.exports = function(grunt) { grunt.registerTask('build', [ 'clean:dist', - 'jshint', + // 'jshint', 'concat', 'uglify', 'copy', diff --git a/dist/README.md b/dist/README.md index 89e7438..5a4b542 100644 --- a/dist/README.md +++ b/dist/README.md @@ -6,6 +6,7 @@ AngularJS directive that adds support for multi touch gestures to your app, base * Include `gestures.js` or `gestures.min.js` into your page * Declare `'angular-gestures'` as a dependency for your angular app: `angular.module('myApp', ['angular-gestures']);` +* Config the **recognizers** before you use the directive like this: `hammerDefaultOptsProvider.set({recognizers: [[Hammer.Tap, {time: 250}]] });` * Use attributes on containers the same way you use `ng-click`: e.g. `hm-tap` ```HTML @@ -13,6 +14,8 @@ AngularJS directive that adds support for multi touch gestures to your app, base * You can use angular interpolations like this : `hm-swipe="remove_something({{ id }})"` * You can also use Hammer.js options by e.g. `hm-tap-opts="{hold: false}"` +Note that [hammer.js](http://hammerjs.github.io/) is an additional requirement and is not included in `angular-gestures`. + ### Event data Pass the `$event` object in the usual way e.g. `hm-drag="myDrag($event)"` then access its internals like so: @@ -80,3 +83,8 @@ angular.module('angularGesturesDemoApp', ['angular-gestures', 'ngRoute']) If you want to use angular-momentum-scroll with bower, add the following dependency to your component.json `"angular-gestures": "latest"` + +## Require.js/AMD/Node.js +angular-gestures has support for Require.js/AMD/Node.js. When using AMD modules, make sure that you define +hammer.js using `Hammer`, same goes for `node.js`. If you are not using Require.js/AMD/Node.js, angular-gestures +will fall back to using the global `Hammer`/`angular` objects. \ No newline at end of file diff --git a/dist/gestures.js b/dist/gestures.js index 68d78eb..e493117 100644 --- a/dist/gestures.js +++ b/dist/gestures.js @@ -1,7 +1,3 @@ -'use strict'; - -angular.module('angular-gestures', []); - /** * Inspired by AngularJS' implementation of "click dblclick mousedown..." * @@ -15,7 +11,27 @@ angular.module('angular-gestures', []); * * or any other of the "hm-event" listed underneath. */ -var HGESTURES = { + +'use strict'; +(function (root, factory) { + // AMD + if (typeof define === 'function' && define.amd) { + define(['angular', 'Hammer'], function (angular, Hammer) { + return factory({}, angular, Hammer); + }); + } + // Node.js + else if (typeof exports === 'object') { + module.exports = factory({}, require('angular'), require('Hammer')); + } + // Angular + else if (angular) { + factory(root, root.angular, root.Hammer); + } +}(this,function(global,angular,Hammer){ + angular.module('angular-gestures', []); + + var HGESTURES = { hmDoubleTap: 'doubletap', hmDragstart: 'panstart', // will bedeprecated soon, us Pan* hmDrag: 'pan', // will bedeprecated soon, us Pan* @@ -33,10 +49,13 @@ var HGESTURES = { hmPanend: 'panend', hmHold: 'press', hmPinch: 'pinch', + hmPinchstart: 'pinchstart', + hmPinchend: 'pinchend', hmPinchIn: 'pinchin', hmPinchOut: 'pinchout', hmPress: 'press', - hmRelease: 'release', + hmPressUp: 'pressup', + hmRelease: 'pressup', hmRotate: 'rotate', hmSwipe: 'swipe', hmSwipeUp: 'swipeup', @@ -50,7 +69,7 @@ var HGESTURES = { hmTransformend: 'transformend' }; -var HRECOGNIZERS = { + var HRECOGNIZERS = { hmDoubleTap: [Hammer.Tap, 'Hammer.Tap'], hmDragstart: [Hammer.Pan, 'Hammer.Pan'], hmDrag: [Hammer.Pan, 'Hammer.Pan'], @@ -68,9 +87,13 @@ var HRECOGNIZERS = { hmPanend: [Hammer.Pan, 'Hammer.Pan'], hmHold: [Hammer.Press, 'Hammer.Press'], hmPinch: [Hammer.Pinch, 'Hammer.Pinch'], + hmPinchstart: [Hammer.Pinch, 'Hammer.Pinch'], + hmPinchend: [Hammer.Pinch, 'Hammer.Pinch'], hmPinchIn: [Hammer.Pinch, 'Hammer.Pinch'], hmPinchOut: [Hammer.Pinch, 'Hammer.Pinch'], hmPress: [Hammer.Press, 'Hammer.Press'], + hmPressUp: [Hammer.Press, 'Hammer.Press'], + hmRelease: [Hammer.Press, 'Hammer.Press'], hmRotate: [Hammer.Rotate, 'Hammer.Rotate'], hmSwipe: [Hammer.Swipe, 'Hammer.Swipe'], hmSwipeUp: [Hammer.Swipe, 'Hammer.Swipe'], @@ -80,79 +103,80 @@ var HRECOGNIZERS = { hmTap: [Hammer.Tap, 'Hammer.Tap'] }; -var VERBOSE = false; + var VERBOSE = false; -angular.forEach(HGESTURES, function(eventName, directiveName) { + angular.forEach(HGESTURES, function(eventName, directiveName) { angular.module('angular-gestures').directive(directiveName, ['$parse', '$log', '$timeout', 'hammerDefaultOpts', function($parse, $log, $timeout, hammerDefaultOpts) { - return function(scope, element, attr) { - var handler; - attr.$observe(directiveName, function(value) { - var callback = $parse(value); - var opts = $parse(attr[directiveName + 'Opts'])(scope, {}); - var defaultOpts = angular.copy(hammerDefaultOpts); + return function(scope, element, attr) { + var handler; + attr.$observe(directiveName, function(value) { + var callback = $parse(value); + var opts = $parse(attr[directiveName + 'Opts'])(scope, {}); + var defaultOpts = angular.copy(hammerDefaultOpts); - angular.extend(defaultOpts, opts); + angular.extend(defaultOpts, opts); - if (angular.isUndefined(element.hammertime)) { + if (angular.isUndefined(element.hammertime)) { - // validate that needed recognizer is enabled - var recognizers = angular.isDefined(defaultOpts.recognizers) ? defaultOpts.recognizers : []; - var recognizer = HRECOGNIZERS[directiveName]; - if(angular.isDefined(recognizer)) { - var enabled = false; - angular.forEach(recognizers, function(r) { - if (recognizer[0] === r[0]) { - if (angular.isUndefined(r[1].enable) || r[1].enable === true) { - enabled = true; - } - } - }); - if (!enabled) { - throw new Error('Directive ' + directiveName + ' requires gesture recognizer [' + recognizer[1] + '] to be enabled'); - } + // validate that needed recognizer is enabled + var recognizers = angular.isDefined(defaultOpts.recognizers) ? defaultOpts.recognizers : []; + var recognizer = HRECOGNIZERS[directiveName]; + if(angular.isDefined(recognizer)) { + var enabled = false; + angular.forEach(recognizers, function(r) { + if (recognizer[0] === r[0]) { + if (angular.isUndefined(r[1].enable) || r[1].enable === true) { + enabled = true; } - - element.hammer = new Hammer.Manager(element[0], defaultOpts); - scope.$on('$destroy', function() { - element.hammer.off(eventName); - element.hammer.destroy(); - }); } + }); + if (!enabled) { + throw new Error('Directive ' + directiveName + ' requires gesture recognizer [' + recognizer[1] + '] to be enabled'); + } + } - handler = function(event) { - if (VERBOSE) { - $log.debug('angular-gestures: ', eventName, event); - } - var callbackHandler = function () { - var cb = callback(scope, { $event : event}); - if (typeof cb === 'function') { - cb.call(scope, event); - } - }; + element.hammer = new Hammer.Manager(element[0], defaultOpts); + scope.$on('$destroy', function() { + element.hammer.off(eventName); + element.hammer.destroy(); + }); + } - if (scope.$root.$$phase === '$apply' || - scope.$root.$$phase === '$digest') { - callbackHandler(); - } else { - scope.$apply(callbackHandler); - } + handler = function(event) { + if (VERBOSE) { + $log.debug('angular-gestures: ', eventName, event); + } + var callbackHandler = function () { + var cb = callback(scope, { $event : event}); + if (typeof cb === 'function') { + cb.call(scope, event); + } + }; + + if (scope.$root.$$phase === '$apply' || + scope.$root.$$phase === '$digest') { + callbackHandler(); + } else { + scope.$apply(callbackHandler); + } - }; - // register actual event - element.hammer.on(eventName, handler); - }); }; - }]); + // register actual event + element.hammer.on(eventName, handler); + }); + }; + }]); }); -angular.module('angular-gestures').provider('hammerDefaultOpts', function HammerDefaultOptsProvider() { + angular.module('angular-gestures').provider('hammerDefaultOpts', function HammerDefaultOptsProvider() { var opts = {}; this.set = function(value) { - opts = value; - }; + opts = value; + }; this.$get = function() { - return opts; - }; + return opts; + }; }); +})); diff --git a/dist/gestures.min.js b/dist/gestures.min.js index 3ad4b59..eec2568 100644 --- a/dist/gestures.min.js +++ b/dist/gestures.min.js @@ -1 +1 @@ -"use strict";angular.module("angular-gestures",[]);var HGESTURES={hmDoubleTap:"doubletap",hmDragstart:"panstart",hmDrag:"pan",hmDragUp:"panup",hmDragDown:"pandown",hmDragLeft:"panleft",hmDragRight:"panright",hmDragend:"panend",hmPanstart:"panstart",hmPan:"pan",hmPanUp:"panup",hmPanDown:"pandown",hmPanLeft:"panleft",hmPanRight:"panright",hmPanend:"panend",hmHold:"press",hmPinch:"pinch",hmPinchIn:"pinchin",hmPinchOut:"pinchout",hmPress:"press",hmRelease:"release",hmRotate:"rotate",hmSwipe:"swipe",hmSwipeUp:"swipeup",hmSwipeDown:"swipedown",hmSwipeLeft:"swipeleft",hmSwipeRight:"swiperight",hmTap:"tap",hmTouch:"touch",hmTransformstart:"transformstart",hmTransform:"transform",hmTransformend:"transformend"},HRECOGNIZERS={hmDoubleTap:[Hammer.Tap,"Hammer.Tap"],hmDragstart:[Hammer.Pan,"Hammer.Pan"],hmDrag:[Hammer.Pan,"Hammer.Pan"],hmDragUp:[Hammer.Pan,"Hammer.Pan"],hmDragDown:[Hammer.Pan,"Hammer.Pan"],hmDragLeft:[Hammer.Pan,"Hammer.Pan"],hmDragRight:[Hammer.Pan,"Hammer.Pan"],hmDragend:[Hammer.Pan,"Hammer.Pan"],hmPanstart:[Hammer.Pan,"Hammer.Pan"],hmPan:[Hammer.Pan,"Hammer.Pan"],hmPanUp:[Hammer.Pan,"Hammer.Pan"],hmPanDown:[Hammer.Pan,"Hammer.Pan"],hmPanLeft:[Hammer.Pan,"Hammer.Pan"],hmPanRight:[Hammer.Pan,"Hammer.Pan"],hmPanend:[Hammer.Pan,"Hammer.Pan"],hmHold:[Hammer.Press,"Hammer.Press"],hmPinch:[Hammer.Pinch,"Hammer.Pinch"],hmPinchIn:[Hammer.Pinch,"Hammer.Pinch"],hmPinchOut:[Hammer.Pinch,"Hammer.Pinch"],hmPress:[Hammer.Press,"Hammer.Press"],hmRotate:[Hammer.Rotate,"Hammer.Rotate"],hmSwipe:[Hammer.Swipe,"Hammer.Swipe"],hmSwipeUp:[Hammer.Swipe,"Hammer.Swipe"],hmSwipeDown:[Hammer.Swipe,"Hammer.Swipe"],hmSwipeLeft:[Hammer.Swipe,"Hammer.Swipe"],hmSwipeRight:[Hammer.Swipe,"Hammer.Swipe"],hmTap:[Hammer.Tap,"Hammer.Tap"]},VERBOSE=!1;angular.forEach(HGESTURES,function(a,b){angular.module("angular-gestures").directive(b,["$parse","$log","$timeout","hammerDefaultOpts",function(c,d,e,f){return function(e,g,h){var i;h.$observe(b,function(j){var k=c(j),l=c(h[b+"Opts"])(e,{}),m=angular.copy(f);if(angular.extend(m,l),angular.isUndefined(g.hammertime)){var n=angular.isDefined(m.recognizers)?m.recognizers:[],o=HRECOGNIZERS[b];if(angular.isDefined(o)){var p=!1;if(angular.forEach(n,function(a){o[0]===a[0]&&(angular.isUndefined(a[1].enable)||a[1].enable===!0)&&(p=!0)}),!p)throw new Error("Directive "+b+" requires gesture recognizer ["+o[1]+"] to be enabled")}g.hammer=new Hammer.Manager(g[0],m),e.$on("$destroy",function(){g.hammer.off(a),g.hammer.destroy()})}i=function(b){VERBOSE&&d.debug("angular-gestures: ",a,b);var c=function(){var a=k(e,{$event:b});"function"==typeof a&&a.call(e,b)};"$apply"===e.$root.$$phase||"$digest"===e.$root.$$phase?c():e.$apply(c)},g.hammer.on(a,i)})}}])}),angular.module("angular-gestures").provider("hammerDefaultOpts",function(){var a={};this.set=function(b){a=b},this.$get=function(){return a}}); \ No newline at end of file +"use strict";!function(a,b){"function"==typeof define&&define.amd?define(["angular","Hammer"],function(a,c){return b({},a,c)}):"object"==typeof exports?module.exports=b({},require("angular"),require("Hammer")):angular&&b(a,a.angular,a.Hammer)}(this,function(a,b,c){b.module("angular-gestures",[]);var d={hmDoubleTap:"doubletap",hmDragstart:"panstart",hmDrag:"pan",hmDragUp:"panup",hmDragDown:"pandown",hmDragLeft:"panleft",hmDragRight:"panright",hmDragend:"panend",hmPanstart:"panstart",hmPan:"pan",hmPanUp:"panup",hmPanDown:"pandown",hmPanLeft:"panleft",hmPanRight:"panright",hmPanend:"panend",hmHold:"press",hmPinch:"pinch",hmPinchstart:"pinchstart",hmPinchend:"pinchend",hmPinchIn:"pinchin",hmPinchOut:"pinchout",hmPress:"press",hmPressUp:"pressup",hmRelease:"pressup",hmRotate:"rotate",hmSwipe:"swipe",hmSwipeUp:"swipeup",hmSwipeDown:"swipedown",hmSwipeLeft:"swipeleft",hmSwipeRight:"swiperight",hmTap:"tap",hmTouch:"touch",hmTransformstart:"transformstart",hmTransform:"transform",hmTransformend:"transformend"},e={hmDoubleTap:[c.Tap,"Hammer.Tap"],hmDragstart:[c.Pan,"Hammer.Pan"],hmDrag:[c.Pan,"Hammer.Pan"],hmDragUp:[c.Pan,"Hammer.Pan"],hmDragDown:[c.Pan,"Hammer.Pan"],hmDragLeft:[c.Pan,"Hammer.Pan"],hmDragRight:[c.Pan,"Hammer.Pan"],hmDragend:[c.Pan,"Hammer.Pan"],hmPanstart:[c.Pan,"Hammer.Pan"],hmPan:[c.Pan,"Hammer.Pan"],hmPanUp:[c.Pan,"Hammer.Pan"],hmPanDown:[c.Pan,"Hammer.Pan"],hmPanLeft:[c.Pan,"Hammer.Pan"],hmPanRight:[c.Pan,"Hammer.Pan"],hmPanend:[c.Pan,"Hammer.Pan"],hmHold:[c.Press,"Hammer.Press"],hmPinch:[c.Pinch,"Hammer.Pinch"],hmPinchstart:[c.Pinch,"Hammer.Pinch"],hmPinchend:[c.Pinch,"Hammer.Pinch"],hmPinchIn:[c.Pinch,"Hammer.Pinch"],hmPinchOut:[c.Pinch,"Hammer.Pinch"],hmPress:[c.Press,"Hammer.Press"],hmPressUp:[c.Press,"Hammer.Press"],hmRelease:[c.Press,"Hammer.Press"],hmRotate:[c.Rotate,"Hammer.Rotate"],hmSwipe:[c.Swipe,"Hammer.Swipe"],hmSwipeUp:[c.Swipe,"Hammer.Swipe"],hmSwipeDown:[c.Swipe,"Hammer.Swipe"],hmSwipeLeft:[c.Swipe,"Hammer.Swipe"],hmSwipeRight:[c.Swipe,"Hammer.Swipe"],hmTap:[c.Tap,"Hammer.Tap"]},f=!1;b.forEach(d,function(a,d){b.module("angular-gestures").directive(d,["$parse","$log","$timeout","hammerDefaultOpts",function(g,h,i,j){return function(i,k,l){var m;l.$observe(d,function(n){var o=g(n),p=g(l[d+"Opts"])(i,{}),q=b.copy(j);if(b.extend(q,p),b.isUndefined(k.hammertime)){var r=b.isDefined(q.recognizers)?q.recognizers:[],s=e[d];if(b.isDefined(s)){var t=!1;if(b.forEach(r,function(a){s[0]===a[0]&&(b.isUndefined(a[1].enable)||a[1].enable===!0)&&(t=!0)}),!t)throw new Error("Directive "+d+" requires gesture recognizer ["+s[1]+"] to be enabled")}k.hammer=new c.Manager(k[0],q),i.$on("$destroy",function(){k.hammer.off(a),k.hammer.destroy()})}m=function(b){f&&h.debug("angular-gestures: ",a,b);var c=function(){var a=o(i,{$event:b});"function"==typeof a&&a.call(i,b)};"$apply"===i.$root.$$phase||"$digest"===i.$root.$$phase?c():i.$apply(c)},k.hammer.on(a,m)})}}])}),b.module("angular-gestures").provider("hammerDefaultOpts",function(){var a={};this.set=function(b){a=b},this.$get=function(){return a}})}); \ No newline at end of file