@netless/telebox-insider 0.3.0-beta.4 → 0.3.0-beta.6

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 CHANGED
@@ -700,9 +700,12 @@ interface TeleBoxCollectorConfig {
700
700
  namespace?: string;
701
701
  styles?: TeleStyles;
702
702
  onClick?: () => void;
703
+ getBoxesStatus?: () => Map<string, TeleBoxState>;
703
704
  }
704
705
  declare class TeleBoxCollector {
705
- constructor({ visible, readonly, darkMode, namespace, styles, onClick, }?: TeleBoxCollectorConfig);
706
+ getBoxesStatus?: () => Map<string, TeleBoxState>;
707
+ constructor({ visible, readonly, darkMode, namespace, styles, onClick, getBoxesStatus }: TeleBoxCollectorConfig);
708
+ get boxesStatus(): Map<string, TeleBoxState> | undefined;
706
709
  readonly styles: TeleStyles;
707
710
  readonly namespace: string;
708
711
  get visible(): boolean;
@@ -710,6 +713,7 @@ declare class TeleBoxCollector {
710
713
  get darkMode(): boolean;
711
714
  onClick: (() => void) | undefined;
712
715
  $collector: HTMLElement | undefined;
716
+ $appMenuContainer: HTMLDivElement;
713
717
  /**
714
718
  * Mount collector to a root element.
715
719
  */
@@ -718,6 +722,8 @@ declare class TeleBoxCollector {
718
722
  * Unmount collector from the root element.
719
723
  */
720
724
  unmount(): this;
725
+ private hasMinimizedBox;
726
+ updateBoxesStatus(): void;
721
727
  setVisible(visible: boolean): this;
722
728
  setReadonly(readonly: boolean): this;
723
729
  setDarkMode(darkMode: boolean): this;
@@ -756,6 +762,8 @@ interface TeleBoxManagerConfig extends Pick<TeleBoxConfig, "prefersColorScheme"
756
762
  root?: HTMLElement;
757
763
  /** Where the minimized boxes go. */
758
764
  collector?: TeleBoxCollector;
765
+ /** Whether to use boxes status. */
766
+ useBoxesStatus?: boolean;
759
767
  }
760
768
  type TeleBoxManagerBoxConfigBaseProps = "title" | "visible" | "width" | "height" | "minWidth" | "minHeight" | "x" | "y" | "resizable" | "draggable" | "fixRatio" | "zIndex" | "boxStatus" | "lastNotMinimizedBoxStatus";
761
769
  type TeleBoxManagerCreateConfig = Pick<TeleBoxConfig, TeleBoxManagerBoxConfigBaseProps | "content" | "footer" | "id" | "focus">;
@@ -804,8 +812,9 @@ interface MaxTitleBarConfig extends DefaultTitleBarConfig {
804
812
  getBoxesStatus?: () => Map<string, TeleBoxState>;
805
813
  }
806
814
  declare class MaxTitleBar extends DefaultTitleBar {
807
- getBoxesStatus?: MaxTitleBarConfig["getBoxesStatus"];
815
+ getBoxesStatus?: () => Map<string, TeleBoxState>;
808
816
  constructor(config: MaxTitleBarConfig);
817
+ get boxesStatus(): Map<string, TeleBoxState> | undefined;
809
818
  hasMaximizedBoxInStatus(): boolean;
810
819
  get MaximizedBoxes(): MaxTitleBarTeleBox[];
811
820
  /**
@@ -831,6 +840,37 @@ declare class MaxTitleBar extends DefaultTitleBar {
831
840
  protected containerRect: TeleBoxRect;
832
841
  }
833
842
 
843
+ type AppId = string;
844
+ interface AppMenuProps {
845
+ manager: TeleBoxManager;
846
+ container: HTMLDivElement;
847
+ theme: TeleBoxColorScheme;
848
+ getBoxesStatus?: () => Map<string, TeleBoxState>;
849
+ }
850
+ declare class AppMenu {
851
+ private readonly namespace;
852
+ readonly container: HTMLDivElement;
853
+ private readonly badge;
854
+ private readonly menuView;
855
+ private readonly manager;
856
+ private theme;
857
+ private getBoxesStatus?;
858
+ constructor(props: AppMenuProps);
859
+ get boxesStatus(): Map<string, TeleBoxState>;
860
+ get minimizedBoxesStatus(): TeleBoxState[];
861
+ private c;
862
+ containerClickHandler: () => void;
863
+ private menuViewClickHandler;
864
+ private createDefaultAppMenu;
865
+ private init;
866
+ updatePrefersColorSchemeHandler: () => void;
867
+ appMenuChange: () => void;
868
+ private createMinimizedItem;
869
+ private renderMenuView;
870
+ render(minimizedBoxesStatus: Map<AppId, TELE_BOX_STATE.Minimized>): void;
871
+ destroy(): void;
872
+ }
873
+
834
874
  type ValConfig = {
835
875
  prefersColorScheme: Val<TeleBoxColorScheme, boolean>;
836
876
  containerRect: Val<TeleBoxRect, boolean>;
@@ -846,7 +886,11 @@ interface TeleBoxManager extends ValEnhancedResult<ValConfig> {
846
886
  declare class TeleBoxManager {
847
887
  private boxesStatus$;
848
888
  private lastNotMinimizedBoxesStatus$;
849
- constructor({ root, prefersColorScheme, minimized, maximized, fence, containerRect, collector, namespace, readonly, }?: TeleBoxManagerConfig);
889
+ private appMenu;
890
+ private useBoxesStatus;
891
+ private effectBoxesStatusTimer?;
892
+ private effectLastNotMinimizedBoxStatusTimer?;
893
+ constructor({ root, prefersColorScheme, minimized, maximized, fence, containerRect, collector, namespace, readonly, useBoxesStatus, }?: TeleBoxManagerConfig);
850
894
  get boxes(): ReadonlyArray<TeleBox>;
851
895
  get topBox(): TeleBox | undefined;
852
896
  readonly events: TeleBoxManagerEvents;
@@ -855,6 +899,7 @@ declare class TeleBoxManager {
855
899
  readonly namespace: string;
856
900
  _darkMode$: Val<boolean, boolean>;
857
901
  _calcCollectorRect: () => TeleBoxRect | undefined;
902
+ _setCollectorRect: (collectorRect: TeleBoxRect | undefined) => void;
858
903
  get darkMode(): boolean;
859
904
  _state$: Val<TeleBoxState, boolean>;
860
905
  get state(): TeleBoxState;
@@ -862,23 +907,39 @@ declare class TeleBoxManager {
862
907
  setState(state: TeleBoxState, skipUpdate?: boolean): this;
863
908
  setBoxStatus(boxId: string, boxStatus?: TeleBoxState, skipUpdate?: boolean): void;
864
909
  getBoxStatus(boxId: string): TeleBoxState | undefined;
865
- getLastNotMinimizedBoxStatus(boxId: string): NotMinimizedBoxState | undefined;
866
910
  get boxesStatus(): ReadonlyMap<string, TeleBoxState>;
867
911
  get lastNotMinimizedBoxesStatus(): ReadonlyMap<string, NotMinimizedBoxState>;
868
- setBoxesStatus(boxesStatus: Map<string, TeleBoxState>, skipUpdate?: boolean): void;
912
+ setBoxesStatus(boxesStatus: Map<string, TeleBoxState>, skipUpdate?: boolean): Promise<void>;
869
913
  private effectBoxStatusChange;
914
+ private effectBoxesStatusTimerFunc;
915
+ effectBoxesStatusChange(skipUpdate?: boolean): Promise<void>;
870
916
  hasBoxesStatus(): boolean;
871
917
  hasMinimizedBox(): boolean;
918
+ getMinimizedBoxesStatus(): Map<string, TELE_BOX_STATE.Minimized>;
919
+ getNotMinimizedBoxesStatus(): Map<string, NotMinimizedBoxState>;
920
+ getAllMaximizedBoxesStatus(): Map<string, TELE_BOX_STATE.Maximized>;
921
+ getAllNormalBoxesStatus(): Map<string, TELE_BOX_STATE.Normal>;
922
+ getLastNotMinimizedBoxStatus(boxId: string): NotMinimizedBoxState | undefined;
872
923
  setLastNotMinimizedBoxStatus(boxId: string, lastNotMinimizedBoxStatus?: NotMinimizedBoxState, skipUpdate?: boolean): void;
873
924
  setLastNotMinimizedBoxesStatus(lastNotMinimizedBoxesStatus: Map<string, NotMinimizedBoxState>, skipUpdate?: boolean): void;
874
925
  private effectLastNotMinimizedBoxStatusChange;
875
- private getAllMinimizedBoxes;
926
+ private effectLastNotMinimizedBoxStatusFunc;
927
+ private getUnabledBoxesStatusZIndex;
928
+ /** Maximized box zIndex range: 100-299 */
929
+ getMaxMaximizedBoxZIndex(): number;
930
+ /** normal box zIndex range: 300-499 */
931
+ getMaxNormalBoxZIndex(): number;
876
932
  create(config?: TeleBoxManagerCreateConfig, smartPosition?: boolean): ReadonlyTeleBox;
877
933
  query(config?: TeleBoxManagerQueryConfig): ReadonlyTeleBox[];
878
934
  queryOne(config?: TeleBoxManagerQueryConfig): ReadonlyTeleBox | undefined;
879
935
  update(boxID: string, config: TeleBoxManagerUpdateConfig, skipUpdate?: boolean): void;
880
936
  updateAll(config: TeleBoxManagerUpdateConfig, skipUpdate?: boolean): void;
881
- remove(boxOrID: string | TeleBox, skipUpdate?: boolean): ReadonlyTeleBox | undefined;
937
+ setBox(boxOrID: string | TeleBox, options: {
938
+ status?: TeleBoxState;
939
+ lastNotMinimizedBoxStatus?: NotMinimizedBoxState;
940
+ zIndex?: number;
941
+ }, skipUpdate?: boolean, effectFunc?: () => void): void;
942
+ remove(boxOrID: string | TeleBox, skipUpdate?: boolean, effectFunc?: () => void): ReadonlyTeleBox | undefined;
882
943
  removeTopBox(): ReadonlyTeleBox | undefined;
883
944
  removeAll(skipUpdate?: boolean): ReadonlyTeleBox[];
884
945
  destroy(skipUpdate?: boolean): void;
@@ -894,12 +955,11 @@ declare class TeleBoxManager {
894
955
  protected updateBox(box: TeleBox, config: TeleBoxManagerUpdateConfig, skipUpdate?: boolean): void;
895
956
  protected smartPosition(config?: TeleBoxConfig): TeleBoxConfig;
896
957
  protected makeBoxTop(box: TeleBox, skipUpdate?: boolean): void;
958
+ private getMaximizedTopBox;
897
959
  protected makeMaximizedTopBoxFocus(): void;
898
- private makeTopBoxEffect;
899
- protected makeMaximizedBoxFocus(maximizedBox: MaxTitleBarTeleBox, skipUpdate?: boolean): void;
900
- protected makeMaximizedBoxBlur(): void;
901
960
  protected getBoxIndex(boxOrID: TeleBox | string): number;
902
- protected getBox(boxOrID: TeleBox | string): TeleBox | undefined;
961
+ getBox(boxOrID: TeleBox | string): TeleBox | undefined;
962
+ createMinimizedAppMenu(): AppMenu | undefined;
903
963
  }
904
964
 
905
965
  export { DefaultTitleBar, type DefaultTitleBarButton, type DefaultTitleBarConfig, type NotMinimizedBoxState, type ReadonlyTeleBox, TELE_BOX_COLOR_SCHEME, TELE_BOX_DELEGATE_EVENT, TELE_BOX_EVENT, TELE_BOX_MANAGER_EVENT, TELE_BOX_RESIZE_HANDLE, TELE_BOX_STATE, TeleBox, TeleBoxCollector, type TeleBoxCollectorConfig, type TeleBoxColorScheme, type TeleBoxConfig, type TeleBoxCoord, type TeleBoxDelegateEvent, type TeleBoxDelegateEventConfig, type TeleBoxDelegateEvents, TeleBoxDragHandleType, type TeleBoxEvent, type TeleBoxEventConfig, type TeleBoxEvents, type TeleBoxHandleType, TeleBoxManager, type TeleBoxManagerConfig, type TeleBoxManagerCreateConfig, type TeleBoxManagerEvent, type TeleBoxManagerEventConfig, type TeleBoxManagerEvents, type TeleBoxManagerQueryConfig, type TeleBoxManagerUpdateConfig, type TeleBoxRect, type TeleBoxSize, type TeleBoxState, type TeleTitleBar, type TeleTitleBarConfig, type TeleTitleBarEvent };
package/dist/style.css CHANGED
@@ -362,7 +362,7 @@
362
362
  visibility: hidden;
363
363
  display: block;
364
364
  position: absolute;
365
- z-index: 200;
365
+ z-index: 1000;
366
366
  width: 40px;
367
367
  height: 40px;
368
368
  margin: 0;
@@ -397,6 +397,16 @@
397
397
 
398
398
  .telebox-color-scheme-dark.telebox-collector {
399
399
  background-color: #43434d;
400
+ }
401
+
402
+ .telebox-collector-shadow {
403
+ position: absolute;
404
+ top: 0;
405
+ left: 0;
406
+ width: 100%;
407
+ height: 100%;
408
+ z-index: -1;
409
+ pointer-events: none;
400
410
  }.telebox-max-titlebar {
401
411
  user-select: none;
402
412
  -webkit-touch-callout: none;
@@ -405,7 +415,7 @@
405
415
  position: absolute;
406
416
  top: 0;
407
417
  left: 0;
408
- z-index: 50000;
418
+ z-index: 1000;
409
419
  }
410
420
  .telebox-max-titlebar .telebox-title {
411
421
  display: none;
@@ -503,4 +513,87 @@
503
513
  }
504
514
  .telebox-color-scheme-dark .telebox-title {
505
515
  color: #e9e9e9;
516
+ }.telebox-app-menu-app-menu-badge {
517
+ position: absolute;
518
+ right: 0;
519
+ top: 0;
520
+ z-index: 1;
521
+ width: auto;
522
+ height: 12px;
523
+ max-width: 100%;
524
+ overflow: hidden;
525
+ text-overflow: ellipsis;
526
+ white-space: nowrap;
527
+ color: #fff;
528
+ background-color: red;
529
+ border-radius: 6px;
530
+ padding: 0 4px;
531
+ font-size: 12px;
532
+ line-height: 12px;
533
+ text-align: center;
534
+ transform: scale(0.7);
535
+ }
536
+
537
+ .telebox-app-menu-app-menu-tooltip {
538
+ position: absolute;
539
+ right: 0;
540
+ bottom: 0;
541
+ transform: translateY(-50px);
542
+ width: 100px;
543
+ height: auto;
544
+ display: flex;
545
+ flex-flow: column nowrap;
546
+ align-items: center;
547
+ justify-content: flex-end;
548
+ box-shadow: 0 2px 6px #2f419226;
549
+ border-radius: 4px;
550
+ padding: 3px 0;
551
+ background-color: #fff;
552
+ pointer-events: none;
553
+ }
554
+
555
+ .telebox-app-menu-app-menu-item {
556
+ display: flex;
557
+ flex-flow: row nowrap;
558
+ align-items: center;
559
+ justify-content: space-between;
560
+ padding: 0 5px 0 15px;
561
+ box-sizing: border-box;
562
+ width: 100%;
563
+ pointer-events: auto;
564
+ color: #999;
565
+ }
566
+ .telebox-app-menu-app-menu-item:hover {
567
+ background-color: #f0f0f0;
568
+ }
569
+ .telebox-app-menu-app-menu-item.show-all, .telebox-app-menu-app-menu-item.hidden-all {
570
+ padding-left: 20px;
571
+ pointer-events: none;
572
+ background-size: 15%;
573
+ background-position-y: center;
574
+ background-position-x: 2px;
575
+ background-repeat: no-repeat;
576
+ }
577
+ .telebox-app-menu-app-menu-item.active {
578
+ color: #333;
579
+ pointer-events: auto;
580
+ }
581
+ .telebox-app-menu-app-menu-item.hidden-all {
582
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjZ2MjZIMHoiIC8+CiAgICAgICAgPHBhdGggaWQ9ImMiIGQ9Ik0yNi44NjkgMEwyOCAxLjEzMVYyNi44N0wyNi44NjkgMjhIMS4xM0wwIDI2Ljg3VjEuMTMxTDEuMTMgMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPgogICAgICAgICAgICA8bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNhIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tNC42NDI5LTQuNjQyOWgzNS4yODU4djM1LjI4NThILTQuNjQyOXoiIG1hc2s9InVybCgjYikiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxnPgogICAgICAgICAgICA8bWFzayBpZD0iZCIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNjIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tMTcuNTE2OCAxNEwxNC0xNy41MTY4IDQ1LjUxNjggMTQgMTQgNDUuNTE2OHoiIG1hc2s9InVybCgjZCkiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIHN0cm9rZT0iI0E3QTdDQSIgc3Ryb2tlLXdpZHRoPSIxLjIiCiAgICAgICAgICAgIGQ9Ik0xMC4wODg2IDIxLjQ4NjV2LTMuNjk2Nkg2LjM5Mk0yMS4zODU1IDEwLjE4OTVoLTMuNjk2NlY2LjQ5M00yMS40MDIgMTcuNzk4M2gtMy42OTY2djMuNjk2Nk0xMC4yNTAzIDYuMTQ5OHYzLjg5ODVINi4zNTE3IiAvPgogICAgPC9nPgo8L3N2Zz4K);
583
+ }
584
+ .telebox-app-menu-app-menu-item.show-all {
585
+ border-top: 1px solid #ccc;
586
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjh2MjhIMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjYSIgLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPGcgZmlsbD0iI0E3QTdDQSIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI2IpIj4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgIGQ9Ik0yMC40ODEgMTcuMWgxLjJ2NC41ODFIMTcuMXYtMS4yaDMuMzgxVjE3LjF6bS0xNC4xOTA1LS4wMDloMS4ydjMuMzgxaDMuMzgwOXYxLjJoLTQuNTgxdi00LjU4MXpNMTcuMSA2LjE5MDVoNC41ODF2NC41ODA5aC0xLjJ2LTMuMzgxSDE3LjF2LTEuMnptLTEwLjcwMDguMTA4N2g0Ljc5ODV2MS4ySDcuNTk5MnYzLjU5ODVoLTEuMlY2LjI5OTJ6IiAvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==);
587
+ }
588
+
589
+ .telebox-app-menu-app-menu-item-title {
590
+ flex: 1;
591
+ overflow: hidden;
592
+ text-overflow: ellipsis;
593
+ white-space: nowrap;
594
+ font-size: 12px;
595
+ line-height: 20px;
596
+ text-align: left;
597
+ height: 20px;
598
+ pointer-events: none;
506
599
  }