flight-for-rails 1.1.1 → 1.1.2

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: 741af4a16bd9eb02367c0cfa895e910b2bd73f4d
4
- data.tar.gz: 82fd4ccea64d9c8d5852a0114bbdc27999dfa34c
3
+ metadata.gz: 6e9f106b2d07829bdecb6ad4fd43f0162dcb8f8b
4
+ data.tar.gz: 98e6e0b82bec8458e79d452d5b32da47fdb3e2d8
5
5
  SHA512:
6
- metadata.gz: 5ee9aabe9012316d7222f53e8f6d559c5da63440aee3ed252249c549a0f54987f03bca2aa90c13f7bb5f3b2aec3d292017379c2fb54faa0b8496bb6373a1c584
7
- data.tar.gz: 68920a92c5a039d0a8cadf6cfba11ebfcbe9d38a6d098fdff05ed26db6a9b6e21c538076b75a20d118b7f99a8d5a5ba0eab4b6d4b68f4c258d4a9ae8964b34d4
6
+ metadata.gz: a86ba4fad82252740774f69464016388356f4a47e57966cadcb198a519b6f756154cd2b73bb2592e5d568ebee86f7cbf365eaf090c6a7fde0aaa1cc0d6777a13
7
+ data.tar.gz: 7594e7fee7b1d11a9ff05ada1b52da8b3122269d8c1f9c9069739c08a370ecfbb7ae34950cb5729356529980a1e9fe95ba1d7c009e19a4e644e6c6a2e14431a7
data/README.md CHANGED
@@ -16,7 +16,7 @@ This gem vendors Flight files and dependecies for Rails assets pipeline.
16
16
  First add the following lines to your application `Gemfile`:
17
17
 
18
18
  ``` ruby
19
- gem 'flight-for-rails', '~> 1.1.1'
19
+ gem 'flight-for-rails', '~> 1.1.2'
20
20
  ```
21
21
 
22
22
  Then run `bundle install` to update your's gems bundle.
@@ -1,3 +1,3 @@
1
1
  module FlightForRails
2
- VERSION = '1.1.1'
2
+ VERSION = '1.1.2'
3
3
  end
