12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import _extends from "@babel/runtime/helpers/esm/extends";
- import forwardRef from '@restart/context/forwardRef';
- import React, { useContext, useMemo } from 'react';
- var ThemeContext = React.createContext({});
- var Consumer = ThemeContext.Consumer,
- Provider = ThemeContext.Provider;
-
- function ThemeProvider(_ref) {
- var prefixes = _ref.prefixes,
- children = _ref.children;
- var copiedPrefixes = useMemo(function () {
- return _extends({}, prefixes);
- }, [prefixes]);
- return React.createElement(Provider, {
- value: copiedPrefixes
- }, children);
- }
-
- export function useBootstrapPrefix(prefix, defaultPrefix) {
- var prefixes = useContext(ThemeContext);
- return prefix || prefixes[defaultPrefix] || defaultPrefix;
- }
-
- function createBootstrapComponent(Component, opts) {
- if (typeof opts === 'string') opts = {
- prefix: opts
- };
- var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref
-
- var _opts = opts,
- prefix = _opts.prefix,
- _opts$forwardRefAs = _opts.forwardRefAs,
- forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;
- return forwardRef(function (_ref2, ref) {
- var props = _extends({}, _ref2);
-
- props[forwardRefAs] = ref; // eslint-disable-next-line react/prop-types
-
- var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);
- return React.createElement(Component, _extends({}, props, {
- bsPrefix: bsPrefix
- }));
- }, {
- displayName: "Bootstrap(" + (Component.displayName || Component.name) + ")"
- });
- }
-
- export { createBootstrapComponent, Consumer as ThemeConsumer };
- export default ThemeProvider;
|