25 lines
725 B
Plaintext
25 lines
725 B
Plaintext
import { DOM_ERROR_HANDLER } from "../constants.js";
|
|
import { Fragment } from "./jsx-dev-runtime.js";
|
|
import "./jsx-runtime.js";
|
|
//#region src/jsx/dom/components.ts
|
|
const ErrorBoundary = (({ children, fallback, fallbackRender, onError }) => {
|
|
const res = Fragment({ children });
|
|
res[DOM_ERROR_HANDLER] = (err) => {
|
|
if (err instanceof Promise) throw err;
|
|
onError?.(err);
|
|
return fallbackRender?.(err) || fallback;
|
|
};
|
|
return res;
|
|
});
|
|
const Suspense = (({ children, fallback }) => {
|
|
const res = Fragment({ children });
|
|
res[DOM_ERROR_HANDLER] = (err, retry) => {
|
|
if (!(err instanceof Promise)) throw err;
|
|
err.finally(retry);
|
|
return fallback;
|
|
};
|
|
return res;
|
|
});
|
|
//#endregion
|
|
export { ErrorBoundary, Suspense };
|