UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

132 lines (100 loc) 4.33 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireWildcard(require("react")); var _mobx = require("mobx"); var _mobxReactLite = require("mobx-react-lite"); var _isBoolean = _interopRequireDefault(require("lodash/isBoolean")); var _FormContext = require("../../pro/lib/form/FormContext"); var _ConfigContext = _interopRequireDefault(require("./ConfigContext")); var _utils = require("../configure/utils"); var _TooltipUtils = require("../_util/TooltipUtils"); var ConfigProvider = function ConfigProvider(props) { var _useContext = (0, _react.useContext)(_ConfigContext["default"]), getParentConfig = _useContext.getConfig; var children = props.children, localConfig = (0, _objectWithoutProperties2["default"])(props, ["children"]); var configStore = (0, _mobxReactLite.useLocalStore)(function (config) { return { config: _mobx.observable.map(config) }; }, localConfig); var getLocalConfig = (0, _react.useCallback)(function (key) { var localValue = configStore.config.get(key); if (configStore.config.has(key)) { return localValue; } return getParentConfig(key); }, [configStore, getParentConfig]); var getLocalPrefixCls = (0, _react.useCallback)(function (suffixCls, customizePrefixCls) { if (customizePrefixCls) { return customizePrefixCls; } return "".concat(getLocalConfig('prefixCls'), "-").concat(suffixCls); }, [getLocalConfig]); var getLocalProPrefixCls = (0, _react.useCallback)(function (suffixCls, customizePrefixCls) { if (customizePrefixCls) { return customizePrefixCls; } return "".concat(getLocalConfig('proPrefixCls'), "-").concat(suffixCls); }, [getLocalConfig]); var getLocalCustomizable = (0, _react.useCallback)(function (component) { var customizable = getLocalConfig('customizable'); if ((0, _isBoolean["default"])(customizable)) { return customizable; } if ((0, _utils.isCustomizable)(customizable)) { return customizable[component]; } }, [getLocalConfig]); var getLocalTooltip = (0, _react.useCallback)(function (target) { var tooltip = getLocalConfig('tooltip'); if (typeof tooltip === 'function') { return tooltip(target); } return (0, _TooltipUtils.getUsefulTooltip)(target) || tooltip; }, [getLocalConfig]); var getLocalTooltipTheme = (0, _react.useCallback)(function (target) { var tooltipTheme = getLocalConfig('tooltipTheme'); if (typeof tooltipTheme === 'function') { return tooltipTheme(target); } if (target === 'validation') { var validationTooltipTheme = getLocalConfig('validationTooltipTheme'); if (validationTooltipTheme) { return validationTooltipTheme; } } return tooltipTheme; }, [getLocalConfig]); var getLocalTooltipPlacement = (0, _react.useCallback)(function (target) { var tooltipPlacement = getLocalConfig('tooltipPlacement'); if (typeof tooltipPlacement === 'function') { return tooltipPlacement(target); } return tooltipPlacement; }, [getLocalConfig]); var value = (0, _react.useMemo)(function () { return { getConfig: getLocalConfig, getPrefixCls: getLocalPrefixCls, getProPrefixCls: getLocalProPrefixCls, getCustomizable: getLocalCustomizable, getTooltip: getLocalTooltip, getTooltipTheme: getLocalTooltipTheme, getTooltipPlacement: getLocalTooltipPlacement }; }, [_utils.getConfig, getLocalPrefixCls, getLocalProPrefixCls, getLocalCustomizable, getLocalTooltip, getLocalTooltipTheme, getLocalTooltipPlacement]); return _react["default"].createElement(_ConfigContext["default"].Provider, { value: value }, _react["default"].createElement(_FormContext.FormProvider, null, children)); }; ConfigProvider.displayName = 'ConfigProvider'; var _default = (0, _react.memo)(ConfigProvider); exports["default"] = _default; //# sourceMappingURL=ConfigProvider.js.map