budibase/packages/client/src/index.js

46 lines
1.2 KiB
JavaScript

import { createApp } from "./createApp";
import { trimSlash } from "./common/trimSlash";
export const loadBudibase = async ({componentLibraries, props, window, localStorage}) => {
const appDefinition = window["##BUDIBASE_APPDEFINITION##"];
const userFromStorage = localStorage.getItem("budibase:user")
const user = userFromStorage ? JSON.parse(userFromStorage) : {
name: "annonymous",
permissions : [],
isUser:false,
temp:false
};
if(!componentLibraries) {
const rootPath = appDefinition.appRootPath === ""
? ""
: "/" + trimSlash(appDefinition.appRootPath);
const componentLibraryUrl = (lib) => rootPath + "/" + trimSlash(lib)
componentLibraries = {};
for(let lib of appDefinition.componentLibraries) {
componentLibraries[lib.libName] = await import(
componentLibraryUrl(lib.importPath));
}
}
if(!props) {
props = appDefinition.props;
}
const _app = createApp(componentLibraries, appDefinition, user);
_app.hydrateChildren(
[props],
window.document.body);
return _app;
};
if(window) {
window.loadBudibase = loadBudibase;
}