Skip to content

export declare class NBTransport extends EventEmitter

Отвечает за межфреймовое общение

Свойства

engineType: EngineType;

Хранит тип подключения

Методы

send(event: TransportEvent, payload?: TransportPayload): void;

Отправляет событие в родительский фрейм

subscribe(): void;

Запускает прослушивание сообщений в межфреймовом общении

destroy(): void;

Отписывается от всех событий в межфреймовом общении

changeContent(state: boolean): void;

Отправляет сообщение об изменении состояния документа в родительское окно. Приеняется если данные файла были изменены или сохранены. Влияет на индикатор в редакторе: true - контент изменен но не сохранен, false - контент соответствует сохраненому в файле

  • TransportNavigationTarget.Parent - жеская перезагрузка страницы через замену параметра src
  • TransportNavigationTarget.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;
}