activator-oce-exporter
Version:
Extract Activator binder and convert it to valid OCE mono pacakge
76 lines (58 loc) • 2.11 kB
JavaScript
import './_vendor/veeva-library.js';
import './_vendor/touchy-swipe.js';
// Fusion Lib
import { FusionApi } from './api';
import { contentPreloader } from './content-preloader';
import AniJS from './_vendor/anijs-min.js';
import { ComponentsRegistrar } from './services/components-registrar';
import { EnvironmentDetector } from './services/environment-detector';
import { VeevaDataReceiver } from './services/veeva-data-receiver';
import { EditorLoader } from './editor-loader';
const globalVariables = {
Fusion: FusionApi,
AniJS,
};
class MainApp {
constructor() {
MainApp.addListeners();
MainApp.initAllComponents();
MainApp.setGlobalScopeVariables();
EditorLoader.load();
VeevaDataReceiver.init();
EnvironmentDetector.setEnv();
}
/**
*
* @param requirePath - own context with files that should be imported.
* @param cb - callback that should be called after import each component
*/
static importComponents(requirePath, cb) {
requirePath.keys().forEach((key) => {
const importOBj = requirePath(key);
Object.keys(importOBj).forEach((componentClass) => {
const instance = importOBj[componentClass];
cb(instance);
});
});
}
static register(instance) {
ComponentsRegistrar.register(instance.options.componentName, instance);
}
static initAllComponents() {
this.importComponents(require.context('./email', true, /\.js$/), this.register);
this.importComponents(require.context('./slide', true, /\.js$/), this.register);
this.importComponents(require.context('../components', true, /\.js$/), this.register);
ComponentsRegistrar.emitComponentsRegistration();
}
static setGlobalScopeVariables(globalScope = window) {
Object.keys(globalVariables).forEach((key) => {
globalScope[key] = globalVariables[key];
});
}
static addListeners() {
document.addEventListener('DOMContentLoaded', () => contentPreloader.showNodeContent(FusionApi.getRootNode()));
}
}
const mainApp = new MainApp();
require('./_vendor/anijs-helper-dom-min.js');
export { mainApp };