UNPKG

@equinor/eds-core-react

Version:

The React implementation of the Equinor Design System

40 lines (37 loc) 962 B
import { useState, useEffect, useContext, createContext } from 'react'; import { jsx } from 'react/jsx-runtime'; const initalState = { /** Density for all components inside `EdsProvider` */ density: 'comfortable' }; const EdsContext = /*#__PURE__*/createContext(initalState); const EdsProvider = ({ children, density, rootElement }) => { const [state, setState] = useState({ ...initalState, density: density || 'comfortable' }); const setDensity = density => setState(prevState => ({ ...prevState, density })); useEffect(() => { if (typeof density !== 'undefined' && density !== state.density) { setDensity(density); } }, [density, state.density]); const value = { density: state.density, rootElement, setDensity }; return /*#__PURE__*/jsx(EdsContext.Provider, { value: value, children: children }); }; const useEds = () => useContext(EdsContext); export { EdsProvider, useEds };