@theia/collaboration 1.53.0-next.55

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 (43) hide show
  1. package/README.md +33 -0
  2. package/lib/browser/collaboration-color-service.d.ts +27 -0
  3. package/lib/browser/collaboration-color-service.d.ts.map +1 -0
  4. package/lib/browser/collaboration-color-service.js +76 -0
  5. package/lib/browser/collaboration-color-service.js.map +1 -0
  6. package/lib/browser/collaboration-file-system-provider.d.ts +37 -0
  7. package/lib/browser/collaboration-file-system-provider.d.ts.map +1 -0
  8. package/lib/browser/collaboration-file-system-provider.js +114 -0
  9. package/lib/browser/collaboration-file-system-provider.js.map +1 -0
  10. package/lib/browser/collaboration-frontend-contribution.d.ts +43 -0
  11. package/lib/browser/collaboration-frontend-contribution.d.ts.map +1 -0
  12. package/lib/browser/collaboration-frontend-contribution.js +334 -0
  13. package/lib/browser/collaboration-frontend-contribution.js.map +1 -0
  14. package/lib/browser/collaboration-frontend-module.d.ts +4 -0
  15. package/lib/browser/collaboration-frontend-module.d.ts.map +1 -0
  16. package/lib/browser/collaboration-frontend-module.js +38 -0
  17. package/lib/browser/collaboration-frontend-module.js.map +1 -0
  18. package/lib/browser/collaboration-instance.d.ts +94 -0
  19. package/lib/browser/collaboration-instance.d.ts.map +1 -0
  20. package/lib/browser/collaboration-instance.js +806 -0
  21. package/lib/browser/collaboration-instance.js.map +1 -0
  22. package/lib/browser/collaboration-utils.d.ts +8 -0
  23. package/lib/browser/collaboration-utils.d.ts.map +1 -0
  24. package/lib/browser/collaboration-utils.js +63 -0
  25. package/lib/browser/collaboration-utils.js.map +1 -0
  26. package/lib/browser/collaboration-workspace-service.d.ts +12 -0
  27. package/lib/browser/collaboration-workspace-service.d.ts.map +1 -0
  28. package/lib/browser/collaboration-workspace-service.js +67 -0
  29. package/lib/browser/collaboration-workspace-service.js.map +1 -0
  30. package/lib/package.spec.d.ts +1 -0
  31. package/lib/package.spec.d.ts.map +1 -0
  32. package/lib/package.spec.js +26 -0
  33. package/lib/package.spec.js.map +1 -0
  34. package/package.json +58 -0
  35. package/src/browser/collaboration-color-service.ts +77 -0
  36. package/src/browser/collaboration-file-system-provider.ts +119 -0
  37. package/src/browser/collaboration-frontend-contribution.ts +327 -0
  38. package/src/browser/collaboration-frontend-module.ts +37 -0
  39. package/src/browser/collaboration-instance.ts +819 -0
  40. package/src/browser/collaboration-utils.ts +59 -0
  41. package/src/browser/collaboration-workspace-service.ts +69 -0
  42. package/src/browser/style/index.css +22 -0
  43. package/src/package.spec.ts +28 -0
