hydrogen-web/src/observable/map/BaseObservableMap.js

39 lines
1,018 B
JavaScript
Raw Normal View History

2019-02-21 04:18:16 +05:30
import MapOperator from "./operators/MapOperator.js";
import SortOperator from "./operators/SortOperator.js";
2019-02-22 03:38:23 +05:30
import BaseObservableCollection from "../BaseObservableCollection.js";
2019-02-21 04:18:16 +05:30
2019-02-22 03:38:23 +05:30
export default class BaseObservableMap extends BaseObservableCollection {
2019-02-21 04:18:16 +05:30
emitReset() {
for(let h of this._handlers) {
h.onReset();
}
}
// we need batch events, mostly on index based collection though?
// maybe we should get started without?
emitAdd(key, value) {
for(let h of this._handlers) {
h.onAdd(key, value);
}
}
emitChange(key, value, ...params) {
for(let h of this._handlers) {
h.onChange(key, value, ...params);
}
}
emitRemove(key, value) {
for(let h of this._handlers) {
h.onRemove(key, value);
}
}
map(mapper, updater) {
return new MapOperator(this, mapper, updater);
}
sort(comparator) {
return new SortOperator(this, comparator);
}
}