Skip to main content
Version: 1.x

Builtin

For convenience, molecule has some built-in data to initialize the layout UI. But sometimes, you don't need some default data. For example now, we want to initialize an application without the default activity bar.

In src/App.js, we get this code:

src/App.js
import React from 'react';
import { create, Workbench } from '@dtinsight/molecule';
import '@dtinsight/molecule/esm/style/mo.css';

const moInstance = create({
extensions: [],
});

const App = () => moInstance.render(<Workbench />);

export default App;

And we have a service named builtinService to manage the built-in data. So if we want to disable the default activity bar, we could call molecule.builtin.inactiveModule method to set module inactive.

But here is a question where should I call this method?

It's not working that you call inactiveModule method in extensions, because when molecule loads extensions, the layout UI already initialized with built-in data. It's obviously not working if you inactive a module after actived.

hooks​

For solving the timing problems, there are some hooks you can call from moInstance.

onBeforeInit​

The onBeforeInit is called before initializing. At this time, the layout UI isn't initialized yet. And the extensions are not loaded too.

You can disable some built-in data at this hook.

onBeforeLoad​

The onBeforeLoad is called before loading extensions. At this time, the layout UI is initialized. But the extensions are not loaded.

You can't disable some built-in data at this hook. But You can inactive some extensions at this hook.

Example​

src/App.js
import React from 'react';
import { create, Workbench } from '@dtinsight/molecule';
import '@dtinsight/molecule/esm/style/mo.css';

const moInstance = create({
extensions: [],
});

moInstance.onBeforeInit(() => {
molecule.builtin.inactiveModule('activityBarData');
});

const App = () => moInstance.render(<Workbench />);

export default App;

The module you can refer to constants