@playkit-js/playkit-js-ui 0.82.9 → 0.83.0-canary.0-0caafa2

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.
Files changed (46) hide show
  1. package/dist/playkit-js-ui.d.ts +136 -129
  2. package/dist/playkit-ui.js +1 -1
  3. package/dist/playkit-ui.js.map +1 -1
  4. package/package.json +1 -1
  5. package/src/components/audio/audio.tsx +160 -0
  6. package/src/components/audio/index.ts +1 -0
  7. package/src/components/audio-desc/_audio-desc.scss +10 -0
  8. package/src/components/audio-desc/audio-desc-mini.tsx +254 -0
  9. package/src/components/audio-desc/audio-desc.tsx +199 -0
  10. package/src/components/audio-desc/audio-description-updater.tsx +225 -0
  11. package/src/components/audio-desc/index.ts +1 -0
  12. package/src/components/audio-description-menu/audio-description-menu.tsx +176 -0
  13. package/src/components/audio-description-menu/index.ts +1 -0
  14. package/src/components/audio-menu/audio-menu.tsx +128 -57
  15. package/src/components/bottom-bar/bottom-bar-registry-manager.ts +11 -0
  16. package/src/components/bottom-bar/bottom-bar.tsx +16 -4
  17. package/src/components/engine-connector/engine-connector.tsx +41 -16
  18. package/src/components/event-dispatcher/event-dispatcher-provider.tsx +22 -17
  19. package/src/components/icon/icon.scss +8 -0
  20. package/src/components/icon/icon.tsx +11 -3
  21. package/src/components/index.ts +3 -2
  22. package/src/components/menu/menu.tsx +56 -55
  23. package/src/components/settings/settings.tsx +14 -18
  24. package/src/event/event-type.ts +1 -0
  25. package/src/event/events/bottom-bar-needs-resize-event.ts +20 -0
  26. package/src/middlewares/event-dispatcher.ts +0 -35
  27. package/src/reducers/audio-description.ts +99 -0
  28. package/src/reducers/config.ts +6 -3
  29. package/src/reducers/index.ts +2 -1
  30. package/src/reducers/settings.ts +0 -9
  31. package/src/store.ts +3 -1
  32. package/src/styles/_dropdown.scss +5 -1
  33. package/src/styles/style.scss +1 -0
  34. package/src/types/reducers/audio-description.ts +12 -0
  35. package/src/types/reducers/root-state.ts +2 -0
  36. package/src/types/reducers/settings.ts +0 -1
  37. package/src/types/ui-options.ts +4 -1
  38. package/src/ui-presets/live.tsx +2 -2
  39. package/src/ui-presets/playback.tsx +19 -4
  40. package/src/utils/audio-description.ts +28 -0
  41. package/translations/ca_es.i18n.json +1 -4
  42. package/translations/en.i18n.json +20 -5
  43. package/src/components/advanced-audio-desc/advanced-audio-desc.tsx +0 -141
  44. package/src/components/advanced-audio-desc/index.ts +0 -1
  45. package/src/components/advanced-audio-desc-toggle/advanced-audio-desc-toggle.tsx +0 -69
  46. package/src/components/advanced-audio-desc-toggle/index.ts +0 -1
@@ -90,6 +90,38 @@ declare const actions_12: {
90
90
  };
91
91
  };
92
92
 
