240 lines
5.6 KiB
TypeScript
240 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_visibility_changed: {
|
|
visible: 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[];
|
|
};
|