UNPKG

ultra-design

Version:
48 lines (39 loc) 2.33 kB
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties'; import _defineProperty from '@babel/runtime/helpers/defineProperty'; import _ from 'lodash-es'; import { forwardRef, useEffect, isValidElement, cloneElement, createContext } from 'react'; import en_US from '../locale/en_US.js'; import Modal from '../modal/modal-api.js'; import Toast from '../toast/toast.js'; import { defaultTheme } from './theme.js'; import { jsx } from '@emotion/react/jsx-runtime'; var _excluded = ["children"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var componentDefaultProps = { size: 'middle' }; var configCommonOptions = { theme: defaultTheme, locale: en_US }; var configContextOptions = _objectSpread(_objectSpread({}, componentDefaultProps), configCommonOptions); var ConfigContext = /*#__PURE__*/createContext(configContextOptions); var ConfigProvider = /*#__PURE__*/forwardRef(function (props, ref) { var children = props.children, rest = _objectWithoutProperties(props, _excluded); var config = _.merge({}, configContextOptions, rest); useEffect(function () { Toast.config(config); Modal.config(config); }, [props]); if (! /*#__PURE__*/isValidElement(children)) return null; return jsx(ConfigContext.Provider, { value: config, children: /*#__PURE__*/cloneElement(children, { ref: ref }) }); }); var ConfigProvider$1 = ConfigProvider; export { ConfigContext, componentDefaultProps, ConfigProvider$1 as default };