flight-for-rails 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +4 -8
- data/Rakefile +3 -1
- data/lib/flight-for-rails/version.rb +1 -1
- data/vendor/assets/javascripts/flight/standalone.js +66 -37
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d88eda3b9ee66fd3f576a3ae5d16432d289405b5
|
4
|
+
data.tar.gz: d46961d373630ab7ee3b1b2fdcaf3ee598db915f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c4eb45143451494d6510d3231e136218eebadf8a13f3f1f36432cf56385e237d0d81c7f5da46d34bd5d21b461fadabc335f0815b34d91ccc1ba5e194de8008e
|
7
|
+
data.tar.gz: e5b594a85fc77f9148d98a0028f885f098a925d1480af8ff4a7e4eaf08baf512b30928f2f94387e7a24fa3a0dbe8fcc2124f2fdbf75d36249121d245956c6d2c
|
data/.gitignore
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
pkg/
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@ FlightForRails
|
|
3
3
|
|
4
4
|
FlightForRails is a plugin for Rails assets pipeline, which integrates your applicaiton with Twitter Flight javascript framework. Flight is a lightweight, component-based javascript framework that maps behavior to DOM nodes. Twitter uses it for their web applications. Why do not you try it? :)
|
5
5
|
|
6
|
-
For more information see [official Flight page](http://twitter.github.com/flight).
|
6
|
+
For more information see [official Flight page](http://twitter.github.com/flight) and [changelog](https://github.com/flightjs/flight/blob/master/CHANGELOG.md).
|
7
7
|
|
8
8
|
## Browser Support
|
9
9
|
|
@@ -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.
|
19
|
+
gem 'flight-for-rails', '~> 1.1.3'
|
20
20
|
```
|
21
21
|
|
22
22
|
Then run `bundle install` to update your's gems bundle.
|
@@ -40,7 +40,7 @@ Simple example:
|
|
40
40
|
``` coffeescript
|
41
41
|
# app/assets/javascript/components/my-component.js.coffee
|
42
42
|
$ ->
|
43
|
-
MyComponent = flight.component
|
43
|
+
MyComponent = flight.component ->
|
44
44
|
@after 'initialize', ->
|
45
45
|
@on 'click', @triggerMyEvent
|
46
46
|
|
@@ -53,7 +53,7 @@ $ ->
|
|
53
53
|
``` coffeescript
|
54
54
|
# app/assets/javascript/components/my-component-2.js.coffee
|
55
55
|
$ ->
|
56
|
-
MyComponent2 = flight.component
|
56
|
+
MyComponent2 = flight.component ->
|
57
57
|
@after 'initialize', ->
|
58
58
|
@on 'myEvent', @handleMyEvent
|
59
59
|
|
@@ -71,10 +71,6 @@ And don't forget add the following line to your manifest file (usualy `app/asset
|
|
71
71
|
|
72
72
|
Pretty awesome! Enjoy!
|
73
73
|
|
74
|
-
## Authors
|
75
|
-
|
76
|
-
+ [Sergey Rezvanov](http://github.com/rezwyi)
|
77
|
-
|
78
74
|
## Copyright
|
79
75
|
|
80
76
|
See LICENSE file.
|
data/Rakefile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# This file is generated automatically
|
2
|
-
module FlightForRails; VERSION = '1.1.
|
2
|
+
module FlightForRails; VERSION = '1.1.4'; end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! Flight v1.1.
|
1
|
+
/*! Flight v1.1.4 | (c) Twitter, Inc. | MIT License */
|
2
2
|
(function(context) {
|
3
3
|
var factories = {}, loaded = {};
|
4
4
|
var isArray = Array.isArray || function(obj) {
|
@@ -213,8 +213,8 @@ define('lib/utils', [], function () {
|
|
213
213
|
if (ran) {
|
214
214
|
return result;
|
215
215
|
}
|
216
|
-
result = func.apply(this, arguments);
|
217
216
|
ran = true;
|
217
|
+
result = func.apply(this, arguments);
|
218
218
|
return result;
|
219
219
|
};
|
220
220
|
}
|
@@ -310,10 +310,11 @@ define('lib/debug', [], function () {
|
|
310
310
|
// ==========================================
|
311
311
|
var ALL = 'all';
|
312
312
|
//no filter
|
313
|
-
//
|
314
|
-
var
|
315
|
-
|
316
|
-
|
313
|
+
//log nothing by default
|
314
|
+
var logFilter = {
|
315
|
+
eventNames: [],
|
316
|
+
actions: []
|
317
|
+
};
|
317
318
|
function filterEventLogsByAction() {
|
318
319
|
var actions = [].slice.call(arguments);
|
319
320
|
logFilter.eventNames.length || (logFilter.eventNames = ALL);
|
@@ -337,24 +338,32 @@ define('lib/debug', [], function () {
|
|
337
338
|
saveLogFilter();
|
338
339
|
}
|
339
340
|
function saveLogFilter() {
|
340
|
-
|
341
|
-
|
342
|
-
|
341
|
+
try {
|
342
|
+
if (window.localStorage) {
|
343
|
+
localStorage.setItem('logFilter_eventNames', logFilter.eventNames);
|
344
|
+
localStorage.setItem('logFilter_actions', logFilter.actions);
|
345
|
+
}
|
346
|
+
} catch (ignored) {
|
343
347
|
}
|
348
|
+
;
|
344
349
|
}
|
345
350
|
function retrieveLogFilter() {
|
346
|
-
var
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
351
|
+
var eventNames, actions;
|
352
|
+
try {
|
353
|
+
eventNames = window.localStorage && localStorage.getItem('logFilter_eventNames');
|
354
|
+
actions = window.localStorage && localStorage.getItem('logFilter_actions');
|
355
|
+
} catch (ignored) {
|
356
|
+
return;
|
357
|
+
}
|
358
|
+
eventNames && (logFilter.eventNames = eventNames);
|
359
|
+
actions && (logFilter.actions = actions);
|
360
|
+
// reconstitute arrays in place
|
361
|
+
Object.keys(logFilter).forEach(function (k) {
|
362
|
+
var thisProp = logFilter[k];
|
353
363
|
if (typeof thisProp == 'string' && thisProp !== ALL) {
|
354
|
-
|
364
|
+
logFilter[k] = thisProp ? thisProp.split(',') : [];
|
355
365
|
}
|
356
366
|
});
|
357
|
-
return result;
|
358
367
|
}
|
359
368
|
return {
|
360
369
|
enable: function (enable) {
|
@@ -363,6 +372,7 @@ define('lib/debug', [], function () {
|
|
363
372
|
console.info('Booting in DEBUG mode');
|
364
373
|
console.info('You can configure event logging with DEBUG.events.logAll()/logNone()/logByName()/logByAction()');
|
365
374
|
}
|
375
|
+
retrieveLogFilter();
|
366
376
|
window.DEBUG = this;
|
367
377
|
},
|
368
378
|
find: {
|
@@ -431,13 +441,13 @@ define('lib/compose', [
|
|
431
441
|
}
|
432
442
|
function mixin(base, mixins) {
|
433
443
|
base.mixedIn = base.hasOwnProperty('mixedIn') ? base.mixedIn : [];
|
434
|
-
mixins.
|
435
|
-
if (base.mixedIn.indexOf(
|
444
|
+
for (var i = 0; i < mixins.length; i++) {
|
445
|
+
if (base.mixedIn.indexOf(mixins[i]) == -1) {
|
436
446
|
setPropertyWritability(base, false);
|
437
|
-
|
438
|
-
base.mixedIn.push(
|
447
|
+
mixins[i].call(base);
|
448
|
+
base.mixedIn.push(mixins[i]);
|
439
449
|
}
|
440
|
-
}
|
450
|
+
}
|
441
451
|
setPropertyWritability(base, true);
|
442
452
|
}
|
443
453
|
return {
|
@@ -932,6 +942,7 @@ define('lib/logger', ['./utils'], function (utils) {
|
|
932
942
|
payload && info.push(payload);
|
933
943
|
info.push(elemToString(elem));
|
934
944
|
info.push(component.constructor.describe.split(' ').slice(0, 3).join(' '));
|
945
|
+
console.groupCollapsed && action == 'trigger' && console.groupCollapsed(action, name);
|
935
946
|
console.info.apply(console, info);
|
936
947
|
}
|
937
948
|
}
|
@@ -939,6 +950,11 @@ define('lib/logger', ['./utils'], function (utils) {
|
|
939
950
|
this.before('trigger', function () {
|
940
951
|
log('trigger', this, utils.toArray(arguments));
|
941
952
|
});
|
953
|
+
if (console.groupCollapsed) {
|
954
|
+
this.after('trigger', function () {
|
955
|
+
console.groupEnd();
|
956
|
+
});
|
957
|
+
}
|
942
958
|
this.before('on', function () {
|
943
959
|
log('on', this, utils.toArray(arguments));
|
944
960
|
});
|
@@ -1009,35 +1025,48 @@ define('lib/component', [
|
|
1009
1025
|
new this().initialize(node, options);
|
1010
1026
|
}.bind(this));
|
1011
1027
|
}
|
1028
|
+
function prettyPrintMixins() {
|
1029
|
+
//could be called from constructor or constructor.prototype
|
1030
|
+
var mixedIn = this.mixedIn || this.prototype.mixedIn || [];
|
1031
|
+
return mixedIn.map(function (mixin) {
|
1032
|
+
if (mixin.name == null) {
|
1033
|
+
// function name property not supported by this browser, use regex
|
1034
|
+
var m = mixin.toString().match(functionNameRegEx);
|
1035
|
+
return m && m[1] ? m[1] : '';
|
1036
|
+
} else {
|
1037
|
+
return mixin.name != 'withBase' ? mixin.name : '';
|
1038
|
+
}
|
1039
|
+
}).filter(Boolean).join(', ');
|
1040
|
+
}
|
1041
|
+
;
|
1012
1042
|
// define the constructor for a custom component type
|
1013
1043
|
// takes an unlimited number of mixin functions as arguments
|
1014
1044
|
// typical api call with 3 mixins: define(timeline, withTweetCapability, withScrollCapability);
|
1015
1045
|
function define() {
|
1016
1046
|
// unpacking arguments by hand benchmarked faster
|
1017
1047
|
var l = arguments.length;
|
1018
|
-
|
1019
|
-
var mixins = new Array(l + 3);
|
1048
|
+
var mixins = new Array(l);
|
1020
1049
|
for (var i = 0; i < l; i++)
|
1021
1050
|
mixins[i] = arguments[i];
|
1022
1051
|
var Component = function () {
|
1023
1052
|
};
|
1024
|
-
Component.toString = Component.prototype.toString =
|
1025
|
-
var prettyPrintMixins = mixins.map(function (mixin) {
|
1026
|
-
if (mixin.name == null) {
|
1027
|
-
// function name property not supported by this browser, use regex
|
1028
|
-
var m = mixin.toString().match(functionNameRegEx);
|
1029
|
-
return m && m[1] ? m[1] : '';
|
1030
|
-
} else {
|
1031
|
-
return mixin.name != 'withBase' ? mixin.name : '';
|
1032
|
-
}
|
1033
|
-
}).filter(Boolean).join(', ');
|
1034
|
-
return prettyPrintMixins;
|
1035
|
-
};
|
1053
|
+
Component.toString = Component.prototype.toString = prettyPrintMixins;
|
1036
1054
|
if (debug.enabled) {
|
1037
1055
|
Component.describe = Component.prototype.describe = Component.toString();
|
1038
1056
|
}
|
1039
1057
|
// 'options' is optional hash to be merged with 'defaults' in the component definition
|
1040
1058
|
Component.attachTo = attachTo;
|
1059
|
+
// enables extension of existing "base" Components
|
1060
|
+
Component.mixin = function () {
|
1061
|
+
var newComponent = define();
|
1062
|
+
//TODO: fix pretty print
|
1063
|
+
var newPrototype = Object.create(Component.prototype);
|
1064
|
+
newPrototype.mixedIn = [].concat(Component.prototype.mixedIn);
|
1065
|
+
compose.mixin(newPrototype, arguments);
|
1066
|
+
newComponent.prototype = newPrototype;
|
1067
|
+
newComponent.prototype.constructor = newComponent;
|
1068
|
+
return newComponent;
|
1069
|
+
};
|
1041
1070
|
Component.teardownAll = teardownAll;
|
1042
1071
|
// prepend common mixins to supplied list, then mixin all flavors
|
1043
1072
|
if (debug.enabled) {
|
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.
|
4
|
+
version: 1.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Rezvanov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
77
|
version: '0'
|
78
78
|
requirements: []
|
79
79
|
rubyforge_project:
|
80
|
-
rubygems_version: 2.
|
80
|
+
rubygems_version: 2.2.2
|
81
81
|
signing_key:
|
82
82
|
specification_version: 4
|
83
83
|
summary: Flight javascript framework for Rails assets pipeline
|