import { observable, computed } from 'mobx';
import { merge } from 'lodash';
import { titleize, humanize } from '../lib/util';
import Extensions from './index';
import RootView from '../workspace/root-view';

export { identifiedBy, identifier } from '../models/base';

export class BaseExtension {

    @observable data = {};

    static register() {
        Extensions.register(this);
    }

    @computed get title() {
        return titleize(humanize(this.identifier));
    }

    setBootstrapData(data) {
        merge(this.data, data);
    }

    @computed get domain() {
        return window.location.hostname.split('.').slice(-2).join('.');
    }

    rootView() {
        return RootView;
    }

}