TeaSpeak-Client/imports/shared-app/ui/tree/Definitions.d.ts

237 lines
5.6 KiB
TypeScript

import { ClientIcon } from "svg-sprites/client-icons";
import { RemoteIconInfo } from "tc-shared/file/Icons";
export declare type CollapsedState = "collapsed" | "expended" | "unset";
export declare type ChannelNameAlignment = "left" | "right" | "center" | "repetitive" | "normal";
export declare type ChannelIcons = {
default: boolean;
passwordProtected: boolean;
musicQuality: boolean;
moderated: boolean;
codecUnsupported: boolean;
channelIcon: RemoteIconInfo;
};
export declare type ChannelEntryInfo = {
name: string;
nameStyle: ChannelNameAlignment;
collapsedState: CollapsedState;
};
export declare type ChannelTreeEntry = {
type: "channel" | "server" | "client" | "client-local";
entryId: number;
depth: number;
};
export declare type FullChannelTreeEntry = {
entryId: number;
depth: number;
} & ({
fullInfo: true;
unread: boolean;
} & ({
type: "channel";
info: ChannelEntryInfo;
icon: ClientIcon;
icons: ChannelIcons;
} | {
type: "server";
state: ServerState;
} | {
type: "client" | "client-local";
name: ClientNameInfo;
status: ClientIcon;
icons: ClientIcons;
talkStatus?: ClientTalkIconState;
talkRequestMessage?: string;
}) | {
fullInfo: false;
} & {
type: "channel" | "server" | "client" | "client-local";
});
export declare type ClientNameInfo = {
name: string;
prefix: string[];
suffix: string[];
awayMessage: string;
};
export declare type ClientTalkIconState = "unset" | "prohibited" | "requested" | "granted";
export declare type ClientIcons = {
serverGroupIcons: (RemoteIconInfo & {
groupName: string;
groupId: number;
})[];
channelGroupIcon: (RemoteIconInfo & {
groupName: string;
groupId: number;
}) | undefined;
clientIcon: RemoteIconInfo | undefined;
};
export declare type ServerState = {
state: "disconnected";
} | {
state: "connecting";
targetAddress: string;
} | {
state: "connected";
name: string;
icon: RemoteIconInfo;
};
export interface ChannelTreeUIEvents {
action_toggle_popout: {
shown: boolean;
};
action_show_context_menu: {
treeEntryIds: number[];
pageX: number;
pageY: number;
};
action_start_entry_move: {
start: {
x: number;
y: number;
};
current: {
x: number;
y: number;
};
};
action_set_collapsed_state: {
treeEntryId: number;
state: "collapsed" | "expended";
};
action_select: {
treeEntryId: number | 0;
};
action_channel_join: {
treeEntryId: number;
};
action_channel_open_file_browser: {
treeEntryId: number;
};
action_client_double_click: {
treeEntryId: number;
};
action_client_name_submit: {
treeEntryId: number;
name: string;
};
action_move_clients: {
targetTreeEntry: number;
entries: ChannelTreeDragEntry[];
};
action_move_channels: {
targetTreeEntry: number;
mode: "before" | "after" | "child";
entries: ChannelTreeDragEntry[];
};
query_tree_entries: {
fullInfo: boolean;
};
query_popout_state: {};
query_selected_entry: {};
query_unread_state: {
treeEntryId: number;
};
query_channel_info: {
treeEntryId: number;
};
query_channel_icon: {
treeEntryId: number;
};
query_channel_icons: {
treeEntryId: number;
};
query_client_status: {
treeEntryId: number;
};
query_client_name: {
treeEntryId: number;
};
query_client_icons: {
treeEntryId: number;
};
query_client_talk_status: {
treeEntryId: number;
};
query_server_state: {
treeEntryId: number;
};
notify_tree_entries_full: {
entries: FullChannelTreeEntry[];
};
notify_popout_state: {
shown: boolean;
showButton: boolean;
};
notify_selected_entry: {
treeEntryId: number | 0;
};
notify_channel_info: {
treeEntryId: number;
info: ChannelEntryInfo;
};
notify_channel_icon: {
treeEntryId: number;
icon: ClientIcon;
};
notify_channel_icons: {
treeEntryId: number;
icons: ChannelIcons;
};
notify_client_status: {
treeEntryId: number;
status: ClientIcon;
};
notify_client_name: {
treeEntryId: number;
info: ClientNameInfo;
};
notify_client_icons: {
treeEntryId: number;
icons: ClientIcons;
};
notify_client_talk_status: {
treeEntryId: number;
status: ClientTalkIconState;
requestMessage?: string;
};
notify_client_name_edit: {
treeEntryId: number;
initialValue: string | undefined;
};
notify_client_name_edit_failed: {
treeEntryId: number;
reason: "scroll-to";
};
notify_server_state: {
treeEntryId: number;
state: ServerState;
};
notify_unread_state: {
treeEntryId: number;
unread: boolean;
};
notify_destroy: {};
}
export declare type ChannelTreeDragEntry = {
type: "channel";
uniqueTreeId: number;
} | {
type: "channel";
channelId: number;
} | {
type: "server";
} | {
type: "client";
uniqueTreeId: number;
} | {
type: "client";
clientUniqueId: string;
clientId?: number;
clientDatabaseId?: number;
};
export declare type ChannelTreeDragData = {
version: 1;
handlerId: string;
type: string;
entries: ChannelTreeDragEntry[];
};