UNPKG

31.1 kBSource Map (JSON)View Raw
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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"}
\No newline at end of file