93
+ declare const actions_13: {
94
+ updateAudioDescriptionLanguages: (audioDescriptionLanguages: string[]) => {
95
+ type: string;
96
+ audioDescriptionLanguages: string[];
97
+ };
98
+ updateAdvancedAudioDescriptionLanguages: (advancedAudioDescriptionLanguages: string[]) => {
99
+ type: string;
100
+ advancedAudioDescriptionLanguages: string[];
101
+ };
102
+ updateAudioDescriptionEnabled: (isEnabled: boolean) => {
103
+ type: string;
104
+ isEnabled: boolean;
105
+ };
106
+ updateAudioDescriptionType: (selectedType: AUDIO_DESCRIPTION_TYPE) => {
107
+ type: string;
108
+ selectedType: AUDIO_DESCRIPTION_TYPE;
109
+ };
110
+ updateSelectionByLanguage: (language: string, isEnabled: boolean, selectedType: AUDIO_DESCRIPTION_TYPE) => {
111
+ type: string;
112
+ language: string;
113
+ isEnabled: boolean;
114
+ selectedType: AUDIO_DESCRIPTION_TYPE;
115
+ };
116
+ resetSelectionByLanguage: () => {
117
+ type: string;
118
+ };
119
+ updateDefaultValueSet: (isDefaultValueSet: boolean) => {
120
+ type: string;
121
+ isDefaultValueSet: boolean;
122
+ };
123
+ };
124
+
93
125
  declare const actions_2: {
94
126
  updateCaptionsStyle: (style: string) => {
95
127
  type: string;
@@ -392,14 +424,6 @@ declare const actions_8: {
392
424
  type: string;
393
425
  speed: string;
394
426
  };
395
- updateAudio: (audio: string) => {
396
- type: string;
397
- audio: string;
398
- };
399
- updateAdvancedAudioDesc: (isChecked: boolean) => {
400
- type: string;
401
- isChecked: boolean;
402
- };
403
427
  updateIsCaptionsEnabled: (isCaptionsEnabled: boolean) => {
404
428
  type: string;
405
429
  isCaptionsEnabled: boolean;
@@ -895,75 +919,6 @@ declare type AdSkipProps = {
895
919
  */
896
920
  declare function adsUI(props: any): VNode<any> | undefined;
897
921
 
898
- /**
899
- * AdvancedAudioDesc component
900
- *
901
- * @class AdvancedAudioDesc
902
- * @example <AdvancedAudioDesc step={5} />
903
- * @extends {Component}
904
- */
905
- declare class AdvancedAudioDesc extends Component<any, any> implements IconComponent {
906
- componentDidUpdate(previousProps: any): void;
907
- get advancedAudioDesc(): boolean;
908
- registerComponent(): any;
909
- getComponentText: () => any;
910
- getSvgIcon: () => any;
911
- /**
912
- * should render component
913
- * @returns {boolean} - whether to render the component
914
- */
915
- private _shouldRender;
916
- /**
917
- * AdvancedAudioDesc click handler
918
- *
919
- * @returns {void}
920
- * @memberof AdvancedAudioDesc
921
- */
922
- private onClick;
923
- /**
924
- * on key down handler
925
- *
926
- * @param {KeyboardEvent} e - keyboard event
927
- * @returns {void}
928
- * @memberof AdvancedAudioDesc
929
- */
930
- onKeyDown: (e: KeyboardEvent) => void;
931
- /**
932
- * render component
933
- *
934
- * @param {*} props - component props
935
- * @returns {React$Element} - component element
936
- * @memberof AdvancedAudioDesc
937
- */
938
- render({ innerRef }: any): VNode<any> | undefined;
939
- }
940
-
941
- /**
942
- * AdvancedAudioDescToggle component
943
- *
944
- * @class AdvancedAudioDescToggle
945
- * @example <AdvancedAudioDescToggle />
946
- * @extends {Component}
947
- */
948
- declare class AdvancedAudioDescToggle extends Component<any, any> {
949
- /**
950
- * Toggle the Advanced Audio Description option and update it in the store state
951
- *
952
- * @param {boolean} isChecked - Whether the feature is enabled or not
953
- * @returns {void}
954
- * @memberof AdvancedAudioDescToggle
955
- */
956
- onAdvancedAudioClick: (isChecked: boolean) => void;
957
- /**
958
- * render function
959
- *
960
- * @param {*} props - component props
961
- * @returns {React$Element} - component
962
- * @memberof AdvancedAudioDescToggle
963
- */
964
- render(props: any): h.JSX.Element;
965
- }
966
-
967
922
  /**
968
923
  * @typedef {Object} KPAdvertisingConfigObject@typedef {Object} KPAdvertisingConfigObject
969
924
  * @property {PrebidConfig} prebid - The prebid config.
@@ -980,36 +935,33 @@ declare interface AdvertisingConfig {
980
935
  adBreakCuePointStyle?: Object;
981
936
  }
982
937
 
983
- /**
984
- * AudioMenu component
985
- *
986
- * @class AudioMenu
987
- * @example <AudioMenu />
988
- * @extends {Component}
989
- */
990
- declare class AudioMenu extends Component<AudioMenuProps & WithPlayerProps & WithEventDispatcherProps, any> {
991
- /**
992
- * call to player selectTrack method and change audio track
993
- *
994
- * @param {Object} audioTrack - audio track
995
- * @returns {void}
996
- * @memberof Settings
997
- */
998
- onAudioChange(audioTrack: any): void;
999
- /**
1000
- * render function
1001
- *
1002
- * @param {*} props - component props
1003
- * @returns {React$Element} - component
1004
- * @memberof AudioMenu
1005
- */
1006
- render(props: any): h.JSX.Element;
938
+ declare const Audio_2: any;
939
+
940
+ declare enum AUDIO_DESCRIPTION_TYPE {
941
+ AUDIO_DESCRIPTION = 1,
942
+ EXTENDED_AUDIO_DESCRIPTION = 2
1007
943
  }
1008
944
 
1009
- declare type AudioMenuProps = {
1010
- audioTracks?: any[];
1011
- audioLabelText?: string;
1012
- };
945
+ declare const AudioDesc: any;
946
+
947
+ declare namespace audioDescription {
948
+ export {
949
+ types_13 as types,
950
+ initialState_13 as initialState,
951
+ _default_13 as default,
952
+ actions_13 as actions
953
+ }
954
+ }
955
+
956
+ declare interface AudioDescriptionState {
957
+ audioDescriptionLanguages: string[];
958
+ advancedAudioDescriptionLanguages: string[];
959
+ isEnabled: boolean;
960
+ selectedType: AUDIO_DESCRIPTION_TYPE;
961
+ selectionByLanguage: Map<string, [boolean, AUDIO_DESCRIPTION_TYPE]>;
962
+ }
963
+
964
+ declare const AudioMenu: any;
1013
965
 
1014
966
  declare const BadgeType: {
1015
967
  qualityHd: string;
@@ -1672,6 +1624,7 @@ declare function bindActions<A, M extends ActionCreatorsMapObject<A>>(actions: M
1672
1624
  */
1673
1625
  declare class BottomBar extends Component<any, any> {
1674
1626
  private bottomBarContainerRef;
1627
+ private leftControlsRef;
1675
1628
  private presetControls;
1676
1629
  private resizeObserver;
1677
1630
  private _currBarWidthArr;
@@ -2076,8 +2029,7 @@ declare namespace Components {
2076
2029
  QualityMenu,
2077
2030
  HeightResolution,
2078
2031
  getLabelBadgeType,
2079
- AdvancedAudioDescToggle,
2080
- AdvancedAudioDesc,
2032
+ AudioDesc,
2081
2033
  ExpandableText,
2082
2034
  Scrollable,
2083
2035
  ProgressIndicator,
@@ -2111,6 +2063,7 @@ declare namespace Components {
2111
2063
  ClosedCaptions,
2112
2064
  ClosedCaptions as ClosedCaptionsControl,
2113
2065
  CaptionsControl,
2066
+ Audio_2 as Audio,
2114
2067
  EventDispatcherProvider,
2115
2068
  WithEventDispatcherProps,
2116
2069
  withEventDispatcher,
@@ -2318,6 +2271,39 @@ declare const _default_12: (state: BottomBarState | undefined, action: any) => {
2318
2271
  controlsToMove: any;
2319
2272
  };
2320
2273
 
2274
+ declare const _default_13: (state: AudioDescriptionState | undefined, action: any) => {
2275
+ audioDescriptionLanguages: any;
2276
+ advancedAudioDescriptionLanguages: string[];
2277
+ isEnabled: boolean;
2278
+ selectedType: AUDIO_DESCRIPTION_TYPE;
2279
+ selectionByLanguage: Map<string, [boolean, AUDIO_DESCRIPTION_TYPE]>;
2280
+ } | {
2281
+ advancedAudioDescriptionLanguages: any;
2282
+ audioDescriptionLanguages: string[];
2283
+ isEnabled: boolean;
2284
+ selectedType: AUDIO_DESCRIPTION_TYPE;
2285
+ selectionByLanguage: Map<string, [boolean, AUDIO_DESCRIPTION_TYPE]>;
2286
+ } | {
2287
+ isEnabled: any;
2288
+ audioDescriptionLanguages: string[];
2289
+ advancedAudioDescriptionLanguages: string[];
2290
+ selectedType: AUDIO_DESCRIPTION_TYPE;
2291
+ selectionByLanguage: Map<string, [boolean, AUDIO_DESCRIPTION_TYPE]>;
2292
+ } | {
2293
+ selectedType: any;
2294
+ audioDescriptionLanguages: string[];
2295
+ advancedAudioDescriptionLanguages: string[];
2296
+ isEnabled: boolean;
2297
+ selectionByLanguage: Map<string, [boolean, AUDIO_DESCRIPTION_TYPE]>;
2298
+ } | {
2299
+ isDefaultValueSet: any;
2300
+ audioDescriptionLanguages: string[];
2301
+ advancedAudioDescriptionLanguages: string[];
2302
+ isEnabled: boolean;
2303
+ selectedType: AUDIO_DESCRIPTION_TYPE;
2304
+ selectionByLanguage: Map<string, [boolean, AUDIO_DESCRIPTION_TYPE]>;
2305
+ };
2306
+
2321
2307
  declare const _default_2: (state: CvaaState | undefined, action: any) => {
2322
2308
  style: any;
2323
2309
  };
@@ -2472,28 +2458,19 @@ declare const _default_8: (state: SettingsState | undefined, action: any) => {
2472
2458
  quality: any;
2473
2459
  speed: number;
2474
2460
  audio?: string | undefined;
2475
- advancedAudioDesc: boolean;
2476
2461
  } | {
2477
2462
  speed: any;
2478
2463
  quality: number;
2479
2464
  audio?: string | undefined;
2480
- advancedAudioDesc: boolean;
2481
2465
  } | {
2482
2466
  audio: any;
2483
2467
  quality: number;
2484
2468
  speed: number;
2485
- advancedAudioDesc: boolean;
2486
- } | {
2487
- advancedAudioDesc: any;
2488
- quality: number;
2489
- speed: number;
2490
- audio?: string | undefined;
2491
2469
  } | {
2492
2470
  isCaptionsEnabled: any;
2493
2471
  quality: number;
2494
2472
  speed: number;
2495
2473
  audio?: string | undefined;
2496
- advancedAudioDesc: boolean;
2497
2474
  };
2498
2475
 
2499
2476
  declare const _default_9: (state: ShellState | undefined, action: any) => {
@@ -2884,7 +2861,7 @@ declare type EngineConnectorProps = {
2884
2861
  engine: EngineState;
2885
2862
  player: KalturaPlayer;
2886
2863
  eventManager: EventManager;
2887
- } & typeof actions_3 & typeof actions_4 & typeof actions_9 & {
2864
+ } & typeof actions_3 & typeof actions_4 & typeof actions_13 & typeof actions_9 & {
2888
2865
  seekbarUpdateCurrentTime: typeof actions_7.updateCurrentTime;
2889
2866
  } & {
2890
2867
  updateIsCaptionsEnabled: typeof actions_8.updateIsCaptionsEnabled;
@@ -3107,6 +3084,7 @@ declare const EventType: {
3107
3084
  readonly USER_SELECTED_CAPTIONS_BACKGROUND_COLOR: "playkit-ui-userselectedcaptionsbackgroundcolor";
3108
3085
  readonly USER_SELECTED_CAPTIONS_BACKGROUND_OPACITY: "playkit-ui-userselectedcaptionsbackgroundopacity";
3109
3086
  readonly BOTTOM_BAR_CLIENT_RECT_CHANGED: "playkit-ui-bottombarclientrectchanged";
3087
+ readonly BOTTOM_BAR_NEEDS_RESIZE: "playkit-ui-bottombarneedsresize";
3110
3088
  readonly PLAYER_HOVERED: "playkit-ui-playerhovered";
3111
3089
  readonly USER_COPIED_DEBUG_INFO: "playkit-ui-usercopieddebuginfo";
3112
3090
  };
@@ -3439,6 +3417,8 @@ declare const IconType: {
3439
3417
  ClosedCaptionsOff: string;
3440
3418
  AdvancedAudioDescription: string;
3441
3419
  AdvancedAudioDescriptionActive: string;
3420
+ AdvancedAudioDescriptionDisabled: string;
3421
+ AdvancedAudioDescriptionDisabledDropdown: string;
3442
3422
  };
3443
3423
 
3444
3424
  /**
@@ -3469,14 +3449,17 @@ declare const initialState: {
3469
3449
  targetId: string;
3470
3450
  forceTouchUI: boolean;
3471
3451
  showCCButton: boolean;
3452
+ showAudioButton: boolean;
3453
+ showAudioDescriptionButton: boolean;
3472
3454
  openMenuFromCCButton: boolean;
3455
+ openMenuFromAudioDescriptionButton: boolean;
3473
3456
  settings: {
3474
3457
  showAudioMenu: boolean;
3475
3458
  showCaptionsMenu: boolean;
3476
3459
  showQualityMenu: boolean;
3477
3460
  showSpeedMenu: boolean;
3478
- showAdvancedAudioDescToggle: boolean;
3479
3461
  showAdvancedCaptionsMenu: boolean;
3462
+ showAudioDescriptionMenu: boolean;
3480
3463
  };
3481
3464
  hoverTimeout: number;
3482
3465
  tinySizeDisabled: boolean;
@@ -3503,6 +3486,15 @@ declare const initialState_12: {
3503
3486
  controlsToMove: never[];
3504
3487
  };
3505
3488
 
3489
+ declare const initialState_13: {
3490
+ audioDescriptionLanguages: never[];
3491
+ advancedAudioDescriptionLanguages: never[];
3492
+ isEnabled: boolean;
3493
+ selectedType: AUDIO_DESCRIPTION_TYPE;
3494
+ selectionByLanguage: Map<string, [boolean, AUDIO_DESCRIPTION_TYPE]>;
3495
+ isDefaultValueSet: boolean;
3496
+ };
3497
+
3506
3498
  declare const initialState_2: {
3507
3499
  style: string;
3508
3500
  };
@@ -3584,7 +3576,6 @@ declare const initialState_7: SeekbarState;
3584
3576
  declare const initialState_8: {
3585
3577
  quality: number;
3586
3578
  speed: number;
3587
- advancedAudioDesc: boolean;
3588
3579
  isCaptionsEnabled: boolean;
3589
3580
  };
3590
3581
 
@@ -4855,7 +4846,7 @@ declare interface MediaSourceOptionsObject {
4855
4846
  * @extends {Component}
4856
4847
  */
4857
4848
  declare class Menu extends Component<MenuProps & WithEventManagerProps, any> {
4858
- _menuElement: HTMLDivElement;
4849
+ private _menuElement;
4859
4850
  /**
4860
4851
  * before component mounted, set initial state of the menu position
4861
4852
  * @returns {void}
@@ -4874,7 +4865,7 @@ declare class Menu extends Component<MenuProps & WithEventManagerProps, any> {
4874
4865
  * @returns {Array} position style classes array
4875
4866
  * @memberof Menu
4876
4867
  */
4877
- getPosition(): Array<string>;
4868
+ private getPosition;
4878
4869
  /**
4879
4870
  * handler to click outside of the component event listener.
4880
4871
  * if not mobile device and clicked outside the component, call the onClose callback
@@ -4883,7 +4874,7 @@ declare class Menu extends Component<MenuProps & WithEventManagerProps, any> {
4883
4874
  * @returns {void}
4884
4875
  * @memberof Menu
4885
4876
  */
4886
- handleClickOutside: (e: any) => void;
4877
+ private handleClickOutside;
4887
4878
  /**
4888
4879
  * indication if option is active or not
4889
4880
  *
@@ -4891,7 +4882,7 @@ declare class Menu extends Component<MenuProps & WithEventManagerProps, any> {
4891
4882
  * @returns {boolean} is option active boolean
4892
4883
  * @memberof Menu
4893
4884
  */
4894
- isSelected(option: any): boolean;
4885
+ private isSelected;
4895
4886
  /**
4896
4887
  * when option selected, change the active prop immediately for instant ui change
4897
4888
  * and call the onSelect callback with the option value
@@ -4900,7 +4891,7 @@ declare class Menu extends Component<MenuProps & WithEventManagerProps, any> {
4900
4891
  * @returns {void}
4901
4892
  * @memberof Menu
4902
4893
  */
4903
- onSelect(option: OptionType): void;
4894
+ private onSelect;
4904
4895
  /**
4905
4896
  * on change handler
4906
4897
  * @param {Event} e - event
@@ -4914,14 +4905,14 @@ declare class Menu extends Component<MenuProps & WithEventManagerProps, any> {
4914
4905
  * - If the selected index is within `options.length`, it's a normal option, so we call `onSelect()`.
4915
4906
  * - Otherwise, it's `additionalOptions`, so we calculate itsrelative index and call `onMenuChosen()` directly
4916
4907
  */
4917
- onChange: (e: Event) => void;
4908
+ private onChange;
4918
4909
  /**
4919
4910
  * render native select element
4920
4911
  * @param {string} labelledby - the label id the describes the dropdown (for screen reader)
4921
4912
  * @returns {React$Element} - component element
4922
4913
  * @memberof Menu
4923
4914
  */
4924
- renderNativeSelect(labelledby: string): VNode<any>;
4915
+ private renderNativeSelect;
4925
4916
  /**
4926
4917
  * if mobile device detected, renders the native select element.
4927
4918
  * otherwise, render the styled menu
@@ -4962,7 +4953,9 @@ declare interface NetworkConfig {
4962
4953
  declare type OptionType = {
4963
4954
  value: any;
4964
4955
  label: string;
4956
+ ariaLabel?: string;
4965
4957
  active: boolean;
4958
+ disabled?: boolean;
4966
4959
  };
4967
4960
 
4968
4961
  /**
@@ -6029,7 +6022,8 @@ declare namespace Reducers {
6029
6022
  shell,
6030
6023
  volume,
6031
6024
  overlay,
6032
- bottomBar
6025
+ bottomBar,
6026
+ audioDescription
6033
6027
  }
6034
6028
  }
6035
6029
  export { Reducers }
@@ -6270,6 +6264,7 @@ export declare interface RootState {
6270
6264
  playlist: PlaylistState;
6271
6265
  overlay: OverlayState;
6272
6266
  bottomBar: BottomBarState;
6267
+ audioDescription: AudioDescriptionState;
6273
6268
  }
6274
6269
 
6275
6270
  /**
@@ -6735,7 +6730,6 @@ declare interface SettingsState {
6735
6730
  quality: number;
6736
6731
  speed: number;
6737
6732
  audio?: string;
6738
- advancedAudioDesc: boolean;
6739
6733
  }
6740
6734
 
6741
6735
  /**
@@ -7589,6 +7583,16 @@ declare const types_12: {
7589
7583
  UPDATE_CONTROLS_TO_MOVE: string;
7590
7584
  };
7591
7585
 
7586
+ declare const types_13: {
7587
+ UPDATE_AUDIO_DESCRIPTION_LANGUAGES: string;
7588
+ UPDATE_EXTENDED_AUDIO_DESCRIPTION_LANGUAGES: string;
7589
+ UPDATE_AUDIO_DESCRIPTION_ENABLED: string;
7590
+ UPDATE_AUDIO_DESCRIPTION_TYPE: string;
7591
+ UPDATE_SELECTION_BY_LANGUAGE: string;
7592
+ RESET_SELECTION_BY_LANGUAGE: string;
7593
+ UPDATE_DEFAULT_VALUE_SET: string;
7594
+ };
7595
+
7592
7596
  declare const types_2: {
7593
7597
  UPDATE_CAPTIONS_STYLE: string;
7594
7598
  };
@@ -7846,14 +7850,17 @@ export declare interface UIOptionsObject {
7846
7850
  debugActions?: boolean;
7847
7851
  forceTouchUI?: boolean;
7848
7852
  showCCButton?: boolean;
7853
+ showAudioDescriptionButton?: boolean;
7849
7854
  openMenuFromCCButton?: boolean;
7855
+ openMenuFromAudioDescriptionButton?: boolean;
7856
+ showAudioButton?: boolean;
7850
7857
  settings?: {
7851
7858
  showAudioMenu?: boolean;
7852
7859
  showCaptionsMenu?: boolean;
7853
7860
  showQualityMenu?: boolean;
7854
7861
  showSpeedMenu?: boolean;
7855
- showAdvancedAudioDescToggle?: boolean;
7856
7862
  showAdvancedCaptionsMenu?: boolean;
7863
+ showAudioDescriptionMenu?: boolean;
7857
7864
  };
7858
7865
  hoverTimeout?: number;
7859
7866
  logger?: LoggerType;