UNPKG

activator-oce-exporter

Version:

Extract Activator binder and convert it to valid OCE mono pacakge

76 lines (58 loc) 2.11 kB
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 };