summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE/client/bower_components/angular-gestures/gestures.js
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-portal-FE/client/bower_components/angular-gestures/gestures.js')
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-gestures/gestures.js158
1 files changed, 158 insertions, 0 deletions
diff --git a/ecomp-portal-FE/client/bower_components/angular-gestures/gestures.js b/ecomp-portal-FE/client/bower_components/angular-gestures/gestures.js
new file mode 100644
index 00000000..68d78eb9
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-gestures/gestures.js
@@ -0,0 +1,158 @@
+'use strict';
+
+angular.module('angular-gestures', []);
+
+/**
+ * Inspired by AngularJS' implementation of "click dblclick mousedown..."
+ *
+ * This ties in the Hammer 2 events to attributes like:
+ *
+ * hm-tap="add_something()" hm-swipe="remove_something()"
+ *
+ * and also has support for Hammer options with:
+ *
+ * hm-tap-opts="{hold: false}"
+ *
+ * or any other of the "hm-event" listed underneath.
+ */
+var HGESTURES = {
+ hmDoubleTap: 'doubletap',
+ hmDragstart: 'panstart', // will bedeprecated soon, us Pan*
+ hmDrag: 'pan', // will bedeprecated soon, us Pan*
+ hmDragUp: 'panup', // will bedeprecated soon, us Pan*
+ hmDragDown: 'pandown', // will bedeprecated soon, us Pan*
+ hmDragLeft: 'panleft', // will bedeprecated soon, us Pan*
+ hmDragRight: 'panright', // will bedeprecated soon, us Pan*
+ hmDragend: 'panend', // will bedeprecated soon, us Pan*
+ 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'
+ };
+
+var 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']
+ };
+
+var VERBOSE = false;
+
+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);
+
+ angular.extend(defaultOpts, opts);
+
+ 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');
+ }
+ }
+
+ element.hammer = new Hammer.Manager(element[0], defaultOpts);
+ scope.$on('$destroy', function() {
+ element.hammer.off(eventName);
+ element.hammer.destroy();
+ });
+ }
+
+ 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);
+ });
+ };
+ }]);
+ });
+
+angular.module('angular-gestures').provider('hammerDefaultOpts', function HammerDefaultOptsProvider() {
+ var opts = {};
+
+ this.set = function(value) {
+ opts = value;
+ };
+
+ this.$get = function() {
+ return opts;
+ };
+ });