Sha256: ceac62d8b816d68c1b27f191153cf3eda00e496f230adb140d02a30961d987e2
Contents?: true
Size: 1.23 KB
Versions: 4
Compression:
Stored size: 1.23 KB
Contents
import { invoke, each } from 'lodash'; import { observable } from 'mobx'; const Extensions = { instances: observable.map(), @observable controlling_id: 'hippo', register(Klass) { const instance = new Klass(); this.instances.set(instance.id, instance); return invoke(instance, 'onRegistered'); }, invoke(method, arg) { each(this.instances.values(), instance => invoke(instance, method, arg)); }, fireOnInitialized(viewport) { this.invoke('onInitialized', viewport); }, fireOnAvailable(viewport) { this.invoke('onAvailble', viewport); }, getViews() { return Promise.all(this.invoke('getView')); }, get controlling() { return this.get(this.controlling_id); }, get(identifier) { return this.instances.get(identifier); }, setBootstrapData(bootstrapData) { if (bootstrapData.controlling_extension) { this.controlling_id = bootstrapData.controlling_extension; } this.instances.forEach((instance, key) => { if (bootstrapData[key]) { invoke(instance, 'setBootstrapData', bootstrapData[key]); } }); }, }; export default Extensions;
Version data entries
4 entries across 4 versions & 1 rubygems