UNPKG

marko

Version:

Optimized runtime for Marko templates.

38 lines (37 loc) 1.26 kB
import { An as ParentBranch, Cn as Scope, Mn as PendingRenders, Sn as Pending, Tn as ClosestBranch, g as renderCatch, jn as PendingEffects, nn as installCatch, rn as placeholderShown, tn as caughtError } from "../dom-C55iHvof.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