@redux-devtools/core
Version:
Redux DevTools with hot reloading and time travel
78 lines (77 loc) • 3.76 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = createDevTools;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _reactRedux = require("react-redux");
var _instrument = require("@redux-devtools/instrument");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function logError(type) {
if (type === 'NoStore') {
console.error('Redux DevTools could not render. You must pass the Redux store ' + 'to <DevTools> either as a "store" prop or by wrapping it in a ' + '<Provider store={store}>.');
} else {
console.error('Redux DevTools could not render. Did you forget to include ' + 'DevTools.instrument() in your store enhancer chain before ' + 'using createStore()?');
}
}
function createDevTools(children) {
const monitorElement = _react.Children.only(children);
const monitorProps = monitorElement.props;
const Monitor = monitorElement.type;
const ConnectedMonitor = (0, _reactRedux.connect)(state => state)(Monitor);
return class DevTools extends _react.Component {
static instrument = options => (0, _instrument.instrument)((state, action) => Monitor.update(monitorProps, state, action), options);
constructor(props) {
super(props);
if (_reactRedux.ReactReduxContext) {
if (this.props.store && !this.props.store.liftedStore) {
logError('NoLiftedStore');
}
return;
}
if (!props.store) {
logError('NoStore');
return;
}
this.liftedStore = props.store.liftedStore;
if (!this.liftedStore) {
logError('NoLiftedStore');
}
}
render() {
if (_reactRedux.ReactReduxContext) {
// For react-redux@6
if (this.props.store) {
if (!this.props.store.liftedStore) {
return null;
}
return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
store: this.props.store.liftedStore
}, /*#__PURE__*/_react.default.createElement(ConnectedMonitor, monitorProps));
}
return /*#__PURE__*/_react.default.createElement(_reactRedux.ReactReduxContext.Consumer, null, props => {
if (!props || !props.store) {
logError('NoStore');
return null;
}
if (!props.store.liftedStore) {
logError('NoLiftedStore');
return null;
}
return /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
store: props.store.liftedStore
}, /*#__PURE__*/_react.default.createElement(ConnectedMonitor, monitorProps));
});
}
if (!this.liftedStore) {
return null;
}
return /*#__PURE__*/_react.default.createElement(ConnectedMonitor, (0, _extends2.default)({}, monitorProps, {
store: this.liftedStore
}));
}
};
}