181 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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;
 | |
| }
 |