@bytedance/mona-client-mini
Version:
miniapp for mona
41 lines (40 loc) • 1.2 kB
TypeScript
import { FiberRoot } from 'react-reconciler';
import ServerElement, { RenderNode } from './ServerElement';
import { NodeTask } from '@/utils';
interface SpliceTask {
type: NodeTask.SPLICE;
key?: number;
children?: number[];
targetNode: RenderNode | null;
taskNode: ServerElement;
parentPath: any[];
}
interface UpdateTask {
type: NodeTask.UPDATE;
key?: number;
propName: string;
propValue: any;
path: any[];
taskNode: ServerElement;
}
export type Task = SpliceTask | UpdateTask;
export declare const ROOT_KEY = "mona";
export default class TaskController {
context: any;
_root: ServerElement;
tasks: Task[];
_stopUpdate: boolean;
rootContainer?: FiberRoot;
rootKey: string;
constructor(context: any);
requestUpdate(task: Task): void;
applyUpdate(): void;
genUpdatePath(paths: string[]): string;
stopUpdate(): void;
addCallback(cbKey: string, cb: (...args: any) => any): void;
removeCallback(name: string | number): void;
appendChild(child: ServerElement): void;
removeChild(child: ServerElement): void;
insertBefore(child: ServerElement, beforeChild: ServerElement): void;
}
export {};