import { createApp } from "./createApp"; import { trimSlash } from "./common/trimSlash"; export const loadBudibase = async ({ componentLibraries, props, window, localStorage, uiFunctions }) => { const appDefinition = window["##BUDIBASE_APPDEFINITION##"]; const uiFunctionsFromWindow = window["##BUDIBASE_APPDEFINITION##"]; uiFunctions = uiFunctionsFromWindow || uiFunctions; 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( window.document, componentLibraries, appDefinition, user, uiFunctions || {}); app.hydrateChildren( [props], window.document.body); return app; }; if(window) { window.loadBudibase = loadBudibase; }