UNPKG

marko

Version:

Optimized runtime for Marko templates.

38 lines (37 loc) 1.26 kB
import { Cn as PendingRenders, Jt as caughtError, Sn as PendingEffects, Xt as placeholderShown, Yt as installCatch, gn as ClosestBranch, h as renderCatch, mn as Scope, pn as Pending, xn as ParentBranch } from "../dom-BJ93mcSe.mjs"; //#region src/dom/catch.feat.ts const handlePendingTry = (fn, scope, branch) => { while (branch) { if (branch["#AwaitCounter"]?.i) return (branch[PendingEffects] ||= []).push(fn, scope); branch = branch[ParentBranch]; } }; installCatch((runEffects) => (effects, checkPending = placeholderShown.has(effects)) => { if (checkPending || caughtError.has(effects)) { let i = 0; let fn; let scope; let branch; for (; i < effects.length;) { fn = effects[i++]; scope = effects[i++]; if ((branch = scope["#ClosestBranch"])?.["#Gen"] !== 0 && !(checkPending && handlePendingTry(fn, scope, branch))) fn(scope); } } else runEffects(effects); }, (runRender) => (render) => { try { let branch = render[Scope][ClosestBranch]; while (branch) { if (branch["#PendingRenders"]) { render[Pending] = 1; return branch[PendingRenders].push(render); } branch = branch[ParentBranch]; } render[Pending] = 0; runRender(render); } catch (error) { renderCatch(render[Scope], error); } }); //#endregion