mutant
Version:
Create observables and map them to DOM elements. Massively inspired by hyperscript and observ-*. No virtual dom, just direct observable bindings. Unnecessary garbage collection is avoided by using mutable objects instead of blasting immutable junk all ove
34 lines (26 loc) • 803 B
JavaScript
var resolve = require('./resolve')
var addCollectionMethods = require('./lib/add-collection-methods')
var computed = require('./computed')
var forEach = require('./for-each')
module.exports = function reverse (collection) {
var values = []
var rawValues = []
var instance = computed.extended(collection, function () {
var index = collection().length
values.length = index
rawValues.length = index
forEach(collection, function (item) {
index -= 1
var value = resolve(item)
values[index] = value
rawValues[index] = item
})
return values
})
var result = function MutantReverse (listener) {
return instance(listener)
}
// getLength, get, indexOf, etc
addCollectionMethods(result, rawValues, instance.checkUpdated)
return result
}