marko
Version:
Optimized runtime for Marko templates.
27 lines (26 loc) • 956 B
JavaScript
let handlePendingTry = (fn, scope, branch) => {
for (; branch;) {
if (branch.O?.i) return (branch.J ||= []).push(fn, scope);
branch = branch.N;
}
};
import { Jt as caughtError, Xt as placeholderShown, Yt as installCatch, h as renderCatch } from "../dom-Cj4HQ7T_.mjs";
//#region src/dom/catch.feat.ts
installCatch((runEffects) => (effects, checkPending = placeholderShown.has(effects)) => {
if (checkPending || caughtError.has(effects)) {
let i = 0, fn, scope, branch;
for (; i < effects.length;) fn = effects[i++], scope = effects[i++], (branch = scope.F)?.H !== 0 && !(checkPending && handlePendingTry(fn, scope, branch)) && fn(scope);
} else runEffects(effects);
}, (runRender) => (render) => {
try {
let branch = render.b.F;
for (; branch;) {
if (branch.W) return render.f = 1, branch.W.push(render);
branch = branch.N;
}
render.f = 0, runRender(render);
} catch (error) {
renderCatch(render.b, error);
}
});
//#endregion