UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

39 lines (38 loc) 1.29 kB
"use client"; import { useCallback, useContext, useMemo } from 'react'; import { assignPropsWithContext } from "../../../../shared/component-helper.js"; import ValueProviderContext from "./ValueProviderContext.js"; function useValueProvider(props) { const { overwriteProps, ...restProps } = props || {}; const nestedContext = useContext(ValueProviderContext); const inheritedProps = nestedContext?.inheritedContext; const nestedValueProps = useMemo(() => { if (inheritedProps && Object.keys(inheritedProps).length > 0) { return { ...inheritedProps, ...restProps }; } return restProps; }, [inheritedProps, restProps]); const extend = useCallback(valueProps => { const key = overwriteProps && valueProps?.path?.split('/')?.pop(); const overwrite = overwriteProps?.[key]; const props = overwrite ? { ...valueProps, ...overwrite } : valueProps; const value = Object.keys(nestedValueProps).length > 0 ? assignPropsWithContext(props, nestedValueProps) : props; return value; }, [nestedValueProps, overwriteProps]); return { extend, inheritedProps: restProps, inheritedContext: nestedValueProps }; } export default useValueProvider; //# sourceMappingURL=useValueProvider.js.map