marko
Version:
Optimized runtime for Marko templates.
29 lines (28 loc) • 1.99 kB
TypeScript
import { type Accessor, AccessorProp, type BranchScope, RendererProp, type Scope } from "../common/types";
import { type Signal, type SignalFn } from "./signals";
export type Renderer = {
[RendererProp.Id]: string;
[RendererProp.Setup]: undefined | SetupFn;
[RendererProp.Clone]: (branch: BranchScope, ns: string) => void;
[RendererProp.Params]: (Signal<unknown> & ReturnMark) | undefined;
[RendererProp.Owner]: Scope | undefined;
[RendererProp.Accessor]: Accessor | undefined;
[RendererProp.LocalClosures]?: SetupFn;
[RendererProp.Lazy]?: 1;
};
export type SetupFn = ((scope: Scope) => void) & ReturnMark;
export type ReturnMark = {
[RendererProp.Returns]?: 1;
};
export declare function createBranch($global: Scope[typeof AccessorProp.Global], renderer: Renderer | string, parentScope: Scope | undefined, parentNode: ParentNode): BranchScope;
export declare function setParentBranch(branch: BranchScope, parentBranch: BranchScope | undefined): void;
export declare function createAndSetupBranch($global: Scope[typeof AccessorProp.Global], renderer: Renderer, parentScope: Scope | undefined, parentNode: ParentNode): BranchScope;
export declare function setupBranch(renderer: Renderer, branch: BranchScope): BranchScope;
export declare function _return_setup<T extends ((...args: any[]) => unknown) | {
_: SetupFn;
}>(setup: T): T;
export declare function _content(id: string, template?: string | 0, walks?: string | 0, setup?: {
_: Signal<unknown>;
} | SetupFn | 0, params?: Signal<unknown> | 0, dynamicScopesAccessor?: Accessor): (owner?: Scope) => Renderer;
export declare function _content_resume(renderer: (owner?: Scope, localValues?: Record<Accessor, unknown>) => Renderer, hasLocalValues?: number): (owner: Scope, ...values: Scope[]) => Renderer;
export declare function _content_closures(renderer: ReturnType<typeof _content>, closureFns: Record<Accessor, SignalFn>): (owner: Scope, closureValues: Record<Accessor, unknown>) => Renderer;