UNPKG

@geogirafe/lib-geoportal

Version:

GeoGirafe is a flexible application to build online geoportals.

28 lines (27 loc) 1.01 kB
import GirafeSingleton from '../../base/GirafeSingleton.js'; export default class ComponentManager extends GirafeSingleton { components = {}; registeredCallbacks = []; registeredCallbacksClasses = []; registerComponent(component) { this.components[component.name] ??= []; this.components[component.name].push(component); for (let i = 0; i < this.registeredCallbacksClasses.length; i++) { if (component instanceof this.registeredCallbacksClasses[i]) { this.registeredCallbacks[i].forEach((callback) => callback(component)); } } } registerComponentCallback(component, callback) { this.registeredCallbacksClasses.push(component); this.registeredCallbacks.push([callback]); } getComponents(type) { return Object.values(this.components) .flat() .filter((c) => c instanceof type); } getComponentsByName(name) { return this.components[name]; } }