@winged/core
Version:
Morden webapp framekwork made only for ts developers. (UNDER DEVELOPMENT, PLEASE DO NOT USE)
25 lines (24 loc) • 1.16 kB
TypeScript
import { StateDependencies, ViewState } from '../types';
import { PrevSibling } from './vdom';
export declare namespace Renderable {
type ChildrenIter = (child: Renderable) => true | void;
type IterAction = 'skipRender' | 'rebuildStateDeps' | 'checkStructChange' | 'destroyDomEl';
}
export declare abstract class Renderable {
private static idCounter;
stateDependencies: StateDependencies | null;
id: number;
private stateDependenciesDirty;
abstract render(state: ViewState, modifiedState: ViewState, container: HTMLElement, prevSibling: PrevSibling): void;
/** skip render this Renderable and it's children, but performs prevSibling.node passing */
skipRender(prevSibling: PrevSibling): void;
destroy(): void;
rebuildStateDependencies(): void;
/** subclass implement */
destroyDomElement(): void;
checkStructChange(): boolean;
/** excute fn in every child, aborted if last call returns true */
abstract forEachChildren(fn: Renderable.ChildrenIter, action: Renderable.IterAction): void;
protected markStructChange(): void;
protected abstract initStateDependencies(): StateDependencies;
}