hammerjs_rails 1.1.3 → 1.1.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07e04e93367436529241e395b86d27136fd739ff
4
- data.tar.gz: f8c7b6a4e8d8a0dec2a0178fd22e6669cdbe69ee
3
+ metadata.gz: eab49899337a74cb6de51233b60671869a5dfcd1
4
+ data.tar.gz: 0534216ef052db41e98fba6cd3c5844e18a4cf6b
5
5
  SHA512:
6
- metadata.gz: 615c08b00653f78fb62551662205b784932efd2b1c5321f818a48619dc66162cd0ba5ce15594c930404d9924ea70bcadc1bb8f0bdc22fd2998e3c85cec9b6e49
7
- data.tar.gz: 644b387e8ef92e1d6bc085be1452d7c1320b6f71b85e78604cd64b5f69a913a17f52ec7db4ea2caff70a84e43dc9b1d4b0ceb748c9652315054601e067799661
6
+ metadata.gz: 8867a8ec7194ded45c6a0138c495d6e9a2aa35ff54ea54a441eacfcc0143e8b5dec53aa7c8b4045cf9236df6c0514304ae718fe7f28a7ae37fa16b2457dd5f5f
7
+ data.tar.gz: 51a8dce4ae8e67a11741a3f0044731b24d5ee8a7dec98c66bb0e915ac5e80d071cc71d5b16c8564f7fbe12078f2d02b192564c4a84fc79647f8427cc143910c7
@@ -1,9 +1,8 @@
1
- /*! Hammer.JS - v1.1.3 - 2014-05-22
2
- * http://eightmedia.github.io/hammer.js
1
+ /*! jQuery plugin for Hammer.JS - v1.1.3 - 2014-05-20
2
+ * http://eightmedia.github.com/hammer.js
3
3
  *
4
4
  * Copyright (c) 2014 Jorik Tangelder <j.tangelder@gmail.com>;
5
5
  * Licensed under the MIT license */
