open-collaboration-monaco
Version:
Connect a single Monaco Editor to an Open Collaboration Tools session
49 lines • 1.97 kB
TypeScript
import { UsersChangeEvent, FileNameChangeEvent } from './collaboration-instance.js';
import * as types from 'open-collaboration-protocol';
import * as monaco from 'monaco-editor';
export type MonacoCollabCallbacks = {
onUserRequestsAccess: (user: types.User) => Promise<boolean>;
/**
* reports the status when joining or creating a room
* @param info information about the changed status
*/
statusReporter?: (info: types.Info) => void;
};
export type MonacoCollabOptions = {
serverUrl: string;
callbacks: MonacoCollabCallbacks;
userToken?: string;
roomToken?: string;
useCookieAuth?: boolean;
loginPageOpener?: (token: string, authenticationMetadata: types.AuthMetadata) => Promise<boolean>;
};
export type OtherUserData = {
peer: types.Peer;
color: string;
};
export type UserData = {
me: types.Peer;
others: OtherUserData[];
};
export type MonacoCollabApi = {
createRoom: () => Promise<string | undefined>;
joinRoom: (roomToken: string) => Promise<string | undefined>;
leaveRoom: () => void;
login: () => Promise<string | undefined>;
logout: () => Promise<void | undefined>;
isLoggedIn: () => Promise<boolean>;
setEditor: (editor: monaco.editor.IStandaloneCodeEditor) => void;
getUserData: () => Promise<UserData | undefined>;
onUsersChanged: (evt: UsersChangeEvent) => void;
onFileNameChange: (callback: FileNameChangeEvent) => void;
getCurrentConnection: () => types.ProtocolBroadcastConnection | undefined;
followUser: (id?: string) => void;
getFollowedUser: () => string | undefined;
setFileName: (fileName: string) => void;
getFileName: () => string | undefined;
setWorkspaceName: (workspaceName: string) => void;
getWorkspaceName: () => string | undefined;
};
export declare function monacoCollab(options: MonacoCollabOptions): MonacoCollabApi;
export declare function deactivate(): void;
//# sourceMappingURL=monaco-api.d.ts.map