|
@@ -0,0 +1,180 @@
|
|
|
|
+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;
|
|
|
|
+}
|