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
36 lines (28 loc) • 853 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 Concat (observables) {
var values = []
var rawValues = []
var instance = computed.extended(observables, function () {
var index = 0
forEach(observables, function (collection) {
forEach(collection, function (item) {
var value = resolve(item)
values[index] = value
rawValues[index] = item
index += 1
})
})
values.length = index
rawValues.length = index
return values
})
var result = function MutantConcat (listener) {
return instance(listener)
}
// getLength, get, indexOf, etc
addCollectionMethods(result, rawValues, instance.checkUpdated)
return result
}