Files

196 lines
6.9 KiB
JavaScript
Raw Permalink Normal View History

2026-04-05 16:14:49 -04:00
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('prop-types'), require('react-router')) :
typeof define === 'function' && define.amd ? define(['exports', 'react', 'prop-types', 'react-router'], factory) :
(factory((global.ReactRouterRedux = {}),global.React,global.PropTypes,global.ReactRouter));
}(this, (function (exports,React,PropTypes,reactRouter) { 'use strict';
var React__default = 'default' in React ? React['default'] : React;
PropTypes = PropTypes && PropTypes.hasOwnProperty('default') ? PropTypes['default'] : PropTypes;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
/**
* This action type will be dispatched when your history
* receives a location change.
*/
var LOCATION_CHANGE = '@@router/LOCATION_CHANGE';
var initialState = {
location: null
/**
* This reducer will update the state with the most recent location history
* has transitioned to. This may not be in sync with the router, particularly
* if you have asynchronously-loaded routes, so reading from and relying on
* this state is discouraged.
*/
};function routerReducer() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
type = _ref.type,
payload = _ref.payload;
if (type === LOCATION_CHANGE) {
return _extends({}, state, { location: payload });
}
return state;
}
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var ConnectedRouter = function (_Component) {
_inherits(ConnectedRouter, _Component);
function ConnectedRouter() {
var _temp, _this, _ret;
_classCallCheck(this, ConnectedRouter);
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.handleLocationChange = function (location) {
_this.store.dispatch({
type: LOCATION_CHANGE,
payload: location
});
}, _temp), _possibleConstructorReturn(_this, _ret);
}
ConnectedRouter.prototype.componentWillMount = function componentWillMount() {
var _props = this.props,
propsStore = _props.store,
history = _props.history,
isSSR = _props.isSSR;
this.store = propsStore || this.context.store;
this.handleLocationChange(history.location);
if (!isSSR) this.unsubscribeFromHistory = history.listen(this.handleLocationChange);
};
ConnectedRouter.prototype.componentWillUnmount = function componentWillUnmount() {
if (this.unsubscribeFromHistory) this.unsubscribeFromHistory();
};
ConnectedRouter.prototype.render = function render() {
return React__default.createElement(reactRouter.Router, this.props);
};
return ConnectedRouter;
}(React.Component);
ConnectedRouter.propTypes = {
store: PropTypes.object,
history: PropTypes.object.isRequired,
children: PropTypes.node,
isSSR: PropTypes.bool
};
ConnectedRouter.contextTypes = {
store: PropTypes.object
};
var getLocation = function getLocation(state) {
return state.router.location;
};
var createMatchSelector = function createMatchSelector(path) {
var lastPathname = null;
var lastMatch = null;
return function (state) {
var _ref = getLocation(state) || {},
pathname = _ref.pathname;
if (pathname === lastPathname) {
return lastMatch;
}
lastPathname = pathname;
var match = reactRouter.matchPath(pathname, path);
if (!match || !lastMatch || match.url !== lastMatch.url) {
lastMatch = match;
}
return lastMatch;
};
};
/**
* This action type will be dispatched by the history actions below.
* If you're writing a middleware to watch for navigation events, be sure to
* look for actions of this type.
*/
var CALL_HISTORY_METHOD = '@@router/CALL_HISTORY_METHOD';
function updateLocation(method) {
return function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return {
type: CALL_HISTORY_METHOD,
payload: { method: method, args: args }
};
};
}
/**
* These actions correspond to the history API.
* The associated routerMiddleware will capture these events before they get to
* your reducer and reissue them as the matching function on your history.
*/
var push = updateLocation('push');
var replace = updateLocation('replace');
var go = updateLocation('go');
var goBack = updateLocation('goBack');
var goForward = updateLocation('goForward');
var routerActions = { push: push, replace: replace, go: go, goBack: goBack, goForward: goForward };
/**
* This middleware captures CALL_HISTORY_METHOD actions to redirect to the
* provided history object. This will prevent these actions from reaching your
* reducer or any middleware that comes after this one.
*/
function routerMiddleware(history) {
return function () {
return function (next) {
return function (action) {
if (action.type !== CALL_HISTORY_METHOD) {
return next(action);
}
var _action$payload = action.payload,
method = _action$payload.method,
args = _action$payload.args;
history[method].apply(history, args);
};
};
};
}
exports.ConnectedRouter = ConnectedRouter;
exports.routerMiddleware = routerMiddleware;
exports.getLocation = getLocation;
exports.createMatchSelector = createMatchSelector;
exports.LOCATION_CHANGE = LOCATION_CHANGE;
exports.routerReducer = routerReducer;
exports.CALL_HISTORY_METHOD = CALL_HISTORY_METHOD;
exports.push = push;
exports.replace = replace;
exports.go = go;
exports.goBack = goBack;
exports.goForward = goForward;
exports.routerActions = routerActions;
Object.defineProperty(exports, '__esModule', { value: true });
})));