import { EventEmitter } from 'events'; import { Component, ComponentType, MouseEventHandler, ReactElement, ReactNode } from 'react'; export declare type ContextualPopupPosition = 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right' | 'left' | 'left-top' | 'left-bottom' | 'right' | 'right-top' | 'right-bottom'; export declare type ContextualPopupXAxisPosition = 'left' | 'right'; export declare type ContextualPopupYAxisPosition = 'top' | 'bottom'; export declare type ContextualPopupAxisPosition = ContextualPopupXAxisPosition | ContextualPopupYAxisPosition; export interface ContextualPopupCaretProps { className?: string; } export interface ContextualPopupCaretSizingInfo { width: number; height: number; minOffset: number; } export interface ContextualPopupCaretPosition { left: number | undefined; top: number | undefined; } export interface IContextualPopupCaret extends Component { getSizingInfo(): ContextualPopupCaretSizingInfo; setPosition(axis: ContextualPopupAxisPosition, position: ContextualPopupCaretPosition): void; } export declare type ContextualPopupSize = 'match-context' | 'match-content' | number | undefined; export interface ContextualPopupOptions { margin?: number; positions?: ContextualPopupPosition[]; width?: ContextualPopupSize; height?: ContextualPopupSize; } export interface ContextualPopupContextRect { left: number; top: number; width: number; height: number; } export interface ContextualPopupProps extends ContextualPopupOptions { className?: string; container: HTMLElement; context: HTMLElement | ContextualPopupContextRect; caret?: ReactElement; } export interface ContextualShowOptions extends ContextualPopupOptions { mask?: boolean; clearOnWindowResize?: boolean; clearOnWindowScroll?: boolean; clearOnClick?: boolean | 'outside-popup' | 'outside-popup-and-context'; caret?: ReactElement; } export interface ContextualPopupContentProps { clear(value?: T): void; setClearDefault(value: T | undefined): void; } export interface ContextualPopoverHandlers { onMouseEnter?: MouseEventHandler; onMouseLeave?: MouseEventHandler; } export interface IContextualPopupService extends EventEmitter { /** * The container for rendering modal DOM elements. */ readonly container: HTMLElement; /** * @observable */ readonly active: boolean; /** * @observable */ readonly popups: ReactNode[]; clearAll(): void; show(name: string, content: ReactElement>> | ComponentType>>, context: HTMLElement, options?: ContextualShowOptions): Promise; toggle(name: string, content: ReactElement>> | ComponentType>>, context: HTMLElement, options?: ContextualShowOptions): Promise; createPopoverHandlers(name: string, content: ReactElement>>, options?: ContextualShowOptions): ContextualPopoverHandlers; on(event: 'show', listener: () => void): this; }