@interopio/workspaces-api 3.2.1 → 3.2.3
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.
- package/dist/workspaces.es.js +4295 -4648
- package/dist/workspaces.es.js.map +1 -1
- package/dist/workspaces.umd.js +5206 -5559
- package/dist/workspaces.umd.js.map +1 -1
- package/dist/workspaces.umd.min.js +1 -1
- package/package.json +36 -50
- package/workspaces.d.ts +8 -0
- package/rollup.config.js +0 -54
- package/src/builders/baseBuilder.ts +0 -50
- package/src/builders/parentBuilder.ts +0 -62
- package/src/builders/workspaceBuilder.ts +0 -102
- package/src/communication/bridge.ts +0 -263
- package/src/communication/constants.ts +0 -202
- package/src/communication/interop-transport.ts +0 -175
- package/src/controllers/base.ts +0 -487
- package/src/controllers/main.ts +0 -541
- package/src/controllers/shortcuts.ts +0 -28
- package/src/index.ts +0 -23
- package/src/main.ts +0 -415
- package/src/models/base/base.ts +0 -397
- package/src/models/column.ts +0 -187
- package/src/models/frame.ts +0 -368
- package/src/models/group.ts +0 -237
- package/src/models/row.ts +0 -188
- package/src/models/window.ts +0 -309
- package/src/models/workspace.ts +0 -717
- package/src/shared/decoders.ts +0 -939
- package/src/shared/ioc.ts +0 -227
- package/src/shared/privateDataManager.ts +0 -93
- package/src/shared/promisePlus.ts +0 -34
- package/src/shared/promiseWrapper.ts +0 -11
- package/src/types/builders.ts +0 -10
- package/src/types/controller.ts +0 -79
- package/src/types/glue.ts +0 -37
- package/src/types/ioc.ts +0 -33
- package/src/types/privateData.ts +0 -92
- package/src/types/protocol.ts +0 -453
- package/src/types/subscription.ts +0 -31
- package/temp.d.ts +0 -49
- package/tsconfig.json +0 -10
package/src/models/workspace.ts
DELETED
|
@@ -1,717 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { WorkspaceSnapshotResult, WindowStreamData, WorkspaceStreamData } from "../types/protocol";
|
|
3
|
-
import { checkThrowCallback, nonEmptyStringDecoder, workspaceLockConfigDecoder, workspacePinOptionsDecoder } from "../shared/decoders";
|
|
4
|
-
import { PrivateDataManager } from "../shared/privateDataManager";
|
|
5
|
-
import { FrameCreateConfig } from "../types/ioc";
|
|
6
|
-
import { Frame } from "./frame";
|
|
7
|
-
import { SubscriptionConfig } from "../types/subscription";
|
|
8
|
-
import { WorkspacePrivateData } from "../types/privateData";
|
|
9
|
-
import { IOConnectWorkspaces } from "../../workspaces";
|
|
10
|
-
import { Workspace as WorkspaceTemp, WorkspaceLockConfig } from "../../temp";
|
|
11
|
-
|
|
12
|
-
interface PrivateData {
|
|
13
|
-
manager: PrivateDataManager;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const data = new WeakMap<Workspace, PrivateData>();
|
|
17
|
-
|
|
18
|
-
const getData = (model: Workspace): WorkspacePrivateData => {
|
|
19
|
-
return data.get(model).manager.getWorkspaceData(model);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const getDataManager = (model: Workspace): PrivateDataManager => {
|
|
23
|
-
return data.get(model).manager;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
type SaveLayoutConfig = Omit<Omit<IOConnectWorkspaces.WorkspaceLayoutSaveConfig, "name">, "workspaceId">;
|
|
27
|
-
|
|
28
|
-
export class Workspace implements WorkspaceTemp {
|
|
29
|
-
|
|
30
|
-
constructor(dataManager: PrivateDataManager) {
|
|
31
|
-
data.set(this, { manager: dataManager });
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
public get id(): string {
|
|
35
|
-
return getData(this).id;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public get frameId(): string {
|
|
39
|
-
return getData(this).config.frameId;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
public get positionIndex(): number {
|
|
43
|
-
return getData(this).config.positionIndex;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public get title(): string {
|
|
47
|
-
return getData(this).config.title;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public get layoutName(): string {
|
|
51
|
-
return getData(this).config.layoutName;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public get isHibernated(): boolean | undefined {
|
|
55
|
-
return getData(this).config.isHibernated;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public get isSelected(): boolean {
|
|
59
|
-
return getData(this).config.isSelected;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
public get children(): IOConnectWorkspaces.WorkspaceElement[] {
|
|
63
|
-
return getData(this).children;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
public get frame(): Frame {
|
|
67
|
-
return getData(this).frame;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
public get allowSplitters(): boolean {
|
|
71
|
-
return getData(this).config.allowSplitters;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public get allowSystemHibernation(): boolean {
|
|
75
|
-
return getData(this).config.allowSystemHibernation;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
public get allowDrop(): boolean {
|
|
79
|
-
return getData(this).config.allowDrop;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
public get allowDropLeft(): boolean {
|
|
83
|
-
return getData(this).config.allowDropLeft;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public get allowDropTop(): boolean {
|
|
87
|
-
return getData(this).config.allowDropTop;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
public get allowDropRight(): boolean {
|
|
91
|
-
return getData(this).config.allowDropRight;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
public get allowDropBottom(): boolean {
|
|
95
|
-
return getData(this).config.allowDropBottom;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
public get allowExtract(): boolean {
|
|
99
|
-
return getData(this).config.allowExtract;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
public get allowWindowReorder(): boolean {
|
|
103
|
-
return getData(this).config.allowWindowReorder;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
public get showCloseButton(): boolean {
|
|
107
|
-
return getData(this).config.showCloseButton;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
public get showSaveButton(): boolean {
|
|
111
|
-
return getData(this).config.showSaveButton;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
public get allowWorkspaceTabReorder(): boolean {
|
|
115
|
-
return getData(this).config.allowWorkspaceTabReorder;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
public get allowWorkspaceTabExtract(): boolean {
|
|
119
|
-
return getData(this).config.allowWorkspaceTabExtract;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
public get minWidth(): number {
|
|
123
|
-
return getData(this).config.minWidth;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
public get minHeight(): number {
|
|
127
|
-
return getData(this).config.minHeight;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
public get maxWidth(): number {
|
|
131
|
-
return getData(this).config.maxWidth;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
public get maxHeight(): number {
|
|
135
|
-
return getData(this).config.maxHeight;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
public get width(): number {
|
|
139
|
-
return getData(this).config.widthInPx;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
public get height(): number {
|
|
143
|
-
return getData(this).config.heightInPx;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
public get showWindowCloseButtons(): boolean {
|
|
147
|
-
return getData(this).config.showWindowCloseButtons;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
public get showEjectButtons(): boolean {
|
|
151
|
-
return getData(this).config.showEjectButtons;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
public get showAddWindowButtons(): boolean {
|
|
155
|
-
return getData(this).config.showAddWindowButtons;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
public get isPinned(): boolean {
|
|
159
|
-
return getData(this).config.isPinned;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
public async removeChild(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {
|
|
163
|
-
checkThrowCallback(predicate);
|
|
164
|
-
const child = this.children.find(predicate);
|
|
165
|
-
if (!child) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
await child.close();
|
|
169
|
-
await this.refreshReference();
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
public async remove(predicate: (child: IOConnectWorkspaces.WorkspaceElement) => boolean): Promise<void> {
|
|
173
|
-
checkThrowCallback(predicate);
|
|
174
|
-
const controller = getData(this).controller;
|
|
175
|
-
|
|
176
|
-
const child = controller.iterateFindChild(this.children, predicate);
|
|
177
|
-
|
|
178
|
-
await child.close();
|
|
179
|
-
|
|
180
|
-
await this.refreshReference();
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
public async focus(): Promise<void> {
|
|
184
|
-
await getData(this).controller.focusItem(this.id);
|
|
185
|
-
await this.refreshReference();
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
public async close(): Promise<void> {
|
|
189
|
-
const controller = getData(this).controller;
|
|
190
|
-
|
|
191
|
-
const workspaces = await getData(this).frame.workspaces();
|
|
192
|
-
|
|
193
|
-
// should close the frame only if the frame is NOT a platform
|
|
194
|
-
const platformFrameId = (await controller.getPlatformFrameId()).id;
|
|
195
|
-
|
|
196
|
-
const shouldCloseFrame = workspaces.length === 1 &&
|
|
197
|
-
workspaces.every((wsp) => wsp.id === this.id) &&
|
|
198
|
-
platformFrameId !== this.frame.id;
|
|
199
|
-
|
|
200
|
-
if (shouldCloseFrame) {
|
|
201
|
-
return this.frame.close();
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
await controller.closeItem(this.id);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
public snapshot(): Promise<IOConnectWorkspaces.WorkspaceSnapshot> {
|
|
208
|
-
return getData(this).controller.getSnapshot(this.id, "workspace") as Promise<IOConnectWorkspaces.WorkspaceSnapshot>;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
public async saveLayout(name: string, config?: SaveLayoutConfig): Promise<void> {
|
|
212
|
-
nonEmptyStringDecoder.runWithException(name);
|
|
213
|
-
await getData(this).controller.saveLayout({ name, workspaceId: this.id, saveContext: config?.saveContext, metadata: config?.metadata });
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
public async setTitle(title: string): Promise<void> {
|
|
217
|
-
nonEmptyStringDecoder.runWithException(title);
|
|
218
|
-
const controller = getData(this).controller;
|
|
219
|
-
|
|
220
|
-
await controller.setItemTitle(this.id, title);
|
|
221
|
-
await this.refreshReference();
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
public getContext(): Promise<any> {
|
|
225
|
-
const controller = getData(this).controller;
|
|
226
|
-
return controller.getWorkspaceContext(this.id);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
public setContext(data: any): Promise<void> {
|
|
230
|
-
const controller = getData(this).controller;
|
|
231
|
-
return controller.setWorkspaceContext(this.id, data);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
public updateContext(data: any): Promise<void> {
|
|
235
|
-
const controller = getData(this).controller;
|
|
236
|
-
return controller.updateWorkspaceContext(this.id, data);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
public onContextUpdated(callback: (data: any) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
240
|
-
const controller = getData(this).controller;
|
|
241
|
-
return controller.subscribeWorkspaceContextUpdated(this.id, callback);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
public async refreshReference(): Promise<void> {
|
|
245
|
-
const newSnapshot = (await getData(this).controller.getSnapshot(this.id, "workspace")) as WorkspaceSnapshotResult;
|
|
246
|
-
|
|
247
|
-
const currentChildrenFlat = getData(this).controller.flatChildren(getData(this).children);
|
|
248
|
-
|
|
249
|
-
const newChildren = getData(this).controller.refreshChildren({
|
|
250
|
-
existingChildren: currentChildrenFlat,
|
|
251
|
-
workspace: this,
|
|
252
|
-
parent: this,
|
|
253
|
-
children: newSnapshot.children
|
|
254
|
-
});
|
|
255
|
-
|
|
256
|
-
const currentFrame = this.frame;
|
|
257
|
-
let actualFrame: Frame;
|
|
258
|
-
|
|
259
|
-
if (currentFrame.id === newSnapshot.config.frameId) {
|
|
260
|
-
getDataManager(this).remapFrame(currentFrame, newSnapshot.frameSummary);
|
|
261
|
-
actualFrame = currentFrame;
|
|
262
|
-
} else {
|
|
263
|
-
const frameCreateConfig: FrameCreateConfig = {
|
|
264
|
-
summary: newSnapshot.frameSummary
|
|
265
|
-
};
|
|
266
|
-
const newFrame = getData(this).ioc.getModel<"frame">("frame", frameCreateConfig);
|
|
267
|
-
actualFrame = newFrame;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
getDataManager(this).remapWorkspace(this, {
|
|
271
|
-
config: newSnapshot.config,
|
|
272
|
-
children: newChildren,
|
|
273
|
-
frame: actualFrame
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
public async getIcon(): Promise<string> {
|
|
278
|
-
const controller = getData(this).controller;
|
|
279
|
-
return controller.getWorkspaceIcon(this.id);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
public async setIcon(icon: string): Promise<void> {
|
|
283
|
-
const controller = getData(this).controller;
|
|
284
|
-
return controller.setWorkspaceIcon(this.id, icon);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
public getBox(predicate: (box: IOConnectWorkspaces.WorkspaceBox) => boolean): IOConnectWorkspaces.WorkspaceBox {
|
|
288
|
-
checkThrowCallback(predicate);
|
|
289
|
-
const children = getData(this).children;
|
|
290
|
-
const controller = getData(this).controller;
|
|
291
|
-
|
|
292
|
-
return controller.iterateFindChild(children, (child) => child.type !== "window" && predicate(child)) as IOConnectWorkspaces.WorkspaceBox;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
public getAllBoxes(predicate?: (parent: IOConnectWorkspaces.WorkspaceBox) => boolean): IOConnectWorkspaces.WorkspaceBox[] {
|
|
296
|
-
checkThrowCallback(predicate, true);
|
|
297
|
-
const children = getData(this).children;
|
|
298
|
-
const controller = getData(this).controller;
|
|
299
|
-
|
|
300
|
-
const allParents = controller.iterateFilterChildren(children, (child) => child.type !== "window") as IOConnectWorkspaces.WorkspaceBox[];
|
|
301
|
-
|
|
302
|
-
if (!predicate) {
|
|
303
|
-
return allParents;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
return allParents.filter(predicate);
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
public getRow(predicate: (row: IOConnectWorkspaces.Row) => boolean): IOConnectWorkspaces.Row {
|
|
310
|
-
checkThrowCallback(predicate);
|
|
311
|
-
return this.getBox((parent) => parent.type === "row" && predicate(parent)) as IOConnectWorkspaces.Row;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
public getAllRows(predicate?: (row: IOConnectWorkspaces.Row) => boolean): IOConnectWorkspaces.Row[] {
|
|
315
|
-
checkThrowCallback(predicate, true);
|
|
316
|
-
if (predicate) {
|
|
317
|
-
return this.getAllBoxes((parent) => parent.type === "row" && predicate(parent)) as IOConnectWorkspaces.Row[];
|
|
318
|
-
}
|
|
319
|
-
return this.getAllBoxes((parent) => parent.type === "row") as IOConnectWorkspaces.Row[];
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
public getColumn(predicate: (column: IOConnectWorkspaces.Column) => boolean): IOConnectWorkspaces.Column {
|
|
323
|
-
checkThrowCallback(predicate);
|
|
324
|
-
return this.getBox((parent) => parent.type === "column" && predicate(parent)) as IOConnectWorkspaces.Column;
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
public getAllColumns(predicate?: (columns: IOConnectWorkspaces.Column) => boolean): IOConnectWorkspaces.Column[] {
|
|
328
|
-
checkThrowCallback(predicate, true);
|
|
329
|
-
if (predicate) {
|
|
330
|
-
return this.getAllBoxes((parent) => parent.type === "column" && predicate(parent)) as IOConnectWorkspaces.Column[];
|
|
331
|
-
}
|
|
332
|
-
return this.getAllBoxes((parent) => parent.type === "column") as IOConnectWorkspaces.Column[];
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
public getGroup(predicate: (group: IOConnectWorkspaces.Group) => boolean): IOConnectWorkspaces.Group {
|
|
336
|
-
checkThrowCallback(predicate);
|
|
337
|
-
return this.getBox((parent) => parent.type === "group" && predicate(parent)) as IOConnectWorkspaces.Group;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
public getAllGroups(predicate?: (group: IOConnectWorkspaces.Group) => boolean): IOConnectWorkspaces.Group[] {
|
|
341
|
-
checkThrowCallback(predicate, true);
|
|
342
|
-
if (predicate) {
|
|
343
|
-
return this.getAllBoxes((parent) => parent.type === "group" && predicate(parent)) as IOConnectWorkspaces.Group[];
|
|
344
|
-
}
|
|
345
|
-
return this.getAllBoxes((parent) => parent.type === "group") as IOConnectWorkspaces.Group[];
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
public getWindow(predicate: (window: IOConnectWorkspaces.WorkspaceWindow) => boolean): IOConnectWorkspaces.WorkspaceWindow {
|
|
349
|
-
checkThrowCallback(predicate);
|
|
350
|
-
const children = getData(this).children;
|
|
351
|
-
const controller = getData(this).controller;
|
|
352
|
-
|
|
353
|
-
return controller.iterateFindChild(children, (child) => child.type === "window" && predicate(child)) as IOConnectWorkspaces.WorkspaceWindow;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
public getAllWindows(predicate?: (window: IOConnectWorkspaces.WorkspaceWindow) => boolean): IOConnectWorkspaces.WorkspaceWindow[] {
|
|
357
|
-
checkThrowCallback(predicate, true);
|
|
358
|
-
const children = getData(this).children;
|
|
359
|
-
const controller = getData(this).controller;
|
|
360
|
-
|
|
361
|
-
const allWindows = controller.iterateFilterChildren(children, (child) => child.type === "window") as IOConnectWorkspaces.WorkspaceWindow[];
|
|
362
|
-
|
|
363
|
-
if (!predicate) {
|
|
364
|
-
return allWindows;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
return allWindows.filter(predicate);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
public addRow(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Row> {
|
|
371
|
-
return getData(this).base.addParent<IOConnectWorkspaces.Row>(this, "row", "workspace", definition);
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
public addColumn(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Column> {
|
|
375
|
-
return getData(this).base.addParent<IOConnectWorkspaces.Column>(this, "column", "workspace", definition);
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
public addGroup(definition?: IOConnectWorkspaces.BoxDefinition): Promise<IOConnectWorkspaces.Group> {
|
|
379
|
-
return getData(this).base.addParent<IOConnectWorkspaces.Group>(this, "group", "workspace", definition);
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
public addWindow(definition: IOConnectWorkspaces.WorkspaceWindowDefinition): Promise<IOConnectWorkspaces.WorkspaceWindow> {
|
|
383
|
-
return getData(this).base.addWindow(this, definition, "workspace");
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
public async bundleToRow(): Promise<void> {
|
|
387
|
-
await getData(this).controller.bundleWorkspaceTo("row", this.id);
|
|
388
|
-
await this.refreshReference();
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
public async bundleToColumn(): Promise<void> {
|
|
392
|
-
await getData(this).controller.bundleWorkspaceTo("column", this.id);
|
|
393
|
-
await this.refreshReference();
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
public async hibernate(): Promise<void> {
|
|
397
|
-
await getData(this).controller.hibernateWorkspace(this.id);
|
|
398
|
-
await this.refreshReference();
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
public async resume(): Promise<void> {
|
|
402
|
-
await getData(this).controller.resumeWorkspace(this.id);
|
|
403
|
-
await this.refreshReference();
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
public async lock(config?: IOConnectWorkspaces.WorkspaceLockConfig | ((config: IOConnectWorkspaces.WorkspaceLockConfig) => IOConnectWorkspaces.WorkspaceLockConfig)): Promise<void> {
|
|
407
|
-
let lockConfigResult = undefined;
|
|
408
|
-
|
|
409
|
-
if (typeof config === "function") {
|
|
410
|
-
const currentLockConfig = {
|
|
411
|
-
allowDrop: this.allowDrop,
|
|
412
|
-
allowDropLeft: this.allowDropLeft,
|
|
413
|
-
allowDropTop: this.allowDropTop,
|
|
414
|
-
allowDropRight: this.allowDropRight,
|
|
415
|
-
allowDropBottom: this.allowDropBottom,
|
|
416
|
-
allowSystemHibernation: this.allowSystemHibernation,
|
|
417
|
-
allowExtract: this.allowExtract,
|
|
418
|
-
allowWindowReorder: this.allowWindowReorder,
|
|
419
|
-
allowSplitters: this.allowSplitters,
|
|
420
|
-
showCloseButton: this.showCloseButton,
|
|
421
|
-
showSaveButton: this.showSaveButton,
|
|
422
|
-
allowWorkspaceTabReorder: this.allowWorkspaceTabReorder,
|
|
423
|
-
allowWorkspaceTabExtract: this.allowWorkspaceTabExtract,
|
|
424
|
-
showAddWindowButtons: this.showAddWindowButtons,
|
|
425
|
-
showEjectButtons: this.showEjectButtons,
|
|
426
|
-
showWindowCloseButtons: this.showWindowCloseButtons
|
|
427
|
-
};
|
|
428
|
-
|
|
429
|
-
lockConfigResult = config(currentLockConfig);
|
|
430
|
-
} else {
|
|
431
|
-
lockConfigResult = config;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
const verifiedConfig = lockConfigResult === undefined ? undefined : workspaceLockConfigDecoder.runWithException(lockConfigResult);
|
|
435
|
-
|
|
436
|
-
await getData(this).controller.lockWorkspace(this.id, verifiedConfig);
|
|
437
|
-
await this.refreshReference();
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
public async pin(options: IOConnectWorkspaces.WorkspacePinOptions): Promise<void> {
|
|
441
|
-
workspacePinOptionsDecoder.runWithException(options);
|
|
442
|
-
await getData(this).controller.pinWorkspace(this.id, options?.icon);
|
|
443
|
-
await this.refreshReference();
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
public async unpin(): Promise<void> {
|
|
447
|
-
await getData(this).controller.unpinWorkspace(this.id);
|
|
448
|
-
await this.refreshReference();
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
public async showLoadingAnimation(): Promise<void> {
|
|
452
|
-
const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;
|
|
453
|
-
|
|
454
|
-
if (!desktopGlobal) {
|
|
455
|
-
throw new Error("Not supported in IO Connect Browser");
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
await getData(this).controller.showWorkspaceLoadingAnimation(this.id);
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
public async hideLoadingAnimation(): Promise<void> {
|
|
462
|
-
const desktopGlobal = (window as any).glue42gd || (window as any).iodesktop;
|
|
463
|
-
|
|
464
|
-
if (!desktopGlobal) {
|
|
465
|
-
throw new Error("Not supported in IO Connect Browser");
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
await getData(this).controller.hideWorkspaceLoadingAnimation(this.id);
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
public async onClosed(callback: (closed: IOConnectWorkspaces.WorkspaceClosedData) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
472
|
-
checkThrowCallback(callback);
|
|
473
|
-
const id = getData(this).id;
|
|
474
|
-
|
|
475
|
-
const wrappedCallback = async (payload: WorkspaceStreamData): Promise<void> => {
|
|
476
|
-
// await this.refreshReference();
|
|
477
|
-
callback({ frameId: payload.frameSummary.id, workspaceId: payload.workspaceSummary.id, frameBounds: payload.frameBounds });
|
|
478
|
-
};
|
|
479
|
-
const config: SubscriptionConfig = {
|
|
480
|
-
action: "closed",
|
|
481
|
-
eventType: "workspace",
|
|
482
|
-
scope: "workspace",
|
|
483
|
-
scopeId: id,
|
|
484
|
-
callback: wrappedCallback
|
|
485
|
-
};
|
|
486
|
-
|
|
487
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
488
|
-
return unsubscribe;
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
public async onHibernated(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
492
|
-
checkThrowCallback(callback);
|
|
493
|
-
const id = getData(this).id;
|
|
494
|
-
|
|
495
|
-
const wrappedCallback = async (): Promise<void> => {
|
|
496
|
-
await this.refreshReference();
|
|
497
|
-
callback();
|
|
498
|
-
};
|
|
499
|
-
const config: SubscriptionConfig = {
|
|
500
|
-
action: "hibernated",
|
|
501
|
-
eventType: "workspace",
|
|
502
|
-
scope: "workspace",
|
|
503
|
-
scopeId: id,
|
|
504
|
-
callback: wrappedCallback
|
|
505
|
-
};
|
|
506
|
-
|
|
507
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
508
|
-
return unsubscribe;
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
public async onResumed(callback: () => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
512
|
-
checkThrowCallback(callback);
|
|
513
|
-
const id = getData(this).id;
|
|
514
|
-
|
|
515
|
-
const wrappedCallback = async (): Promise<void> => {
|
|
516
|
-
await this.refreshReference();
|
|
517
|
-
callback();
|
|
518
|
-
};
|
|
519
|
-
const config: SubscriptionConfig = {
|
|
520
|
-
action: "resumed",
|
|
521
|
-
eventType: "workspace",
|
|
522
|
-
scope: "workspace",
|
|
523
|
-
scopeId: id,
|
|
524
|
-
callback: wrappedCallback
|
|
525
|
-
};
|
|
526
|
-
|
|
527
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
528
|
-
return unsubscribe;
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
public async onWindowAdded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
532
|
-
checkThrowCallback(callback);
|
|
533
|
-
const id = getData(this).id;
|
|
534
|
-
const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {
|
|
535
|
-
await this.refreshReference();
|
|
536
|
-
const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);
|
|
537
|
-
|
|
538
|
-
const foundWindow = windowParent.children.find((child) => {
|
|
539
|
-
|
|
540
|
-
return child.type === "window" && child.elementId === payload.windowSummary.itemId;
|
|
541
|
-
});
|
|
542
|
-
callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);
|
|
543
|
-
};
|
|
544
|
-
|
|
545
|
-
const config: SubscriptionConfig = {
|
|
546
|
-
action: "added",
|
|
547
|
-
eventType: "window",
|
|
548
|
-
scope: "workspace",
|
|
549
|
-
scopeId: id,
|
|
550
|
-
callback: wrappedCallback
|
|
551
|
-
};
|
|
552
|
-
|
|
553
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
554
|
-
return unsubscribe;
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
public async onWindowRemoved(callback: (removed: { windowId?: string; workspaceId: string; frameId: string }) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
558
|
-
checkThrowCallback(callback);
|
|
559
|
-
const id = getData(this).id;
|
|
560
|
-
|
|
561
|
-
const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {
|
|
562
|
-
await this.refreshReference();
|
|
563
|
-
const { windowId, workspaceId, frameId } = payload.windowSummary.config;
|
|
564
|
-
callback({ windowId, workspaceId, frameId });
|
|
565
|
-
};
|
|
566
|
-
|
|
567
|
-
const config: SubscriptionConfig = {
|
|
568
|
-
action: "removed",
|
|
569
|
-
eventType: "window",
|
|
570
|
-
scope: "workspace",
|
|
571
|
-
scopeId: id,
|
|
572
|
-
callback: wrappedCallback
|
|
573
|
-
};
|
|
574
|
-
|
|
575
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
576
|
-
return unsubscribe;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
public async onWindowLoaded(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
580
|
-
checkThrowCallback(callback);
|
|
581
|
-
const id = getData(this).id;
|
|
582
|
-
|
|
583
|
-
const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {
|
|
584
|
-
await this.refreshReference();
|
|
585
|
-
const foundWindow = this.getWindow((win) => {
|
|
586
|
-
return win.id && win.id === payload.windowSummary.config.windowId;
|
|
587
|
-
});
|
|
588
|
-
callback(foundWindow);
|
|
589
|
-
};
|
|
590
|
-
|
|
591
|
-
const config: SubscriptionConfig = {
|
|
592
|
-
action: "loaded",
|
|
593
|
-
eventType: "window",
|
|
594
|
-
scope: "workspace",
|
|
595
|
-
scopeId: id,
|
|
596
|
-
callback: wrappedCallback
|
|
597
|
-
};
|
|
598
|
-
|
|
599
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
600
|
-
return unsubscribe;
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
public async onWindowMaximized(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
604
|
-
checkThrowCallback(callback);
|
|
605
|
-
const id = getData(this).id;
|
|
606
|
-
const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {
|
|
607
|
-
await this.refreshReference();
|
|
608
|
-
const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);
|
|
609
|
-
|
|
610
|
-
const foundWindow = windowParent.children.find((child) => {
|
|
611
|
-
|
|
612
|
-
return child.type === "window" && child.elementId === payload.windowSummary.itemId;
|
|
613
|
-
});
|
|
614
|
-
callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);
|
|
615
|
-
};
|
|
616
|
-
|
|
617
|
-
const config: SubscriptionConfig = {
|
|
618
|
-
action: "maximized",
|
|
619
|
-
eventType: "window",
|
|
620
|
-
scope: "workspace",
|
|
621
|
-
scopeId: id,
|
|
622
|
-
callback: wrappedCallback
|
|
623
|
-
};
|
|
624
|
-
|
|
625
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
626
|
-
return unsubscribe;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
public async onWindowRestored(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
630
|
-
checkThrowCallback(callback);
|
|
631
|
-
const id = getData(this).id;
|
|
632
|
-
const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {
|
|
633
|
-
await this.refreshReference();
|
|
634
|
-
const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);
|
|
635
|
-
|
|
636
|
-
const foundWindow = windowParent.children.find((child) => {
|
|
637
|
-
|
|
638
|
-
return child.type === "window" && child.elementId === payload.windowSummary.itemId;
|
|
639
|
-
});
|
|
640
|
-
callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);
|
|
641
|
-
};
|
|
642
|
-
|
|
643
|
-
const config: SubscriptionConfig = {
|
|
644
|
-
action: "restored",
|
|
645
|
-
eventType: "window",
|
|
646
|
-
scope: "workspace",
|
|
647
|
-
scopeId: id,
|
|
648
|
-
callback: wrappedCallback
|
|
649
|
-
};
|
|
650
|
-
|
|
651
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
652
|
-
return unsubscribe;
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
public async onWindowSelected(callback: (window: IOConnectWorkspaces.WorkspaceWindow) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
656
|
-
checkThrowCallback(callback);
|
|
657
|
-
const id = getData(this).id;
|
|
658
|
-
const wrappedCallback = async (payload: WindowStreamData): Promise<void> => {
|
|
659
|
-
await this.refreshReference();
|
|
660
|
-
const windowParent = this.getBox((parent) => parent.id === payload.windowSummary.parentId);
|
|
661
|
-
|
|
662
|
-
const foundWindow = windowParent.children.find((child) => {
|
|
663
|
-
|
|
664
|
-
return child.type === "window" && child.elementId === payload.windowSummary.itemId;
|
|
665
|
-
});
|
|
666
|
-
callback(foundWindow as IOConnectWorkspaces.WorkspaceWindow);
|
|
667
|
-
};
|
|
668
|
-
|
|
669
|
-
const config: SubscriptionConfig = {
|
|
670
|
-
action: "selected",
|
|
671
|
-
eventType: "window",
|
|
672
|
-
scope: "workspace",
|
|
673
|
-
scopeId: id,
|
|
674
|
-
callback: wrappedCallback
|
|
675
|
-
};
|
|
676
|
-
|
|
677
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
678
|
-
return unsubscribe;
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
public async onLockConfigurationChanged(callback: (config: WorkspaceLockConfig) => void): Promise<IOConnectWorkspaces.Unsubscribe> {
|
|
682
|
-
checkThrowCallback(callback);
|
|
683
|
-
const id = getData(this).id;
|
|
684
|
-
const wrappedCallback = async (): Promise<void> => {
|
|
685
|
-
await this.refreshReference();
|
|
686
|
-
callback({
|
|
687
|
-
allowDrop: this.allowDrop,
|
|
688
|
-
allowDropLeft: this.allowDropLeft,
|
|
689
|
-
allowDropTop: this.allowDropTop,
|
|
690
|
-
allowDropRight: this.allowDropRight,
|
|
691
|
-
allowDropBottom: this.allowDropBottom,
|
|
692
|
-
allowSystemHibernation: this.allowSystemHibernation,
|
|
693
|
-
allowExtract: this.allowExtract,
|
|
694
|
-
allowSplitters: this.allowSplitters,
|
|
695
|
-
allowWindowReorder: this.allowWindowReorder,
|
|
696
|
-
allowWorkspaceTabExtract: this.allowWorkspaceTabExtract,
|
|
697
|
-
allowWorkspaceTabReorder: this.allowWorkspaceTabReorder,
|
|
698
|
-
showAddWindowButtons: this.showAddWindowButtons,
|
|
699
|
-
showCloseButton: this.showCloseButton,
|
|
700
|
-
showEjectButtons: this.showEjectButtons,
|
|
701
|
-
showSaveButton: this.showSaveButton,
|
|
702
|
-
showWindowCloseButtons: this.showWindowCloseButtons
|
|
703
|
-
});
|
|
704
|
-
};
|
|
705
|
-
|
|
706
|
-
const config: SubscriptionConfig = {
|
|
707
|
-
action: "lock-configuration-changed",
|
|
708
|
-
eventType: "workspace",
|
|
709
|
-
scope: "workspace",
|
|
710
|
-
scopeId: id,
|
|
711
|
-
callback: wrappedCallback
|
|
712
|
-
};
|
|
713
|
-
|
|
714
|
-
const unsubscribe = await getData(this).controller.processLocalSubscription(config, id);
|
|
715
|
-
return unsubscribe;
|
|
716
|
-
}
|
|
717
|
-
}
|