hammerjs_rails 1.1.3 → 1.1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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