@netless/telebox-insider 0.3.0-beta.1 → 0.3.0-beta.11

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
+ protected hasMinimizedBox(): boolean;
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">;
@@ -801,11 +809,12 @@ interface MaxTitleBarConfig extends DefaultTitleBarConfig {
801
809
  boxes: MaxTitleBarTeleBox[];
802
810
  containerRect: TeleBoxRect;
803
811
  focusedBox?: MaxTitleBarTeleBox;
804
- boxesStatus?: Map<string, TeleBoxState>;
812
+ getBoxesStatus?: () => Map<string, TeleBoxState>;
805
813
  }
806
814
  declare class MaxTitleBar extends DefaultTitleBar {
807
- boxesStatus?: Map<string, TeleBoxState>;
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
  /**
@@ -815,7 +824,7 @@ declare class MaxTitleBar extends DefaultTitleBar {
815
824
  */
816
825
  focusBox(box?: MaxTitleBarTeleBox): void;
817
826
  setContainerRect(rect: TeleBoxRect): void;
818
- setBoxesStatus(boxesStatus: Map<string, TeleBoxState>): void;
827
+ updateBoxesStatus(): void;
819
828
  setBoxes(boxes: MaxTitleBarTeleBox[]): void;
820
829
  setState(state: TeleBoxState): void;
821
830
  setReadonly(readonly: boolean): void;
@@ -831,6 +840,38 @@ 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
+ private container;
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
+ setContainer(container: HTMLDivElement): void;
865
+ private createDefaultAppMenu;
866
+ private init;
867
+ updatePrefersColorSchemeHandler: () => void;
868
+ appMenuChange: () => void;
869
+ private createMinimizedItem;
870
+ private renderMenuView;
871
+ render(minimizedBoxesStatus: Map<AppId, TELE_BOX_STATE.Minimized>): void;
872
+ destroy(): void;
873
+ }
874
+
834
875
  type ValConfig = {
835
876
  prefersColorScheme: Val<TeleBoxColorScheme, boolean>;
836
877
  containerRect: Val<TeleBoxRect, boolean>;
@@ -844,9 +885,21 @@ type ValConfig = {
844
885
  interface TeleBoxManager extends ValEnhancedResult<ValConfig> {
845
886
  }
846
887
  declare class TeleBoxManager {
847
- private boxesStatus$;
848
- private lastNotMinimizedBoxesStatus$;
849
- constructor({ root, prefersColorScheme, minimized, maximized, fence, containerRect, collector, namespace, readonly, }?: TeleBoxManagerConfig);
888
+ protected boxesStatus$: Map<string, TeleBoxState>;
889
+ protected lastNotMinimizedBoxesStatus$: Map<string, NotMinimizedBoxState>;
890
+ protected appMenu: AppMenu | undefined;
891
+ protected useBoxesStatus: boolean;
892
+ protected effectBoxesStatusTimer?: {
893
+ skipUpdate: boolean;
894
+ timer: number | undefined;
895
+ resolve?: (skipUpdate: boolean) => void;
896
+ };
897
+ protected effectLastNotMinimizedBoxStatusTimer?: {
898
+ skipUpdate: boolean;
899
+ timer: number | undefined;
900
+ resolve?: (skipUpdate: boolean) => void;
901
+ };
902
+ constructor({ root, prefersColorScheme, minimized, maximized, fence, containerRect, collector, namespace, readonly, useBoxesStatus, }?: TeleBoxManagerConfig);
850
903
  get boxes(): ReadonlyArray<TeleBox>;
851
904
  get topBox(): TeleBox | undefined;
852
905
  readonly events: TeleBoxManagerEvents;
@@ -855,24 +908,48 @@ declare class TeleBoxManager {
855
908
  readonly namespace: string;
856
909
  _darkMode$: Val<boolean, boolean>;
857
910
  _calcCollectorRect: () => TeleBoxRect | undefined;
911
+ _setCollectorRect: (collectorRect: TeleBoxRect | undefined) => void;
858
912
  get darkMode(): boolean;
859
913
  _state$: Val<TeleBoxState, boolean>;
860
914
  get state(): TeleBoxState;
861
915
  /** @deprecated use setMaximized and setMinimized instead */
862
916
  setState(state: TeleBoxState, skipUpdate?: boolean): this;
863
917
  setBoxStatus(boxId: string, boxStatus?: TeleBoxState, skipUpdate?: boolean): void;
864
- private setBoxesStatus;
918
+ getBoxStatus(boxId: string): TeleBoxState | undefined;
919
+ get boxesStatus(): ReadonlyMap<string, TeleBoxState>;
920
+ get lastNotMinimizedBoxesStatus(): ReadonlyMap<string, NotMinimizedBoxState>;
921
+ setBoxesStatus(boxesStatus: Map<string, TeleBoxState>, skipUpdate?: boolean): void;
922
+ getBoxesStatus(): Map<string, TeleBoxState>;
923
+ protected effectBoxStatusChange(): void;
924
+ protected effectBoxesStatusTimerFunc(skipUpdate: boolean): void;
925
+ effectBoxesStatusChange(skipUpdate?: boolean): Promise<void>;
865
926
  hasBoxesStatus(): boolean;
866
927
  hasMinimizedBox(): boolean;
928
+ getMinimizedBoxesStatus(): Map<string, TELE_BOX_STATE.Minimized>;
929
+ getNotMinimizedBoxesStatus(): Map<string, NotMinimizedBoxState>;
930
+ getAllMaximizedBoxesStatus(): Map<string, TELE_BOX_STATE.Maximized>;
931
+ getAllNormalBoxesStatus(): Map<string, TELE_BOX_STATE.Normal>;
932
+ getLastNotMinimizedBoxStatus(boxId: string): NotMinimizedBoxState | undefined;
867
933
  setLastNotMinimizedBoxStatus(boxId: string, lastNotMinimizedBoxStatus?: NotMinimizedBoxState, skipUpdate?: boolean): void;
868
- private setLastNotMinimizedBoxesStatus;
869
- private getAllMinimizedBoxes;
934
+ setLastNotMinimizedBoxesStatus(lastNotMinimizedBoxesStatus: Map<string, NotMinimizedBoxState>, skipUpdate?: boolean): void;
935
+ protected effectLastNotMinimizedBoxStatusChange(skipUpdate?: boolean): Promise<void>;
936
+ protected effectLastNotMinimizedBoxStatusFunc(skipUpdate?: boolean): void;
937
+ protected getUnabledBoxesStatusZIndex(): number;
938
+ /** Maximized box zIndex range: 100-299 */
939
+ getMaxMaximizedBoxZIndex(): number;
940
+ /** normal box zIndex range: 300-499 */
941
+ getMaxNormalBoxZIndex(): number;
870
942
  create(config?: TeleBoxManagerCreateConfig, smartPosition?: boolean): ReadonlyTeleBox;
871
943
  query(config?: TeleBoxManagerQueryConfig): ReadonlyTeleBox[];
872
944
  queryOne(config?: TeleBoxManagerQueryConfig): ReadonlyTeleBox | undefined;
873
945
  update(boxID: string, config: TeleBoxManagerUpdateConfig, skipUpdate?: boolean): void;
874
946
  updateAll(config: TeleBoxManagerUpdateConfig, skipUpdate?: boolean): void;
875
- remove(boxOrID: string | TeleBox, skipUpdate?: boolean): ReadonlyTeleBox | undefined;
947
+ setBox(boxOrID: string | TeleBox, options: {
948
+ status?: TeleBoxState;
949
+ lastNotMinimizedBoxStatus?: NotMinimizedBoxState;
950
+ zIndex?: number;
951
+ }, skipUpdate?: boolean, effectFunc?: () => void): void;
952
+ remove(boxOrID: string | TeleBox, skipUpdate?: boolean, effectFunc?: () => void): ReadonlyTeleBox | undefined;
876
953
  removeTopBox(): ReadonlyTeleBox | undefined;
877
954
  removeAll(skipUpdate?: boolean): ReadonlyTeleBox[];
878
955
  destroy(skipUpdate?: boolean): void;
@@ -888,12 +965,12 @@ declare class TeleBoxManager {
888
965
  protected updateBox(box: TeleBox, config: TeleBoxManagerUpdateConfig, skipUpdate?: boolean): void;
889
966
  protected smartPosition(config?: TeleBoxConfig): TeleBoxConfig;
890
967
  protected makeBoxTop(box: TeleBox, skipUpdate?: boolean): void;
968
+ protected getMaximizedTopBox(): MaxTitleBarTeleBox | undefined;
891
969
  protected makeMaximizedTopBoxFocus(): void;
892
- private makeTopBoxEffect;
893
- protected makeMaximizedBoxFocus(maximizedBox: MaxTitleBarTeleBox, skipUpdate?: boolean): void;
894
- protected makeMaximizedBoxBlur(): void;
895
970
  protected getBoxIndex(boxOrID: TeleBox | string): number;
896
- protected getBox(boxOrID: TeleBox | string): TeleBox | undefined;
971
+ getBox(boxOrID: TeleBox | string): TeleBox | undefined;
972
+ createMinimizedAppMenu(): AppMenu | undefined;
897
973
  }
898
974
 
899
- 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 };
975
+ export { DefaultTitleBar, TELE_BOX_COLOR_SCHEME, TELE_BOX_DELEGATE_EVENT, TELE_BOX_EVENT, TELE_BOX_MANAGER_EVENT, TELE_BOX_RESIZE_HANDLE, TELE_BOX_STATE, TeleBox, TeleBoxCollector, TeleBoxDragHandleType, TeleBoxManager };
976
+ export type { DefaultTitleBarButton, DefaultTitleBarConfig, NotMinimizedBoxState, ReadonlyTeleBox, TeleBoxCollectorConfig, TeleBoxColorScheme, TeleBoxConfig, TeleBoxCoord, TeleBoxDelegateEvent, TeleBoxDelegateEventConfig, TeleBoxDelegateEvents, TeleBoxEvent, TeleBoxEventConfig, TeleBoxEvents, TeleBoxHandleType, TeleBoxManagerConfig, TeleBoxManagerCreateConfig, TeleBoxManagerEvent, TeleBoxManagerEventConfig, TeleBoxManagerEvents, TeleBoxManagerQueryConfig, TeleBoxManagerUpdateConfig, TeleBoxRect, TeleBoxSize, TeleBoxState, TeleTitleBar, TeleTitleBarConfig, TeleTitleBarEvent };
package/dist/style.css CHANGED
@@ -81,7 +81,6 @@
81
81
  display: flex;
82
82
  flex-direction: column;
83
83
  }
84
-
85
84
  .telebox-footer-wrap::before {
86
85
  content: "";
87
86
  display: block;
@@ -236,7 +235,6 @@
236
235
  .telebox-color-scheme-dark {
237
236
  color-scheme: dark;
238
237
  }
239
-
240
238
  .telebox-color-scheme-dark .telebox-box-main {
241
239
  color: #e9e9e9;
242
240
  background: #212126;
@@ -313,7 +311,6 @@
313
311
  background: transparent;
314
312
  cursor: pointer;
315
313
  }
316
-
317
314
  .telebox-titlebar-btn ~ .telebox-titlebar-btn {
318
315
  margin-left: 10px;
319
316
  }
@@ -334,7 +331,6 @@
334
331
  .telebox-titlebar-icon-maximize {
335
332
  background: center/cover no-repeat url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjh2MjhIMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxtYXNrIGlkPSJiIiBmaWxsPSIjZmZmIj4KICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjYSIgLz4KICAgICAgICA8L21hc2s+CiAgICAgICAgPGcgZmlsbD0iI0E3QTdDQSIgZmlsbC1ydWxlPSJub256ZXJvIiBtYXNrPSJ1cmwoI2IpIj4KICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgIGQ9Ik0yMC40ODEgMTcuMWgxLjJ2NC41ODFIMTcuMXYtMS4yaDMuMzgxVjE3LjF6bS0xNC4xOTA1LS4wMDloMS4ydjMuMzgxaDMuMzgwOXYxLjJoLTQuNTgxdi00LjU4MXpNMTcuMSA2LjE5MDVoNC41ODF2NC41ODA5aC0xLjJ2LTMuMzgxSDE3LjF2LTEuMnptLTEwLjcwMDguMTA4N2g0Ljc5ODV2MS4ySDcuNTk5MnYzLjU5ODVoLTEuMlY2LjI5OTJ6IiAvPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==");
336
333
  }
337
-
338
334
  .telebox-titlebar-icon-maximize.is-active {
339
335
  background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMjggMjgiPgogICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9ImEiIGQ9Ik0wIDBoMjZ2MjZIMHoiIC8+CiAgICAgICAgPHBhdGggaWQ9ImMiIGQ9Ik0yNi44NjkgMEwyOCAxLjEzMVYyNi44N0wyNi44NjkgMjhIMS4xM0wwIDI2Ljg3VjEuMTMxTDEuMTMgMHoiIC8+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPgogICAgICAgICAgICA8bWFzayBpZD0iYiIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNhIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tNC42NDI5LTQuNjQyOWgzNS4yODU4djM1LjI4NThILTQuNjQyOXoiIG1hc2s9InVybCgjYikiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxnPgogICAgICAgICAgICA8bWFzayBpZD0iZCIgZmlsbD0iI2ZmZiI+CiAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNjIiAvPgogICAgICAgICAgICA8L21hc2s+CiAgICAgICAgICAgIDxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0tMTcuNTE2OCAxNEwxNC0xNy41MTY4IDQ1LjUxNjggMTQgMTQgNDUuNTE2OHoiIG1hc2s9InVybCgjZCkiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxwYXRoIHN0cm9rZT0iI0E3QTdDQSIgc3Ryb2tlLXdpZHRoPSIxLjIiCiAgICAgICAgICAgIGQ9Ik0xMC4wODg2IDIxLjQ4NjV2LTMuNjk2Nkg2LjM5Mk0yMS4zODU1IDEwLjE4OTVoLTMuNjk2NlY2LjQ5M00yMS40MDIgMTcuNzk4M2gtMy42OTY2djMuNjk2Nk0xMC4yNTAzIDYuMTQ5OHYzLjg5ODVINi4zNTE3IiAvPgogICAgPC9nPgo8L3N2Zz4K");
340
336
  }
@@ -346,11 +342,9 @@
346
342
  .telebox-color-scheme-dark {
347
343
  color-scheme: dark;
348
344
  }
349
-
350
345
  .telebox-color-scheme-dark .telebox-title {
351
346
  color: #e9e9e9;
352
347
  }
353
-
354
348
  .telebox-color-scheme-dark .telebox-titlebar {
355
349
  color: #e9e9e9;
356
350
  background: #43434d;
@@ -362,7 +356,7 @@
362
356
  visibility: hidden;
363
357
  display: block;
364
358
  position: absolute;
365
- z-index: 200;
359
+ z-index: 1000;
366
360
  width: 40px;
367
361
  height: 40px;
368
362
  margin: 0;
@@ -394,9 +388,18 @@
394
388
  .telebox-color-scheme-dark {
395
389
  color-scheme: dark;
396
390
  }
397
-
398
391
  .telebox-color-scheme-dark.telebox-collector {
399
392
  background-color: #43434d;
393
+ }
394
+
395
+ .telebox-collector-shadow {
396
+ position: absolute;
397
+ top: 0;
398
+ left: 0;
399
+ width: 100%;
400
+ height: 100%;
401
+ z-index: -1;
402
+ pointer-events: none;
400
403
  }.telebox-max-titlebar {
401
404
  user-select: none;
402
405
  -webkit-touch-callout: none;
@@ -405,7 +408,7 @@
405
408
  position: absolute;
406
409
  top: 0;
407
410
  left: 0;
408
- z-index: 50000;
411
+ z-index: 1000;
409
412
  }
410
413
  .telebox-max-titlebar .telebox-title {
411
414
  display: none;
@@ -416,9 +419,11 @@
416
419
  .telebox-max-titlebar.telebox-max-titlebar-single-title .telebox-title {
417
420
  display: block;
418
421
  }
422
+
419
423
  .telebox-max-titlebar-maximized {
420
424
  display: flex;
421
425
  }
426
+
422
427
  .telebox-titles {
423
428
  height: 100%;
424
429
  margin: 0;
@@ -446,10 +451,10 @@
446
451
  background-color: rgba(238, 238, 247, 0.8);
447
452
  }
448
453
  .telebox-titles::-webkit-scrollbar-thumb:hover {
449
- background-color: #eeeef7;
454
+ background-color: rgb(238, 238, 247);
450
455
  }
451
456
  .telebox-titles::-webkit-scrollbar-thumb:active {
452
- background-color: #eeeef7;
457
+ background-color: rgb(238, 238, 247);
453
458
  }
454
459
  .telebox-titles::-webkit-scrollbar-thumb:vertical {
455
460
  min-height: 50px;
@@ -457,6 +462,7 @@
457
462
  .telebox-titles::-webkit-scrollbar-thumb:horizontal {
458
463
  min-width: 50px;
459
464
  }
465
+
460
466
  .telebox-titles-content {
461
467
  height: 100%;
462
468
  display: flex;
@@ -464,6 +470,7 @@
464
470
  align-items: center;
465
471
  padding: 0;
466
472
  }
473
+
467
474
  .telebox-titles-tab {
468
475
  height: 100%;
469
476
  overflow: hidden;
@@ -484,12 +491,15 @@
484
491
  cursor: pointer;
485
492
  user-select: none;
486
493
  }
494
+
487
495
  .telebox-titles-tab-focus {
488
496
  color: #357bf6;
489
497
  }
498
+
490
499
  .telebox-readonly .telebox-titles-tab {
491
500
  cursor: not-allowed;
492
501
  }
502
+
493
503
  .telebox-color-scheme-dark {
494
504
  color-scheme: dark;
495
505
  }
@@ -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 rgba(47, 65, 146, 0.1490196078);
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
  }