Appearance
export declare class NBTransport extends EventEmitter
Отвечает за межфреймовое общение
Свойства
engineType: EngineType;
Хранит тип подключения
Методы
send(event: TransportEvent, payload?: TransportPayload): void;
Отправляет событие в родительский фрейм
subscribe(): void;
Запускает прослушивание сообщений в межфреймовом общении
destroy(): void;
Отписывается от всех событий в межфреймовом общении
changeContent(state: boolean): void;
Отправляет сообщение об изменении состояния документа в родительское окно. Приеняется если данные файла были изменены или сохранены. Влияет на индикатор в редакторе: true
- контент изменен но не сохранен, false
- контент соответствует сохраненому в файле
navigate(path: TransportPayloadNavigate['path'], queryParams?: TransportPayloadNavigate['queryParams'], target?: TransportNavigationTarget): void;
TransportNavigationTarget.Parent
- жеская перезагрузка страницы через замену параметра srcTransportNavigationTarget.Self
- переход к url черезBrowser History API
, с запоминанием в основном фрейме состоянияTransportNavigationTarget.Cache
- переход игнорируется, состояние запоминается основным фреймом
close(): void;
Закрыть окно (iframe)
openModalFilesSelect(state: TransportPayloadModalFilesSelect): void;
Вызов в родительском фрейме модального окна выбора объектов из файлового хранилища
typescript
Transport.on(
Transport.AppFilesSelected,
(data: TransportPayloadSelectedFiles) => {
console.log(data.paths);
}
);
Transport.openModalFilesSelect({});
openModalConfirm(state: TransportPayloadConfirm): void;
Вызов в родительском фрейме модального окна подтверждения действия
typescript
Transport.on(Transport.AppConfirmAccept, () => {
console.log("Пользователь подтвердил удаление");
});
Transport.on(Transport.AppConfirmReject, () => {
console.log("Пользователь отменил удаление");
});
Transport.openModalConfirm({
header: "Удалить объект?",
message: "Вы уверены что хотите удалить данный объект",
});
toast(state: TransportPayloadToast): void;
Вызывает всплывающее информационное окно в родительском фрейме
setSpinnerStatus(state: TransportPayloadSpinner): void;
Управляет состоянием индикатора загрузки
setContext(state: TransportPayloadContextItem[]): void;
Добавляет пункты контекстного меню при правом клике на таб в редакторе
setTabs(state: TransportPayloadContextTab[]): void;
work_dir
переданные данные заменяют название в панели редактора на менюapp
добавляет новые пункты в левом меню когда приложение активноfile
вызов игнорируется
Типы
typescript
export enum TransportNavigationTarget {
Parent = "_parent",
Self = "_self",
Cache = "_cache",
}
export interface TransportParams {
version?: number;
uuid?: string;
engine?: EngineType;
path?: string;
parent?: WindowProxy | null;
host?: string;
port?: number;
debug?: boolean;
}
export declare enum EngineType {
WebSocket = "websocket",
PostMessage = "postmessage",
Empty = "",
}
export declare enum TransportEvent {
ExtInit = "ext-init",
ExtChangeContent = "ext-change-content",
ExtOpenModalFilesSelect = "ext-open-modal-files-select",
ExtShowConfirm = "ext-show-confirm",
ExtNavigateTo = "ext-navigate-to",
ExtRequestError = "ext-request-error",
ExtToast = "ext-toast",
ExtSpinner = "ext-spinner",
ExtContext = "ext-context",
ExtTabs = "ext-tabs",
ExtSavedStart = "ext-saved-start",
ExtSavedEnd = "ext-saved-end",
ExtSavedError = "ext-saved-error",
ExtClose = "ext-close",
AppReload = "ext-reload",
AppReady = "app-ready",
AppChangeState = "app-change-state",
AppSaveAndClose = "app-save-and-close",
AppFilesSelected = "app-files-selected",
AppConfirmAccept = "app-confirm-accept",
AppConfirmReject = "app-confirm-reject",
AppContextAction = "app-context-action",
AppTabAction = "app-tab-action",
}
export type TransportPayload =
| AppState
| TransportPayloadSelectedFiles
| TransportPayloadModalFilesSelect
| TransportPayloadConfirm
| TransportPayloadNavigate
| TransportPayloadToast
| TransportPayloadSpinner
| TransportPayloadContextItem[]
| TransportPayloadContextTab[]
| any;
export interface TransportPayloadNavigate {
path: string;
queryParams?: {
[key: string]: string | boolean | number | null;
};
}
export interface TransportPayloadConfirm {
header: string;
message: string;
}
export interface TransportPayloadModalFilesSelect {
multy?: boolean;
title?: string;
path?: string;
ext?: string[];
type?: StorageElementType;
}
export interface TransportPayloadSelectedFiles {
root: StorageRoot;
rootId?: number;
paths: string[];
}
export interface TransportPayloadToast {
severity: "success" | "info" | "warn" | "error";
title: string;
message?: string;
}
export interface TransportPayloadSpinner {
state: boolean;
size?: number;
color?: string;
}
export interface TransportPayloadContextItem {
icon?: string;
iconPath?: string;
label: string;
action: string | number;
}
export interface TransportPayloadContextTab {
label: string;
active?: boolean;
disabled?: boolean;
action: string | number;
}