@@ -1,4 +1,4 @@
1
- /*! Flight v1.1.1 | (c) Twitter, Inc. | MIT License */
1
+ /*! Flight v1.1.2 | (c) Twitter, Inc. | MIT License */
2
2
  (function(context) {
3
3
  var factories = {}, loaded = {};
4
4
  var isArray = Array.isArray || function(obj) {
@@ -196,7 +196,7 @@ define('lib/utils', [], function () {
196
196
  return function (e, data) {
197
197
  var target = $(e.target), parent;
198
198
  Object.keys(rules).forEach(function (selector) {
199
- if ((parent = target.closest(selector)).length) {
199
+ if (!e.isPropagationStopped() && (parent = target.closest(selector)).length) {
200
200
  data = data || {};
201
201
  data.el = parent[0];
202
202
  return rules[selector].apply(this, [
@@ -206,6 +206,17 @@ define('lib/utils', [], function () {
206
206
  }
207
207
  }, this);
208
208
  };
209
+ },
210
+ once: function (func) {
211
+ var ran, result;
212
+ return function () {
213
+ if (ran) {
214
+ return result;
215
+ }
216
+ result = func.apply(this, arguments);
217
+ ran = true;
218
+ return result;
219
+ };
209
220
  }
210
221
  };
211
222
  return utils;
@@ -217,9 +228,9 @@ define('lib/utils', [], function () {
217
228
  // ==========================================
218
229
  define('lib/debug', [], function () {
219
230
  'use strict';
220
- //******************************************************************************************
231
+ // ==========================================
221
232
  // Search object model
222
- //******************************************************************************************
233
+ // ==========================================
223
234
  function traverse(util, searchTerm, options) {
224
235
  options = options || {};
225
236
  var obj = options.obj || window;
@@ -294,9 +305,9 @@ define('lib/debug', [], function () {
294
305
  function custom(fn, options) {
295
306
  traverse(fn, null, options);
296
307
  }
297
- //******************************************************************************************
308
+ // ==========================================
298
309
  // Event logging
299
- //******************************************************************************************
310
+ // ==========================================
300
311
  var ALL = 'all';
301
312
  //no filter
302
313
  //no logging by default
@@ -755,13 +766,11 @@ define('lib/base', [
755
766
  }
756
767
  callback = originalCb.bind(this);
757
768
  callback.target = originalCb;
758
- // if the original callback is already branded by jQuery's guid, copy it to the context-bound version
759
- if (originalCb.guid) {
760
- callback.guid = originalCb.guid;
761
- }
769
+ callback.context = this;
762
770
  $element.on(type, callback);
763
- // get jquery's guid from our bound fn, so unbinding will work
764
- originalCb.guid = callback.guid;
771
+ // store every bound version of the callback
772
+ originalCb.bound || (originalCb.bound = []);
773
+ originalCb.bound.push(callback);
765
774
  return callback;
766
775
  };
767
776
  this.off = function () {
@@ -778,6 +787,16 @@ define('lib/base', [
778
787
  $element = this.$node;
779
788
  type = arguments[0];
780
789
  }
790
+ if (callback) {
791
+ //set callback to version bound against this instance
792
+ callback.bound && callback.bound.some(function (fn, i, arr) {
793
+ if (fn.context && this.identity == fn.context.identity) {
794
+ arr.splice(i, 1);
795
+ callback = fn;
796
+ return true;
797
+ }
798
+ }, this);
799
+ }
781
800
  return $element.off(type, callback);
782
801
  };
783
802
  this.resolveDelegateRules = function (ruleInfo) {
@@ -854,35 +873,41 @@ define('lib/logger', ['./utils'], function (utils) {
854
873
  ].join(result) : result;
855
874
  }
856
875
  function log(action, component, eventArgs) {
857
- var name, elem, fn, logFilter, toRegExp, actionLoggable, nameLoggable;
876
+ if (!window.DEBUG || !window.DEBUG.enabled)
877
+ return;
878
+ var name, eventType, elem, fn, logFilter, toRegExp, actionLoggable, nameLoggable;
858
879
  if (typeof eventArgs[eventArgs.length - 1] == 'function') {
859
880
  fn = eventArgs.pop();
860
881
  fn = fn.unbound || fn; // use unbound version if any (better info)
861
882
  }
862
- if (typeof eventArgs[eventArgs.length - 1] == 'object') {
863
- eventArgs.pop(); // trigger data arg - not logged right now
864
- }
865
- if (eventArgs.length == 2) {
866
- elem = eventArgs[0];
867
- name = eventArgs[1];
868
- } else {
883
+ if (eventArgs.length == 1) {
869
884
  elem = component.$node[0];
870
- name = eventArgs[0];
871
- }
872
- if (window.DEBUG && window.DEBUG.enabled) {
873
- logFilter = DEBUG.events.logFilter;
874
- // no regex for you, actions...
875
- actionLoggable = logFilter.actions == 'all' || logFilter.actions.indexOf(action) > -1;
876
- // event name filter allow wildcards or regex...
877
- toRegExp = function (expr) {
878
- return expr.test ? expr : new RegExp('^' + expr.replace(/\*/g, '.*') + '$');
879
- };
880
- nameLoggable = logFilter.eventNames == 'all' || logFilter.eventNames.some(function (e) {
881
- return toRegExp(e).test(name);
882
- });
883
- if (actionLoggable && nameLoggable) {
884
- console.info(actionSymbols[action], action, '[' + name + ']', elemToString(elem), component.constructor.describe.split(' ').slice(0, 3).join(' '));
885
+ eventType = eventArgs[0];
886
+ } else if (eventArgs.length == 2) {
887
+ if (typeof eventArgs[1] == 'object' && !eventArgs[1].type) {
888
+ elem = component.$node[0];
889
+ eventType = eventArgs[0];
890
+ } else {
891
+ elem = eventArgs[0];
892
+ eventType = eventArgs[1];
885
893
  }
894
+ } else {
895
+ elem = eventArgs[0];
896
+ eventType = eventArgs[1];
897
+ }
898
+ name = typeof eventType == 'object' ? eventType.type : eventType;
899
+ logFilter = DEBUG.events.logFilter;
900
+ // no regex for you, actions...
901
+ actionLoggable = logFilter.actions == 'all' || logFilter.actions.indexOf(action) > -1;
902
+ // event name filter allow wildcards or regex...
903
+ toRegExp = function (expr) {
904
+ return expr.test ? expr : new RegExp('^' + expr.replace(/\*/g, '.*') + '$');
905
+ };
906
+ nameLoggable = logFilter.eventNames == 'all' || logFilter.eventNames.some(function (e) {
907
+ return toRegExp(e).test(name);
908
+ });
909
+ if (actionLoggable && nameLoggable) {
910
+ console.info(actionSymbols[action], action, '[' + name + ']', elemToString(elem), component.constructor.describe.split(' ').slice(0, 3).join(' '));
886
911
  }
887
912
  }
888
913
  function withLogging() {
@@ -919,7 +944,11 @@ define('lib/component', [
919
944
  var componentInfo = registry.findComponentInfo(this);
920
945
  componentInfo && Object.keys(componentInfo.instances).forEach(function (k) {
921
946
  var info = componentInfo.instances[k];
922
- info.instance.teardown();
947
+ // It's possible that a previous teardown caused another component to teardown,
948
+ // so we can't assume that the instances object is as it was.
949
+ if (info && info.instance) {
950
+ info.instance.teardown();
951
+ }
923
952
  });
924
953
  }
925
954
  function checkSerializable(type, data) {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flight-for-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Rezvanov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-19 00:00:00.000000000 Z
11
+ date: 2014-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
76
  version: '0'
77
77
  requirements: []
78
78
  rubyforge_project:
79
- rubygems_version: 2.0.3
79
+ rubygems_version: 2.0.6
80
80
  signing_key:
81
81
  specification_version: 4
82
82
  summary: Flight javascript framework for Rails assets pipeline