@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
107 lines (106 loc) • 3.67 kB
JavaScript
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