react-router 5.2.0 → 5.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -1
- package/README.md +2 -2
- package/cjs/react-router.js +60 -58
- package/cjs/react-router.js.map +1 -1
- package/cjs/react-router.min.js +1 -1
- package/cjs/react-router.min.js.map +1 -1
- package/esm/react-router.js +49 -57
- package/esm/react-router.js.map +1 -1
- package/modules/HistoryContext.js +1 -1
- package/modules/Route.js +1 -1
- package/modules/Router.js +18 -6
- package/modules/RouterContext.js +1 -9
- package/modules/{createNameContext.js → createNamedContext.js} +0 -0
- package/modules/hooks.js +4 -5
- package/modules/index.js +2 -3
- package/package.json +12 -6
- package/umd/react-router.js +61 -66
- package/umd/react-router.js.map +1 -1
- package/umd/react-router.min.js +1 -1
- package/umd/react-router.min.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-router.min.js","sources":["../modules/createNameContext.js","../modules/HistoryContext.js","../modules/RouterContext.js","../modules/Router.js","../modules/MemoryRouter.js","../modules/Lifecycle.js","../modules/Prompt.js","../modules/generatePath.js","../modules/Redirect.js","../modules/matchPath.js","../modules/Route.js","../modules/StaticRouter.js","../modules/Switch.js","../modules/withRouter.js","../modules/hooks.js"],"sourcesContent":["// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Prompt> outside a <Router>\");\n\n if (!when || context.staticContext) return null;\n\n const method = context.history.block;\n\n return (\n <Lifecycle\n onMount={self => {\n self.release = method(message);\n }}\n onUpdate={(self, prevProps) => {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n }}\n onUnmount={self => {\n self.release();\n }}\n message={message}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a <Router>`\n );\n return (\n <Component\n {...remainingProps}\n {...context}\n ref={wrappedComponentRef}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n"],"names":["createNamedContext","name","context","createContext","displayName","historyContext","Router","props","state","location","history","_isMounted","_pendingLocation","staticContext","unlisten","listen","_this","setState","computeRootMatch","pathname","path","url","params","isExact","componentDidMount","this","componentWillUnmount","render","React","RouterContext","Provider","value","match","HistoryContext","children","Component","MemoryRouter","createHistory","Lifecycle","onMount","call","componentDidUpdate","prevProps","onUpdate","onUnmount","Prompt","message","when","Consumer","invariant","method","block","self","release","cache","cacheLimit","cacheCount","compilePath","generator","pathToRegexp","compile","generatePath","pretty","Redirect","computedMatch","to","push","replace","createLocation","prevLocation","locationsAreEqual","key","options","cacheKey","end","strict","sensitive","pathCache","keys","result","regexp","matchPath","Array","isArray","exact","concat","reduce","matched","exec","values","memo","index","Route","component","length","createElement","addLeadingSlash","charAt","addBasename","basename","stripBasename","base","indexOf","substr","createURL","createPath","staticHandler","methodName","noop","StaticRouter","handlePush","navigateTo","handleReplace","handleListen","handleBlock","action","rest","createHref","go","goBack","goForward","Switch","element","Children","forEach","child","isValidElement","from","cloneElement","withRouter","C","wrappedComponentRef","remainingProps","ref","WrappedComponent","hoistStatics","useContext","useHistory","useLocation","Context","useParams","useRouteMatch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-router.min.js","sources":["../modules/createNamedContext.js","../modules/HistoryContext.js","../modules/RouterContext.js","../modules/Router.js","../modules/MemoryRouter.js","../modules/Lifecycle.js","../modules/Prompt.js","../modules/generatePath.js","../modules/Redirect.js","../modules/matchPath.js","../modules/Route.js","../modules/StaticRouter.js","../modules/Switch.js","../modules/withRouter.js","../modules/hooks.js"],"sourcesContent":["// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any <Redirect>s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the <Router> is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n <RouterContext.Provider\n value={{\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }}\n >\n <HistoryContext.Provider\n children={this.props.children || null}\n value={this.props.history}\n />\n </RouterContext.Provider>\n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change <Router history>\"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a <Router> that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return <Router history={this.history} children={this.props.children} />;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<MemoryRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\nfunction Prompt({ message, when = true }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Prompt> outside a <Router>\");\n\n if (!when || context.staticContext) return null;\n\n const method = context.history.block;\n\n return (\n <Lifecycle\n onMount={self => {\n self.release = method(message);\n }}\n onUpdate={(self, prevProps) => {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n }}\n onUnmount={self => {\n self.release();\n }}\n message={message}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n const messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nexport default Prompt;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Redirect> outside a <Router>\");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n <Lifecycle\n onMount={() => {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `<Route${path ? ` path=\"${path}\"` : \"\"}>, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Route> outside a <Router>\");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // <Switch> already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n <RouterContext.Provider value={props}>\n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n </RouterContext.Provider>\n );\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use <Route component> and <Route children> in the same route; <Route component> will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use <Route render> and <Route children> in the same route; <Route render> will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with <StaticRouter>\", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" <Router>, so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return <Router {...rest} history={history} staticContext={context} />;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \"<StaticRouter> ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first <Route> that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(context, \"You should not use <Switch> outside a <Router>\");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two <Route>s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n </RouterContext.Consumer>\n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n '<Switch> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n '<Switch> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n <RouterContext.Consumer>\n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a <Router>`\n );\n return (\n <Component\n {...remainingProps}\n {...context}\n ref={wrappedComponentRef}\n />\n );\n }}\n </RouterContext.Consumer>\n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n"],"names":["createNamedContext","name","context","createContext","displayName","historyContext","Router","props","state","location","history","_isMounted","_pendingLocation","staticContext","unlisten","listen","computeRootMatch","pathname","path","url","params","isExact","componentDidMount","this","_this2","setState","componentWillUnmount","render","React","RouterContext","Provider","value","match","HistoryContext","children","Component","MemoryRouter","createHistory","_this","Lifecycle","onMount","call","componentDidUpdate","prevProps","onUpdate","onUnmount","Prompt","message","when","Consumer","invariant","method","block","self","release","cache","cacheLimit","cacheCount","compilePath","generator","pathToRegexp","compile","generatePath","pretty","Redirect","computedMatch","to","push","replace","createLocation","prevLocation","locationsAreEqual","key","options","cacheKey","end","strict","sensitive","pathCache","keys","result","regexp","matchPath","Array","isArray","exact","concat","reduce","matched","exec","values","memo","index","isEmptyChildren","Children","count","Route","component","createElement","addLeadingSlash","charAt","addBasename","basename","stripBasename","base","indexOf","substr","length","createURL","createPath","staticHandler","methodName","noop","StaticRouter","handlePush","navigateTo","handleReplace","handleListen","handleBlock","action","rest","createHref","go","goBack","goForward","Switch","element","forEach","child","isValidElement","from","cloneElement","withRouter","C","wrappedComponentRef","remainingProps","ref","WrappedComponent","hoistStatics","useContext","useHistory","useLocation","useParams","useRouteMatch"],"mappings":"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"}
|
package/esm/react-router.js
CHANGED
|
@@ -19,29 +19,15 @@ var createNamedContext = function createNamedContext(name) {
|
|
|
19
19
|
return context;
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
-
var historyContext =
|
|
23
|
-
/*#__PURE__*/
|
|
24
|
-
createNamedContext("Router-History");
|
|
22
|
+
var historyContext = /*#__PURE__*/createNamedContext("Router-History");
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var createNamedContext$1 = function createNamedContext(name) {
|
|
29
|
-
var context = createContext();
|
|
30
|
-
context.displayName = name;
|
|
31
|
-
return context;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
var context =
|
|
35
|
-
/*#__PURE__*/
|
|
36
|
-
createNamedContext$1("Router");
|
|
24
|
+
var context = /*#__PURE__*/createNamedContext("Router");
|
|
37
25
|
|
|
38
26
|
/**
|
|
39
27
|
* The public API for putting history on context.
|
|
40
28
|
*/
|
|
41
29
|
|
|
42
|
-
var Router =
|
|
43
|
-
/*#__PURE__*/
|
|
44
|
-
function (_React$Component) {
|
|
30
|
+
var Router = /*#__PURE__*/function (_React$Component) {
|
|
45
31
|
_inheritsLoose(Router, _React$Component);
|
|
46
32
|
|
|
47
33
|
Router.computeRootMatch = function computeRootMatch(pathname) {
|
|
@@ -70,13 +56,7 @@ function (_React$Component) {
|
|
|
70
56
|
|
|
71
57
|
if (!props.staticContext) {
|
|
72
58
|
_this.unlisten = props.history.listen(function (location) {
|
|
73
|
-
|
|
74
|
-
_this.setState({
|
|
75
|
-
location: location
|
|
76
|
-
});
|
|
77
|
-
} else {
|
|
78
|
-
_this._pendingLocation = location;
|
|
79
|
-
}
|
|
59
|
+
_this._pendingLocation = location;
|
|
80
60
|
});
|
|
81
61
|
}
|
|
82
62
|
|
|
@@ -86,8 +66,26 @@ function (_React$Component) {
|
|
|
86
66
|
var _proto = Router.prototype;
|
|
87
67
|
|
|
88
68
|
_proto.componentDidMount = function componentDidMount() {
|
|
69
|
+
var _this2 = this;
|
|
70
|
+
|
|
89
71
|
this._isMounted = true;
|
|
90
72
|
|
|
73
|
+
if (this.unlisten) {
|
|
74
|
+
// Any pre-mount location changes have been captured at
|
|
75
|
+
// this point, so unregister the listener.
|
|
76
|
+
this.unlisten();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (!this.props.staticContext) {
|
|
80
|
+
this.unlisten = this.props.history.listen(function (location) {
|
|
81
|
+
if (_this2._isMounted) {
|
|
82
|
+
_this2.setState({
|
|
83
|
+
location: location
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
91
89
|
if (this._pendingLocation) {
|
|
92
90
|
this.setState({
|
|
93
91
|
location: this._pendingLocation
|
|
@@ -96,18 +94,22 @@ function (_React$Component) {
|
|
|
96
94
|
};
|
|
97
95
|
|
|
98
96
|
_proto.componentWillUnmount = function componentWillUnmount() {
|
|
99
|
-
if (this.unlisten)
|
|
97
|
+
if (this.unlisten) {
|
|
98
|
+
this.unlisten();
|
|
99
|
+
this._isMounted = false;
|
|
100
|
+
this._pendingLocation = null;
|
|
101
|
+
}
|
|
100
102
|
};
|
|
101
103
|
|
|
102
104
|
_proto.render = function render() {
|
|
103
|
-
return React.createElement(context.Provider, {
|
|
105
|
+
return /*#__PURE__*/React.createElement(context.Provider, {
|
|
104
106
|
value: {
|
|
105
107
|
history: this.props.history,
|
|
106
108
|
location: this.state.location,
|
|
107
109
|
match: Router.computeRootMatch(this.state.location.pathname),
|
|
108
110
|
staticContext: this.props.staticContext
|
|
109
111
|
}
|
|
110
|
-
}, React.createElement(historyContext.Provider, {
|
|
112
|
+
}, /*#__PURE__*/React.createElement(historyContext.Provider, {
|
|
111
113
|
children: this.props.children || null,
|
|
112
114
|
value: this.props.history
|
|
113
115
|
}));
|
|
@@ -132,9 +134,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
132
134
|
* The public API for a <Router> that stores location in memory.
|
|
133
135
|
*/
|
|
134
136
|
|
|
135
|
-
var MemoryRouter =
|
|
136
|
-
/*#__PURE__*/
|
|
137
|
-
function (_React$Component) {
|
|
137
|
+
var MemoryRouter = /*#__PURE__*/function (_React$Component) {
|
|
138
138
|
_inheritsLoose(MemoryRouter, _React$Component);
|
|
139
139
|
|
|
140
140
|
function MemoryRouter() {
|
|
@@ -152,7 +152,7 @@ function (_React$Component) {
|
|
|
152
152
|
var _proto = MemoryRouter.prototype;
|
|
153
153
|
|
|
154
154
|
_proto.render = function render() {
|
|
155
|
-
return React.createElement(Router, {
|
|
155
|
+
return /*#__PURE__*/React.createElement(Router, {
|
|
156
156
|
history: this.history,
|
|
157
157
|
children: this.props.children
|
|
158
158
|
});
|
|
@@ -175,9 +175,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
175
175
|
};
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
var Lifecycle =
|
|
179
|
-
/*#__PURE__*/
|
|
180
|
-
function (_React$Component) {
|
|
178
|
+
var Lifecycle = /*#__PURE__*/function (_React$Component) {
|
|
181
179
|
_inheritsLoose(Lifecycle, _React$Component);
|
|
182
180
|
|
|
183
181
|
function Lifecycle() {
|
|
@@ -213,11 +211,11 @@ function Prompt(_ref) {
|
|
|
213
211
|
var message = _ref.message,
|
|
214
212
|
_ref$when = _ref.when,
|
|
215
213
|
when = _ref$when === void 0 ? true : _ref$when;
|
|
216
|
-
return React.createElement(context.Consumer, null, function (context) {
|
|
214
|
+
return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {
|
|
217
215
|
!context ? process.env.NODE_ENV !== "production" ? invariant(false, "You should not use <Prompt> outside a <Router>") : invariant(false) : void 0;
|
|
218
216
|
if (!when || context.staticContext) return null;
|
|
219
217
|
var method = context.history.block;
|
|
220
|
-
return React.createElement(Lifecycle, {
|
|
218
|
+
return /*#__PURE__*/React.createElement(Lifecycle, {
|
|
221
219
|
onMount: function onMount(self) {
|
|
222
220
|
self.release = method(message);
|
|
223
221
|
},
|
|
@@ -286,7 +284,7 @@ function Redirect(_ref) {
|
|
|
286
284
|
to = _ref.to,
|
|
287
285
|
_ref$push = _ref.push,
|
|
288
286
|
push = _ref$push === void 0 ? false : _ref$push;
|
|
289
|
-
return React.createElement(context.Consumer, null, function (context) {
|
|
287
|
+
return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {
|
|
290
288
|
!context ? process.env.NODE_ENV !== "production" ? invariant(false, "You should not use <Redirect> outside a <Router>") : invariant(false) : void 0;
|
|
291
289
|
var history = context.history,
|
|
292
290
|
staticContext = context.staticContext;
|
|
@@ -301,7 +299,7 @@ function Redirect(_ref) {
|
|
|
301
299
|
return null;
|
|
302
300
|
}
|
|
303
301
|
|
|
304
|
-
return React.createElement(Lifecycle, {
|
|
302
|
+
return /*#__PURE__*/React.createElement(Lifecycle, {
|
|
305
303
|
onMount: function onMount() {
|
|
306
304
|
method(location);
|
|
307
305
|
},
|
|
@@ -421,9 +419,7 @@ function evalChildrenDev(children, props, path) {
|
|
|
421
419
|
*/
|
|
422
420
|
|
|
423
421
|
|
|
424
|
-
var Route =
|
|
425
|
-
/*#__PURE__*/
|
|
426
|
-
function (_React$Component) {
|
|
422
|
+
var Route = /*#__PURE__*/function (_React$Component) {
|
|
427
423
|
_inheritsLoose(Route, _React$Component);
|
|
428
424
|
|
|
429
425
|
function Route() {
|
|
@@ -435,7 +431,7 @@ function (_React$Component) {
|
|
|
435
431
|
_proto.render = function render() {
|
|
436
432
|
var _this = this;
|
|
437
433
|
|
|
438
|
-
return React.createElement(context.Consumer, null, function (context$1) {
|
|
434
|
+
return /*#__PURE__*/React.createElement(context.Consumer, null, function (context$1) {
|
|
439
435
|
!context$1 ? process.env.NODE_ENV !== "production" ? invariant(false, "You should not use <Route> outside a <Router>") : invariant(false) : void 0;
|
|
440
436
|
var location = _this.props.location || context$1.location;
|
|
441
437
|
var match = _this.props.computedMatch ? _this.props.computedMatch // <Switch> already computed the match for us
|
|
@@ -452,13 +448,13 @@ function (_React$Component) {
|
|
|
452
448
|
render = _this$props.render; // Preact uses an empty array as children by
|
|
453
449
|
// default, so use null if that's the case.
|
|
454
450
|
|
|
455
|
-
if (Array.isArray(children) && children
|
|
451
|
+
if (Array.isArray(children) && isEmptyChildren(children)) {
|
|
456
452
|
children = null;
|
|
457
453
|
}
|
|
458
454
|
|
|
459
|
-
return React.createElement(context.Provider, {
|
|
455
|
+
return /*#__PURE__*/React.createElement(context.Provider, {
|
|
460
456
|
value: props
|
|
461
|
-
}, props.match ? children ? typeof children === "function" ? process.env.NODE_ENV !== "production" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? React.createElement(component, props) : render ? render(props) : null : typeof children === "function" ? process.env.NODE_ENV !== "production" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);
|
|
457
|
+
}, props.match ? children ? typeof children === "function" ? process.env.NODE_ENV !== "production" ? evalChildrenDev(children, props, _this.props.path) : children(props) : children : component ? /*#__PURE__*/React.createElement(component, props) : render ? render(props) : null : typeof children === "function" ? process.env.NODE_ENV !== "production" ? evalChildrenDev(children, props, _this.props.path) : children(props) : null);
|
|
462
458
|
});
|
|
463
459
|
};
|
|
464
460
|
|
|
@@ -532,9 +528,7 @@ function noop() {}
|
|
|
532
528
|
*/
|
|
533
529
|
|
|
534
530
|
|
|
535
|
-
var StaticRouter =
|
|
536
|
-
/*#__PURE__*/
|
|
537
|
-
function (_React$Component) {
|
|
531
|
+
var StaticRouter = /*#__PURE__*/function (_React$Component) {
|
|
538
532
|
_inheritsLoose(StaticRouter, _React$Component);
|
|
539
533
|
|
|
540
534
|
function StaticRouter() {
|
|
@@ -602,7 +596,7 @@ function (_React$Component) {
|
|
|
602
596
|
listen: this.handleListen,
|
|
603
597
|
block: this.handleBlock
|
|
604
598
|
};
|
|
605
|
-
return React.createElement(Router, _extends({}, rest, {
|
|
599
|
+
return /*#__PURE__*/React.createElement(Router, _extends({}, rest, {
|
|
606
600
|
history: history,
|
|
607
601
|
staticContext: context
|
|
608
602
|
}));
|
|
@@ -627,9 +621,7 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
627
621
|
* The public API for rendering the first <Route> that matches.
|
|
628
622
|
*/
|
|
629
623
|
|
|
630
|
-
var Switch =
|
|
631
|
-
/*#__PURE__*/
|
|
632
|
-
function (_React$Component) {
|
|
624
|
+
var Switch = /*#__PURE__*/function (_React$Component) {
|
|
633
625
|
_inheritsLoose(Switch, _React$Component);
|
|
634
626
|
|
|
635
627
|
function Switch() {
|
|
@@ -641,7 +633,7 @@ function (_React$Component) {
|
|
|
641
633
|
_proto.render = function render() {
|
|
642
634
|
var _this = this;
|
|
643
635
|
|
|
644
|
-
return React.createElement(context.Consumer, null, function (context) {
|
|
636
|
+
return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {
|
|
645
637
|
!context ? process.env.NODE_ENV !== "production" ? invariant(false, "You should not use <Switch> outside a <Router>") : invariant(false) : void 0;
|
|
646
638
|
var location = _this.props.location || context.location;
|
|
647
639
|
var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()
|
|
@@ -650,7 +642,7 @@ function (_React$Component) {
|
|
|
650
642
|
// component at different URLs.
|
|
651
643
|
|
|
652
644
|
React.Children.forEach(_this.props.children, function (child) {
|
|
653
|
-
if (match == null && React.isValidElement(child)) {
|
|
645
|
+
if (match == null && /*#__PURE__*/React.isValidElement(child)) {
|
|
654
646
|
element = child;
|
|
655
647
|
var path = child.props.path || child.props.from;
|
|
656
648
|
match = path ? matchPath(location.pathname, _extends({}, child.props, {
|
|
@@ -658,7 +650,7 @@ function (_React$Component) {
|
|
|
658
650
|
})) : context.match;
|
|
659
651
|
}
|
|
660
652
|
});
|
|
661
|
-
return match ? React.cloneElement(element, {
|
|
653
|
+
return match ? /*#__PURE__*/React.cloneElement(element, {
|
|
662
654
|
location: location,
|
|
663
655
|
computedMatch: match
|
|
664
656
|
}) : null;
|
|
@@ -691,9 +683,9 @@ function withRouter(Component) {
|
|
|
691
683
|
var wrappedComponentRef = props.wrappedComponentRef,
|
|
692
684
|
remainingProps = _objectWithoutPropertiesLoose(props, ["wrappedComponentRef"]);
|
|
693
685
|
|
|
694
|
-
return React.createElement(context.Consumer, null, function (context) {
|
|
686
|
+
return /*#__PURE__*/React.createElement(context.Consumer, null, function (context) {
|
|
695
687
|
!context ? process.env.NODE_ENV !== "production" ? invariant(false, "You should not use <" + displayName + " /> outside a <Router>") : invariant(false) : void 0;
|
|
696
|
-
return React.createElement(Component, _extends({}, remainingProps, context, {
|
|
688
|
+
return /*#__PURE__*/React.createElement(Component, _extends({}, remainingProps, context, {
|
|
697
689
|
ref: wrappedComponentRef
|
|
698
690
|
}));
|
|
699
691
|
});
|