observable-set
Version:
Configure observable set collections
23 lines (18 loc) • 782 B
JavaScript
;
var d = require('d')
, lazy = require('d/lazy')
, memoize = require('memoizee/plain')
, getFirst = require('es6-set/ext/get-first')
, ReadOnly = require('observable-value/create-read-only')(require('observable-value'))
, validObservableSet = require('./valid-observable-set')
, defineProperties = Object.defineProperties;
module.exports = memoize(function (prototype) {
validObservableSet(prototype);
return defineProperties(prototype, lazy({
_first: d(function () {
var result = new ReadOnly(getFirst.call(this));
this.on('change', function () { result._setValue(getFirst.call(this)); });
return result;
})
}));
}, { normalizer: require('memoizee/normalizers/get-1')() });