flight-for-rails 1.1.1 → 1.1.2

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: 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