forked from mystiq/hydrogen-web
Support updater in MappedMap
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
This commit is contained in:
parent
0819dcb29e
commit
f41c835e91
2 changed files with 5 additions and 3 deletions
|
@ -34,8 +34,8 @@ Object.assign(BaseObservableMap.prototype, {
|
|||
return new SortedMapList(this, comparator);
|
||||
},
|
||||
|
||||
mapValues(mapper) {
|
||||
return new MappedMap(this, mapper);
|
||||
mapValues(mapper, updater) {
|
||||
return new MappedMap(this, mapper, updater);
|
||||
},
|
||||
|
||||
filterValues(filter) {
|
||||
|
|
|
@ -20,10 +20,11 @@ so a mapped value can emit updates on it's own with this._emitSpontaneousUpdate
|
|||
how should the mapped value be notified of an update though? and can it then decide to not propagate the update?
|
||||
*/
|
||||
export class MappedMap extends BaseObservableMap {
|
||||
constructor(source, mapper) {
|
||||
constructor(source, mapper, updater) {
|
||||
super();
|
||||
this._source = source;
|
||||
this._mapper = mapper;
|
||||
this._updater = updater;
|
||||
this._mappedValues = new Map();
|
||||
}
|
||||
|
||||
|
@ -55,6 +56,7 @@ export class MappedMap extends BaseObservableMap {
|
|||
}
|
||||
const mappedValue = this._mappedValues.get(key);
|
||||
if (mappedValue !== undefined) {
|
||||
this._updater?.(mappedValue, params, value);
|
||||
// TODO: map params somehow if needed?
|
||||
this.emitUpdate(key, mappedValue, params);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue