@univerjs-pro/collaboration-client 0.4.2 → 0.5.0-nightly.202411091605

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/lib/cjs/index.js +1 -1
  2. package/lib/cjs/locale/en-US.js +1 -0
  3. package/lib/cjs/locale/fa-IR.js +1 -0
  4. package/lib/cjs/locale/ru-RU.js +1 -0
  5. package/lib/cjs/locale/vi-VN.js +1 -0
  6. package/lib/cjs/locale/zh-CN.js +1 -0
  7. package/lib/cjs/locale/zh-TW.js +1 -0
  8. package/lib/es/index.js +1 -1
  9. package/lib/es/locale/en-US.js +1 -0
  10. package/lib/es/locale/fa-IR.js +1 -0
  11. package/lib/es/locale/ru-RU.js +1 -0
  12. package/lib/es/locale/vi-VN.js +1 -0
  13. package/lib/es/locale/zh-CN.js +1 -0
  14. package/lib/es/locale/zh-TW.js +1 -0
  15. package/lib/types/index.d.ts +890 -34
  16. package/lib/umd/index.js +1 -1
  17. package/lib/umd/locale/en-US.js +1 -0
  18. package/lib/umd/locale/fa-IR.js +1 -0
  19. package/lib/umd/locale/ru-RU.js +1 -0
  20. package/lib/umd/locale/vi-VN.js +1 -0
  21. package/lib/umd/locale/zh-CN.js +1 -0
  22. package/lib/umd/locale/zh-TW.js +1 -0
  23. package/package.json +39 -31
  24. package/lib/locale/en-US.json +0 -38
  25. package/lib/locale/fa-IR.json +0 -38
  26. package/lib/locale/ru-RU.json +0 -38
  27. package/lib/locale/vi-VN.json +0 -38
  28. package/lib/locale/zh-CN.json +0 -38
  29. package/lib/locale/zh-TW.json +0 -38
  30. package/lib/types/config/config.d.ts +0 -48
  31. package/lib/types/controllers/collab-cursor/__tests__/doc-collab-cursor.controller.spec.d.ts +0 -23
  32. package/lib/types/controllers/collab-cursor/__tests__/serialize-text-ranges.spec.d.ts +0 -1
  33. package/lib/types/controllers/collab-cursor/__tests__/sheet-collab-cursor.controller.spec.d.ts +0 -1
  34. package/lib/types/controllers/collab-cursor/collab-cursor.controller.d.ts +0 -22
  35. package/lib/types/controllers/collab-cursor/doc-collab-cursor-entity.d.ts +0 -38
  36. package/lib/types/controllers/collab-cursor/doc-collab-cursor-render.controller.d.ts +0 -24
  37. package/lib/types/controllers/collab-cursor/serialize-text-ranges.d.ts +0 -3
  38. package/lib/types/controllers/collab-cursor/sheet-collab-cursor-entity.d.ts +0 -39
  39. package/lib/types/controllers/collab-cursor/sheet-collab-cursor-render.controller.d.ts +0 -21
  40. package/lib/types/controllers/collab-status/collab-status.controller.d.ts +0 -18
  41. package/lib/types/controllers/collaboration/__tests__/collaboration.controller.spec.d.ts +0 -4
  42. package/lib/types/controllers/collaboration/__tests__/mock-text-selection-render-manager.service.d.ts +0 -0
  43. package/lib/types/controllers/collaboration/__tests__/mocks.d.ts +0 -54
  44. package/lib/types/controllers/collaboration/collaboration-entity.d.ts +0 -91
  45. package/lib/types/controllers/collaboration/collaboration-state.d.ts +0 -303
  46. package/lib/types/controllers/collaboration/collaboration.controller.d.ts +0 -24
  47. package/lib/types/controllers/collaboration/utils/changeset-utils.d.ts +0 -18
  48. package/lib/types/controllers/collaboration/utils/empty.d.ts +0 -2
  49. package/lib/types/controllers/config.schema.d.ts +0 -29
  50. package/lib/types/controllers/data-loader/__tests__/data-loader.controller.spec.d.ts +0 -1
  51. package/lib/types/controllers/data-loader/data-loader.controller.d.ts +0 -22
  52. package/lib/types/controllers/file-name/file-name.controller.d.ts +0 -12
  53. package/lib/types/controllers/telemetry.d.ts +0 -11
  54. package/lib/types/locale/en-US.d.ts +0 -3
  55. package/lib/types/locale/fa-IR.d.ts +0 -3
  56. package/lib/types/locale/ru-RU.d.ts +0 -3
  57. package/lib/types/locale/vi-VN.d.ts +0 -3
  58. package/lib/types/locale/zh-CN.d.ts +0 -39
  59. package/lib/types/locale/zh-TW.d.ts +0 -3
  60. package/lib/types/models/cursor.d.ts +0 -30
  61. package/lib/types/plugin.d.ts +0 -18
  62. package/lib/types/services/auth-server/auth-server.service.d.ts +0 -10
  63. package/lib/types/services/auth-server/authz-io-http.service.d.ts +0 -30
  64. package/lib/types/services/auth-server/domain-request.service.d.ts +0 -6
  65. package/lib/types/services/auth-server/util.d.ts +0 -1
  66. package/lib/types/services/collaboration-session/collaboration-session.d.ts +0 -59
  67. package/lib/types/services/collaboration-session/collaboration-session.service.d.ts +0 -61
  68. package/lib/types/services/color-assign/color-assign.service.d.ts +0 -10
  69. package/lib/types/services/comment/comment.service.d.ts +0 -6
  70. package/lib/types/services/image-remote/image-io.service.d.ts +0 -34
  71. package/lib/types/services/ime-cache-transform/doc-transform-ime-cache.service.d.ts +0 -13
  72. package/lib/types/services/local-cache/local-cache.service.d.ts +0 -37
  73. package/lib/types/services/member/member.service.d.ts +0 -77
  74. package/lib/types/services/permission/permission.service.d.ts +0 -12
  75. package/lib/types/services/range-selection/sheet-transform-selections.service.d.ts +0 -13
  76. package/lib/types/services/single-active-unit/single-active-unit.service.d.ts +0 -39
  77. package/lib/types/services/snapshot-server/snapshot-server.service.d.ts +0 -21
  78. package/lib/types/services/socket/collaboration-socket.service.d.ts +0 -34
  79. package/lib/types/services/socket/serialize.d.ts +0 -3
  80. package/lib/types/services/state-cache-transform/doc-transform-state-cache.service.d.ts +0 -12
  81. package/lib/types/services/sync-editing-collab-cursor/doc-sync-editing-collab-cursor.service.d.ts +0 -13
  82. package/lib/types/services/text-selection/doc-transform-selections.service.d.ts +0 -8
  83. package/lib/types/services/undoredo/collaborative-undoredo.service.d.ts +0 -19
  84. package/lib/types/services/url/url.service.d.ts +0 -12
  85. package/lib/types/services/url/web-url.service.d.ts +0 -10
  86. package/lib/types/views/components/CollabStatus.d.ts +0 -10
  87. package/lib/types/views/components/CollabStatus.stories.d.ts +0 -8
  88. package/lib/types/views/shapes/doc-collab-cursor.d.ts +0 -27
  89. package/lib/types/views/shapes/sheet-collab-cursor.shape.d.ts +0 -27
  90. package/lib/types/views/shapes/text-bubble.shape.d.ts +0 -19
@@ -1,34 +1,890 @@
1
- export {
2
- /** @deprecated Will be removed in the 0.2.19 release */
3
- COLLAB_SUBMIT_CHANGESET_URL_KEY,
4
- /** @deprecated Will be removed in the 0.2.19 release */
5
- COLLAB_WEB_SOCKET_URL_KEY, HEARTBEAT_INTERVAL_KEY, HEARTBEAT_TIMEOUT_KEY, LOCAL_CACHE_INTERVAL_KEY, LOGIN_URL_KEY, RETRY_CONNECTING_MAX_COUNT_KEY,
6
- /** @deprecated Will be removed in the 0.2.19 release */
7
- SEND_CHANGESET_TIMEOUT_KEY,
8
- /** @deprecated Will be removed in the 0.2.19 release */
9
- SNAPSHOT_SERVER_URL_KEY,
10
- /** @deprecated Will be removed in the 0.2.19 release */
11
- SNAPSHOT_URL_KEY, } from './config/config';
12
- export { CollaborationController } from './controllers/collaboration/collaboration.controller';
13
- export { CollaborationEntity, DocCollaborationEntity, SheetCollaborationEntity } from './controllers/collaboration/collaboration-entity';
14
- export { CollaborationStatus } from './controllers/collaboration/collaboration-state';
15
- export { UniverCollaborationClientPlugin } from './plugin';
16
- export { CollaborationSessionService } from './services/collaboration-session/collaboration-session.service';
17
- export { CollaborationSession, SessionStatus } from './services/collaboration-session/collaboration-session';
18
- export type { ICollaborationSocket } from './services/socket/collaboration-socket.service';
19
- export { CollaborationSocketService, ICollaborationSocketService, } from './services/socket/collaboration-socket.service';
20
- export { LocalCacheService } from './services/local-cache/local-cache.service';
21
- export { IURLService } from './services/url/url.service';
22
- export { WebURLService } from './services/url/web-url.service';
23
- export { DataLoaderController } from './controllers/data-loader/data-loader.controller';
24
- export { DesktopCollaborationStatusDisplayController } from './controllers/collab-status/collab-status.controller';
25
- export { AuthzIoHttpService } from './services/auth-server/authz-io-http.service';
26
- /** @deprecated Will be removed in the 0.2.19 release */
27
- export { AUTHZ_URL_KEY } from './services/auth-server/authz-io-http.service';
28
- export { deserializeToCombResponse, serializeCombRequest } from './services/socket/serialize';
29
- export { CollaborationStatusDisplay } from './views/components/CollabStatus';
30
- export { SnapshotServerOverHTTPService } from './services/snapshot-server/snapshot-server.service';
31
- export { CommentService } from './services/comment/comment.service';
32
- export { type ISheetCollabCursorShapeProps, SheetCollabCursorShape } from './views/shapes/sheet-collab-cursor.shape';
33
- export { ImageIoService } from './services/image-remote/image-io.service';
34
- export { MemberService } from './services/member/member.service';
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { CompressMutationService } from '@univerjs-pro/collaboration';
3
+ import { Ctor } from '@univerjs/core';
4
+ import { DependencyOverride } from '@univerjs/core';
5
+ import { Disposable as Disposable_2 } from '@univerjs/core';
6
+ import { DocStateChangeManagerService } from '@univerjs/docs-ui';
7
+ import { HTTPService } from '@univerjs/network';
8
+ import { IAcknowledgedChangeset } from '@univerjs-pro/collaboration';
9
+ import { IActionInfo } from '@univerjs/protocol';
10
+ import { IAllowedRequest } from '@univerjs/protocol';
11
+ import { IAuthzIoService } from '@univerjs/core';
12
+ import { IBatchAllowedResponse } from '@univerjs/protocol';
13
+ import { IBeforeCloseService } from '@univerjs/ui';
14
+ import { IChangeset } from '@univerjs-pro/collaboration';
15
+ import { IChangeset as IChangeset_2 } from '@univerjs/protocol';
16
+ import { ICollaborationEvent } from '@univerjs-pro/collaboration';
17
+ import { ICollaborator } from '@univerjs/protocol';
18
+ import { ICombRequestEvent } from '@univerjs-pro/collaboration';
19
+ import { ICombResponseEvent } from '@univerjs-pro/collaboration';
20
+ import { ICommandService } from '@univerjs/core';
21
+ import { ICommentUpdate } from '@univerjs/protocol';
22
+ import { IConfigService } from '@univerjs/core';
23
+ import { ICopyFileMetaResponse } from '@univerjs/protocol';
24
+ import { ICreateCollaboratorRequest } from '@univerjs/protocol';
25
+ import { ICreateRequest } from '@univerjs/protocol';
26
+ import { IDeleteCollaboratorRequest } from '@univerjs/protocol';
27
+ import { IdentifierDecorator } from '@wendellhu/redi';
28
+ import { IDisposable } from '@univerjs/core';
29
+ import { IFetchingMissEvent } from '@univerjs-pro/collaboration';
30
+ import { IFetchMissingChangesetsRequest } from '@univerjs/protocol';
31
+ import { IFetchMissingChangesetsResponse } from '@univerjs/protocol';
32
+ import { IGetDeserializedSheetBlockResponse } from '@univerjs/protocol';
33
+ import { IGetLatestCsReqIdBySidResponse } from '@univerjs/protocol';
34
+ import { IGetResourcesRequest } from '@univerjs/protocol';
35
+ import { IGetResourcesResponse } from '@univerjs/protocol';
36
+ import { IGetSheetBlockRequest } from '@univerjs/protocol';
37
+ import { IGetSheetBlockResponse } from '@univerjs/protocol';
38
+ import { IGetUnitOnRevRequest } from '@univerjs/protocol';
39
+ import { IGetUnitOnRevResponse } from '@univerjs/protocol';
40
+ import { IImageIoService } from '@univerjs/drawing';
41
+ import { IImageIoServiceParam } from '@univerjs/drawing';
42
+ import { IListCollaboratorRequest } from '@univerjs/protocol';
43
+ import { IListPermPointRequest } from '@univerjs/protocol';
44
+ import { IListPermPointResponse } from '@univerjs/protocol';
45
+ import { IListRolesRequest } from '@univerjs/protocol';
46
+ import { ILocalStorageService } from '@univerjs/core';
47
+ import { ILogContext } from '@univerjs-pro/collaboration';
48
+ import { ILogService } from '@univerjs/core';
49
+ import { ImageSourceType } from '@univerjs/drawing';
50
+ import { IMember } from '@univerjs/protocol';
51
+ import { IMessageService } from '@univerjs/ui';
52
+ import { IMouseEvent } from '@univerjs/engine-render';
53
+ import { IMutationInfo } from '@univerjs/core';
54
+ import { Injector } from '@univerjs/core';
55
+ import { IPermissionService } from '@univerjs/core';
56
+ import { IPointerEvent } from '@univerjs/engine-render';
57
+ import { IPutCollaboratorsRequest } from '@univerjs/protocol';
58
+ import { IRange } from '@univerjs/core';
59
+ import { IRemoteInstanceService } from '@univerjs/rpc';
60
+ import { IRenderManagerService } from '@univerjs/engine-render';
61
+ import { ISaveChangesetResponse } from '@univerjs/protocol';
62
+ import { ISaveSheetBlockResponse } from '@univerjs/protocol';
63
+ import { ISaveSnapshotResponse } from '@univerjs/protocol';
64
+ import { IShapeProps } from '@univerjs/engine-render';
65
+ import { ISnapshotServerService } from '@univerjs-pro/collaboration';
66
+ import { ISocket } from '@univerjs/network';
67
+ import { ISubmitChangesetEvent } from '@univerjs-pro/collaboration';
68
+ import { ITelemetryService } from '@univerjs/telemetry';
69
+ import { ITextRangeWithStyle } from '@univerjs/engine-render';
70
+ import { ITransformService } from '@univerjs-pro/collaboration';
71
+ import { IUIPartsService } from '@univerjs/ui';
72
+ import { IUndoRedoService } from '@univerjs/core';
73
+ import { IUnitRoleKV } from '@univerjs/protocol';
74
+ import { IUniverInstanceService } from '@univerjs/core';
75
+ import { IUpdateCollaboratorRequest } from '@univerjs/protocol';
76
+ import { IUpdateCursor } from '@univerjs/protocol';
77
+ import { IUpdatePermPointRequest } from '@univerjs/protocol';
78
+ import { LocaleService } from '@univerjs/core';
79
+ import { Nullable } from '@univerjs/core';
80
+ import { Observable } from 'rxjs';
81
+ import { Plugin as Plugin_2 } from '@univerjs/core';
82
+ import { RevisionService } from '@univerjs-pro/collaboration';
83
+ import { RxDisposable } from '@univerjs/core';
84
+ import { Shape } from '@univerjs/engine-render';
85
+ import { SnapshotService } from '@univerjs-pro/collaboration';
86
+ import { UnitAction } from '@univerjs/protocol';
87
+ import { UniverType } from '@univerjs/protocol';
88
+ import { UserManagerService } from '@univerjs/core';
89
+ import { WebSocketService } from '@univerjs/network';
90
+
91
+ /** @deprecated Will be removed in the 0.2.19 release */
92
+ export declare const AUTHZ_URL_KEY = "AUTHZ_URL_KEY";
93
+
94
+ export declare class AuthzIoHttpService extends Disposable_2 implements IAuthzIoService {
95
+ private _HTTPService;
96
+ private _configService;
97
+ constructor(_HTTPService: HTTPService, _configService: IConfigService);
98
+ private _initMergeInterceptor;
99
+ private _getAPIPrefixPath;
100
+ create(config: ICreateRequest): Promise<string>;
101
+ list(config: IListPermPointRequest): Promise<IListPermPointResponse['objects']>;
102
+ update(config: IUpdatePermPointRequest): Promise<void>;
103
+ allowed(config: IAllowedRequest): Promise<IActionInfo[]>;
104
+ batchAllowed(config: IAllowedRequest[]): Promise<IBatchAllowedResponse['objectActions']>;
105
+ listRoles(config: IListRolesRequest): Promise<{
106
+ roles: IUnitRoleKV[];
107
+ actions: UnitAction[];
108
+ }>;
109
+ deleteCollaborator(config: IDeleteCollaboratorRequest): Promise<void>;
110
+ updateCollaborator(config: IUpdateCollaboratorRequest): Promise<void>;
111
+ createCollaborator(config: ICreateCollaboratorRequest): Promise<void>;
112
+ listCollaborators(config: IListCollaboratorRequest): Promise<ICollaborator[]>;
113
+ putCollaborators(config: IPutCollaboratorsRequest): Promise<void>;
114
+ }
115
+
116
+ /** @deprecated Will be removed in the 0.2.19 release */
117
+ export declare const COLLAB_SUBMIT_CHANGESET_URL_KEY = "COLLAB_SUBMIT_CHANGESET_URL";
118
+
119
+ /** @deprecated Will be removed in the 0.2.19 release */
120
+ export declare const COLLAB_WEB_SOCKET_URL_KEY = "COLLAB_WEB_SOCKET_URL";
121
+
122
+ export declare class CollaborationController extends RxDisposable {
123
+ private readonly _injector;
124
+ private readonly _collabSessionService;
125
+ private readonly _univerInstanceService;
126
+ private readonly _entities;
127
+ private readonly _entityInit$;
128
+ constructor(_injector: Injector, _collabSessionService: CollaborationSessionService, _univerInstanceService: IUniverInstanceService);
129
+ dispose(): void;
130
+ getCollabEntity(id: string): Nullable<CollaborationEntity>;
131
+ getCollabEntity$(id: string): Observable<CollaborationEntity>;
132
+ private _init;
133
+ /**
134
+ * Start collaboration on a document.
135
+ *
136
+ * @param unitID ID of the document to start collaboration.
137
+ * @returns A disposable to stop collaboration.
138
+ */
139
+ private _startCollaboration;
140
+ private _getCtorByUniverType;
141
+ }
142
+
143
+ /**
144
+ * Each univer document instance would map to an `CollaborationEntity` to handle collaborated editing events.
145
+ */
146
+ export declare abstract class CollaborationEntity extends RxDisposable {
147
+ readonly unitID: string;
148
+ readonly session: CollaborationSession;
149
+ protected readonly _type: UniverType;
150
+ protected readonly _injector: Injector;
151
+ protected readonly _localCacheService: LocalCacheService;
152
+ protected readonly _compressMutationService: CompressMutationService;
153
+ protected readonly _localeService: LocaleService;
154
+ protected readonly _revisionService: RevisionService;
155
+ protected readonly _logService: ILogService;
156
+ protected readonly _commandService: ICommandService;
157
+ protected readonly _messageService: IMessageService;
158
+ private _permissionService;
159
+ protected readonly _singleActiveUnitService?: ISingleActiveUnitService | undefined;
160
+ protected _state$: BehaviorSubject<Nullable<CollaborationState>>;
161
+ readonly state$: Observable<Nullable<CollaborationState>>;
162
+ protected _state: CollaborationState;
163
+ get state(): CollaborationState;
164
+ protected _collaborationPaused: boolean;
165
+ protected _changesetSessionId: string;
166
+ protected _changesetReqId: number;
167
+ readonly status$: Observable<CollaborationStatus>;
168
+ constructor(unitID: string, session: CollaborationSession, _type: UniverType, _injector: Injector, _localCacheService: LocalCacheService, _compressMutationService: CompressMutationService, _localeService: LocaleService, _revisionService: RevisionService, _logService: ILogService, _commandService: ICommandService, _messageService: IMessageService, _permissionService: IPermissionService, _singleActiveUnitService?: ISingleActiveUnitService | undefined);
169
+ init(): Promise<void>;
170
+ /**
171
+ * Pause collaboration on the document. Remote changesets would be inserted to a queue and wait for resuming.
172
+ * @returns a disposable which will resume collaboration when called.
173
+ */
174
+ pauseCollaboration(): IDisposable;
175
+ private _updateState;
176
+ protected _init(): Promise<CollaborationState>;
177
+ /**
178
+ * Could not transit the state twice at the same time. So we put a lock here in case of implementation fault.
179
+ */
180
+ private _transitionLocked;
181
+ private _unlockTransition;
182
+ private _lockTransition;
183
+ protected _onLocalMutation(command: IMutationInfo): void;
184
+ private _remoteChangesetQueue;
185
+ private _onRemoteChangeset;
186
+ private _exhaustRemoteChangesetQueue;
187
+ private _applyRemoteChangeset;
188
+ private _onRemoteACK;
189
+ private _onRemoteRejected;
190
+ private _onRemoteRetry;
191
+ private _onFetchMissResult;
192
+ private _toggleOffline;
193
+ private _toggleOnline;
194
+ private _createInitialState;
195
+ protected _createHandler(): ICollaborationStateHandler;
196
+ private _createInitialStateImpl;
197
+ private _replayCachedMutations;
198
+ }
199
+
200
+ /**
201
+ * The data structure to represent a collaboration session. It also manages the collaborator's identity.
202
+ *
203
+ * An collaboration session maps to a unit.
204
+ */
205
+ export declare class CollaborationSession extends RxDisposable implements IDisposable {
206
+ private readonly _unitID;
207
+ private readonly _logService;
208
+ private readonly _beforeCloseService;
209
+ private readonly _messageService;
210
+ private readonly _configService;
211
+ private readonly _localeService;
212
+ private readonly _memberService;
213
+ private readonly _commentService;
214
+ private readonly _telemetryService?;
215
+ private readonly _sessionStatus$;
216
+ readonly sessionStatus$: Observable<SessionStatus>;
217
+ get sessionStatus(): SessionStatus;
218
+ private readonly _event$;
219
+ readonly event$: Observable<ICollaborationEvent>;
220
+ private _socket;
221
+ private _socketMessageSubscription;
222
+ constructor(_unitID: string, socket$: Observable<Nullable<ICollaborationSocket>>, _logService: ILogService, _beforeCloseService: IBeforeCloseService, _messageService: IMessageService, _configService: IConfigService, _localeService: LocaleService, _memberService: MemberService, _commentService: CommentService, _telemetryService?: ITelemetryService | undefined);
223
+ getMemberID(): string | null;
224
+ dispose(): void;
225
+ close(): void;
226
+ private _onCombEvent;
227
+ private _joinRoom;
228
+ private _onJoinRoomEvent;
229
+ private _onRecvEvent;
230
+ private _onUserJoin;
231
+ private _onUserLeave;
232
+ /**
233
+ * Send event to the collaboration server.
234
+ */
235
+ send(event: ICollaborationEvent, unitID: string): Promise<void>;
236
+ private _collaborationTimeoutTimer;
237
+ private _scheduleCollaborationTimeoutTimer;
238
+ private _clearCollaborationTimeoutTimer;
239
+ private _shouldReportTelemetry;
240
+ private _telemetryInfo;
241
+ private _startTelemetryCollaborationNewChangeset;
242
+ private _stopTelemetryCollaborationNewChangeset;
243
+ private _throwTelemetryCollaborationNewChangeset;
244
+ }
245
+
246
+ /**
247
+ * This service provide collaboration sessions to univer instances. A collaboration session
248
+ * may be used by different controllers of different features.
249
+ */
250
+ export declare class CollaborationSessionService extends Disposable_2 {
251
+ private readonly _injector;
252
+ private readonly _localeService;
253
+ private readonly _messageService;
254
+ private readonly _logService;
255
+ private readonly _configService;
256
+ private readonly _socketService;
257
+ /**
258
+ * Socket for collaboration sessions. Session are by unitID but the socket is share by collaboration sessions.
259
+ */
260
+ private _socket$;
261
+ readonly socket$: Observable<Nullable<ICollaborationSocket>>;
262
+ private get _socket();
263
+ private _candidateSocket;
264
+ private _sessions;
265
+ private _status$;
266
+ status$: Observable<SessionStatus>;
267
+ private _socketReady;
268
+ private _retryConnectingTimer;
269
+ private _retryCount;
270
+ constructor(_injector: Injector, _localeService: LocaleService, _messageService: IMessageService, _logService: ILogService, _configService: IConfigService, _socketService: ICollaborationSocketService);
271
+ private _initEventListeners;
272
+ dispose(): void;
273
+ /**
274
+ * Require a collaboration session.
275
+ * @param unitID
276
+ * @returns a collaboration session.
277
+ */
278
+ requireSession(unitID: string): Promise<CollaborationSession>;
279
+ closeSession(unitID: string): void;
280
+ reconnect(): void;
281
+ private _createSocket;
282
+ /**
283
+ * Try to establish connection to the collaboration server.
284
+ *
285
+ * Will send heartbeat channel to the server to keep the connection alive.
286
+ */
287
+ private _tryEnsureSocket;
288
+ private _onConnectionOpen;
289
+ private _listenToOfflineEvent;
290
+ private _onOffline;
291
+ private _onConnectionFailed;
292
+ private _listenToOnlineEvent;
293
+ private _tryReconnect;
294
+ private _onMessage;
295
+ private _sendHeartbeatTimer;
296
+ private _timeoutTimer;
297
+ private _rescheduleHeartbeat;
298
+ private _sendHeartbeat;
299
+ private _waitForHeartbeatResponse;
300
+ private _clearHeartbeatTimer;
301
+ private _clearTimeoutTimer;
302
+ }
303
+
304
+ export declare class CollaborationSocketService extends Disposable_2 implements ICollaborationSocketService {
305
+ protected readonly _http: HTTPService;
306
+ protected readonly _ws: WebSocketService;
307
+ protected readonly _configService: IConfigService;
308
+ protected readonly _logService: ILogService;
309
+ protected readonly _snapshotServerService: ISnapshotServerService;
310
+ constructor(_http: HTTPService, _ws: WebSocketService, _configService: IConfigService, _logService: ILogService, _snapshotServerService: ISnapshotServerService);
311
+ /**
312
+ * Create a socket that would connect to the remote collaboration server. It would throw an error when the socket cannot be created.
313
+ *
314
+ * @param URL The URL of the remote server.
315
+ */
316
+ createSocket(URL: string): Nullable<ICollaborationSocket>;
317
+ protected _submitChangeset(socket: ICollaborationSocket, event: ISubmitChangesetEvent): Promise<void>;
318
+ protected _fetchMissChangesets(event: IFetchingMissEvent): Promise<IChangeset_2[]>;
319
+ }
320
+
321
+ /**
322
+ * Use state machine to manage syncing states.
323
+ * An explanation to how these states are transformed to each other.
324
+ */
325
+ declare abstract class CollaborationState {
326
+ readonly unitID: string;
327
+ readonly type: UniverType;
328
+ /** State may change internally. Parent module should provide a callback to handle this event. */
329
+ protected readonly _handler: ICollaborationStateHandler;
330
+ protected readonly _commandService: ICommandService;
331
+ protected readonly _undoRedoService: ICollaborativeUndoRedoService;
332
+ protected readonly _revisionService: RevisionService;
333
+ protected readonly _localCacheService: LocalCacheService;
334
+ abstract readonly status: CollaborationStatus;
335
+ /** Mutations that has been sent to the server but not yet acknowledged by the server. */
336
+ protected _awaitingChangeset: Nullable<IChangeset>;
337
+ /** Mutations that has not been sent to the server. */
338
+ protected _pendingMutations: IMutationInfo[];
339
+ constructor(unitID: string, type: UniverType, awaitingChangeset: Nullable<IChangeset>, pendingMutations: IMutationInfo[],
340
+ /** State may change internally. Parent module should provide a callback to handle this event. */
341
+ _handler: ICollaborationStateHandler, _commandService: ICommandService, _undoRedoService: ICollaborativeUndoRedoService, _revisionService: RevisionService, _localCacheService: LocalCacheService);
342
+ abstract resend(): void;
343
+ /**
344
+ * Append a location mutation to collaboration queue.
345
+ *
346
+ * @param mutation a mutation that happened locally and should be broadcasted to other peers
347
+ */
348
+ abstract appendMutation(mutation: IMutationInfo): CollaborationState;
349
+ /**
350
+ * Received a changeset from the server.
351
+ * @param changeset
352
+ */
353
+ abstract onRemoteChangeset(changeset: IChangeset): CollaborationState;
354
+ /**
355
+ * Received an acknowledgement from the server.
356
+ */
357
+ abstract onRemoteAck(changeset: IAcknowledgedChangeset): CollaborationState;
358
+ /**
359
+ * Received a rejection from the server, meaning that conflict could be resolved by the algorithm.
360
+ */
361
+ abstract onRemoteRej(config?: {
362
+ isPermissionRej: boolean;
363
+ }): CollaborationState;
364
+ /**
365
+ * Received a retry message from the server, meaning that some unexpected error occurred in server.
366
+ */
367
+ abstract onRemoteRetry(changeset: IChangeset): CollaborationState;
368
+ abstract toggleOffline(): CollaborationState;
369
+ abstract toggleOnline(): CollaborationState;
370
+ /**
371
+ * Check if there are some changesets missing. If true, the state should abort this changeset and request
372
+ * for missing changesets. Missing changesets will later be passed to `onRemoteChangeset` method.
373
+ *
374
+ * @param changeset The changeset sent from the remote collaboration server.
375
+ * @returns There is some changeset missing.
376
+ */
377
+ protected _checkMissing(changeset: IChangeset | IAcknowledgedChangeset): boolean;
378
+ /** Transform undo redo mutations in the undo redo stack. */
379
+ protected _transformUndoredo(changeset: IChangeset): void;
380
+ /** Transform selections by calling the selection manager service. */
381
+ protected _transformSelections(changeset: IChangeset): void;
382
+ protected _transformIMECache(changeset: IChangeset): void | undefined;
383
+ protected _transformStateCache(changeset: IChangeset): void | undefined;
384
+ protected _transformRemoteChangesetByIMECache(changeset: IChangeset): IChangeset;
385
+ protected _transformRemoteChangesetByStateCache(changeset: IChangeset): IChangeset;
386
+ protected _syncEditingCollabCursor(changeset: IChangeset): void;
387
+ /* Excluded from this release type: _updateLocalCache */
388
+ protected _getCurrentRevision(): number;
389
+ protected _incrementRevisionNumber(): void;
390
+ protected _executeRemoteChangeset(changeset: IChangeset): void;
391
+ }
392
+
393
+ export declare enum CollaborationStatus {
394
+ NOT_COLLAB = "not_collab",
395
+ SYNCED = "synced",
396
+ PENDING = "pending",
397
+ AWAITING = "awaiting",
398
+ AWAITING_WITH_PENDING = "awaiting_with_pending",
399
+ FETCH_MISS = "fetch_missing",
400
+ CONFLICT = "conflict",
401
+ OFFLINE = "offline"
402
+ }
403
+
404
+ /**
405
+ * A component to display collaboration status to users.
406
+ */
407
+ export declare function CollaborationStatusDisplay(props: Readonly<IOnlineStatusProps>): JSX.Element;
408
+
409
+ export declare class CommentService {
410
+ private readonly _commentUpdate$;
411
+ readonly commentUpdate$: Observable<ICommentUpdate>;
412
+ onCommentUpdate(data: ICommentUpdate): void;
413
+ }
414
+
415
+ /**
416
+ * This controller loads data when URL changes.
417
+ */
418
+ export declare class DataLoaderController extends RxDisposable {
419
+ private _urlService;
420
+ private readonly _logService;
421
+ private readonly _commandService;
422
+ private readonly _localCacheService;
423
+ private readonly _snapshotService;
424
+ constructor(_urlService: IURLService, _logService: ILogService, _commandService: ICommandService, _localCacheService: LocalCacheService, _snapshotService: SnapshotService, remoteInstanceService?: IRemoteInstanceService);
425
+ private _init;
426
+ private _setupSubUnitSync;
427
+ private _updateURLWithCurrentState;
428
+ private _updateSubUnitFromURLParams;
429
+ private _loadSheet;
430
+ private _loadDoc;
431
+ }
432
+
433
+ export declare function deserializeToCombResponse(event: MessageEvent): ICombResponseEvent;
434
+
435
+ /**
436
+ * This controller is responsible for monitoring the collaboration status of the currently focused unit.
437
+ */
438
+ export declare class DesktopCollaborationStatusDisplayController extends Disposable_2 {
439
+ private readonly _univerInstanceService;
440
+ private readonly _uiPartsService;
441
+ private readonly _injector;
442
+ private readonly _collaborationController;
443
+ protected readonly _status$: BehaviorSubject<CollaborationStatus>;
444
+ constructor(_univerInstanceService: IUniverInstanceService, _uiPartsService: IUIPartsService, _injector: Injector, _collaborationController: CollaborationController);
445
+ private _initStatusListener;
446
+ protected _initStatusComponent(): void;
447
+ }
448
+
449
+ export declare class DocCollaborationEntity extends CollaborationEntity {
450
+ readonly unitID: string;
451
+ readonly type: UniverType;
452
+ private readonly _docStateChangeManagerService;
453
+ private readonly _docTransformIMECacheService;
454
+ private readonly _docTransformStateCacheService;
455
+ private readonly _docTransformSelectionsService;
456
+ private readonly _docSyncEditingCollabCursorService;
457
+ constructor(unitID: string, type: UniverType, session: CollaborationSession, injector: Injector, localCacheService: LocalCacheService, compressMutationService: CompressMutationService, localeService: LocaleService, revisionService: RevisionService, _docStateChangeManagerService: DocStateChangeManagerService, _docTransformIMECacheService: DocTransformIMECacheService, _docTransformStateCacheService: DocTransformStateCacheService, _docTransformSelectionsService: DocTransformSelectionsService, _docSyncEditingCollabCursorService: DocSyncEditingCollabCursorService, logService: ILogService, commandService: ICommandService, messageService: IMessageService, permissionService: IPermissionService, singleActiveUnitService?: ISingleActiveUnitService);
458
+ protected _createHandler(): ICollaborationStateHandler;
459
+ protected _init(): Promise<CollaborationState>;
460
+ }
461
+
462
+ declare class DocSyncEditingCollabCursorService extends RxDisposable {
463
+ private readonly _collabCursorState$;
464
+ readonly collabCursorState$: Observable<Nullable<IUpdateCursor>>;
465
+ syncEditingCollabCursor(collabCursor: ICollabEditingCursor): void;
466
+ }
467
+
468
+ declare class DocTransformIMECacheService {
469
+ private readonly _injector;
470
+ private readonly _transformService;
471
+ private readonly _renderManagerService;
472
+ constructor(_injector: Injector, _transformService: ITransformService, _renderManagerService: IRenderManagerService);
473
+ transformIMECache(changeset: IChangeset): void;
474
+ transformRemoteChangeset(changeset: IChangeset): IChangeset;
475
+ private _transformUndoRedoStack;
476
+ private _transformPreviousActiveRange;
477
+ }
478
+
479
+ declare class DocTransformSelectionsService {
480
+ private readonly _injector;
481
+ private readonly _transformService;
482
+ constructor(_injector: Injector, _transformService: ITransformService);
483
+ transformSelections(changeset: IChangeset): void;
484
+ }
485
+
486
+ declare class DocTransformStateCacheService {
487
+ private readonly _injector;
488
+ private readonly _transformService;
489
+ private readonly _docStateChangeManagerService;
490
+ constructor(_injector: Injector, _transformService: ITransformService, _docStateChangeManagerService: DocStateChangeManagerService);
491
+ transformStateCache(changeset: IChangeset): void;
492
+ transformRemoteChangeset(changeset: IChangeset): IChangeset;
493
+ private _transformHistoryAndStateStack;
494
+ }
495
+
496
+ /** The heartbeat interval in milliseconds. */
497
+ export declare const HEARTBEAT_INTERVAL_KEY = "HEARTBEAT_INTERVAL";
498
+
499
+ export declare const HEARTBEAT_TIMEOUT_KEY = "HEARTBEAT_TIMEOUT";
500
+
501
+ declare interface ICollabEditingCursor {
502
+ unitID: string;
503
+ memberID: string;
504
+ textRanges: ITextRangeWithStyle[];
505
+ }
506
+
507
+ export declare interface ICollaborationSocket extends Pick<ISocket, 'open$' | 'error$' | 'close$'> {
508
+ memberID: string;
509
+ message$: Observable<ICombResponseEvent>;
510
+ send: (event: ICombRequestEvent) => void;
511
+ close: () => void;
512
+ }
513
+
514
+ /**
515
+ * This service provides a socket that can be used to communicate with the remote collaboration server.
516
+ */
517
+ export declare interface ICollaborationSocketService {
518
+ createSocket: (url: string) => Nullable<ICollaborationSocket>;
519
+ }
520
+
521
+ export declare const ICollaborationSocketService: IdentifierDecorator<ICollaborationSocketService>;
522
+
523
+ declare interface ICollaborationStateHandler {
524
+ onStateChange: StateChangeHandler;
525
+ onSendChangeset: SendChangesetHandler;
526
+ onMissingChangesets: MissingChangesetsHandler;
527
+ onTransformSelections?: TransformSelectionsHandler;
528
+ onTransformIME?: TransformIMEHandler;
529
+ onTransformState?: TransformStateHandler;
530
+ onSyncEditingCollabCursor?: SyncEditingCollabCursorHandler;
531
+ onTransformRemoteChangesetByIMECache?: TransformRemoteChangesetByIMECache;
532
+ onTransformRemoteChangesetByStateCache?: TransformRemoteChangesetByStateCache;
533
+ }
534
+
535
+ /**
536
+ * `LocalUndoRedoService` cannot transform mutations in the undo redo stack under collaboration conditions.
537
+ */
538
+ declare interface ICollaborativeUndoRedoService extends IUndoRedoService {
539
+ transformUndoRedo: (unitID: string, changeset: IChangeset) => void;
540
+ }
541
+
542
+ export declare class ImageIoService implements IImageIoService {
543
+ private readonly _httpService;
544
+ private readonly _configService;
545
+ private readonly _univerInstanceService;
546
+ private _waitCount;
547
+ private _change$;
548
+ change$: Observable<number>;
549
+ constructor(_httpService: HTTPService, _configService: IConfigService, _univerInstanceService: IUniverInstanceService);
550
+ setWaitCount(count: number): void;
551
+ private _imageSourceCache;
552
+ getImageSourceCache(source: string, imageSourceType: ImageSourceType): HTMLImageElement | undefined;
553
+ addImageSourceCache(source: string, imageSourceType: ImageSourceType, imageSource: Nullable<HTMLImageElement>): void;
554
+ getImage(imageId: string): Promise<string>;
555
+ saveImage(imageFile: File): Promise<Nullable<IImageIoServiceParam>>;
556
+ private _getUploadFileURL;
557
+ private _getSignURL;
558
+ private _getDownloadEndpointURL;
559
+ private _replaceFileID;
560
+ private _decreaseWaiting;
561
+ }
562
+
563
+ declare interface IOnlineStatusProps {
564
+ /** The collaboration state of the currently focused unit. */
565
+ status$: Observable<CollaborationStatus>;
566
+ }
567
+
568
+ /**
569
+ * The data structure to store collab cursor info of sheet.
570
+ */
571
+ declare interface ISheetCollabCursor {
572
+ /** Stroke color of this collab cursor */
573
+ color: string;
574
+ /** Position of this cursor */
575
+ range: IRange;
576
+ /** Displayed user name of this cursor */
577
+ name: string;
578
+ /** The serialized range to check if two cursor are on the same position. */
579
+ selection: string;
580
+ /** Worksheet ID */
581
+ sheetID: string;
582
+ /** Background color of this collab cursor */
583
+ backgroundColor?: string;
584
+ }
585
+
586
+ export declare interface ISheetCollabCursorShapeProps extends IShapeProps, ISheetCollabCursor {
587
+ hovered?: boolean;
588
+ labelPosition?: 'bottom' | 'top';
589
+ }
590
+
591
+ /**
592
+ * It is not recommended to open multiple units in different browser tabs at the same time,
593
+ * especially when the there is not access to the internet. There is a great chance of loosing
594
+ * offline data! So we should make there is only one active unit at a time.
595
+ */
596
+ declare const ISingleActiveUnitService: IdentifierDecorator<ISingleActiveUnitService>;
597
+
598
+ declare interface ISingleActiveUnitService {
599
+ editingUnit: (unitID: string) => void;
600
+ getUnitStatus$: (unitID: string) => Observable<UnitStatus>;
601
+ }
602
+
603
+ declare interface IUnitCacheData {
604
+ unitID: string;
605
+ type: UniverType;
606
+ rev: number;
607
+ awaitingChangeset: Nullable<IChangeset>;
608
+ mutations: IMutationInfo[];
609
+ }
610
+
611
+ export declare interface IUniverCollaborationClientConfig {
612
+ socketService?: Ctor<ICollaborationSocketService>;
613
+ enableOfflineEditing?: boolean;
614
+ enableSingleActiveInstanceLock?: boolean;
615
+ enableAuthServer?: boolean;
616
+ /**
617
+ * Override internal modules with custom implementations.
618
+ */
619
+ override?: DependencyOverride;
620
+ sendChangesetTimeout?: number;
621
+ snapshotServerUrl?: string;
622
+ collabSubmitChangesetUrl?: string;
623
+ collabWebSocketUrl?: string;
624
+ loginUrlKey?: string;
625
+ retryConnectingInterval?: number;
626
+ authzUrl?: string;
627
+ /**
628
+ * The URL of the endpoint for downloading files.
629
+ * @default 'location.origin'
630
+ */
631
+ downloadEndpointUrl?: string;
632
+ uploadFileServerUrl?: string;
633
+ signUrlServerUrl?: string;
634
+ }
635
+
636
+ /**
637
+ * This service reads the url from the host platform and return url parts,
638
+ * such as queries, hashes and path.
639
+ */
640
+ export declare interface IURLService {
641
+ getParam: (key: string) => string | undefined;
642
+ setParam: (key: string, value: string, useReplace?: boolean) => void;
643
+ removeParam: (key: string, useReplace?: boolean) => void;
644
+ urlChange$: Observable<void>;
645
+ }
646
+
647
+ export declare const IURLService: IdentifierDecorator<IURLService>;
648
+
649
+ declare interface IUser extends IMember {
650
+ userID: string;
651
+ }
652
+
653
+ /**
654
+ * A config key to determine how often should Univer save local edits.
655
+ */
656
+ export declare const LOCAL_CACHE_INTERVAL_KEY = "LOCAL_CACHE_INTERVAL";
657
+
658
+ /**
659
+ * This service provide caching to the collaboration controller.
660
+ */
661
+ export declare class LocalCacheService extends Disposable_2 {
662
+ private readonly _configService;
663
+ private readonly _localStorageService;
664
+ private readonly _beforeCloseService;
665
+ private readonly _localeService;
666
+ private readonly _revisionService;
667
+ private _cachedData;
668
+ private _saveTaskMap;
669
+ private _disabled;
670
+ constructor(_configService: IConfigService, _localStorageService: ILocalStorageService, _beforeCloseService: IBeforeCloseService, _localeService: LocaleService, _revisionService: RevisionService);
671
+ disableLocalCache(): void;
672
+ enableLocalCache(): void;
673
+ dispose(): void;
674
+ loadOfflineData(unitID: string): Promise<Nullable<IUnitCacheData>>;
675
+ saveOfflineData(unitID: string, data: IUnitCacheData): Promise<boolean>;
676
+ updateOfflineData(unitID: string, type: UniverType, awaitingChangeset: Nullable<IChangeset>, pendingMutations: IMutationInfo[]): void;
677
+ private _scheduleSaving;
678
+ private _getSaveTimeout;
679
+ private _saveCache;
680
+ exhaustSavingTask(): Promise<void>;
681
+ private _setupBeforeClosingHandler;
682
+ }
683
+
684
+ /** @deprecated Will be removed in the 0.2.19 release */
685
+ export declare const LOGIN_URL_KEY = "LOGIN_URL_KEY";
686
+
687
+ /**
688
+ * This services manages members is each rooms.
689
+ */
690
+ export declare class MemberService extends Disposable_2 {
691
+ private readonly _univerInstanceService;
692
+ private _userManagerService;
693
+ private _roomMembers;
694
+ constructor(_univerInstanceService: IUniverInstanceService, _userManagerService: UserManagerService);
695
+ /**
696
+ * @deprecated please use userManagerService
697
+ */
698
+ setCurrentUser(user: IUser): void;
699
+ /**
700
+ * @deprecated please use userManagerService
701
+ */
702
+ getCurrentUser(): Nullable<IUser>;
703
+ /**
704
+ * Update a member in a room(unit).
705
+ * @param roomID i.e. unitID.
706
+ * @param member member object to be updated.
707
+ */
708
+ updateMember(roomID: string, member: IMember): void;
709
+ /**
710
+ * Remove a member from a room(unit).
711
+ * @param roomID i.e. unitID.
712
+ * @param memberID memberID of the member to be removed.
713
+ */
714
+ removeMember(roomID: string, memberID: string): void;
715
+ /**
716
+ * Get RoomMember for a unit.
717
+ * @param roomID which is same with unitId.
718
+ * @returns RoomMember which is a object that manages members in a single room.
719
+ */
720
+ getRoom(roomID: string): RoomMember | undefined;
721
+ /**
722
+ * Get a member in a room(unit).
723
+ * @param roomID i.e. unitID.
724
+ * @param memberID memberID of the member to be retrieved.
725
+ * @returns member object.
726
+ */
727
+ getMember(roomID: string, memberID: string): IMember | undefined;
728
+ private _removeRoom;
729
+ dispose(): void;
730
+ }
731
+
732
+ declare type MissingChangesetsHandler = (params: {
733
+ from: number;
734
+ to: number;
735
+ }) => void;
736
+
737
+ export declare const RETRY_CONNECTING_MAX_COUNT_KEY = "RETRY_CONNECTING_MAX_COUNT";
738
+
739
+ /**
740
+ * This class manages members is a single room.
741
+ */
742
+ declare class RoomMember extends Disposable_2 {
743
+ private readonly _members;
744
+ dispose(): void;
745
+ /**
746
+ * Update a member in the room(unit).
747
+ * @param member member object to be updated.
748
+ */
749
+ updateMember(member: IMember): void;
750
+ /**
751
+ * Remove a member from the room(unit).
752
+ * @param memberID memberID of the member to be removed.
753
+ */
754
+ removeMember(memberID: string): void;
755
+ /**
756
+ * Get a member by memberID.
757
+ * @param memberID
758
+ * @returns member object.
759
+ */
760
+ getMember(memberID: string): IMember | undefined;
761
+ /**
762
+ * Get all members in the room(unit).
763
+ * @returns member object array.
764
+ */
765
+ getAllMembers(): IMember[];
766
+ }
767
+
768
+ /** @deprecated Will be removed in the 0.2.19 release */
769
+ export declare const SEND_CHANGESET_TIMEOUT_KEY = "SEND_CHANGESET_TIMEOUT";
770
+
771
+ /** A network interface to send changeset and */
772
+ declare type SendChangesetHandler = (changeset: IChangeset) => void;
773
+
774
+ export declare function serializeCombRequest(event: ICombRequestEvent): string;
775
+
776
+ export declare enum SessionStatus {
777
+ IDLE = 0,
778
+ JOINING = 1,
779
+ OFFLINE = 2,
780
+ ONLINE = 3
781
+ }
782
+
783
+ /**
784
+ * Render a single collaborated cursor on the canvas.
785
+ */
786
+ export declare class SheetCollabCursorShape<T extends ISheetCollabCursorShapeProps = ISheetCollabCursorShapeProps> extends Shape<T> {
787
+ private _color;
788
+ private _hovered;
789
+ private _range;
790
+ private _name;
791
+ private _labelPosition;
792
+ private _backgroundColor?;
793
+ constructor(key?: string, props?: T);
794
+ setShapeProps(props: Partial<ISheetCollabCursorShapeProps>): void;
795
+ onMouseMove(position: {
796
+ row: number;
797
+ column: number;
798
+ }): void;
799
+ triggerDblclick(evt: IPointerEvent | IMouseEvent): boolean;
800
+ protected _draw(ctx: CanvasRenderingContext2D): void;
801
+ }
802
+
803
+ export declare class SheetCollaborationEntity extends CollaborationEntity {
804
+ readonly unitID: string;
805
+ readonly type: UniverType;
806
+ private readonly _sheetTransformSelectionsService;
807
+ constructor(unitID: string, type: UniverType, session: CollaborationSession, injector: Injector, localCacheService: LocalCacheService, compressMutationService: CompressMutationService, localeService: LocaleService, revisionService: RevisionService, _sheetTransformSelectionsService: SheetTransformSelectionsService, logService: ILogService, commandService: ICommandService, messageService: IMessageService, permissionService: IPermissionService, singleActiveUnitService?: ISingleActiveUnitService);
808
+ protected _createHandler(): ICollaborationStateHandler;
809
+ protected _init(): Promise<CollaborationState>;
810
+ }
811
+
812
+ declare class SheetTransformSelectionsService {
813
+ private readonly _injector;
814
+ private readonly _transformService;
815
+ private readonly _instanceService;
816
+ constructor(_injector: Injector, _transformService: ITransformService, _instanceService: IUniverInstanceService);
817
+ transformSelections(changeset: IChangeset): void;
818
+ }
819
+
820
+ /** @deprecated Will be removed in the 0.2.19 release */
821
+ export declare const SNAPSHOT_SERVER_URL_KEY = "SNAPSHOT_SERVER_URL_KEY";
822
+
823
+ /**
824
+ * @ignore
825
+ */
826
+ export declare const SNAPSHOT_URL_KEY = "SNAPSHOT_URL_KEY";
827
+
828
+ export declare class SnapshotServerOverHTTPService implements ISnapshotServerService {
829
+ private readonly _configService;
830
+ private readonly _httpService;
831
+ constructor(_configService: IConfigService, _httpService: HTTPService);
832
+ getUnitOnRev(_context: ILogContext, params: IGetUnitOnRevRequest): Promise<IGetUnitOnRevResponse>;
833
+ getSheetBlock(_context: ILogContext, params: IGetSheetBlockRequest): Promise<IGetSheetBlockResponse>;
834
+ getDeserializedSheetBlock(_context: ILogContext, params: IGetSheetBlockRequest): Promise<IGetDeserializedSheetBlockResponse>;
835
+ fetchMissingChangesets(_context: ILogContext, params: IFetchMissingChangesetsRequest): Promise<IFetchMissingChangesetsResponse>;
836
+ private _getSnapshotAPIPrefix;
837
+ private _getAPIPrefix;
838
+ getResourcesRequest(_context: ILogContext, params: IGetResourcesRequest): Promise<IGetResourcesResponse>;
839
+ saveSnapshot(): Promise<ISaveSnapshotResponse>;
840
+ saveSheetBlock(): Promise<ISaveSheetBlockResponse>;
841
+ saveChangeset(): Promise<ISaveChangesetResponse>;
842
+ copyFileMeta(): Promise<ICopyFileMetaResponse>;
843
+ getLatestCsReqIdBySid(): Promise<IGetLatestCsReqIdBySidResponse>;
844
+ }
845
+
846
+ /** Provide both states when and after changing, so the parent could examine if state transition is correct. */
847
+ declare type StateChangeHandler = (before: CollaborationState, after: CollaborationState) => void;
848
+
849
+ declare type SyncEditingCollabCursorHandler = (params: ICollabEditingCursor) => void;
850
+
851
+ declare type TransformIMEHandler = (changeset: IChangeset) => void;
852
+
853
+ declare type TransformRemoteChangesetByIMECache = (changeset: IChangeset) => IChangeset;
854
+
855
+ declare type TransformRemoteChangesetByStateCache = (changeset: IChangeset) => IChangeset;
856
+
857
+ declare type TransformSelectionsHandler = (changeset: IChangeset) => void;
858
+
859
+ declare type TransformStateHandler = (changeset: IChangeset) => void;
860
+
861
+ declare enum UnitStatus {
862
+ NO_OTHER_CLIENTS_EDITING = 0,
863
+ OTHER_CLIENTS_EDITING = 1
864
+ }
865
+
866
+ export declare class UniverCollaborationClientPlugin extends Plugin_2 {
867
+ private readonly _config;
868
+ private readonly _logService;
869
+ private readonly _renderManagerService;
870
+ protected _injector: Injector;
871
+ private readonly _configService;
872
+ static pluginName: string;
873
+ constructor(_config: Partial<IUniverCollaborationClientConfig> | undefined, _logService: ILogService, _renderManagerService: IRenderManagerService, _injector: Injector, _configService: IConfigService);
874
+ onStarting(): void;
875
+ onReady(): void;
876
+ onRendered(): void;
877
+ private _registerDependencies;
878
+ private _registerRenderDependencies;
879
+ private _initDependencies;
880
+ }
881
+
882
+ export declare class WebURLService extends RxDisposable implements IURLService {
883
+ readonly urlChange$: Observable<void>;
884
+ constructor();
885
+ setParam(key: string, value: string, useReplace?: boolean): void;
886
+ removeParam(key: string, useReplace?: boolean): void;
887
+ getParam(key: string): string | undefined;
888
+ }
889
+
890
+ export { }