You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
180 lines
7.3 KiB
180 lines
7.3 KiB
import type { ComponentDevtoolsOptions, ComponentInstance, ComponentTreeNode, InspectedComponentData } from './component.js';
|
|
import type { App } from './app.js';
|
|
import type { CustomInspectorNode, CustomInspectorState, TimelineEvent } from './api.js';
|
|
export declare const enum Hooks {
|
|
TRANSFORM_CALL = "transformCall",
|
|
GET_APP_RECORD_NAME = "getAppRecordName",
|
|
GET_APP_ROOT_INSTANCE = "getAppRootInstance",
|
|
REGISTER_APPLICATION = "registerApplication",
|
|
WALK_COMPONENT_TREE = "walkComponentTree",
|
|
VISIT_COMPONENT_TREE = "visitComponentTree",
|
|
WALK_COMPONENT_PARENTS = "walkComponentParents",
|
|
INSPECT_COMPONENT = "inspectComponent",
|
|
GET_COMPONENT_BOUNDS = "getComponentBounds",
|
|
GET_COMPONENT_NAME = "getComponentName",
|
|
GET_COMPONENT_INSTANCES = "getComponentInstances",
|
|
GET_ELEMENT_COMPONENT = "getElementComponent",
|
|
GET_COMPONENT_ROOT_ELEMENTS = "getComponentRootElements",
|
|
EDIT_COMPONENT_STATE = "editComponentState",
|
|
GET_COMPONENT_DEVTOOLS_OPTIONS = "getAppDevtoolsOptions",
|
|
GET_COMPONENT_RENDER_CODE = "getComponentRenderCode",
|
|
INSPECT_TIMELINE_EVENT = "inspectTimelineEvent",
|
|
TIMELINE_CLEARED = "timelineCleared",
|
|
GET_INSPECTOR_TREE = "getInspectorTree",
|
|
GET_INSPECTOR_STATE = "getInspectorState",
|
|
EDIT_INSPECTOR_STATE = "editInspectorState",
|
|
SET_PLUGIN_SETTINGS = "setPluginSettings"
|
|
}
|
|
export interface ComponentBounds {
|
|
left: number;
|
|
top: number;
|
|
width: number;
|
|
height: number;
|
|
}
|
|
export interface HookPayloads {
|
|
[Hooks.TRANSFORM_CALL]: {
|
|
callName: string;
|
|
inArgs: any[];
|
|
outArgs: any[];
|
|
};
|
|
[Hooks.GET_APP_RECORD_NAME]: {
|
|
app: App;
|
|
name: string;
|
|
};
|
|
[Hooks.GET_APP_ROOT_INSTANCE]: {
|
|
app: App;
|
|
root: ComponentInstance;
|
|
};
|
|
[Hooks.REGISTER_APPLICATION]: {
|
|
app: App;
|
|
};
|
|
[Hooks.WALK_COMPONENT_TREE]: {
|
|
componentInstance: ComponentInstance;
|
|
componentTreeData: ComponentTreeNode[];
|
|
maxDepth: number;
|
|
filter: string;
|
|
recursively: boolean;
|
|
};
|
|
[Hooks.VISIT_COMPONENT_TREE]: {
|
|
app: App;
|
|
componentInstance: ComponentInstance;
|
|
treeNode: ComponentTreeNode;
|
|
filter: string;
|
|
};
|
|
[Hooks.WALK_COMPONENT_PARENTS]: {
|
|
componentInstance: ComponentInstance;
|
|
parentInstances: ComponentInstance[];
|
|
};
|
|
[Hooks.INSPECT_COMPONENT]: {
|
|
app: App;
|
|
componentInstance: ComponentInstance;
|
|
instanceData: InspectedComponentData;
|
|
};
|
|
[Hooks.GET_COMPONENT_BOUNDS]: {
|
|
componentInstance: ComponentInstance;
|
|
bounds: ComponentBounds;
|
|
};
|
|
[Hooks.GET_COMPONENT_NAME]: {
|
|
componentInstance: ComponentInstance;
|
|
name: string;
|
|
};
|
|
[Hooks.GET_COMPONENT_INSTANCES]: {
|
|
app: App;
|
|
componentInstances: ComponentInstance[];
|
|
};
|
|
[Hooks.GET_ELEMENT_COMPONENT]: {
|
|
element: HTMLElement | any;
|
|
componentInstance: ComponentInstance;
|
|
};
|
|
[Hooks.GET_COMPONENT_ROOT_ELEMENTS]: {
|
|
componentInstance: ComponentInstance;
|
|
rootElements: (HTMLElement | any)[];
|
|
};
|
|
[Hooks.EDIT_COMPONENT_STATE]: {
|
|
app: App;
|
|
componentInstance: ComponentInstance;
|
|
path: string[];
|
|
type: string;
|
|
state: EditStatePayload;
|
|
set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void;
|
|
};
|
|
[Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS]: {
|
|
componentInstance: ComponentInstance;
|
|
options: ComponentDevtoolsOptions;
|
|
};
|
|
[Hooks.GET_COMPONENT_RENDER_CODE]: {
|
|
componentInstance: ComponentInstance;
|
|
code: string;
|
|
};
|
|
[Hooks.INSPECT_TIMELINE_EVENT]: {
|
|
app: App;
|
|
layerId: string;
|
|
event: TimelineEvent;
|
|
all?: boolean;
|
|
data: any;
|
|
};
|
|
[Hooks.TIMELINE_CLEARED]: Record<string, never>;
|
|
[Hooks.GET_INSPECTOR_TREE]: {
|
|
app: App;
|
|
inspectorId: string;
|
|
filter: string;
|
|
rootNodes: CustomInspectorNode[];
|
|
};
|
|
[Hooks.GET_INSPECTOR_STATE]: {
|
|
app: App;
|
|
inspectorId: string;
|
|
nodeId: string;
|
|
state: CustomInspectorState;
|
|
};
|
|
[Hooks.EDIT_INSPECTOR_STATE]: {
|
|
app: App;
|
|
inspectorId: string;
|
|
nodeId: string;
|
|
path: string[];
|
|
type: string;
|
|
state: EditStatePayload;
|
|
set: (object: any, path?: string | (string[]), value?: any, cb?: (object: any, field: string, value: any) => void) => void;
|
|
};
|
|
[Hooks.SET_PLUGIN_SETTINGS]: {
|
|
app: App;
|
|
pluginId: string;
|
|
key: string;
|
|
newValue: any;
|
|
oldValue: any;
|
|
settings: any;
|
|
};
|
|
}
|
|
export type EditStatePayload = {
|
|
value: any;
|
|
newKey?: string | null;
|
|
remove?: undefined | false;
|
|
} | {
|
|
value?: undefined;
|
|
newKey?: undefined;
|
|
remove: true;
|
|
};
|
|
export type HookHandler<TPayload, TContext> = (payload: TPayload, ctx: TContext) => void | Promise<void>;
|
|
export interface Hookable<TContext> {
|
|
transformCall: (handler: HookHandler<HookPayloads[Hooks.TRANSFORM_CALL], TContext>) => any;
|
|
getAppRecordName: (handler: HookHandler<HookPayloads[Hooks.GET_APP_RECORD_NAME], TContext>) => any;
|
|
getAppRootInstance: (handler: HookHandler<HookPayloads[Hooks.GET_APP_ROOT_INSTANCE], TContext>) => any;
|
|
registerApplication: (handler: HookHandler<HookPayloads[Hooks.REGISTER_APPLICATION], TContext>) => any;
|
|
walkComponentTree: (handler: HookHandler<HookPayloads[Hooks.WALK_COMPONENT_TREE], TContext>) => any;
|
|
visitComponentTree: (handler: HookHandler<HookPayloads[Hooks.VISIT_COMPONENT_TREE], TContext>) => any;
|
|
walkComponentParents: (handler: HookHandler<HookPayloads[Hooks.WALK_COMPONENT_PARENTS], TContext>) => any;
|
|
inspectComponent: (handler: HookHandler<HookPayloads[Hooks.INSPECT_COMPONENT], TContext>) => any;
|
|
getComponentBounds: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_BOUNDS], TContext>) => any;
|
|
getComponentName: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_NAME], TContext>) => any;
|
|
getComponentInstances: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_INSTANCES], TContext>) => any;
|
|
getElementComponent: (handler: HookHandler<HookPayloads[Hooks.GET_ELEMENT_COMPONENT], TContext>) => any;
|
|
getComponentRootElements: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_ROOT_ELEMENTS], TContext>) => any;
|
|
editComponentState: (handler: HookHandler<HookPayloads[Hooks.EDIT_COMPONENT_STATE], TContext>) => any;
|
|
getComponentDevtoolsOptions: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_DEVTOOLS_OPTIONS], TContext>) => any;
|
|
getComponentRenderCode: (handler: HookHandler<HookPayloads[Hooks.GET_COMPONENT_RENDER_CODE], TContext>) => any;
|
|
inspectTimelineEvent: (handler: HookHandler<HookPayloads[Hooks.INSPECT_TIMELINE_EVENT], TContext>) => any;
|
|
timelineCleared: (handler: HookHandler<HookPayloads[Hooks.TIMELINE_CLEARED], TContext>) => any;
|
|
getInspectorTree: (handler: HookHandler<HookPayloads[Hooks.GET_INSPECTOR_TREE], TContext>) => any;
|
|
getInspectorState: (handler: HookHandler<HookPayloads[Hooks.GET_INSPECTOR_STATE], TContext>) => any;
|
|
editInspectorState: (handler: HookHandler<HookPayloads[Hooks.EDIT_INSPECTOR_STATE], TContext>) => any;
|
|
setPluginSettings: (handler: HookHandler<HookPayloads[Hooks.SET_PLUGIN_SETTINGS], TContext>) => any;
|
|
}
|