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

Version Path
hippo-fw-0.9.8 client/hippo/extensions/index.js
hippo-fw-0.9.7 client/hippo/extensions/index.js
hippo-fw-0.9.6 client/hippo/extensions/index.js
hippo-fw-0.9.5 client/hippo/extensions/index.js