import AppStore from "./stores/AppStore"; // Get environment settings const getEnvironment = async () => { /* istanbul ignore next */ if (process.env.NODE_ENV === "development" && !process.env.BUILD_NO_SERVER) { return (await import("./env/development")).default; } return (await import("./env/production")).default; }; // Configure default store export const configureStore = async (params, events) => { if (params.options?.secureMode) window.LS_SECURE_MODE = true; const env = await getEnvironment(); params = { ...params }; // Support forceBottomPanel option if (params?.settings?.forceBottomPanel) { params.bottomSidePanel = true; params.settings = { ...(params.settings || {}), forceBottomPanel: true }; } if (!params?.config && env.getExample) { const { task, config } = await env.getExample(); params.config = config; params.task = task; } else if (params?.task) { params.task = env.getData(params.task); } if (params.task?.id) { params.taskHistory = [{ taskId: params.task.id, annotationId: null }]; } const store = AppStore.create(params, { ...env.configureApplication(params), events, }); store.initializeStore({ ...(params.task ?? {}), // allow external integrations to control when the app is fully hydrated // default behaviour is to consider this point as hydrated hydrated: params?.hydrated ?? true, users: params.users ?? [], annotationHistory: params.history ?? [], }); return { store, getRoot: env.rootElement }; };