UNPKG

@tanstack/solid-router

Version:

Modern and scalable routing for Solid applications

107 lines (106 loc) 3.67 kB
const require_runtime = require("./_virtual/_rolldown/runtime.cjs"); const require_nonRouteComponentContext = require("./nonRouteComponentContext.cjs"); let _solidjs_web = require("@solidjs/web"); let solid_js = require("solid-js"); solid_js = require_runtime.__toESM(solid_js, 1); //#region src/CatchBoundary.tsx var _tmpl$ = /* @__PURE__ */ (0, _solidjs_web.template)(`<div style=padding:.5rem;max-width:100%><div style=display:flex;align-items:center;gap:.5rem><strong style=font-size:1rem>Something went wrong!</strong><button style="appearance:none;font-size:.6em;border:1px solid currentColor;padding:.1rem .2rem;font-weight:bold;border-radius:.25rem"></button></div><div style=height:.25rem>`); var _tmpl$2 = /* @__PURE__ */ (0, _solidjs_web.template)(`<div><pre style="font-size:.7em;border:1px solid red;border-radius:.25rem;padding:.3rem;color:red;overflow:auto">`); var _tmpl$3 = /* @__PURE__ */ (0, _solidjs_web.template)(`<code>`); function CatchBoundary(props) { const [retryKey, setRetryKey] = solid_js.createSignal({}); let resetBoundary; let initialized = false; let previousKey; solid_js.onCleanup(() => { resetBoundary = void 0; }); solid_js.createEffect(props.getResetKey, (key) => { if (!initialized) { initialized = true; previousKey = key; return; } if (key === previousKey) return; previousKey = key; const reset = resetBoundary; if (reset) queueMicrotask(() => { if (resetBoundary !== reset) return; setRetryKey({}); reset(); solid_js.flush(); }); }); return (0, _solidjs_web.createComponent)(solid_js.Errored, { fallback: (error, reset) => { const resolvedError = solid_js.untrack(() => error()); props.onCatch?.(resolvedError); resetBoundary = reset; return process.env.NODE_ENV !== "production" ? require_nonRouteComponentContext.renderInNonRouteComponentContext(() => (0, _solidjs_web.createComponent)(_solidjs_web.Dynamic, { get component() { return props.errorComponent ?? ErrorComponent; }, error: resolvedError, reset }), "errorComponent") : (0, _solidjs_web.createComponent)(_solidjs_web.Dynamic, { get component() { return props.errorComponent ?? ErrorComponent; }, error: resolvedError, reset }); }, get children() { return (0, _solidjs_web.createComponent)(solid_js.Show, { get when() { return retryKey(); }, keyed: true, children: (_retryKey) => props.render?.() ?? props.children }); } }); } function ErrorComponent({ error }) { const [show, setShow] = solid_js.createSignal(process.env.NODE_ENV !== "production"); var _el$ = _tmpl$(); var _el$2 = _el$.firstChild; var _el$4 = _el$2.firstChild.nextSibling; _el$2.nextSibling; _el$4.$$click = () => setShow((d) => !d); (0, _solidjs_web.insert)(_el$4, () => { return show() ? "Hide Error" : "Show Error"; }); (0, _solidjs_web.insert)(_el$, (() => { var _c$ = (0, _solidjs_web.memo)(() => { return !!show(); }); return () => { return _c$() ? (() => { var _el$6 = _tmpl$2(); var _el$7 = _el$6.firstChild; (0, _solidjs_web.insert)(_el$7, (() => { var _c$2 = (0, _solidjs_web.memo)(() => { return !!error.message; }); return () => { return _c$2() ? (() => { var _el$8 = _tmpl$3(); (0, _solidjs_web.insert)(_el$8, () => { return error.message; }); return _el$8; })() : null; }; })()); return _el$6; })() : null; }; })(), null); return _el$; } (0, _solidjs_web.delegateEvents)(["click"]); //#endregion exports.CatchBoundary = CatchBoundary; exports.ErrorComponent = ErrorComponent; //# sourceMappingURL=CatchBoundary.cjs.map