package/README.md ADDED
@@ -0,0 +1,33 @@
1
+ <div align='center'>
2
+
3
+ <br />
4
+
5
+ <img src='https://raw.githubusercontent.com/eclipse-theia/theia/master/logo/theia.svg?sanitize=true' alt='theia-ext-logo' width='100px' />
6
+
7
+ <h2>ECLIPSE THEIA - COLLABORATION EXTENSION</h2>
8
+
9
+ <hr />
10
+
11
+ </div>
12
+
13
+ ## Description
14
+
15
+ The `@theia/collaboration` extension features to enable collaboration between multiple peers using Theia.
16
+ This is built on top of the [Open Collaboration Tools](https://www.open-collab.tools/) ([GitHub](https://github.com/TypeFox/open-collaboration-tools)) project.
17
+
18
+ Note that the project is still in a beta phase and can be subject to unexpected breaking changes. This package is therefore in a beta phase as well.
19
+
20
+ ## Additional Information
21
+
22
+ - [API documentation for `@theia/collaboration`](https://eclipse-theia.github.io/theia/docs/next/modules/collaboration.html)
23
+ - [Theia - GitHub](https://github.com/eclipse-theia/theia)
24
+ - [Theia - Website](https://theia-ide.org/)
25
+
26
+ ## License
27
+
28
+ - [Eclipse Public License 2.0](http://www.eclipse.org/legal/epl-2.0/)
29
+ - [一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception](https://projects.eclipse.org/license/secondary-gpl-2.0-cp)
30
+
31
+ ## Trademark
32
+ "Theia" is a trademark of the Eclipse Foundation
33
+ https://www.eclipse.org/theia
@@ -0,0 +1,27 @@
1
+ export interface CollaborationColor {
2
+ r: number;
3
+ g: number;
4
+ b: number;
5
+ }
6
+ export declare namespace CollaborationColor {
7
+ function fromString(code: string): CollaborationColor;
8
+ const Gold: CollaborationColor;
9
+ const Tomato: CollaborationColor;
10
+ const Aquamarine: CollaborationColor;
11
+ const Beige: CollaborationColor;
12
+ const Coral: CollaborationColor;
13
+ const DarkOrange: CollaborationColor;
14
+ const VioletRed: CollaborationColor;
15
+ const DodgerBlue: CollaborationColor;
16
+ const Chocolate: CollaborationColor;
17
+ const LightGreen: CollaborationColor;
18
+ const MediumOrchid: CollaborationColor;
19
+ const Orange: CollaborationColor;
20
+ }
21
+ export declare class CollaborationColorService {
22
+ light: string;
23
+ dark: string;
24
+ getColors(): CollaborationColor[];
25
+ requiresDarkFont(color: CollaborationColor): boolean;
26
+ }
27
+ //# sourceMappingURL=collaboration-color-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration-color-service.d.ts","sourceRoot":"","sources":["../../src/browser/collaboration-color-service.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,kBAAkB;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,yBAAiB,kBAAkB,CAAC;IAChC,SAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAQ3D;IAEM,MAAM,IAAI,oBAAwB,CAAC;IACnC,MAAM,MAAM,oBAAwB,CAAC;IACrC,MAAM,UAAU,oBAAwB,CAAC;IACzC,MAAM,KAAK,oBAAwB,CAAC;IACpC,MAAM,KAAK,oBAAwB,CAAC;IACpC,MAAM,UAAU,oBAAwB,CAAC;IACzC,MAAM,SAAS,oBAAwB,CAAC;IACxC,MAAM,UAAU,oBAAwB,CAAC;IACzC,MAAM,SAAS,oBAAwB,CAAC;IACxC,MAAM,UAAU,oBAAwB,CAAC;IACzC,MAAM,YAAY,oBAAwB,CAAC;IAC3C,MAAM,MAAM,oBAAwB,CAAC;CAC/C;AAED,qBACa,yBAAyB;IAElC,KAAK,SAAW;IAChB,IAAI,SAAW;IAEf,SAAS,IAAI,kBAAkB,EAAE;IAiBjC,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO;CAIvD"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2024 TypeFox and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CollaborationColorService = exports.CollaborationColor = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ var CollaborationColor;
22
+ (function (CollaborationColor) {
23
+ function fromString(code) {
24
+ if (code.startsWith('#')) {
25
+ code = code.substring(1);
26
+ }
27
+ const r = parseInt(code.substring(0, 2), 16);
28
+ const g = parseInt(code.substring(2, 4), 16);
29
+ const b = parseInt(code.substring(4, 6), 16);
30
+ return { r, g, b };
31
+ }
32
+ CollaborationColor.fromString = fromString;
33
+ CollaborationColor.Gold = fromString('#FFD700');
34
+ CollaborationColor.Tomato = fromString('#FF6347');
35
+ CollaborationColor.Aquamarine = fromString('#7FFFD4');
36
+ CollaborationColor.Beige = fromString('#F5F5DC');
37
+ CollaborationColor.Coral = fromString('#FF7F50');
38
+ CollaborationColor.DarkOrange = fromString('#FF8C00');
39
+ CollaborationColor.VioletRed = fromString('#C71585');
40
+ CollaborationColor.DodgerBlue = fromString('#1E90FF');
41
+ CollaborationColor.Chocolate = fromString('#D2691E');
42
+ CollaborationColor.LightGreen = fromString('#90EE90');
43
+ CollaborationColor.MediumOrchid = fromString('#BA55D3');
44
+ CollaborationColor.Orange = fromString('#FFA500');
45
+ })(CollaborationColor || (exports.CollaborationColor = CollaborationColor = {}));
46
+ let CollaborationColorService = class CollaborationColorService {
47
+ constructor() {
48
+ this.light = 'white';
49
+ this.dark = 'black';
50
+ }
51
+ getColors() {
52
+ return [
53
+ CollaborationColor.Gold,
54
+ CollaborationColor.Aquamarine,
55
+ CollaborationColor.Tomato,
56
+ CollaborationColor.MediumOrchid,
57
+ CollaborationColor.LightGreen,
58
+ CollaborationColor.Orange,
59
+ CollaborationColor.Beige,
60
+ CollaborationColor.Chocolate,
61
+ CollaborationColor.VioletRed,
62
+ CollaborationColor.Coral,
63
+ CollaborationColor.DodgerBlue,
64
+ CollaborationColor.DarkOrange
65
+ ];
66
+ }
67
+ requiresDarkFont(color) {
68
+ // From https://stackoverflow.com/a/3943023
69
+ return ((color.r * 0.299) + (color.g * 0.587) + (color.b * 0.114)) > 186;
70
+ }
71
+ };
72
+ exports.CollaborationColorService = CollaborationColorService;
73
+ exports.CollaborationColorService = CollaborationColorService = tslib_1.__decorate([
74
+ (0, inversify_1.injectable)()
75
+ ], CollaborationColorService);
76
+ //# sourceMappingURL=collaboration-color-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration-color-service.js","sourceRoot":"","sources":["../../src/browser/collaboration-color-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAA0D;AAQ1D,IAAiB,kBAAkB,CAuBlC;AAvBD,WAAiB,kBAAkB;IAC/B,SAAgB,UAAU,CAAC,IAAY;QACnC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACvB,CAAC;IARe,6BAAU,aAQzB,CAAA;IAEY,uBAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,yBAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,6BAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,wBAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9B,wBAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9B,6BAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,4BAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,6BAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,4BAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAClC,6BAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,+BAAY,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,yBAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC,EAvBgB,kBAAkB,kCAAlB,kBAAkB,QAuBlC;AAGM,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAA/B;QAEH,UAAK,GAAG,OAAO,CAAC;QAChB,SAAI,GAAG,OAAO,CAAC;IAuBnB,CAAC;IArBG,SAAS;QACL,OAAO;YACH,kBAAkB,CAAC,IAAI;YACvB,kBAAkB,CAAC,UAAU;YAC7B,kBAAkB,CAAC,MAAM;YACzB,kBAAkB,CAAC,YAAY;YAC/B,kBAAkB,CAAC,UAAU;YAC7B,kBAAkB,CAAC,MAAM;YACzB,kBAAkB,CAAC,KAAK;YACxB,kBAAkB,CAAC,SAAS;YAC5B,kBAAkB,CAAC,SAAS;YAC5B,kBAAkB,CAAC,KAAK;YACxB,kBAAkB,CAAC,UAAU;YAC7B,kBAAkB,CAAC,UAAU;SAChC,CAAC;IACN,CAAC;IAED,gBAAgB,CAAC,KAAyB;QACtC,2CAA2C;QAC3C,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;IAC7E,CAAC;CACJ,CAAA;AA1BY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,sBAAU,GAAE;GACA,yBAAyB,CA0BrC"}
@@ -0,0 +1,37 @@
1
+ import * as Y from 'yjs';
2
+ import { Disposable, Emitter, Event, URI } from '@theia/core';
3
+ import { FileChange, FileDeleteOptions, FileOverwriteOptions, FileSystemProviderCapabilities, FileType, Stat, WatchOptions, FileSystemProviderWithFileReadWriteCapability, FileWriteOptions } from '@theia/filesystem/lib/common/files';
4
+ import { ProtocolBroadcastConnection, Workspace, Peer } from 'open-collaboration-protocol';
5
+ export declare namespace CollaborationURI {
6
+ const scheme = "collaboration";
7
+ function create(workspace: Workspace, path?: string): URI;
8
+ }
9
+ export declare class CollaborationFileSystemProvider implements FileSystemProviderWithFileReadWriteCapability {
10
+ readonly connection: ProtocolBroadcastConnection;
11
+ readonly host: Peer;
12
+ readonly yjs: Y.Doc;
13
+ capabilities: FileSystemProviderCapabilities;
14
+ protected _readonly: boolean;
15
+ get readonly(): boolean;
16
+ set readonly(value: boolean);
17
+ constructor(connection: ProtocolBroadcastConnection, host: Peer, yjs: Y.Doc);
18
+ protected encoder: TextEncoder;
19
+ protected decoder: TextDecoder;
20
+ protected onDidChangeCapabilitiesEmitter: Emitter<void>;
21
+ protected onDidChangeFileEmitter: Emitter<readonly FileChange[]>;
22
+ protected onFileWatchErrorEmitter: Emitter<void>;
23
+ get onDidChangeCapabilities(): Event<void>;
24
+ get onDidChangeFile(): Event<readonly FileChange[]>;
25
+ get onFileWatchError(): Event<void>;
26
+ readFile(resource: URI): Promise<Uint8Array>;
27
+ writeFile(resource: URI, content: Uint8Array, opts: FileWriteOptions): Promise<void>;
28
+ watch(resource: URI, opts: WatchOptions): Disposable;
29
+ stat(resource: URI): Promise<Stat>;
30
+ mkdir(resource: URI): Promise<void>;
31
+ readdir(resource: URI): Promise<[string, FileType][]>;
32
+ delete(resource: URI, opts: FileDeleteOptions): Promise<void>;
33
+ rename(from: URI, to: URI, opts: FileOverwriteOptions): Promise<void>;
34
+ protected getHostPath(uri: URI): string;
35
+ triggerEvent(changes: FileChange[]): void;
36
+ }
37
+ //# sourceMappingURL=collaboration-file-system-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration-file-system-provider.d.ts","sourceRoot":"","sources":["../../src/browser/collaboration-file-system-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EACH,UAAU,EAAE,iBAAiB,EAC7B,oBAAoB,EAAE,8BAA8B,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,6CAA6C,EAAE,gBAAgB,EACtJ,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAE3F,yBAAiB,gBAAgB,CAAC;IAEvB,MAAM,MAAM,kBAAkB,CAAC;IAEtC,SAAgB,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,CAE/D;CACJ;AAED,qBACa,+BAAgC,YAAW,6CAA6C;IAsBrF,QAAQ,CAAC,UAAU,EAAE,2BAA2B;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI;IAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG;IApBtG,YAAY,iCAAgD;IAE5D,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC;IAE7B,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,OAAO,EAU1B;gBAEoB,UAAU,EAAE,2BAA2B,EAAW,IAAI,EAAE,IAAI,EAAW,GAAG,EAAE,CAAC,CAAC,GAAG;IAGtG,SAAS,CAAC,OAAO,cAAqB;IACtC,SAAS,CAAC,OAAO,cAAqB;IACtC,SAAS,CAAC,8BAA8B,gBAAuB;IAC/D,SAAS,CAAC,sBAAsB,iCAAwC;IACxE,SAAS,CAAC,uBAAuB,gBAAuB;IAExD,IAAI,uBAAuB,IAAI,KAAK,CAAC,IAAI,CAAC,CAEzC;IACD,IAAI,eAAe,IAAI,KAAK,CAAC,SAAS,UAAU,EAAE,CAAC,CAElD;IACD,IAAI,gBAAgB,IAAI,KAAK,CAAC,IAAI,CAAC,CAElC;IACK,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IAU5C,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1F,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,GAAG,UAAU;IAGpD,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAGlC,KAAK,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAG7B,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;IAI3D,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAG7D,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAKvC,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;CAI5C"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2024 TypeFox and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CollaborationFileSystemProvider = exports.CollaborationURI = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const Y = require("yjs");
21
+ const core_1 = require("@theia/core");
22
+ const inversify_1 = require("@theia/core/shared/inversify");
23
+ var CollaborationURI;
24
+ (function (CollaborationURI) {
25
+ CollaborationURI.scheme = 'collaboration';
26
+ function create(workspace, path) {
27
+ return new core_1.URI(`${CollaborationURI.scheme}:///${workspace.name}${path ? '/' + path : ''}`);
28
+ }
29
+ CollaborationURI.create = create;
30
+ })(CollaborationURI || (exports.CollaborationURI = CollaborationURI = {}));
31
+ let CollaborationFileSystemProvider = class CollaborationFileSystemProvider {
32
+ get readonly() {
33
+ return this._readonly;
34
+ }
35
+ set readonly(value) {
36
+ if (this._readonly !== value) {
37
+ this._readonly = value;
38
+ if (value) {
39
+ this.capabilities |= 2048 /* FileSystemProviderCapabilities.Readonly */;
40
+ }
41
+ else {
42
+ this.capabilities &= ~2048 /* FileSystemProviderCapabilities.Readonly */;
43
+ }
44
+ this.onDidChangeCapabilitiesEmitter.fire();
45
+ }
46
+ }
47
+ constructor(connection, host, yjs) {
48
+ this.connection = connection;
49
+ this.host = host;
50
+ this.yjs = yjs;
51
+ this.capabilities = 2 /* FileSystemProviderCapabilities.FileReadWrite */;
52
+ this.encoder = new TextEncoder();
53
+ this.decoder = new TextDecoder();
54
+ this.onDidChangeCapabilitiesEmitter = new core_1.Emitter();
55
+ this.onDidChangeFileEmitter = new core_1.Emitter();
56
+ this.onFileWatchErrorEmitter = new core_1.Emitter();
57
+ }
58
+ get onDidChangeCapabilities() {
59
+ return this.onDidChangeCapabilitiesEmitter.event;
60
+ }
61
+ get onDidChangeFile() {
62
+ return this.onDidChangeFileEmitter.event;
63
+ }
64
+ get onFileWatchError() {
65
+ return this.onFileWatchErrorEmitter.event;
66
+ }
67
+ async readFile(resource) {
68
+ const path = this.getHostPath(resource);
69
+ if (this.yjs.share.has(path)) {
70
+ const stringValue = this.yjs.getText(path);
71
+ return this.encoder.encode(stringValue.toString());
72
+ }
73
+ else {
74
+ const data = await this.connection.fs.readFile(this.host.id, path);
75
+ return data.content;
76
+ }
77
+ }
78
+ async writeFile(resource, content, opts) {
79
+ const path = this.getHostPath(resource);
80
+ await this.connection.fs.writeFile(this.host.id, path, { content });
81
+ }
82
+ watch(resource, opts) {
83
+ return core_1.Disposable.NULL;
84
+ }
85
+ stat(resource) {
86
+ return this.connection.fs.stat(this.host.id, this.getHostPath(resource));
87
+ }
88
+ mkdir(resource) {
89
+ return this.connection.fs.mkdir(this.host.id, this.getHostPath(resource));
90
+ }
91
+ async readdir(resource) {
92
+ const record = await this.connection.fs.readdir(this.host.id, this.getHostPath(resource));
93
+ return Object.entries(record);
94
+ }
95
+ delete(resource, opts) {
96
+ return this.connection.fs.delete(this.host.id, this.getHostPath(resource));
97
+ }
98
+ rename(from, to, opts) {
99
+ return this.connection.fs.rename(this.host.id, this.getHostPath(from), this.getHostPath(to));
100
+ }
101
+ getHostPath(uri) {
102
+ const path = uri.path.toString().substring(1).split('/');
103
+ return path.slice(1).join('/');
104
+ }
105
+ triggerEvent(changes) {
106
+ this.onDidChangeFileEmitter.fire(changes);
107
+ }
108
+ };
109
+ exports.CollaborationFileSystemProvider = CollaborationFileSystemProvider;
110
+ exports.CollaborationFileSystemProvider = CollaborationFileSystemProvider = tslib_1.__decorate([
111
+ (0, inversify_1.injectable)(),
112
+ tslib_1.__metadata("design:paramtypes", [Object, Object, Y.Doc])
113
+ ], CollaborationFileSystemProvider);
114
+ //# sourceMappingURL=collaboration-file-system-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration-file-system-provider.js","sourceRoot":"","sources":["../../src/browser/collaboration-file-system-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import '../../src/browser/style/index.css';
2
+ import { CancellationToken, Command, CommandContribution, CommandRegistry, MessageService, QuickInputService } from '@theia/core';
3
+ import { ConnectionProvider } from 'open-collaboration-protocol';
4
+ import { WindowService } from '@theia/core/lib/browser/window/window-service';
5
+ import { CollaborationInstance, CollaborationInstanceFactory } from './collaboration-instance';
6
+ import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
7
+ import { Deferred } from '@theia/core/lib/common/promise-util';
8
+ import { CollaborationWorkspaceService } from './collaboration-workspace-service';
9
+ import { StatusBar, StatusBarEntry } from '@theia/core/lib/browser/status-bar';
10
+ export declare const COLLABORATION_CATEGORY = "Collaboration";
11
+ export declare namespace CollaborationCommands {
12
+ const CREATE_ROOM: Command;
13
+ const JOIN_ROOM: Command;
14
+ }
15
+ export declare const COLLABORATION_STATUS_BAR_ID = "statusBar.collaboration";
16
+ export declare const COLLABORATION_AUTH_TOKEN = "THEIA_COLLAB_AUTH_TOKEN";
17
+ export declare const COLLABORATION_SERVER_URL = "COLLABORATION_SERVER_URL";
18
+ export declare const DEFAULT_COLLABORATION_SERVER_URL = "https://api.open-collab.tools/";
19
+ export declare class CollaborationFrontendContribution implements CommandContribution {
20
+ protected readonly connectionProvider: Deferred<ConnectionProvider>;
21
+ protected readonly windowService: WindowService;
22
+ protected readonly quickInputService?: QuickInputService;
23
+ protected readonly envVariables: EnvVariablesServer;
24
+ protected readonly workspaceService: CollaborationWorkspaceService;
25
+ protected readonly messageService: MessageService;
26
+ protected readonly commands: CommandRegistry;
27
+ protected readonly statusBar: StatusBar;
28
+ protected readonly collaborationInstanceFactory: CollaborationInstanceFactory;
29
+ protected currentInstance?: CollaborationInstance;
30
+ protected init(): void;
31
+ protected onStatusDefaultClick(): Promise<void>;
32
+ protected onStatusSharedClick(code: string): Promise<void>;
33
+ protected onStatusConnectedClick(code: string): Promise<void>;
34
+ protected setStatusBarEntryDefault(): Promise<void>;
35
+ protected setStatusBarEntryShared(code: string): Promise<void>;
36
+ protected setStatusBarEntryConnected(code: string): Promise<void>;
37
+ protected setStatusBarEntry(entry: Omit<StatusBarEntry, 'alignment'>): Promise<void>;
38
+ protected getCollaborationServerUrl(): Promise<string>;
39
+ registerCommands(commands: CommandRegistry): void;
40
+ protected toAbortSignal(...tokens: CancellationToken[]): AbortSignal;
41
+ protected displayCopyNotification(code: string, firstTime?: boolean): Promise<void>;
42
+ }
43
+ //# sourceMappingURL=collaboration-frontend-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collaboration-frontend-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/collaboration-frontend-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EACH,iBAAiB,EAA2B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAiB,iBAAiB,EAC9I,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,kBAAkB,EAA6B,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,SAAS,EAAsB,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAInG,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AAEtD,yBAAiB,qBAAqB,CAAC;IAC5B,MAAM,WAAW,EAAE,OAEzB,CAAC;IACK,MAAM,SAAS,EAAE,OAEvB,CAAC;CACL;AAED,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAErE,eAAO,MAAM,wBAAwB,4BAA4B,CAAC;AAClE,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,gCAAgC,mCAAmC,CAAC;AAEjF,qBACa,iCAAkC,YAAW,mBAAmB;IAEzE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,+BAAsC;IAG3E,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAGzD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAGnE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAG7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IAE9E,SAAS,CAAC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IAGlD,SAAS,CAAC,IAAI,IAAI,IAAI;cAeN,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;cAmBrC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cA4ChD,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAkBnD,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;cAQzC,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAQpD,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAQvD,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ1E,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5D,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAmFjD,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,EAAE,iBAAiB,EAAE,GAAG,WAAW;cAMpD,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAuB1F"}