import { default as React } from 'react'; import { Bounds, ButtonProps, Location, OverflowedTabInfo, PopupTargetLocation, Size, StylesOptions, ToggleButtonProps } from './internal'; import { CustomButtonProps } from './defaultComponents'; export interface ChannelProps { visible: boolean; selectedChannel: string; showSelector: (bounds: Bounds) => void; selectedChannelColor: string; channelsMode: "single" | "multi"; selectedChannels: { name: string; color: string; }[]; channelRestrictions: { read: boolean; write: boolean; }; channelLabel: string; } export interface FrameWindowOverlayProps { frameId: string; selectedWindow: string; } export interface AboveWindowProps { frameId: string; selectedWindow: string; } export interface WindowContentOverlayProps { frameId: string; selectedWindow: string; } export interface FrameLoadingAnimationProps { frameId: string; selectedWindow: string; show: boolean; } export interface BelowWindowProps { frameId: string; selectedWindow: string; } export interface AboveTabsProps { frameId: string; selectedWindow: string; } export interface BeforeTabsProps { frameId: string; selectedWindow: string; } export interface BelowTabsProps { frameId: string; selectedWindow: string; } export interface TabOverflowPopupProps { frameId: string; select: (windowId: string) => void; close: (windowId: string) => void; resize?: (size: Size) => void; hiddenTabsToTheLeft: OverflowedTabInfo[]; hiddenTabsToTheRight: OverflowedTabInfo[]; } export interface CaptionEditorProps { show: boolean; text?: string; commitChanges: (text: string) => void; hideEditor: () => void; notifyBoundsChanged: (bounds: Bounds) => void; notifyEditorVisibilityChanged: (visible: boolean) => void; } export interface GroupCaptionBarProps { moveAreaId: string; targetType: string; targetId: string; caption: string; captionEditor?: CaptionEditorProps; visible: boolean; showCaptionEditor: (text: string) => void; notifyCaptionBoundsChanged: (bounds: Bounds) => void; minimize: ButtonProps; maximize: ButtonProps; restore: ButtonProps; close: ButtonProps; } export interface GroupOverlayProps { } export interface FlatCaptionBarProps { showCaptionEditor: (text: string) => void; frameId: string; moveAreaId: string; caption: string; feedback?: ButtonProps; clone?: ButtonProps; sticky?: ToggleButtonProps; extract?: ButtonProps; lock?: ButtonProps; unlock?: ButtonProps; downloads?: ButtonProps; minimize?: ButtonProps; maximize?: ButtonProps; restore?: ButtonProps; close?: ButtonProps; channels: ChannelProps; customButtons: CustomButtonProps[]; selectedWindow: string; notifyCaptionBoundsChanged: (bounds: Bounds) => void; captionEditor: CaptionEditorProps; } export interface TabElementProps { targetId: string; windowId: string; caption: string; selected: boolean; flashing: boolean; pinned: boolean; close: () => void; channels: ChannelProps; notifyCaptionBoundsChanged: (bounds: Bounds) => void; captionEditor: CaptionEditorProps; addContainerClass: (className: string) => void; removeContainerClass: (className: string) => void; } export interface AfterTabsProps { frameId: string; selectedWindow: string; hiddenTabsToTheLeft?: OverflowedTabInfo[]; hiddenTabsToTheRight?: OverflowedTabInfo[]; } interface FrameButtonsProps { overflow?: ButtonProps; feedback?: ButtonProps; clone?: ButtonProps; sticky?: ToggleButtonProps; extract?: ButtonProps; lock?: ButtonProps; unlock?: ButtonProps; downloads?: ButtonProps; minimize?: ButtonProps; maximize?: ButtonProps; restore?: ButtonProps; close?: ButtonProps; customButtons: CustomButtonProps[]; frameId: string; selectedWindow: string; } export interface TabHeaderButtonsProps extends FrameButtonsProps { hiddenTabsToTheLeft: OverflowedTabInfo[]; hiddenTabsToTheRight: OverflowedTabInfo[]; } export interface HtmlButtonsProps extends FrameButtonsProps { } export interface GroupProps { components?: { group?: { CaptionBar?: React.ComponentType; Overlay?: React.ComponentType; }; frame?: { Overlay?: React.ComponentType; AboveWindow?: React.ComponentType; WindowContentOverlay?: React.ComponentType; BelowWindow?: React.ComponentType; LoadingAnimation?: React.ComponentType; }; flat?: { CaptionBar?: React.ComponentType; }; tabs?: { Above?: React.ComponentType; Before?: React.ComponentType; Element?: React.ComponentType; After?: React.ComponentType; Buttons?: React.ComponentType; Below?: React.ComponentType; OverflowPopup?: React.ComponentType; }; html?: { Buttons?: React.ComponentType; }; }; styles?: { tabs?: { header?: StylesOptions; moveArea?: StylesOptions; }; frame?: { element?: StylesOptions; }; }; } export interface MoveAreaProps { elementId: string; } export interface GroupComponentVisibilityState { groupCaptionBarVisible?: boolean; } export interface OpenTabOverflowPopupOptions { frameId: string; location: Location; } export interface CreatePopupOptions { left?: number; top?: number; width?: number; height?: number; roundedCorners?: boolean; hasSizeAreas?: boolean; hasMoveAreas?: boolean; transparent?: boolean; copyStyles?: boolean; } export interface PopupShowOptions { targetBounds?: Bounds; size?: Size; targetLocation?: PopupTargetLocation; focus?: boolean; horizontalOffset?: number; verticalOffset?: number; } export interface PopupWindow { ioConnectWindow: any; browserWindow: Window; } export interface ExternalWindowPopupResult { getContainer: () => HTMLElement | null; createPopup: (options?: CreatePopupOptions) => Promise; showPopup: (options?: PopupShowOptions) => Promise; resizePopup: (size: Size) => Promise; hidePopup: () => Promise; closePopup: () => Promise; isOpen: boolean; isVisible: boolean; popup: PopupWindow | null; } export {};