6
-
7
6
  (function(window, undefined) {
8
7
  'use strict';
9
8
 
@@ -617,6 +616,181 @@ var Utils = Hammer.utils = {
617
616
  };
618
617
 
619
618
 
619
+ /**
620
+ * @module hammer
621
+ */
622
+
623
+ /**
624
+ * create new hammer instance
625
+ * all methods should return the instance itself, so it is chainable.
626
+ *
627
+ * @class Instance
628
+ * @constructor
629
+ * @param {HTMLElement} element
630
+ * @param {Object} [options={}] options are merged with `Hammer.defaults`
631
+ * @return {Hammer.Instance}
632
+ */
633
+ Hammer.Instance = function(element, options) {
634
+ var self = this;
635
+
636
+ // setup HammerJS window events and register all gestures
637
+ // this also sets up the default options
638
+ setup();
639
+
640
+ /**
641
+ * @property element
642
+ * @type {HTMLElement}
643
+ */
644
+ this.element = element;
645
+
646
+ /**
647
+ * @property enabled
648
+ * @type {Boolean}
649
+ * @protected
650
+ */
651
+ this.enabled = true;
652
+
653
+ /**
654
+ * options, merged with the defaults
655
+ * options with an _ are converted to camelCase
656
+ * @property options
657
+ * @type {Object}
658
+ */
659
+ Utils.each(options, function(value, name) {
660
+ delete options[name];
661
+ options[Utils.toCamelCase(name)] = value;
662
+ });
663
+
664
+ this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {});
665
+
666
+ // add some css to the element to prevent the browser from doing its native behavoir
667
+ if(this.options.behavior) {
668
+ Utils.toggleBehavior(this.element, this.options.behavior, true);
669
+ }
670
+
671
+ /**
672
+ * event start handler on the element to start the detection
673
+ * @property eventStartHandler
674
+ * @type {Object}
675
+ */
676
+ this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) {
677
+ if(self.enabled && ev.eventType == EVENT_START) {
678
+ Detection.startDetect(self, ev);
679
+ } else if(ev.eventType == EVENT_TOUCH) {
680
+ Detection.detect(ev);
681
+ }
682
+ });
683
+
684
+ /**
685
+ * keep a list of user event handlers which needs to be removed when calling 'dispose'
686
+ * @property eventHandlers
687
+ * @type {Array}
688
+ */
689
+ this.eventHandlers = [];
690
+ };
691
+
692
+ Hammer.Instance.prototype = {
693
+ /**
694
+ * bind events to the instance
695
+ * @method on
696
+ * @chainable
697
+ * @param {String} gestures multiple gestures by splitting with a space
698
+ * @param {Function} handler
699
+ * @param {Object} handler.ev event object
700
+ */
701
+ on: function onEvent(gestures, handler) {
702
+ var self = this;
703
+ Event.on(self.element, gestures, handler, function(type) {
704
+ self.eventHandlers.push({ gesture: type, handler: handler });
705
+ });
706
+ return self;
707
+ },
708
+
709
+ /**
710
+ * unbind events to the instance
711
+ * @method off
712
+ * @chainable
713
+ * @param {String} gestures
714
+ * @param {Function} handler
715
+ */
716
+ off: function offEvent(gestures, handler) {
717
+ var self = this;
718
+
719
+ Event.off(self.element, gestures, handler, function(type) {
720
+ var index = Utils.inArray({ gesture: type, handler: handler });
721
+ if(index !== false) {
722
+ self.eventHandlers.splice(index, 1);
723
+ }
724
+ });
725
+ return self;
726
+ },
727
+
728
+ /**
729
+ * trigger gesture event
730
+ * @method trigger
731
+ * @chainable
732
+ * @param {String} gesture
733
+ * @param {Object} [eventData]
734
+ */
735
+ trigger: function triggerEvent(gesture, eventData) {
736
+ // optional
737
+ if(!eventData) {
738
+ eventData = {};
739
+ }
740
+
741
+ // create DOM event
742
+ var event = Hammer.DOCUMENT.createEvent('Event');
743
+ event.initEvent(gesture, true, true);
744
+ event.gesture = eventData;
745
+
746
+ // trigger on the target if it is in the instance element,
747
+ // this is for event delegation tricks
748
+ var element = this.element;
749
+ if(Utils.hasParent(eventData.target, element)) {
750
+ element = eventData.target;
751
+ }
752
+
753
+ element.dispatchEvent(event);
754
+ return this;
755
+ },
756
+
757
+ /**
758
+ * enable of disable hammer.js detection
759
+ * @method enable
760
+ * @chainable
761
+ * @param {Boolean} state
762
+ */
763
+ enable: function enable(state) {
764
+ this.enabled = state;
765
+ return this;
766
+ },
767
+
768
+ /**
769
+ * dispose this hammer instance
770
+ * @method dispose
771
+ * @return {Null}
772
+ */
773
+ dispose: function dispose() {
774
+ var i, eh;
775
+
776
+ // undo all changes made by stop_browser_behavior
777
+ Utils.toggleBehavior(this.element, this.options.behavior, false);
778
+
779
+ // unbind all custom event handlers
780
+ for(i = -1; (eh = this.eventHandlers[++i]);) {
781
+ Utils.off(this.element, eh.gesture, eh.handler);
782
+ }
783
+
784
+ this.eventHandlers = [];
785
+
786
+ // unbind the start event listener
787
+ Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler);
788
+
789
+ return null;
790
+ }
791
+ };
792
+
793
+
620
794
  /**
621
795
  * @module hammer
622
796
  */
@@ -980,7 +1154,6 @@ var PointerEvent = Hammer.PointerEvent = {
980
1154
  Utils.each(this.pointers, function(pointer) {
981
1155
  touchlist.push(pointer);
982
1156
  });
983
-
984
1157
  return touchlist;
985
1158
  },
986
1159
 
