UNPKG

@datalayer/core

Version:
89 lines (88 loc) 3.35 kB
/* * Copyright (c) 2023-2025 Datalayer, Inc. * Distributed under the terms of the Modified BSD License. */ import { createStore } from 'zustand/vanilla'; import { useStore } from 'zustand'; let loadConfigurationFromServer = true; let initialConfiguration = { useMock: false, whiteLabel: true, loadConfigurationFromServer: true, jupyterServerless: false, iamRunUrl: 'https://prod1.datalayer.run', runtimesRunUrl: 'https://prod1.datalayer.run', libraryRunUrl: 'https://prod1.datalayer.run', spacerRunUrl: 'https://prod1.datalayer.run', aiagentsRunUrl: 'https://prod1.datalayer.run', growthRunUrl: 'https://prod1.datalayer.run', inboundsRunUrl: 'https://prod1.datalayer.run', successRunUrl: 'https://prod1.datalayer.run', supportRunUrl: 'https://prod1.datalayer.run', launcher: { category: 'Datalayer', name: 'Datalayer Runtimes', icon: 'https://raw.githubusercontent.com/datalayer/icons/main/svg/data1/jupyter-base.svg', rank: 1 }, brand: { name: 'Datalayer', about: 'AI Platform for Data Analysis', logoUrl: 'https://assets.datalayer.tech/datalayer-25.svg', logoSquareUrl: 'https://assets.datalayer.tech/datalayer-square.png', copyright: '© 2025 Datalayer, Inc', docsUrl: 'https://docs.datalayer.app', supportUrl: 'https://datalayer.app/support', termsUrl: 'https://datalayer.app/terms', pricingUrl: 'https://datalayer.app/pricing', privacyUrl: 'https://datalayer.app/privacy', } }; // Try loading initial state from datalayer-config-data element try { const rawConfig = document.getElementById('datalayer-config-data'); if (rawConfig?.innerText) { const htmlOverridingConfiguration = JSON.parse(rawConfig?.innerText || '{}'); if (htmlOverridingConfiguration.loadConfigurationFromServer != undefined) { loadConfigurationFromServer = htmlOverridingConfiguration.loadConfigurationFromServer; } initialConfiguration = { ...initialConfiguration, ...htmlOverridingConfiguration, }; console.log('Datalayer configuration loaded from HTML page', initialConfiguration); window.document.title = `${initialConfiguration.brand.name} Ξ ${initialConfiguration.brand.about}`; } } catch (error) { console.debug('No valid configuration found in the webpage.', error); } export const coreStore = createStore((set, get) => ({ tab: 0.0, getIntTab: () => Math.floor(get().tab), setTab: (tab) => set((state) => ({ tab })), configuration: initialConfiguration, setConfiguration: (configuration) => { console.log('Setting Datalayer configuration', configuration); set(state => ({ configuration: { ...state.configuration, ...configuration } })); }, version: '', setVersion: version => { if (version && !get().version) { set(state => ({ version })); } }, loadConfigurationFromServer, setLoadConfigurationFromServer: (loadConfigurationFromServer) => { set(state => ({ loadConfigurationFromServer })); }, })); export function useCoreStore(selector) { return useStore(coreStore, selector); } export default useCoreStore;