agt 0.0.4 → 0.0.5
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 +4 -4
- data/CHANGELOG.md +10 -2
- data/app/assets/javascripts/agt/dom.coffee +7 -2
- data/app/assets/javascripts/agt/function.coffee +136 -114
- data/app/assets/javascripts/agt/{models/mixins/model.coffee → mixins/collectionable.coffee} +35 -17
- data/app/assets/javascripts/agt/object.coffee +8 -0
- data/app/assets/javascripts/agt/widgets/widgets.coffee +5 -1
- data/lib/agt/version.rb +1 -1
- 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: 6d8dccd0f25aabdb783a8f30d525ba1fe9541266
|
4
|
+
data.tar.gz: 18e725c31cb93f2844ae52f68cef53286c8830ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b25e48db126cd1c7de237e001ffeb8579b9cf1e40f5a53e2ef07884a9bf7ed700424535b8c14c11fc0d16d5acb52c814277708b6029a8f63d79f4002c0c01141
|
7
|
+
data.tar.gz: f592ca2a69860e754c22acd9e065579c63534fbbcd9e7c22b87e687a4a8e3a4fd7d0eea57168297e28e43aa72ebf019538ad509e4be6db5e0e5448880a6d8c03
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
|
-
|
2
|
-
#
|
1
|
+
a name="v0.0.5"></a>
|
2
|
+
# v0.0.5 (2015-01-23)
|
3
|
+
|
4
|
+
## :bug: Bug Fixes
|
5
|
+
|
6
|
+
- Fix event related issues on IE8 ([10b771df](https://github.com/abe33/agt.git/commit/10b771dfb9a5809b2df9309d7f9b89762815ee65))
|
7
|
+
- Add a fallback for mixins used in IE8 ([faec4cdb](https://github.com/abe33/agt.git/commit/faec4cdb25e393c2e65e289ef4046cd117f46e96))
|
8
|
+
|
9
|
+
<a name="v0.0.4"></a>
|
10
|
+
# v0.0.4 (2014-09-09)
|
3
11
|
|
4
12
|
## :sparkles: Features
|
5
13
|
|
@@ -5,8 +5,13 @@ agt.domEvent = (type, data={}, options={bubbles, cancelable}={}) ->
|
|
5
5
|
cancelable: cancelable ? true
|
6
6
|
}
|
7
7
|
catch e
|
8
|
-
|
9
|
-
|
8
|
+
if document.createEvent?
|
9
|
+
event = document.createEvent 'Event'
|
10
|
+
event.initEvent type, bubbles ? true, cancelable ? true
|
11
|
+
else if document.createEventObject?
|
12
|
+
event = document.createEventObject()
|
13
|
+
event.type = type
|
14
|
+
event[k] = v for k,v of options
|
10
15
|
|
11
16
|
event.data = data
|
12
17
|
event
|
@@ -1,3 +1,6 @@
|
|
1
|
+
|
2
|
+
warn = (msg) -> console?.warn?(msg)
|
3
|
+
|
1
4
|
### Public ###
|
2
5
|
|
3
6
|
# Creates a new non-enumerable method on the current class prototype.
|
@@ -10,11 +13,15 @@
|
|
10
13
|
# name - The {String} for the method name.
|
11
14
|
# block - The {Function} body.
|
12
15
|
Function::def = (name, block) ->
|
13
|
-
Object.
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
if Object.NO_DEFINE_PROPERTY
|
17
|
+
warn "Using Function::def in a context where Object.defineProperty is not supported, falling back to prototype decoration."
|
18
|
+
@prototype[name] = block
|
19
|
+
else
|
20
|
+
Object.defineProperty @prototype, name, {
|
21
|
+
value: block
|
22
|
+
configurable: true
|
23
|
+
enumerable: false
|
24
|
+
}
|
18
25
|
this
|
19
26
|
|
20
27
|
# Creates a virtual property on the current class's prototype.
|
@@ -42,13 +49,15 @@ Function::accessor = (name, options) ->
|
|
42
49
|
|
43
50
|
options.get ||= oldDescriptor.get if oldDescriptor?
|
44
51
|
options.set ||= oldDescriptor.set if oldDescriptor?
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
+
if Object.NO_DEFINE_PROPERTY
|
53
|
+
throw new Error "Using Function::accessor in a context where Object.defineProperty is not supported."
|
54
|
+
else
|
55
|
+
Object.defineProperty @prototype, name, {
|
56
|
+
get: options.get
|
57
|
+
set: options.set
|
58
|
+
configurable: true
|
59
|
+
enumerable: true
|
60
|
+
}
|
52
61
|
this
|
53
62
|
|
54
63
|
# Creates a getter on the given class prototype.
|
@@ -150,72 +159,80 @@ Function::include = (mixins...) ->
|
|
150
159
|
# We loop through all the enumerable properties of the mixin's
|
151
160
|
# prototype that is not marked for exclusion.
|
152
161
|
keys = Object.keys mixin.prototype
|
153
|
-
for k in keys
|
154
|
-
if k not in excl
|
155
|
-
|
156
|
-
# We prefer working with property descriptors rather than with
|
157
|
-
# the plain values.
|
158
|
-
oldDescriptor = Object.getPropertyDescriptor @prototype, k
|
159
|
-
newDescriptor = Object.getPropertyDescriptor mixin.prototype, k
|
160
|
-
|
161
|
-
# If the two descriptors are available we'll have to go deeper.
|
162
|
-
if oldDescriptor? and newDescriptor?
|
163
|
-
oldHasAccessor = oldDescriptor.get? or oldDescriptor.set?
|
164
|
-
newHasAccessor = newDescriptor.get? or newDescriptor.set?
|
165
|
-
bothHaveGet = oldDescriptor.get? and newDescriptor.get?
|
166
|
-
bothHaveSet = oldDescriptor.set? and newDescriptor.set?
|
167
|
-
bothHaveValue = oldDescriptor.value? and newDescriptor.value?
|
168
|
-
|
169
|
-
# When both properties are accessors we'll be able to follow
|
170
|
-
# the super accross them.
|
171
|
-
#
|
172
|
-
# Super methods are registered if both are there for getters
|
173
|
-
# and setters.
|
174
|
-
if oldHasAccessor and newHasAccessor
|
175
|
-
registerSuper k, newDescriptor.get, @, oldDescriptor.get, mixin if bothHaveGet
|
176
|
-
registerSuper k, newDescriptor.set, @, oldDescriptor.set, mixin if bothHaveSet
|
177
|
-
|
178
|
-
# If there was a getter or a setter and the new accessor
|
179
|
-
# doesn't define one them, the previous value is used.
|
180
|
-
newDescriptor.get ||= oldDescriptor.get
|
181
|
-
newDescriptor.set ||= oldDescriptor.set
|
182
|
-
|
183
|
-
# When both have a value, the super is also available.
|
184
|
-
else if bothHaveValue
|
185
|
-
registerSuper k, newDescriptor.value, @, oldDescriptor.value, mixin
|
186
162
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
# and overriding the property to have access to its super property
|
193
|
-
# through the `super` keyword or with `this.super` method.
|
194
|
-
Object.defineProperty @__super__, k, newDescriptor
|
195
|
-
|
196
|
-
# We only have a descriptor for the new property, the previous
|
197
|
-
# one is just added to the class `__super__` property.
|
198
|
-
else if newDescriptor?
|
199
|
-
@__super__[k] = mixin[k]
|
200
|
-
|
201
|
-
# We only have a descriptor for the previous property, we'll
|
202
|
-
# create it on the class `__super__` property.
|
203
|
-
else if oldDescriptor?
|
204
|
-
Object.defineProperty @__super__, k, newDescriptor
|
205
|
-
|
206
|
-
# No descriptors at all. The super property is attached directly
|
207
|
-
# to the value.
|
208
|
-
else if @::[k]?
|
209
|
-
registerSuper k, mixin[k], @, @::[k], mixin
|
210
|
-
@__super__[k] = mixin[k]
|
211
|
-
|
212
|
-
# With a descriptor the new property is created using
|
213
|
-
# `Object.defineProperty` or by affecting the value
|
214
|
-
# to the prototype.
|
215
|
-
if newDescriptor?
|
216
|
-
Object.defineProperty @prototype, k, newDescriptor
|
217
|
-
else
|
163
|
+
if Object.NO_DEFINE_PROPERTY
|
164
|
+
warn "Using Function::include in a context where Object.defineProperty is not supported. Falling back to direct prototype decoration."
|
165
|
+
for k in keys
|
166
|
+
if k not in excl
|
167
|
+
@__super__[k] = mixin::[k]
|
218
168
|
@::[k] = mixin::[k]
|
169
|
+
else
|
170
|
+
for k in keys
|
171
|
+
if k not in excl
|
172
|
+
|
173
|
+
# We prefer working with property descriptors rather than with
|
174
|
+
# the plain values.
|
175
|
+
oldDescriptor = Object.getPropertyDescriptor @prototype, k
|
176
|
+
newDescriptor = Object.getPropertyDescriptor mixin.prototype, k
|
177
|
+
|
178
|
+
# If the two descriptors are available we'll have to go deeper.
|
179
|
+
if oldDescriptor? and newDescriptor?
|
180
|
+
oldHasAccessor = oldDescriptor.get? or oldDescriptor.set?
|
181
|
+
newHasAccessor = newDescriptor.get? or newDescriptor.set?
|
182
|
+
bothHaveGet = oldDescriptor.get? and newDescriptor.get?
|
183
|
+
bothHaveSet = oldDescriptor.set? and newDescriptor.set?
|
184
|
+
bothHaveValue = oldDescriptor.value? and newDescriptor.value?
|
185
|
+
|
186
|
+
# When both properties are accessors we'll be able to follow
|
187
|
+
# the super accross them.
|
188
|
+
#
|
189
|
+
# Super methods are registered if both are there for getters
|
190
|
+
# and setters.
|
191
|
+
if oldHasAccessor and newHasAccessor
|
192
|
+
registerSuper k, newDescriptor.get, @, oldDescriptor.get, mixin if bothHaveGet
|
193
|
+
registerSuper k, newDescriptor.set, @, oldDescriptor.set, mixin if bothHaveSet
|
194
|
+
|
195
|
+
# If there was a getter or a setter and the new accessor
|
196
|
+
# doesn't define one them, the previous value is used.
|
197
|
+
newDescriptor.get ||= oldDescriptor.get
|
198
|
+
newDescriptor.set ||= oldDescriptor.set
|
199
|
+
|
200
|
+
# When both have a value, the super is also available.
|
201
|
+
else if bothHaveValue
|
202
|
+
registerSuper k, newDescriptor.value, @, oldDescriptor.value, mixin
|
203
|
+
|
204
|
+
else
|
205
|
+
throw new Error "Can't mix accessors and plain values inheritance"
|
206
|
+
|
207
|
+
# We also have to create the property on the class `__super__`
|
208
|
+
# property. It'll allow the method defined on the class itself
|
209
|
+
# and overriding the property to have access to its super property
|
210
|
+
# through the `super` keyword or with `this.super` method.
|
211
|
+
Object.defineProperty @__super__, k, newDescriptor
|
212
|
+
|
213
|
+
# We only have a descriptor for the new property, the previous
|
214
|
+
# one is just added to the class `__super__` property.
|
215
|
+
else if newDescriptor?
|
216
|
+
Object.defineProperty @__super__, k, newDescriptor
|
217
|
+
|
218
|
+
# We only have a descriptor for the previous property, we'll
|
219
|
+
# create it on the class `__super__` property.
|
220
|
+
else if oldDescriptor?
|
221
|
+
@__super__[k] = mixins::[k]
|
222
|
+
|
223
|
+
# No descriptors at all. The super property is attached directly
|
224
|
+
# to the value.
|
225
|
+
else if @::[k]?
|
226
|
+
registerSuper k, mixin::[k], @, @::[k], mixin
|
227
|
+
@__super__[k] = mixin::[k]
|
228
|
+
|
229
|
+
# With a descriptor the new property is created using
|
230
|
+
# `Object.defineProperty` or by affecting the value
|
231
|
+
# to the prototype.
|
232
|
+
if newDescriptor?
|
233
|
+
Object.defineProperty @prototype, k, newDescriptor
|
234
|
+
else
|
235
|
+
@::[k] = mixin::[k]
|
219
236
|
|
220
237
|
# The `included` hook is triggered on the mixin.
|
221
238
|
mixin.included? this
|
@@ -250,46 +267,51 @@ Function::extend = (mixins...) ->
|
|
250
267
|
excl = excl.concat mixin.excluded if mixin.excluded?
|
251
268
|
|
252
269
|
keys = Object.keys mixin
|
253
|
-
for k in keys
|
254
|
-
if k not in excl
|
255
|
-
oldDescriptor = Object.getPropertyDescriptor this, k
|
256
|
-
newDescriptor = Object.getPropertyDescriptor mixin, k
|
257
|
-
|
258
|
-
if oldDescriptor? and newDescriptor?
|
259
|
-
oldHasAccessor = oldDescriptor.get? or oldDescriptor.set?
|
260
|
-
newHasAccessor = newDescriptor.get? or newDescriptor.set?
|
261
|
-
bothHaveGet = oldDescriptor.get? and newDescriptor.get?
|
262
|
-
bothHaveSet = oldDescriptor.set? and newDescriptor.set?
|
263
|
-
bothHaveValue = oldDescriptor.value? and newDescriptor.value?
|
264
|
-
|
265
|
-
# When both properties are accessors we'll be able to follow
|
266
|
-
# the super accross them
|
267
|
-
#
|
268
|
-
# Super methods are registered if both are there for getters
|
269
|
-
# and setters.
|
270
|
-
if oldHasAccessor and newHasAccessor
|
271
|
-
registerSuper k, newDescriptor.get, @, oldDescriptor.get, mixin if bothHaveGet
|
272
|
-
registerSuper k, newDescriptor.set, @, oldDescriptor.set, mixin if bothHaveSet
|
273
|
-
|
274
|
-
# If there was a getter or a setter and the new accessor
|
275
|
-
# doesn't define one them, the previous value is used.
|
276
|
-
newDescriptor.get ||= oldDescriptor.get
|
277
|
-
newDescriptor.set ||= oldDescriptor.set
|
278
|
-
|
279
|
-
# When both have a value, the super is also available.
|
280
|
-
else if bothHaveValue
|
281
|
-
registerSuper k, newDescriptor.value, @, oldDescriptor.value, mixin
|
282
270
|
|
271
|
+
if Object.NO_DEFINE_PROPERTY
|
272
|
+
warn "Using Function::include in a context where Object.defineProperty is not supported. Falling back to direct prototype decoration."
|
273
|
+
@[k] = mixin[k] for k in keys when k not in excl
|
274
|
+
else
|
275
|
+
for k in keys
|
276
|
+
if k not in excl
|
277
|
+
oldDescriptor = Object.getPropertyDescriptor this, k
|
278
|
+
newDescriptor = Object.getPropertyDescriptor mixin, k
|
279
|
+
|
280
|
+
if oldDescriptor? and newDescriptor?
|
281
|
+
oldHasAccessor = oldDescriptor.get? or oldDescriptor.set?
|
282
|
+
newHasAccessor = newDescriptor.get? or newDescriptor.set?
|
283
|
+
bothHaveGet = oldDescriptor.get? and newDescriptor.get?
|
284
|
+
bothHaveSet = oldDescriptor.set? and newDescriptor.set?
|
285
|
+
bothHaveValue = oldDescriptor.value? and newDescriptor.value?
|
286
|
+
|
287
|
+
# When both properties are accessors we'll be able to follow
|
288
|
+
# the super accross them
|
289
|
+
#
|
290
|
+
# Super methods are registered if both are there for getters
|
291
|
+
# and setters.
|
292
|
+
if oldHasAccessor and newHasAccessor
|
293
|
+
registerSuper k, newDescriptor.get, @, oldDescriptor.get, mixin if bothHaveGet
|
294
|
+
registerSuper k, newDescriptor.set, @, oldDescriptor.set, mixin if bothHaveSet
|
295
|
+
|
296
|
+
# If there was a getter or a setter and the new accessor
|
297
|
+
# doesn't define one them, the previous value is used.
|
298
|
+
newDescriptor.get ||= oldDescriptor.get
|
299
|
+
newDescriptor.set ||= oldDescriptor.set
|
300
|
+
|
301
|
+
# When both have a value, the super is also available.
|
302
|
+
else if bothHaveValue
|
303
|
+
registerSuper k, newDescriptor.value, @, oldDescriptor.value, mixin
|
304
|
+
|
305
|
+
else
|
306
|
+
throw new Error "Can't mix accessors and plain values inheritance"
|
307
|
+
|
308
|
+
# With a descriptor the new property is created using
|
309
|
+
# `Object.defineProperty` or by affecting the value
|
310
|
+
# to the prototype.
|
311
|
+
if newDescriptor?
|
312
|
+
Object.defineProperty this, k, newDescriptor
|
283
313
|
else
|
284
|
-
|
285
|
-
|
286
|
-
# With a descriptor the new property is created using
|
287
|
-
# `Object.defineProperty` or by affecting the value
|
288
|
-
# to the prototype.
|
289
|
-
if newDescriptor?
|
290
|
-
Object.defineProperty this, k, newDescriptor
|
291
|
-
else
|
292
|
-
@[k] = mixin[k]
|
314
|
+
@[k] = mixin[k]
|
293
315
|
|
294
316
|
mixin.extended? this
|
295
317
|
|
@@ -1,11 +1,11 @@
|
|
1
|
-
namespace('agt.
|
1
|
+
namespace('agt.mixins')
|
2
2
|
|
3
|
-
# Creates a collection class for the given model. This class
|
3
|
+
# Internal: Creates a collection class for the given model. This class
|
4
4
|
# will be decorated with the scopes defined on the model class
|
5
5
|
# so it have to be specific to the model class.
|
6
6
|
buildCollectionClass = (model) ->
|
7
7
|
|
8
|
-
# The Collection class behaves mostly like an array except that
|
8
|
+
# Public: The Collection class behaves mostly like an array except that
|
9
9
|
# every methods that should return an array return a collection
|
10
10
|
# instead.
|
11
11
|
class Collection
|
@@ -28,9 +28,7 @@ buildCollectionClass = (model) ->
|
|
28
28
|
# With this we can call `collection[index]` and access the content
|
29
29
|
# of the collection array.
|
30
30
|
index = parseInt(name)
|
31
|
-
|
32
|
-
|
33
|
-
target.array[index]
|
31
|
+
target.get(index)
|
34
32
|
else
|
35
33
|
target[name]
|
36
34
|
}
|
@@ -53,17 +51,36 @@ buildCollectionClass = (model) ->
|
|
53
51
|
|
54
52
|
constructor: (@array=[]) ->
|
55
53
|
|
56
|
-
|
54
|
+
get: (index) ->
|
55
|
+
index = @length + index if index < 0
|
56
|
+
@array[index]
|
57
|
+
|
58
|
+
first: -> @get(0)
|
57
59
|
|
58
|
-
last: -> @
|
60
|
+
last: -> @get(-1)
|
61
|
+
|
62
|
+
where: (conditions={}) ->
|
63
|
+
@filter (model) => @matchConditions(model, conditions)
|
59
64
|
|
60
65
|
map: (block) ->
|
61
|
-
|
62
|
-
@
|
66
|
+
if typeof block is 'string'
|
67
|
+
@distinct(block)
|
63
68
|
else
|
64
69
|
@array.map(block)
|
65
70
|
|
66
|
-
|
71
|
+
sum: (field) -> @reduce ((a,b) -> a + b[field]), 0
|
72
|
+
|
73
|
+
group: (key) ->
|
74
|
+
results = {}
|
75
|
+
|
76
|
+
for record in @array
|
77
|
+
slot = record[key]
|
78
|
+
slot = slot.id if typeof slot is 'object' and slot.id?
|
79
|
+
results[slot] ?= @constructor.create()
|
80
|
+
results[slot].push record
|
81
|
+
|
82
|
+
results
|
83
|
+
|
67
84
|
|
68
85
|
distinct: (field) ->
|
69
86
|
values = []
|
@@ -73,9 +90,6 @@ buildCollectionClass = (model) ->
|
|
73
90
|
|
74
91
|
values
|
75
92
|
|
76
|
-
where: (conditions={}) ->
|
77
|
-
@filter (model) => @matchConditions(model, conditions)
|
78
|
-
|
79
93
|
matchConditions: (model, conditions) ->
|
80
94
|
res = true
|
81
95
|
for k,v of conditions
|
@@ -85,13 +99,14 @@ buildCollectionClass = (model) ->
|
|
85
99
|
res &&= model[k] is v
|
86
100
|
res
|
87
101
|
|
88
|
-
|
102
|
+
# Public:
|
103
|
+
class agt.mixins.Collectionable
|
89
104
|
@extend agt.mixins.Delegation
|
90
105
|
|
91
106
|
@delegatesCollectionMethods: (methods...) ->
|
92
107
|
methods.forEach (method) => @[method] = -> @instances[method](arguments...)
|
93
108
|
|
94
|
-
@delegatesCollectionMethods 'first', 'last', 'where', 'distinct'
|
109
|
+
@delegatesCollectionMethods 'first', 'last', 'where', 'distinct', 'sum', 'group'
|
95
110
|
|
96
111
|
### Public ###
|
97
112
|
|
@@ -101,7 +116,7 @@ class agt.models.Model
|
|
101
116
|
|
102
117
|
@Collection = buildCollectionClass(this)
|
103
118
|
|
104
|
-
@instances = @Collection.create(
|
119
|
+
@instances = @Collection.create()
|
105
120
|
@nextId = 1
|
106
121
|
|
107
122
|
@initialized = true
|
@@ -120,6 +135,9 @@ class agt.models.Model
|
|
120
135
|
@unregister: (instance) ->
|
121
136
|
@instances.splice(@instances.indexOf(instance), 1) if instance in @instances
|
122
137
|
|
138
|
+
@unregisterAll: ->
|
139
|
+
@instances = @Collection.create()
|
140
|
+
|
123
141
|
### Scopes ###
|
124
142
|
|
125
143
|
@all: ->
|
@@ -7,3 +7,11 @@ unless Object.getPropertyDescriptor?
|
|
7
7
|
descriptor
|
8
8
|
else
|
9
9
|
Object.getPropertyDescriptor = -> undefined
|
10
|
+
|
11
|
+
Object.NO_DEFINE_PROPERTY = not Object.defineProperty?
|
12
|
+
|
13
|
+
if Object.defineProperty?
|
14
|
+
try
|
15
|
+
Object.defineProperty(Array.prototype,'test', value: 'test')
|
16
|
+
catch e
|
17
|
+
Object.NO_DEFINE_PROPERTY = true
|
@@ -107,7 +107,11 @@ agt.widgets = (name, selector, options={}, block) ->
|
|
107
107
|
else
|
108
108
|
widget.activate()
|
109
109
|
|
110
|
-
|
110
|
+
event = agt.domEvent("#{name}:handled", {element, widget})
|
111
|
+
if document.dispatchEvent?
|
112
|
+
document.dispatchEvent(event)
|
113
|
+
else
|
114
|
+
console?.warn? 'HTMLElement::dispatchEvent is not available on this platform. Unable to dispatch custom events on DOM nodes.'
|
111
115
|
|
112
116
|
block?.call element, element, widget
|
113
117
|
|
data/lib/agt/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: agt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cédric Néhémie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- app/assets/javascripts/agt/mixins/aliasable.coffee
|
85
85
|
- app/assets/javascripts/agt/mixins/alternate_case.coffee
|
86
86
|
- app/assets/javascripts/agt/mixins/cloneable.coffee
|
87
|
+
- app/assets/javascripts/agt/mixins/collectionable.coffee
|
87
88
|
- app/assets/javascripts/agt/mixins/delegation.coffee
|
88
89
|
- app/assets/javascripts/agt/mixins/disposable.coffee
|
89
90
|
- app/assets/javascripts/agt/mixins/emitter.coffee
|
@@ -99,7 +100,6 @@ files:
|
|
99
100
|
- app/assets/javascripts/agt/mixins/sourcable.coffee
|
100
101
|
- app/assets/javascripts/agt/mixins/state_machine.coffee
|
101
102
|
- app/assets/javascripts/agt/mixins/subscriber.coffee
|
102
|
-
- app/assets/javascripts/agt/models/mixins/model.coffee
|
103
103
|
- app/assets/javascripts/agt/net/router.coffee
|
104
104
|
- app/assets/javascripts/agt/object.coffee
|
105
105
|
- app/assets/javascripts/agt/particles/actions/base_action.coffee
|