@@ -991,7 +1164,7 @@ var PointerEvent = Hammer.PointerEvent = {
991
1164
  * @param {Object} pointerEvent
992
1165
  */
993
1166
  updatePointer: function updatePointer(eventType, pointerEvent) {
994
- if(eventType == EVENT_END) {
1167
+ if(eventType == EVENT_END || (eventType != EVENT_END && pointerEvent.buttons !== 1)) {
995
1168
  delete this.pointers[pointerEvent.pointerId];
996
1169
  } else {
997
1170
  pointerEvent.identifier = pointerEvent.pointerId;
@@ -1256,181 +1429,6 @@ var Detection = Hammer.detection = {
1256
1429
  };
1257
1430
 
1258
1431
 
1259
- /**
1260
- * @module hammer
1261
- */
1262
-
1263
- /**
1264
- * create new hammer instance
1265
- * all methods should return the instance itself, so it is chainable.
1266
- *
1267
- * @class Instance
1268
- * @constructor
1269
- * @param {HTMLElement} element
1270
- * @param {Object} [options={}] options are merged with `Hammer.defaults`
1271
- * @return {Hammer.Instance}
1272
- */
1273
- Hammer.Instance = function(element, options) {
1274
- var self = this;
1275
-
1276
- // setup HammerJS window events and register all gestures
1277
- // this also sets up the default options
1278
- setup();
1279
-
1280
- /**
1281
- * @property element
1282
- * @type {HTMLElement}
1283
- */
1284
- this.element = element;
1285
-
1286
- /**
1287
- * @property enabled
1288
- * @type {Boolean}
1289
- * @protected
1290
- */
1291
- this.enabled = true;
1292
-
1293
- /**
1294
- * options, merged with the defaults
1295
- * options with an _ are converted to camelCase
1296
- * @property options
1297
- * @type {Object}
1298
- */
1299
- Utils.each(options, function(value, name) {
1300
- delete options[name];
1301
- options[Utils.toCamelCase(name)] = value;
1302
- });
1303
-
1304
- this.options = Utils.extend(Utils.extend({}, Hammer.defaults), options || {});
1305
-
1306
- // add some css to the element to prevent the browser from doing its native behavoir
1307
- if(this.options.behavior) {
1308
- Utils.toggleBehavior(this.element, this.options.behavior, true);
1309
- }
1310
-
1311
- /**
1312
- * event start handler on the element to start the detection
1313
- * @property eventStartHandler
1314
- * @type {Object}
1315
- */
1316
- this.eventStartHandler = Event.onTouch(element, EVENT_START, function(ev) {
1317
- if(self.enabled && ev.eventType == EVENT_START) {
1318
- Detection.startDetect(self, ev);
1319
- } else if(ev.eventType == EVENT_TOUCH) {
1320
- Detection.detect(ev);
1321
- }
1322
- });
1323
-
1324
- /**
1325
- * keep a list of user event handlers which needs to be removed when calling 'dispose'
1326
- * @property eventHandlers
1327
- * @type {Array}
1328
- */
1329
- this.eventHandlers = [];
1330
- };
1331
-
1332
- Hammer.Instance.prototype = {
1333
- /**
1334
- * bind events to the instance
1335
- * @method on
1336
- * @chainable
1337
- * @param {String} gestures multiple gestures by splitting with a space
1338
- * @param {Function} handler
1339
- * @param {Object} handler.ev event object
1340
- */
1341
- on: function onEvent(gestures, handler) {
1342
- var self = this;
1343
- Event.on(self.element, gestures, handler, function(type) {
1344
- self.eventHandlers.push({ gesture: type, handler: handler });
1345
- });
1346
- return self;
1347
- },
1348
-
1349
- /**
1350
- * unbind events to the instance
1351
- * @method off
1352
- * @chainable
1353
- * @param {String} gestures
1354
- * @param {Function} handler
1355
- */
1356
- off: function offEvent(gestures, handler) {
1357
- var self = this;
1358
-
1359
- Event.off(self.element, gestures, handler, function(type) {
1360
- var index = Utils.inArray({ gesture: type, handler: handler });
1361
- if(index !== false) {
1362
- self.eventHandlers.splice(index, 1);
1363
- }
1364
- });
1365
- return self;
1366
- },
1367
-
1368
- /**
1369
- * trigger gesture event
1370
- * @method trigger
1371
- * @chainable
1372
- * @param {String} gesture
1373
- * @param {Object} [eventData]
1374
- */
1375
- trigger: function triggerEvent(gesture, eventData) {
1376
- // optional
1377
- if(!eventData) {
1378
- eventData = {};
1379
- }
1380
-
1381
- // create DOM event
1382
- var event = Hammer.DOCUMENT.createEvent('Event');
1383
- event.initEvent(gesture, true, true);
1384
- event.gesture = eventData;
1385
-
1386
- // trigger on the target if it is in the instance element,
1387
- // this is for event delegation tricks
1388
- var element = this.element;
1389
- if(Utils.hasParent(eventData.target, element)) {
1390
- element = eventData.target;
1391
- }
1392
-
1393
- element.dispatchEvent(event);
1394
- return this;
1395
- },
1396
-
1397
- /**
1398
- * enable of disable hammer.js detection
1399
- * @method enable
1400
- * @chainable
1401
- * @param {Boolean} state
1402
- */
1403
- enable: function enable(state) {
1404
- this.enabled = state;
1405
- return this;
1406
- },
1407
-
1408
- /**
1409
- * dispose this hammer instance
1410
- * @method dispose
1411
- * @return {Null}
1412
- */
1413
- dispose: function dispose() {
1414
- var i, eh;
1415
-
1416
- // undo all changes made by stop_browser_behavior
1417
- Utils.toggleBehavior(this.element, this.options.behavior, false);
1418
-
1419
- // unbind all custom event handlers
1420
- for(i = -1; (eh = this.eventHandlers[++i]);) {
1421
- Utils.off(this.element, eh.gesture, eh.handler);
1422
- }
1423
-
1424
- this.eventHandlers = [];
1425
-
1426
- // unbind the start event listener
1427
- Event.off(this.element, EVENT_TYPES[EVENT_START], this.eventStartHandler);
1428
-
1429
- return null;
1430
- }
1431
- };
1432
-
1433
-
1434
1432
  /**
1435
1433
  * @module gestures
1436
1434
  */
@@ -2143,21 +2141,91 @@ Hammer.gestures.Touch = {
2143
2141
  };
2144
2142
  })('transform');
2145
2143
 
2146
- /**
2147
- * @module hammer
2148
- */
2144
+ window.Hammer = Hammer;
2145
+
2146
+ if(typeof module !== 'undefined' && module.exports) {
2147
+ module.exports = Hammer;
2148
+ }
2149
+
2150
+ function setupPlugin(Hammer, $) {
2151
+ // provide polyfill for Date.now()
2152
+ // browser support: http://kangax.github.io/es5-compat-table/#Date.now
2153
+ if(!Date.now) {
2154
+ Date.now = function now() {
2155
+ return new Date().getTime();
2156
+ };
2157
+ }
2158
+
2159
+ /**
2160
+ * the methods on/off are called by the instance, but with the jquery plugin
2161
+ * we use the jquery event methods instead.
2162
+ * @this {Hammer.Instance}
2163
+ * @return {jQuery}
2164
+ */
2165
+ Hammer.utils.each(['on', 'off'], function(method) {
2166
+ Hammer.utils[method] = function(element, type, handler) {
2167
+ $(element)[method](type, function($ev) {
2168
+ // append the jquery fixed properties/methods
2169
+ var data = $.extend({}, $ev.originalEvent, $ev);
2170
+ if(data.button === undefined) {
2171
+ data.button = $ev.which - 1;
2172
+ }
2173
+ handler.call(this, data);
2174
+ });
2175
+ };
2176
+ });
2177
+
2178
+ /**
2179
+ * trigger events
2180
+ * this is called by the gestures to trigger an event like 'tap'
2181
+ * @this {Hammer.Instance}
2182
+ * @param {String} gesture
2183
+ * @param {Object} eventData
2184
+ * @return {jQuery}
2185
+ */
2186
+ Hammer.Instance.prototype.trigger = function(gesture, eventData) {
2187
+ var el = $(this.element);
2188
+ if(el.has(eventData.target).length) {
2189
+ el = $(eventData.target);
2190
+ }
2149
2191
 
2150
- // AMD export
2192
+ return el.trigger({
2193
+ type: gesture,
2194
+ gesture: eventData
2195
+ });
2196
+ };
2197
+
2198
+ /**
2199
+ * jQuery plugin
2200
+ * create instance of Hammer and watch for gestures,
2201
+ * and when called again you can change the options
2202
+ * @param {Object} [options={}]
2203
+ * @return {jQuery}
2204
+ */
2205
+ $.fn.hammer = function(options) {
2206
+ return this.each(function() {
2207
+ var el = $(this);
2208
+ var inst = el.data('hammer');
2209
+
2210
+ // start new hammer instance
2211
+ if(!inst) {
2212
+ el.data('hammer', new Hammer(this, options || {}));
2213
+ // change the options
2214
+ } else if(inst && options) {
2215
+ Hammer.utils.extend(inst.options, options);
2216
+ }
2217
+ });
2218
+ };
2219
+ }
2220
+
2221
+
2222
+ // AMD
2151
2223
  if(typeof define == 'function' && define.amd) {
2152
- define(function() {
2153
- return Hammer;
2224
+ define(['jquery'], function($) {
2225
+ return setupPlugin(window.Hammer, $);
2154
2226
  });
2155
- // commonjs export
2156
- } else if(typeof module !== 'undefined' && module.exports) {
2157
- module.exports = Hammer;
2158
- // browser export
2159
2227
  } else {
2160
- window.Hammer = Hammer;
2228
+ setupPlugin(window.Hammer, window.jQuery || window.Zepto);
2161
2229
  }
2162
2230
 
2163
2231
  })(window);
@@ -1,3 +1,3 @@
1
1
  module HammerjsRails
2
- VERSION = "1.1.3"
2
+ VERSION = "1.1.3.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hammerjs_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guy Israeli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-29 00:00:00.000000000 Z
11
+ date: 2014-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler