@netless/telebox-insider 0.3.0-beta.2 → 0.3.0-beta.4
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/index.d.ts +11 -5
- package/dist/telebox-insider.cjs.js +67 -30
- package/dist/telebox-insider.cjs.js.map +1 -1
- package/dist/telebox-insider.es.js +67 -30
- package/dist/telebox-insider.es.js.map +1 -1
- package/package.json +1 -1
- package/src/TeleBoxManager/MaxTitleBar/index.ts +18 -13
- package/src/TeleBoxManager/index.ts +61 -23
package/package.json
CHANGED
|
@@ -12,11 +12,12 @@ export interface MaxTitleBarConfig extends DefaultTitleBarConfig {
|
|
|
12
12
|
boxes: MaxTitleBarTeleBox[];
|
|
13
13
|
containerRect: TeleBoxRect;
|
|
14
14
|
focusedBox?: MaxTitleBarTeleBox;
|
|
15
|
-
|
|
15
|
+
getBoxesStatus?: () => Map<string, TeleBoxState>;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export class MaxTitleBar extends DefaultTitleBar {
|
|
19
|
-
|
|
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.
|
|
28
|
+
this.getBoxesStatus = config.getBoxesStatus;
|
|
28
29
|
}
|
|
29
|
-
|
|
30
30
|
public hasMaximizedBoxInStatus(): boolean {
|
|
31
|
-
if (
|
|
32
|
-
|
|
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
|
-
|
|
35
|
-
return !!hasMaximizedBox;
|
|
38
|
+
return false;
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
public get MaximizedBoxes(): MaxTitleBarTeleBox[] {
|
|
39
|
-
if (
|
|
40
|
-
|
|
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
|
|
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
|
|
107
|
-
this.boxesStatus = boxesStatus;
|
|
112
|
+
public updateBoxesStatus(): void {
|
|
108
113
|
if (this.hasMaximizedBoxInStatus()) {
|
|
109
114
|
this.setBoxStatus(TELE_BOX_STATE.Maximized);
|
|
110
115
|
}
|
|
@@ -201,6 +201,7 @@ export class TeleBoxManager {
|
|
|
201
201
|
this.setBoxStatus(box.id, TELE_BOX_STATE.Normal);
|
|
202
202
|
}
|
|
203
203
|
});
|
|
204
|
+
this.effectBoxStatusChange();
|
|
204
205
|
}
|
|
205
206
|
minimized$.setValue(false);
|
|
206
207
|
}
|
|
@@ -315,12 +316,15 @@ export class TeleBoxManager {
|
|
|
315
316
|
state: state$.value,
|
|
316
317
|
boxes: this.boxes$.value,
|
|
317
318
|
containerRect: containerRect$.value,
|
|
318
|
-
|
|
319
|
+
getBoxesStatus: () => {
|
|
320
|
+
return this.boxesStatus$;
|
|
321
|
+
},
|
|
319
322
|
onEvent: (event): void => {
|
|
320
323
|
switch (event.type) {
|
|
321
324
|
case TELE_BOX_DELEGATE_EVENT.Maximize: {
|
|
322
325
|
if (this.hasBoxesStatus() && this.maxTitleBar.focusedBox?.id) {
|
|
323
326
|
this.setBoxStatus(this.maxTitleBar.focusedBox.id, TELE_BOX_STATE.Normal);
|
|
327
|
+
this.effectBoxStatusChange();
|
|
324
328
|
this.makeMaximizedTopBoxFocus();
|
|
325
329
|
} else {
|
|
326
330
|
maximized$.setValue(!maximized$.value);
|
|
@@ -330,6 +334,7 @@ export class TeleBoxManager {
|
|
|
330
334
|
case TELE_BOX_DELEGATE_EVENT.Minimize: {
|
|
331
335
|
if (this.hasBoxesStatus() && this.maxTitleBar.focusedBox?.id) {
|
|
332
336
|
this.setBoxStatus(this.maxTitleBar.focusedBox.id, TELE_BOX_STATE.Minimized);
|
|
337
|
+
this.effectBoxStatusChange();
|
|
333
338
|
this.makeMaximizedTopBoxFocus();
|
|
334
339
|
} else {
|
|
335
340
|
minimized$.setValue(true);
|
|
@@ -433,31 +438,53 @@ export class TeleBoxManager {
|
|
|
433
438
|
}
|
|
434
439
|
|
|
435
440
|
public setBoxStatus(boxId: string, boxStatus?: TeleBoxState, skipUpdate = false): void {
|
|
436
|
-
const boxesStatus = this.boxesStatus$;
|
|
437
441
|
if (boxStatus) {
|
|
438
|
-
const oldBoxStatus = boxesStatus
|
|
439
|
-
boxesStatus
|
|
442
|
+
const oldBoxStatus = this.boxesStatus$.get(boxId);
|
|
443
|
+
this.boxesStatus$.set(boxId, boxStatus);
|
|
440
444
|
if (boxStatus === TELE_BOX_STATE.Minimized && oldBoxStatus !== TELE_BOX_STATE.Minimized) {
|
|
441
445
|
this.setLastNotMinimizedBoxStatus(boxId, oldBoxStatus, skipUpdate);
|
|
446
|
+
this.effectLastNotMinimizedBoxStatusChange();
|
|
442
447
|
} else if (oldBoxStatus === TELE_BOX_STATE.Minimized && boxStatus !== TELE_BOX_STATE.Minimized) {
|
|
443
448
|
this.setLastNotMinimizedBoxStatus(boxId, undefined, skipUpdate);
|
|
449
|
+
this.effectLastNotMinimizedBoxStatusChange();
|
|
444
450
|
}
|
|
445
451
|
} else {
|
|
446
|
-
boxesStatus
|
|
452
|
+
this.boxesStatus$.delete(boxId);
|
|
447
453
|
this.setLastNotMinimizedBoxStatus(boxId, undefined, skipUpdate);
|
|
454
|
+
this.effectLastNotMinimizedBoxStatusChange();
|
|
448
455
|
}
|
|
449
|
-
this.setBoxesStatus(boxesStatus, skipUpdate);
|
|
450
456
|
if (!skipUpdate) {
|
|
451
457
|
this.events.emit(TELE_BOX_MANAGER_EVENT.BoxStatus, { id: boxId, boxStatus});
|
|
452
458
|
}
|
|
453
459
|
}
|
|
454
460
|
|
|
455
|
-
|
|
461
|
+
public getBoxStatus(boxId: string): TeleBoxState | undefined {
|
|
462
|
+
return this.boxesStatus$.get(boxId);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
public getLastNotMinimizedBoxStatus(boxId: string): NotMinimizedBoxState | undefined {
|
|
466
|
+
return this.lastNotMinimizedBoxesStatus$.get(boxId);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
public get boxesStatus(): ReadonlyMap<string, TeleBoxState> {
|
|
470
|
+
return this.boxesStatus$;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
public get lastNotMinimizedBoxesStatus(): ReadonlyMap<string, NotMinimizedBoxState> {
|
|
474
|
+
return this.lastNotMinimizedBoxesStatus$;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
public setBoxesStatus(boxesStatus: Map<string, TeleBoxState>, skipUpdate = false): void {
|
|
478
|
+
this.boxesStatus$ = boxesStatus;
|
|
479
|
+
this.effectBoxStatusChange(skipUpdate);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
private effectBoxStatusChange(skipUpdate = false){
|
|
456
483
|
let topBox:TeleBox | undefined;
|
|
457
484
|
const topBoxId = this.topBox?.id;
|
|
458
485
|
let hasMinimizedBox = false;
|
|
459
486
|
this.boxes.forEach((box) => {
|
|
460
|
-
const boxStatus = boxesStatus
|
|
487
|
+
const boxStatus = this.boxesStatus$.get(box.id);
|
|
461
488
|
if (boxStatus) {
|
|
462
489
|
if (boxStatus !== TELE_BOX_STATE.Minimized && box.zIndex > (topBox?.zIndex ?? 0)) {
|
|
463
490
|
topBox = box;
|
|
@@ -484,7 +511,7 @@ export class TeleBoxManager {
|
|
|
484
511
|
this.focusTopBox();
|
|
485
512
|
}
|
|
486
513
|
if (this.maxTitleBar) {
|
|
487
|
-
this.maxTitleBar.
|
|
514
|
+
this.maxTitleBar.updateBoxesStatus();
|
|
488
515
|
}
|
|
489
516
|
}
|
|
490
517
|
|
|
@@ -497,24 +524,25 @@ export class TeleBoxManager {
|
|
|
497
524
|
}
|
|
498
525
|
|
|
499
526
|
public setLastNotMinimizedBoxStatus(boxId: string, lastNotMinimizedBoxStatus?: NotMinimizedBoxState, skipUpdate = false): void {
|
|
500
|
-
const boxesStatus = this.lastNotMinimizedBoxesStatus$;
|
|
501
527
|
if (lastNotMinimizedBoxStatus) {
|
|
502
|
-
|
|
528
|
+
this.lastNotMinimizedBoxesStatus$.set(boxId, lastNotMinimizedBoxStatus);
|
|
503
529
|
} else {
|
|
504
|
-
|
|
530
|
+
this.lastNotMinimizedBoxesStatus$.delete(boxId);
|
|
505
531
|
}
|
|
506
|
-
this.setLastNotMinimizedBoxesStatus(boxesStatus, skipUpdate);
|
|
507
532
|
if (!skipUpdate) {
|
|
508
533
|
this.events.emit(TELE_BOX_MANAGER_EVENT.LastNotMinimizedBoxStatus, { id: boxId, boxStatus:lastNotMinimizedBoxStatus});
|
|
509
534
|
}
|
|
510
535
|
}
|
|
511
536
|
|
|
512
|
-
|
|
537
|
+
public setLastNotMinimizedBoxesStatus(lastNotMinimizedBoxesStatus: Map<string, NotMinimizedBoxState>, skipUpdate = false): void {
|
|
538
|
+
this.lastNotMinimizedBoxesStatus$ = lastNotMinimizedBoxesStatus;
|
|
539
|
+
this.effectLastNotMinimizedBoxStatusChange(skipUpdate);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
private effectLastNotMinimizedBoxStatusChange(skipUpdate = false){
|
|
513
543
|
this.boxes.forEach((box) => {
|
|
514
|
-
const boxStatus = lastNotMinimizedBoxesStatus
|
|
515
|
-
|
|
516
|
-
box.setLastNotMinimizedBoxStatus(boxStatus, skipUpdate);
|
|
517
|
-
}
|
|
544
|
+
const boxStatus = this.lastNotMinimizedBoxesStatus$.get(box.id);
|
|
545
|
+
box.setLastNotMinimizedBoxStatus(boxStatus, skipUpdate);
|
|
518
546
|
});
|
|
519
547
|
}
|
|
520
548
|
|
|
@@ -553,10 +581,12 @@ export class TeleBoxManager {
|
|
|
553
581
|
|
|
554
582
|
if (box.boxStatus) {
|
|
555
583
|
this.setBoxStatus(box.id, box.boxStatus, true);
|
|
584
|
+
this.effectBoxStatusChange(true);
|
|
556
585
|
}
|
|
557
586
|
|
|
558
587
|
if (box._lastNotMinimizedBoxStatus$.value) {
|
|
559
588
|
this.setLastNotMinimizedBoxStatus(box.id, box._lastNotMinimizedBoxStatus$.value, true);
|
|
589
|
+
this.effectLastNotMinimizedBoxStatusChange();
|
|
560
590
|
}
|
|
561
591
|
|
|
562
592
|
box._delegateEvents.on(TELE_BOX_DELEGATE_EVENT.Maximize, () => {
|
|
@@ -570,6 +600,7 @@ export class TeleBoxManager {
|
|
|
570
600
|
}
|
|
571
601
|
});
|
|
572
602
|
}
|
|
603
|
+
this.effectBoxStatusChange();
|
|
573
604
|
this.makeMaximizedTopBoxFocus();
|
|
574
605
|
} else {
|
|
575
606
|
this.setMaximized(!this.maximized);
|
|
@@ -580,6 +611,7 @@ export class TeleBoxManager {
|
|
|
580
611
|
if (box.boxStatus) {
|
|
581
612
|
const oldBoxStatus = box.boxStatus;
|
|
582
613
|
this.setBoxStatus(box.id, TELE_BOX_STATE.Minimized);
|
|
614
|
+
this.effectBoxStatusChange();
|
|
583
615
|
if (oldBoxStatus === TELE_BOX_STATE.Maximized) {
|
|
584
616
|
this.makeMaximizedTopBoxFocus();
|
|
585
617
|
}
|
|
@@ -674,16 +706,20 @@ export class TeleBoxManager {
|
|
|
674
706
|
skipUpdate = false
|
|
675
707
|
): ReadonlyTeleBox | undefined {
|
|
676
708
|
const box = this.getBox(boxOrID);
|
|
677
|
-
if (box) {
|
|
678
|
-
this.setBoxStatus(box.id, undefined, skipUpdate);
|
|
679
|
-
this.setLastNotMinimizedBoxStatus(box.id, undefined, skipUpdate);
|
|
680
|
-
}
|
|
681
709
|
const index = this.getBoxIndex(boxOrID);
|
|
682
710
|
if (index >= 0) {
|
|
683
711
|
const boxes = this.boxes.slice();
|
|
684
712
|
const deletedBoxes = boxes.splice(index, 1);
|
|
685
713
|
this.boxes$.setValue(boxes);
|
|
686
714
|
deletedBoxes.forEach((box) => box.destroy());
|
|
715
|
+
if (box) {
|
|
716
|
+
this.setBoxStatus(box.id, undefined, skipUpdate);
|
|
717
|
+
this.boxesStatus$.delete(box.id);
|
|
718
|
+
this.effectBoxStatusChange(skipUpdate);
|
|
719
|
+
this.setLastNotMinimizedBoxStatus(box.id, undefined, skipUpdate);
|
|
720
|
+
this.lastNotMinimizedBoxesStatus$.delete(box.id);
|
|
721
|
+
this.effectLastNotMinimizedBoxStatusChange();
|
|
722
|
+
}
|
|
687
723
|
if (!skipUpdate) {
|
|
688
724
|
if (this.boxes.length <= 0) {
|
|
689
725
|
this.setMaximized(false);
|
|
@@ -874,9 +910,11 @@ export class TeleBoxManager {
|
|
|
874
910
|
}
|
|
875
911
|
if (config.boxStatus) {
|
|
876
912
|
this.setBoxStatus(box.id, config.boxStatus, skipUpdate);
|
|
913
|
+
this.effectBoxStatusChange(skipUpdate);
|
|
877
914
|
}
|
|
878
915
|
if (config.lastNotMinimizedBoxStatus) {
|
|
879
916
|
this.setLastNotMinimizedBoxStatus(box.id, config.lastNotMinimizedBoxStatus, skipUpdate);
|
|
917
|
+
this.effectLastNotMinimizedBoxStatusChange();
|
|
880
918
|
}
|
|
881
919
|
}
|
|
882
920
|
|
|
@@ -939,7 +977,7 @@ export class TeleBoxManager {
|
|
|
939
977
|
return currentBox;
|
|
940
978
|
}
|
|
941
979
|
return topBox.zIndex > currentBox.zIndex ? topBox : currentBox;
|
|
942
|
-
});
|
|
980
|
+
}, );
|
|
943
981
|
if (maximizedBox) {
|
|
944
982
|
this.maxTitleBar.focusBox(maximizedBox);
|
|
945
983
|
}
|