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