@radon-extension/plugin-youtubemusic
Version:
Radon Extension: YouTube Music
54 lines (39 loc) • 1.1 kB
JavaScript
import EventEmitter from 'eventemitter3';
import ForEach from 'lodash-es/forEach';
import DocumentObserver from '@radon-extension/framework/Document/Observer';
export default class Observer extends EventEmitter {
constructor() {
super();
this._observers = [];
this._started = false;
}
get(selector) {
return this._observers[selector] || null;
}
start() {
if(this._started) {
return;
}
// Mark as started
this._started = true;
// Create observers
this.create();
// Start observers
ForEach(this._observers, (observer) =>
observer.start()
);
}
observe(root, selector, options) {
let observer = DocumentObserver.observe(root, selector, {
start: false,
...(options || {})
});
// Store observer reference (for later cleanup)
this._observers.push(observer);
// Return observer
return observer;
}
create() {
throw new Error('Not Implemented');
}
}