1 | import _extends from "@babel/runtime/helpers/esm/extends";
|
2 | import React, { useContext, useMemo } from 'react';
|
3 | var ThemeContext = React.createContext({});
|
4 | var Consumer = ThemeContext.Consumer,
|
5 | Provider = ThemeContext.Provider;
|
6 |
|
7 | function ThemeProvider(_ref) {
|
8 | var prefixes = _ref.prefixes,
|
9 | children = _ref.children;
|
10 | var copiedPrefixes = useMemo(function () {
|
11 | return _extends({}, prefixes);
|
12 | }, [prefixes]);
|
13 | return React.createElement(Provider, {
|
14 | value: copiedPrefixes
|
15 | }, children);
|
16 | }
|
17 |
|
18 | export function useBootstrapPrefix(prefix, defaultPrefix) {
|
19 | var prefixes = useContext(ThemeContext);
|
20 | return prefix || prefixes[defaultPrefix] || defaultPrefix;
|
21 | }
|
22 |
|
23 | function createBootstrapComponent(Component, opts) {
|
24 | if (typeof opts === 'string') opts = {
|
25 | prefix: opts
|
26 | };
|
27 | var isClassy = Component.prototype && Component.prototype.isReactComponent;
|
28 |
|
29 | var _opts = opts,
|
30 | prefix = _opts.prefix,
|
31 | _opts$forwardRefAs = _opts.forwardRefAs,
|
32 | forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;
|
33 | var Wrapped = React.forwardRef(function (_ref2, ref) {
|
34 | var props = _extends({}, _ref2);
|
35 |
|
36 | props[forwardRefAs] = ref;
|
37 | var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);
|
38 | return React.createElement(Component, _extends({}, props, {
|
39 | bsPrefix: bsPrefix
|
40 | }));
|
41 | });
|
42 | Wrapped.displayName = "Bootstrap(" + (Component.displayName || Component.name) + ")";
|
43 | return Wrapped;
|
44 | }
|
45 |
|
46 | export { createBootstrapComponent, Consumer as ThemeConsumer };
|
47 | export default ThemeProvider; |
\ | No newline at end of file |