Dashboard sipadu mbip
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

ThemeProvider.js 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  4. exports.__esModule = true;
  5. exports.useBootstrapPrefix = useBootstrapPrefix;
  6. exports.createBootstrapComponent = createBootstrapComponent;
  7. exports.default = exports.ThemeConsumer = void 0;
  8. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  9. var _forwardRef = _interopRequireDefault(require("@restart/context/forwardRef"));
  10. var _react = _interopRequireWildcard(require("react"));
  11. var ThemeContext = _react.default.createContext({});
  12. var Consumer = ThemeContext.Consumer,
  13. Provider = ThemeContext.Provider;
  14. exports.ThemeConsumer = Consumer;
  15. function ThemeProvider(_ref) {
  16. var prefixes = _ref.prefixes,
  17. children = _ref.children;
  18. var copiedPrefixes = (0, _react.useMemo)(function () {
  19. return (0, _extends2.default)({}, prefixes);
  20. }, [prefixes]);
  21. return _react.default.createElement(Provider, {
  22. value: copiedPrefixes
  23. }, children);
  24. }
  25. function useBootstrapPrefix(prefix, defaultPrefix) {
  26. var prefixes = (0, _react.useContext)(ThemeContext);
  27. return prefix || prefixes[defaultPrefix] || defaultPrefix;
  28. }
  29. function createBootstrapComponent(Component, opts) {
  30. if (typeof opts === 'string') opts = {
  31. prefix: opts
  32. };
  33. var isClassy = Component.prototype && Component.prototype.isReactComponent; // If it's a functional component make sure we don't break it with a ref
  34. var _opts = opts,
  35. prefix = _opts.prefix,
  36. _opts$forwardRefAs = _opts.forwardRefAs,
  37. forwardRefAs = _opts$forwardRefAs === void 0 ? isClassy ? 'ref' : 'innerRef' : _opts$forwardRefAs;
  38. return (0, _forwardRef.default)(function (_ref2, ref) {
  39. var props = (0, _extends2.default)({}, _ref2);
  40. props[forwardRefAs] = ref; // eslint-disable-next-line react/prop-types
  41. var bsPrefix = useBootstrapPrefix(props.bsPrefix, prefix);
  42. return _react.default.createElement(Component, (0, _extends2.default)({}, props, {
  43. bsPrefix: bsPrefix
  44. }));
  45. }, {
  46. displayName: "Bootstrap(" + (Component.displayName || Component.name) + ")"
  47. });
  48. }
  49. var _default = ThemeProvider;
  50. exports.default = _default;