fannypack-v5
Version:
An accessible, composable, and friendly React UI Kit
60 lines (48 loc) • 2.45 kB
JavaScript
import 'react';
import '../Provider/ThemeContext.js';
import 'classnames';
import 'emotion';
import '@emotion/core';
import 'emotion-theming';
import '@emotion/styled';
import { useTheme } from './useTheme.js';
import { _ as _objectSpread2 } from '../chunk-0c448560.js';
import { get } from './get.js';
import './useLocalStorage.js';
import '../Provider/ColorModeContext.js';
import { useColorMode } from './useColorMode.js';
import { omitBy } from './omitBy.js';
var isUndefined = function isUndefined(val) {
return typeof val === 'undefined';
};
function useDefaultProps(props, config) {
var _config$defaultProps, _config2;
if (props === void 0) {
props = {};
}
if (config === void 0) {
config = {};
}
var _config = config,
themeKey = _config.themeKey;
var _useTheme = useTheme(),
theme = _useTheme.theme;
var _useColorMode = useColorMode(),
globalColorMode = _useColorMode.colorMode;
var colorMode = props.colorMode || globalColorMode;
var configDefaultProps = omitBy((_config$defaultProps = (_config2 = config) === null || _config2 === void 0 ? void 0 : _config2.defaultProps) !== null && _config$defaultProps !== void 0 ? _config$defaultProps : {}, isUndefined);
var themeDefaultProps = omitBy(get(theme, themeKey + ".defaultProps", {}), isUndefined);
var themeVariantDefaultProps = omitBy(get(theme, themeKey + ".variants." + props.variant + ".defaultProps", {}), isUndefined);
var themeColorModeDefaultProps = omitBy(get(theme, themeKey + ".modes." + colorMode + ".defaultProps", {}), isUndefined);
var overridesDefaultProps = omitBy(get(props, "overrides." + themeKey + ".defaultProps", {}), isUndefined);
var overridesVariantDefaultProps = omitBy(get(props, "overrides." + themeKey + ".variants." + props.variant + ".defaultProps", {}), isUndefined);
var overridesColorModeDefaultProps = omitBy(get(props, "overrides." + themeKey + ".modes." + colorMode + ".defaultProps", {}), isUndefined);
var newProps = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, configDefaultProps), themeDefaultProps), themeVariantDefaultProps), themeColorModeDefaultProps), overridesDefaultProps), overridesVariantDefaultProps), overridesColorModeDefaultProps), {}, {
colorMode: colorMode
}, omitBy(props, isUndefined));
return {
props: newProps,
themeKey: themeKey
};
}
export { useDefaultProps };