UNPKG

inegicomponente

Version:

Componentes de visualizacion 2023 - Graficas

57 lines (50 loc) 1.75 kB
/**============================================== * ! CONTEXTO DEL ESTADO GLOBAL * * @descripcion: Declaracion y configuracion del estado global donde se guardan los store * *=============================================**/ import React, {createContext, useRef, useContext} from 'react'; import { createStore, useStore } from 'zustand'; // Merge de objeto configuración const mergeObject = (store, c) => { return {...store,...c}; } export const StoreContexto = createContext(); // Contexto del Store global const useStoreGlobal = (selector) => { const store = useContext(StoreContexto) if (!store) { throw new Error('Missing StoreProvider') } return useStore(store, selector) } // Provider const StoreProvider = ({children}) => { let store = useRef() if(!store.current){ store.current = createStore((set, get) => ({ _configuracion:{}, // store parámetros de configuracion de entrada _inicializa:(c, d) => { // seteamos los objetos a los estados set((state) =>({_dataset:d})) set((state) =>({_configuracion:c})) }, // Actualiza parametros de configuracion _updateConfiguracion:(p) => { let oConfig = get()._configuracion; let oMerged = mergeObject(oConfig,p); set((state) =>({_configuracion:oMerged})) } })) } return ( <StoreContexto.Provider value={store.current}> {children} </StoreContexto.Provider> ) } export { useStoreGlobal, StoreProvider }