mirrorx
Version:
A React framework with minimal API and zero boilerplate.
66 lines (49 loc) • 1.86 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = Router;
exports.history = void 0;
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _history2 = require("history");
var _reactRouterRedux = require("react-router-redux");
var _defaults = require("./defaults");
var _middleware = require("./middleware");
var _actions = require("./actions");
var history = null;
exports.history = history;
function Router(_ref) {
var _history = _ref.history,
children = _ref.children,
others = (0, _objectWithoutProperties2["default"])(_ref, ["history", "children"]);
_actions.actions.routing = Object.keys(_reactRouterRedux.routerActions).reduce(function (memo, action) {
memo[action] = function () {
(0, _middleware.dispatch)(_reactRouterRedux.routerActions[action].apply(_reactRouterRedux.routerActions, arguments));
};
return memo;
}, {});
if (!_history) {
_history = createHistory(others);
}
exports.history = history = _history;
return _react["default"].createElement(_reactRouterRedux.ConnectedRouter, {
history: _history
}, children);
}
Router.propTypes = {
children: _propTypes["default"].element.isRequired,
history: _propTypes["default"].object
};
function createHistory(props) {
var historyMode = _defaults.options.historyMode;
var historyModes = {
browser: _history2.createBrowserHistory,
hash: _history2.createHashHistory,
memory: _history2.createMemoryHistory
};
exports.history = history = historyModes[historyMode](props);
return history;
}