UNPKG

next

Version:

The React Framework

100 lines (98 loc) 3.27 kB
'use client'; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { RedirectBoundary: null, RedirectErrorBoundary: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { RedirectBoundary: function() { return RedirectBoundary; }, RedirectErrorBoundary: function() { return RedirectErrorBoundary; } }); const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard"); const _jsxruntime = require("react/jsx-runtime"); const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react")); const _navigation = require("./navigation"); const _redirect = require("./redirect"); const _redirecterror = require("./redirect-error"); function HandleRedirect(param) { let { redirect, reset, redirectType } = param; const router = (0, _navigation.useRouter)(); (0, _react.useEffect)(()=>{ _react.default.startTransition(()=>{ if (redirectType === _redirecterror.RedirectType.push) { router.push(redirect, {}); } else { router.replace(redirect, {}); } reset(); }); }, [ redirect, redirectType, reset, router ]); return null; } class RedirectErrorBoundary extends _react.default.Component { static getDerivedStateFromError(error) { if ((0, _redirecterror.isRedirectError)(error)) { const url = (0, _redirect.getURLFromRedirectError)(error); const redirectType = (0, _redirect.getRedirectTypeFromError)(error); return { redirect: url, redirectType }; } // Re-throw if error is not for redirect throw error; } // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version. render() { const { redirect, redirectType } = this.state; if (redirect !== null && redirectType !== null) { return /*#__PURE__*/ (0, _jsxruntime.jsx)(HandleRedirect, { redirect: redirect, redirectType: redirectType, reset: ()=>this.setState({ redirect: null }) }); } return this.props.children; } constructor(props){ super(props); this.state = { redirect: null, redirectType: null }; } } function RedirectBoundary(param) { let { children } = param; const router = (0, _navigation.useRouter)(); return /*#__PURE__*/ (0, _jsxruntime.jsx)(RedirectErrorBoundary, { router: router, children: children }); } if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=redirect-boundary.js.map