@netless/telebox-insider 0.3.0-beta.1 → 0.3.0-beta.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netless/telebox-insider",
3
- "version": "0.3.0-beta.1",
3
+ "version": "0.3.0-beta.3",
4
4
  "private": false,
5
5
  "description": "Window widget for Whiteboard",
6
6
  "author": "CRIMX <straybugs@gmail.com> (https://github.com/crimx/)",
@@ -12,11 +12,12 @@ export interface MaxTitleBarConfig extends DefaultTitleBarConfig {
12
12
  boxes: MaxTitleBarTeleBox[];
13
13
  containerRect: TeleBoxRect;
14
14
  focusedBox?: MaxTitleBarTeleBox;
15
- boxesStatus?: Map<string, TeleBoxState>;
15
+ getBoxesStatus?: () => Map<string, TeleBoxState>;
16
16
  }
17
17
 
18
18
  export class MaxTitleBar extends DefaultTitleBar {
19
- public boxesStatus?: Map<string, TeleBoxState>;
19
+
20
+ public getBoxesStatus?: MaxTitleBarConfig["getBoxesStatus"];
20
21
  public constructor(config: MaxTitleBarConfig) {
21
22
  super(config);
22
23
 
@@ -24,22 +25,27 @@ export class MaxTitleBar extends DefaultTitleBar {
24
25
  this.focusedBox = config.focusedBox;
25
26
  this.containerRect = config.containerRect;
26
27
  this.darkMode = config.darkMode;
27
- this.boxesStatus = config.boxesStatus;
28
+ this.getBoxesStatus = config.getBoxesStatus;
28
29
  }
29
-
30
30
  public hasMaximizedBoxInStatus(): boolean {
31
- if (!this.boxesStatus || this.boxesStatus.size === 0) {
32
- return false
31
+ if (this.getBoxesStatus) {
32
+ const boxesStatus = this.getBoxesStatus();
33
+ if (boxesStatus.size) {
34
+ const hasMaximizedBox = [...boxesStatus.values()].find((state) => state === TELE_BOX_STATE.Maximized);
35
+ return !!hasMaximizedBox;
36
+ }
33
37
  }
34
- const hasMaximizedBox = [...this.boxesStatus.values()].find((state) => state === TELE_BOX_STATE.Maximized);
35
- return !!hasMaximizedBox;
38
+ return false;
36
39
  }
37
40
 
38
41
  public get MaximizedBoxes(): MaxTitleBarTeleBox[] {
39
- if (!this.boxesStatus || this.boxesStatus.size === 0) {
40
- return [];
42
+ if (this.getBoxesStatus) {
43
+ const boxesStatus = this.getBoxesStatus();
44
+ if (boxesStatus) {
45
+ return this.boxes.filter((box) => boxesStatus && boxesStatus.get(box.id) === TELE_BOX_STATE.Maximized);
46
+ }
41
47
  }
42
- return this.boxes.filter((box) => this.boxesStatus && this.boxesStatus.get(box.id) === TELE_BOX_STATE.Maximized);
48
+ return [];
43
49
  }
44
50
 
45
51
  /**
@@ -103,8 +109,7 @@ export class MaxTitleBar extends DefaultTitleBar {
103
109
  }
104
110
  }
105
111
 
106
- public setBoxesStatus(boxesStatus: Map<string, TeleBoxState>): void {
107
- this.boxesStatus = boxesStatus;
112
+ public updateBoxesStatus(): void {
108
113
  if (this.hasMaximizedBoxInStatus()) {
109
114
  this.setBoxStatus(TELE_BOX_STATE.Maximized);
110
115
  }
@@ -315,7 +315,9 @@ export class TeleBoxManager {
315
315
  state: state$.value,
316
316
  boxes: this.boxes$.value,
317
317
  containerRect: containerRect$.value,
318
- boxesStatus: this.boxesStatus$,
318
+ getBoxesStatus: () => {
319
+ return this.boxesStatus$;
320
+ },
319
321
  onEvent: (event): void => {
320
322
  switch (event.type) {
321
323
  case TELE_BOX_DELEGATE_EVENT.Maximize: {
@@ -452,7 +454,8 @@ export class TeleBoxManager {
452
454
  }
453
455
  }
454
456
 
455
- private setBoxesStatus(boxesStatus: Map<string, TeleBoxState>, skipUpdate = false): void {
457
+ public setBoxesStatus(boxesStatus: Map<string, TeleBoxState>, skipUpdate = false): void {
458
+ this.boxesStatus$ = boxesStatus;
456
459
  let topBox:TeleBox | undefined;
457
460
  const topBoxId = this.topBox?.id;
458
461
  let hasMinimizedBox = false;
@@ -480,11 +483,11 @@ export class TeleBoxManager {
480
483
  }
481
484
  if (topBox && topBoxId !== topBox.id) {
482
485
  this.makeBoxTop(topBox, skipUpdate);
483
- this.focusTopBox();
484
486
  this.topBox$.setValue(topBox);
487
+ this.focusTopBox();
485
488
  }
486
489
  if (this.maxTitleBar) {
487
- this.maxTitleBar.setBoxesStatus(boxesStatus);
490
+ this.maxTitleBar.updateBoxesStatus();
488
491
  }
489
492
  }
490
493
 
@@ -509,7 +512,8 @@ export class TeleBoxManager {
509
512
  }
510
513
  }
511
514
 
512
- private setLastNotMinimizedBoxesStatus(lastNotMinimizedBoxesStatus: Map<string, NotMinimizedBoxState>, skipUpdate = false): void {
515
+ public setLastNotMinimizedBoxesStatus(lastNotMinimizedBoxesStatus: Map<string, NotMinimizedBoxState>, skipUpdate = false): void {
516
+ this.lastNotMinimizedBoxesStatus$ = lastNotMinimizedBoxesStatus;
513
517
  this.boxes.forEach((box) => {
514
518
  const boxStatus = lastNotMinimizedBoxesStatus.get(box.id);
515
519
  if (boxStatus) {
@@ -684,6 +688,10 @@ export class TeleBoxManager {
684
688
  const deletedBoxes = boxes.splice(index, 1);
685
689
  this.boxes$.setValue(boxes);
686
690
  deletedBoxes.forEach((box) => box.destroy());
691
+ if (box) {
692
+ this.boxesStatus$.delete(box.id);
693
+ this.lastNotMinimizedBoxesStatus$.delete(box.id);
694
+ }
687
695
  if (!skipUpdate) {
688
696
  if (this.boxes.length <= 0) {
689
697
  this.setMaximized(false);
@@ -939,7 +947,7 @@ export class TeleBoxManager {
939
947
  return currentBox;
940
948
  }
941
949
  return topBox.zIndex > currentBox.zIndex ? topBox : currentBox;
942
- });
950
+ }, );
943
951
  if (maximizedBox) {
944
952
  this.maxTitleBar.focusBox(maximizedBox);
945
953
  }