budibase/packages/client/src/index.js

60 lines
1.3 KiB
JavaScript
Raw Normal View History

import { createApp } from "./createApp"
import { trimSlash } from "./common/trimSlash"
2019-09-07 07:50:35 +02:00
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)
: {
2019-09-23 07:08:06 +02:00
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
}