123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- import type { ComponentBounds, Hookable } from './hooks.js';
- import type { Context } from './context.js';
- import type { ComponentInstance, ComponentState, StateBase } from './component.js';
- import type { App } from './app.js';
- import type { ID } from './util.js';
- export interface DevtoolsPluginApi<TSettings> {
- on: Hookable<Context>;
- notifyComponentUpdate(instance?: ComponentInstance): void;
- addTimelineLayer(options: TimelineLayerOptions): void;
- addTimelineEvent(options: TimelineEventOptions): void;
- addInspector(options: CustomInspectorOptions): void;
- sendInspectorTree(inspectorId: string): void;
- sendInspectorState(inspectorId: string): void;
- selectInspectorNode(inspectorId: string, nodeId: string): void;
- getComponentBounds(instance: ComponentInstance): Promise<ComponentBounds>;
- getComponentName(instance: ComponentInstance): Promise<string>;
- getComponentInstances(app: App): Promise<ComponentInstance[]>;
- highlightElement(instance: ComponentInstance): void;
- unhighlightElement(): void;
- getSettings(pluginId?: string): TSettings;
- now(): number;
- /**
- * @private Not implemented yet
- */
- setSettings(values: TSettings): void;
- }
- export interface AppRecord {
- id: string;
- name: string;
- instanceMap: Map<string, ComponentInstance>;
- rootInstance: ComponentInstance;
- }
- export interface TimelineLayerOptions<TData = any, TMeta = any> {
- id: string;
- label: string;
- color: number;
- skipScreenshots?: boolean;
- groupsOnly?: boolean;
- ignoreNoDurationGroups?: boolean;
- screenshotOverlayRender?: (event: TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent, ctx: ScreenshotOverlayRenderContext) => ScreenshotOverlayRenderResult | Promise<ScreenshotOverlayRenderResult>;
- }
- export interface ScreenshotOverlayEvent {
- layerId: string;
- renderMeta: any;
- }
- export interface ScreenshotOverlayRenderContext<TData = any, TMeta = any> {
- screenshot: ScreenshotData;
- events: (TimelineEvent<TData, TMeta> & ScreenshotOverlayEvent)[];
- index: number;
- }
- export declare type ScreenshotOverlayRenderResult = HTMLElement | string | false;
- export interface ScreenshotData {
- time: number;
- }
- export interface TimelineEventOptions {
- layerId: string;
- event: TimelineEvent;
- all?: boolean;
- }
- export interface TimelineEvent<TData = any, TMeta = any> {
- time: number;
- data: TData;
- logType?: 'default' | 'warning' | 'error';
- meta?: TMeta;
- groupId?: ID;
- title?: string;
- subtitle?: string;
- }
- export interface TimelineMarkerOptions {
- id: string;
- time: number;
- color: number;
- label: string;
- all?: boolean;
- }
- export interface CustomInspectorOptions {
- id: string;
- label: string;
- icon?: string;
- treeFilterPlaceholder?: string;
- stateFilterPlaceholder?: string;
- noSelectionText?: string;
- actions?: {
- icon: string;
- tooltip?: string;
- action: () => void | Promise<void>;
- }[];
- nodeActions?: {
- icon: string;
- tooltip?: string;
- action: (nodeId: string) => void | Promise<void>;
- }[];
- }
- export interface CustomInspectorNode {
- id: string;
- label: string;
- children?: CustomInspectorNode[];
- tags?: InspectorNodeTag[];
- }
- export interface InspectorNodeTag {
- label: string;
- textColor: number;
- backgroundColor: number;
- tooltip?: string;
- }
- export interface CustomInspectorState {
- [key: string]: (StateBase | Omit<ComponentState, 'type'>)[];
- }
|