import { ComponentBounds , Hookable } from './hooks' ; import { Context } from './context' ; import { ComponentInstance , ComponentState , StateBase } from './component' ; import { App } from './app' ; import { ID } from './util' ; export interface DevtoolsPluginApi < TSettings > { on : Hookable < Context > ; notifyComponentUpdate ( instance ? ) : void ; addTimelineLayer ( options ) : void ; addTimelineEvent ( options ) : void ; addInspector ( options ) : void ; sendInspectorTree ( inspectorId ) : void ; sendInspectorState ( inspectorId ) : void ; selectInspectorNode ( inspectorId , nodeId ) : void ; getComponentBounds ( instance ) : Promise < ComponentBounds > ; getComponentName ( instance ) : Promise < string > ; getComponentInstances ( app ) : Promise < ComponentInstance [ ] > ; highlightElement ( instance ) : void ; unhighlightElement ( ) : void ; getSettings ( pluginId ? ) : TSettings ; private setSettings ( values ) : 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 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 > ; } [ ] ; } 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 ] : ( StateBase | Omit < ComponentState , 'type' > ) [ ] ; }