UNPKG

react-navi

Version:

A batteries-included router for react.

73 lines 2.85 kB
var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import * as React from 'react'; import { NotFoundError } from 'navi'; import { NaviContext } from './NaviContext'; export var NotFoundBoundary = function ErrorBoundary(props) { return (React.createElement(NaviContext.Consumer, null, function (context) { return React.createElement(InnerNotFoundBoundary, __assign({ context: context }, props)); })); }; var InnerNotFoundBoundary = /** @class */ (function (_super) { __extends(InnerNotFoundBoundary, _super); function InnerNotFoundBoundary(props) { var _this = _super.call(this, props) || this; _this.state = {}; return _this; } InnerNotFoundBoundary.getDerivedStateFromProps = function (props, state) { if (state.error && props.context.steadyRoute.url.pathname !== state.errorPathname) { return { error: undefined, errorPathname: undefined, errorInfo: undefined, }; } return null; }; InnerNotFoundBoundary.prototype.componentDidCatch = function (error, errorInfo) { if (error instanceof NotFoundError) { this.setState({ error: error, errorInfo: errorInfo, errorPathname: this.props.context.steadyRoute.url.pathname, }); } else { throw error; } }; InnerNotFoundBoundary.prototype.componentDidUpdate = function (prevProps, prevState) { if (this.state.error && !prevState.error) { // TODO: scroll to top / render title if necessary } }; InnerNotFoundBoundary.prototype.render = function () { if (this.state.error) { return this.props.render(this.state.error); } return this.props.children; }; return InnerNotFoundBoundary; }(React.Component)); //# sourceMappingURL=NotFoundBoundary.js.map