@applicaster/zapp-react-dom-app
Version:
Zapp App Component for Applicaster's Quick Brick React Native App
35 lines (28 loc) • 787 B
JavaScript
import * as R from "ramda";
const requiresAppendingDomNode = R.pathEq(
["module", "requiresAppendingDomNode"],
true
);
function initPlugin(plugin) {
const { module: pluginModule, configuration, name } = plugin;
const body = document.body;
if (pluginModule.init && typeof pluginModule.init === "function") {
return pluginModule.init({ body, configuration });
}
if (__DEV__) {
// eslint-disable-next-line no-console
console.warn(
`could not initialize plugin ${name} - it doesn't have an init method`,
{ plugin }
);
}
return null;
}
export function loadDomPlugins(plugins) {
return R.compose(
(promises) => Promise.all(promises),
R.reject(R.isNil),
R.map(initPlugin),
R.filter(requiresAppendingDomNode)
)(plugins);
}