Merge pull request #12414 from ahocevar/change-event-type

Replace getChangeEventType() with add/removeChangeListener methods
This commit is contained in:
Andreas Hocevar
2021-06-21 08:04:23 +02:00
committed by GitHub
13 changed files with 49 additions and 110 deletions

View File

@@ -149,12 +149,28 @@ class BaseObject extends Observable {
*/
notify(key, oldValue) {
let eventType;
eventType = getChangeEventType(key);
eventType = `change:${key}`;
this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));
eventType = ObjectEventType.PROPERTYCHANGE;
this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));
}
/**
* @param {string} key Key name.
* @param {import("./events.js").Listener} listener Listener.
*/
addChangeListener(key, listener) {
this.addEventListener(`change:${key}`, listener);
}
/**
* @param {string} key Key name.
* @param {import("./events.js").Listener} listener Listener.
*/
removeChangeListener(key, listener) {
this.removeEventListener(`change:${key}`, listener);
}
/**
* Sets a value.
* @param {string} key Key name.
@@ -220,19 +236,4 @@ class BaseObject extends Observable {
}
}
/**
* @type {Object<string, string>}
*/
const changeEventTypeCache = {};
/**
* @param {string} key Key name.
* @return {string} Change name.
*/
export function getChangeEventType(key) {
return changeEventTypeCache.hasOwnProperty(key)
? changeEventTypeCache[key]
: (changeEventTypeCache[key] = 'change:' + key);
}
export default BaseObject;