import type { AgStudioCommon } from '../../api/agStudioCommon'; import type { AgStudioProperties } from '../../api/agStudioProperties'; import type { AgStudioApiReadyEvent, AgStudioErrorRaisedEvent, AgStudioPreDestroyedEvent, AgStudioReadyEvent, AgStudioStateUpdatedEvent } from '../../api/agStudioPublicEvents'; import type { AgWidgetDisplayState } from '../../api/agWidgetApi'; import type { AgEvent, _BaseEvents } from 'ag-grid-enterprise'; import type { AiMessageModel } from '../ai/messages/aiMessageModel'; import type { InitialWidgetPosition, InitialWidgetSize } from '../widgets/widgetService'; import type { FilterScope } from './filterApi'; import type { FilterWrapper } from './filterWrapper'; import type { StateKey } from './stateProvider'; import type { StudioSelection } from './studioSelection'; export interface StudioEvents extends _BaseEvents { checkboxChanged: StudioCheckboxChangedEvent; bodyScroll: StudioBodyScrollEvent; dragStarted: StudioDragStartedEvent; dragStopped: StudioDragStoppedEvent; dragCancelled: StudioDragCancelledEvent; tooltipShow: StudioTooltipShowEvent; tooltipHide: StudioTooltipHideEvent; createWidget: StudioCreateWidgetEvent; deleteWidget: StudioDeleteWidgetEvent; selectionChanged: StudioSelectionChangedEvent; schemaReady: StudioSchemaReadyEvent; layoutReady: StudioLayoutReadyEvent; widgetParamsUpdated: StudioWidgetParamsUpdatedEvent; widgetTypeUpdated: StudioWidgetTypeUpdatedEvent; widgetLayoutUpdated: StudioWidgetLayoutUpdatedEvent; widgetDisplayStateUpdated: StudioWidgetDisplayStateUpdatedEvent; pageLayoutUpdated: StudioPageLayoutUpdatedEvent; filterChanged: StudioFilterChangedEvent; filterViewChanged: StudioFilterViewChangedEvent; dataChanged: StudioDataChangedEvent; crossFilterChanged: StudioCrossFilterChangedEvent; rootLayoutTransitionStart: StudioRootLayoutTransitionStartEvent; rootLayoutTransitionCommit: StudioRootLayoutTransitionCommitEvent; rootLayoutTransitionEnd: StudioRootLayoutTransitionEndEvent; internalStateUpdated: StudioInternalStateUpdatedEvent; stateUpdated: AgStudioStateUpdatedEvent; stateApplied: StudioStateAppliedEvent; apiReady: AgStudioApiReadyEvent; studioReady: AgStudioReadyEvent; studioPreDestroyed: AgStudioPreDestroyedEvent; errorRaised: AgStudioErrorRaisedEvent; propertiesChanged: StudioPropertiesChangedEvent; aiConversationMessageAdded: StudioAiConversationMessageAddedEvent; aiConversationMessageUpdated: StudioAiConversationMessageUpdatedEvent; aiConversationStateChanged: StudioAiConversationStateChangedEvent; aiThreadStateChanged: StudioAiThreadStateChangedEvent; aiStreamingStateChanged: StudioAiStreamingStateChangedEvent; aiDebugPanelToggle: StudioAiDebugPanelToggleEvent; } export type StudioEventType = keyof StudioEvents; interface StudioEvent extends AgEvent, AgStudioCommon { } export interface StudioCheckboxChangedEvent extends StudioEvent<'checkboxChanged', TContext> { id: string; name: string; selected?: boolean; previousValue: boolean | undefined; } type ScrollDirection = 'horizontal' | 'vertical'; interface StudioBodyScrollEvent extends StudioEvent<'bodyScroll', TContext> { direction: ScrollDirection; left: number; top: number; } interface StudioBaseDragEvent extends StudioEvent { target: Element; } interface StudioDragStartedEvent extends StudioBaseDragEvent<'dragStarted', TContext> { } interface StudioDragStoppedEvent extends StudioBaseDragEvent<'dragStopped', TContext> { } interface StudioDragCancelledEvent extends StudioBaseDragEvent<'dragCancelled', TContext> { } interface StudioTooltipEvent extends StudioEvent { parentGui: HTMLElement; } interface StudioTooltipShowEvent extends StudioTooltipEvent<'tooltipShow', TContext> { tooltipGui: HTMLElement; } interface StudioTooltipHideEvent extends StudioTooltipEvent<'tooltipHide', TContext> { } export interface StudioCreateWidgetEvent extends StudioEvent<'createWidget', TContext> { id: string; position?: InitialWidgetPosition; size?: InitialWidgetSize; filters?: FilterWrapper[]; } export interface StudioDeleteWidgetEvent extends StudioEvent<'deleteWidget', TContext> { id: string; } export interface StudioPageLayoutUpdatedEvent extends StudioEvent<'pageLayoutUpdated', TContext> { } export interface StudioWidgetLayoutUpdatedEvent extends StudioEvent<'widgetLayoutUpdated', TContext> { } export interface StudioWidgetDisplayStateUpdatedEvent extends StudioEvent<'widgetDisplayStateUpdated', TContext> { id: string; state: TStateKey; metadata?: AgWidgetDisplayState[TStateKey]; } export interface StudioSelectionChangedEvent extends StudioEvent<'selectionChanged', TContext> { selection: StudioSelection | undefined; } interface StudioSchemaReadyEvent extends StudioEvent<'schemaReady', TContext> { } interface StudioLayoutReadyEvent extends StudioEvent<'layoutReady', TContext> { } export interface StudioWidgetParamsUpdatedEvent extends StudioEvent<'widgetParamsUpdated', TContext> { id: string; } export interface StudioWidgetTypeUpdatedEvent extends StudioEvent<'widgetTypeUpdated', TContext> { id: string; } export interface StudioFilterChangedEvent extends StudioEvent<'filterChanged', TContext> { reset?: boolean; scope?: FilterScope; sourceType?: 'filter' | 'widget'; } export interface StudioFilterViewChangedEvent extends StudioEvent<'filterViewChanged', TContext> { reset?: boolean; scope?: FilterScope; modelUpdated?: boolean; } interface StudioDataChangedEvent extends StudioEvent<'dataChanged', TContext> { } interface StudioCrossFilterChangedEvent extends StudioEvent<'crossFilterChanged', TContext> { } interface StudioRootLayoutTransitionStartEvent extends StudioEvent<'rootLayoutTransitionStart', TContext> { } interface StudioRootLayoutTransitionCommitEvent extends StudioEvent<'rootLayoutTransitionCommit', TContext> { duration?: string; } interface StudioRootLayoutTransitionEndEvent extends StudioEvent<'rootLayoutTransitionEnd', TContext> { } export interface StudioInternalStateUpdatedEvent extends StudioEvent<'internalStateUpdated', TContext> { key: StateKey; } export interface StudioStateAppliedEvent extends StudioEvent<'stateApplied', TContext> { updatedKeys: Set; } export interface StudioAiConversationMessageAddedEvent extends StudioEvent<'aiConversationMessageAdded', TContext> { conversationId: string; model: AiMessageModel; } export interface StudioAiConversationMessageUpdatedEvent extends StudioEvent<'aiConversationMessageUpdated', TContext> { conversationId: string; model: AiMessageModel; } export interface StudioAiConversationStateChangedEvent extends StudioEvent<'aiConversationStateChanged', TContext> { conversationId: string; } export interface StudioAiThreadStateChangedEvent extends StudioEvent<'aiThreadStateChanged', TContext> { userInteraction?: boolean; } export interface StudioAiStreamingStateChangedEvent extends StudioEvent<'aiStreamingStateChanged', TContext> { conversationId: string; isStreaming: boolean; } export interface StudioPropertiesChangedEvent extends StudioEvent<'propertiesChanged', TContext> { properties: AgStudioProperties; } export interface StudioAiDebugPanelToggleEvent extends StudioEvent<'aiDebugPanelToggle', TContext> { } export {};