@acorex/components 17.0.6 → 17.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. package/audio-wave/README.md +3 -0
  2. package/audio-wave/index.d.ts +3 -0
  3. package/audio-wave/lib/audio-wave.component.d.ts +51 -0
  4. package/audio-wave/lib/audio-wave.module.d.ts +10 -0
  5. package/audio-wave/lib/interfaces/audio-wave.interface.d.ts +15 -0
  6. package/chat/index.d.ts +1 -2
  7. package/chat/lib/chat-message/chat-message.component.d.ts +1 -1
  8. package/chat/lib/chat-messages/chat-message-text.component.d.ts +1 -1
  9. package/chat/lib/chat-messages/chat-messages-voice/chat-message-voice.component.d.ts +16 -0
  10. package/chat/lib/chat-view/chat-view.component.d.ts +2 -2
  11. package/chat/lib/chat.module.d.ts +13 -10
  12. package/chat/lib/chat.types.d.ts +6 -6
  13. package/common/lib/classes/datasource.class.d.ts +1 -1
  14. package/data-pager/lib/data-pager.component.d.ts +1 -0
  15. package/data-table/lib/data-table/data-table.component.d.ts +24 -13
  16. package/esm2022/audio-wave/acorex-components-audio-wave.mjs +5 -0
  17. package/esm2022/audio-wave/index.mjs +4 -0
  18. package/esm2022/audio-wave/lib/audio-wave.component.mjs +199 -0
  19. package/esm2022/audio-wave/lib/audio-wave.module.mjs +20 -0
  20. package/esm2022/audio-wave/lib/interfaces/audio-wave.interface.mjs +2 -0
  21. package/esm2022/chat/index.mjs +2 -3
  22. package/esm2022/chat/lib/chat-message/chat-message.component.mjs +3 -3
  23. package/esm2022/chat/lib/chat-messages/chat-message-text.component.mjs +2 -2
  24. package/esm2022/chat/lib/chat-messages/chat-messages-voice/chat-message-voice.component.mjs +49 -0
  25. package/esm2022/chat/lib/chat-view/chat-view.component.mjs +2 -2
  26. package/esm2022/chat/lib/chat.module.mjs +18 -8
  27. package/esm2022/chat/lib/chat.types.mjs +1 -1
  28. package/esm2022/common/lib/classes/datasource.class.mjs +2 -1
  29. package/esm2022/data-pager/lib/data-pager.component.mjs +19 -14
  30. package/esm2022/data-table/lib/data-table/data-table.component.mjs +88 -44
  31. package/esm2022/side-menu/lib/side-menu-item/side-menu-item.compoent.mjs +8 -8
  32. package/fesm2022/acorex-components-audio-wave.mjs +223 -0
  33. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -0
  34. package/fesm2022/acorex-components-chat.mjs +65 -34
  35. package/fesm2022/acorex-components-chat.mjs.map +1 -1
  36. package/fesm2022/acorex-components-common.mjs +1 -0
  37. package/fesm2022/acorex-components-common.mjs.map +1 -1
  38. package/fesm2022/acorex-components-data-pager.mjs +18 -13
  39. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  40. package/fesm2022/acorex-components-data-table.mjs +91 -48
  41. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  42. package/fesm2022/acorex-components-side-menu.mjs +7 -7
  43. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  44. package/package.json +7 -1
  45. package/side-menu/lib/side-menu-item/side-menu-item.compoent.d.ts +3 -4
  46. package/chat/lib/chat-messages/chat-message-audio.component.d.ts +0 -7
  47. package/chat/lib/chat-voice/chat-voice.component.d.ts +0 -6
  48. package/esm2022/chat/lib/chat-messages/chat-message-audio.component.mjs +0 -17
  49. package/esm2022/chat/lib/chat-voice/chat-voice.component.mjs +0 -12
@@ -0,0 +1,3 @@
1
+ # @acorex/components/audio-wave
2
+
3
+ Secondary entry point of `@acorex/components`. It can be used by importing from `@acorex/components/audio-wave`.
@@ -0,0 +1,3 @@
1
+ export * from './lib/audio-wave.component';
2
+ export * from './lib/audio-wave.module';
3
+ export * from './lib/interfaces/audio-wave.interface';
@@ -0,0 +1,51 @@
1
+ import { ElementRef, InputSignal } from '@angular/core';
2
+ import WaveSurfer from 'wavesurfer.js';
3
+ import { AXAudioWaveChangeEvent, AXWaveConfig } from './interfaces/audio-wave.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AXAudioWaveComponent {
6
+ protected div: ElementRef<HTMLDivElement>;
7
+ config: InputSignal<AXWaveConfig>;
8
+ onStatusChanged: import("@angular/core").OutputEmitterRef<AXAudioWaveChangeEvent>;
9
+ protected audio: WaveSurfer;
10
+ private ngZone;
11
+ constructor();
12
+ play(): Promise<any>;
13
+ pause(): void;
14
+ getDuration(): number;
15
+ getMediaElement(): HTMLMediaElement;
16
+ protected bindEvents(): void;
17
+ /** When audio starts loading */
18
+ protected handleLoad(): void;
19
+ /** During audio loading */
20
+ protected handleLoading(): void;
21
+ /** When the audio has been decoded */
22
+ protected handleDecode(): void;
23
+ /** When the audio is both decoded and can play */
24
+ protected handleReady(): void;
25
+ /** When all audio channel chunks of the waveform have drawn */
26
+ protected handleRedRawComplete(): void;
27
+ /** When the audio starts playing */
28
+ protected handlePlay(): void;
29
+ /** When the audio pauses */
30
+ protected handlePause(): void;
31
+ /** When the audio finishes playing */
32
+ protected handleFinish(): void;
33
+ /** On audio position change, fires continuously during playback */
34
+ protected handleTimeUpdate(): void;
35
+ /** When the user seeks to a new position */
36
+ protected handleSeeking(): void;
37
+ /** When the user interacts with the waveform (i.g. clicks or drags on it) */
38
+ protected handleInteraction(): void;
39
+ /** When the user clicks on the waveform */
40
+ protected handleClick(): void;
41
+ /** When the user drags the cursor */
42
+ protected handleDrag(): void;
43
+ /** When the waveform is scrolled (panned) */
44
+ protected handleScroll(): void;
45
+ /** When the zoom level changes */
46
+ protected handleZoom(): void;
47
+ /** Just before the waveform is destroyed so you can clean up your events */
48
+ protected handleDestroy(): void;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXAudioWaveComponent, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXAudioWaveComponent, "ax-audio-wave", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; }, { "onStatusChanged": "onStatusChanged"; }, never, never, false, never>;
51
+ }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./audio-wave.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "@acorex/components/button";
5
+ import * as i4 from "@acorex/components/decorators";
6
+ export declare class AXAudioWaveModule {
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXAudioWaveModule, never>;
8
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXAudioWaveModule, [typeof i1.AXAudioWaveComponent], [typeof i2.CommonModule, typeof i3.AXButtonModule, typeof i4.AXDecoratorModule], [typeof i1.AXAudioWaveComponent]>;
9
+ static ɵinj: i0.ɵɵInjectorDeclaration<AXAudioWaveModule>;
10
+ }
@@ -0,0 +1,15 @@
1
+ import { AXEvent } from '@acorex/components/common';
2
+ export interface AXWaveConfig {
3
+ container?: HTMLElement;
4
+ waveColor?: string;
5
+ progressColor?: string;
6
+ url: string;
7
+ barWidth?: number;
8
+ barGap?: number;
9
+ barRadius?: number;
10
+ height?: number;
11
+ }
12
+ export interface AXAudioWaveChangeEvent extends AXEvent {
13
+ status: 'load' | 'loading' | 'decode' | 'ready' | 'redrawcomplete' | 'play' | 'pause' | 'finish' | 'timeupdate' | 'seeking' | 'interaction' | 'click' | 'drag' | 'scroll' | 'zoom' | 'destroy';
14
+ data: null | any;
15
+ }
package/chat/index.d.ts CHANGED
@@ -2,12 +2,11 @@ export * from './lib/chat-input/chat-input.component';
2
2
  export * from './lib/chat-input/chat-input.interface';
3
3
  export * from './lib/chat-message/chat-message.component';
4
4
  export * from './lib/chat-view/chat-view.component';
5
- export * from './lib/chat-voice/chat-voice.component';
6
5
  export * from './lib/chat.module';
7
6
  export * from './lib/chat.types';
8
7
  export * from './lib/classes/events.interface';
9
8
  export * from './lib/services/chat-message-type-registry.service';
10
9
  export * from './lib/services/chat.service';
11
10
  export * from './lib/services/recording.service';
12
- export * from './lib/chat-messages/chat-message-audio.component';
13
11
  export * from './lib/chat-messages/chat-message-text.component';
12
+ export * from './lib/chat-messages/chat-messages-voice/chat-message-voice.component';
@@ -3,7 +3,7 @@ import { AXChatMessage } from '../chat.types';
3
3
  import { AXChatMessageTypeRegistryService } from '../services/chat-message-type-registry.service';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class AXChatMessageComponent extends MXBaseComponent {
6
- chatMessage: import("@angular/core").InputSignal<AXChatMessage>;
6
+ chatMessage: import("@angular/core").InputSignal<AXChatMessage<any>>;
7
7
  protected get isOwn(): boolean;
8
8
  protected registryService: AXChatMessageTypeRegistryService;
9
9
  get __hostClass(): string;
@@ -1,6 +1,6 @@
1
1
  import { AXChatMessageBaseComponent } from '../chat.types';
2
2
  import * as i0 from "@angular/core";
3
- export declare class AXChatTextMessageComponent extends AXChatMessageBaseComponent {
3
+ export declare class AXChatTextMessageComponent extends AXChatMessageBaseComponent<string> {
4
4
  protected _text: import("@angular/core").WritableSignal<string>;
5
5
  ngOnInit(): void;
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<AXChatTextMessageComponent, never>;
@@ -0,0 +1,16 @@
1
+ import { AXAudioWaveChangeEvent, AXAudioWaveComponent, AXWaveConfig } from '@acorex/components/audio-wave';
2
+ import { WritableSignal } from '@angular/core';
3
+ import { AXChatMessageBaseComponent } from '../../chat.types';
4
+ import * as i0 from "@angular/core";
5
+ export declare class AXChatAudioMessageComponent extends AXChatMessageBaseComponent<string> {
6
+ audio: AXAudioWaveComponent;
7
+ config: AXWaveConfig;
8
+ audioState: WritableSignal<'playing' | 'paused' | 'loading' | 'ready'>;
9
+ audioProgress: WritableSignal<number>;
10
+ constructor();
11
+ handlePauseClick(): void;
12
+ handlePlayClick(): void;
13
+ handleOnStatusChanged(event: AXAudioWaveChangeEvent): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXChatAudioMessageComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXChatAudioMessageComponent, "ax-chat-message-audio", never, { "message": { "alias": "message"; "required": false; }; }, {}, never, never, false, never>;
16
+ }
@@ -3,8 +3,8 @@ import { WritableSignal } from '@angular/core';
3
3
  import { AXChatMessage } from '../chat.types';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class AXChatViewComponent extends MXBaseComponent {
6
- set chats(items: AXChatMessage[]);
7
- protected _chats: WritableSignal<AXChatMessage[]>;
6
+ set chats(items: AXChatMessage<any>[]);
7
+ protected _chats: WritableSignal<AXChatMessage<any>[]>;
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<AXChatViewComponent, never>;
9
9
  static ɵcmp: i0.ɵɵComponentDeclaration<AXChatViewComponent, "ax-chat-view", never, { "chats": { "alias": "chats"; "required": false; }; }, {}, never, never, false, never>;
10
10
  }
@@ -4,15 +4,18 @@ import * as i0 from "@angular/core";
4
4
  import * as i1 from "./chat-view/chat-view.component";
5
5
  import * as i2 from "./chat-input/chat-input.component";
6
6
  import * as i3 from "./chat-message/chat-message.component";
7
- import * as i4 from "./chat-voice/chat-voice.component";
8
- import * as i5 from "@angular/common";
9
- import * as i6 from "@angular/forms";
10
- import * as i7 from "@acorex/components/common";
11
- import * as i8 from "@acorex/components/button";
12
- import * as i9 from "@acorex/components/decorators";
13
- import * as i10 from "@acorex/core/translation";
14
- import * as i11 from "@acorex/components/dropdown";
15
- import * as i12 from "@acorex/core/format";
7
+ import * as i4 from "./chat-messages/chat-message-text.component";
8
+ import * as i5 from "./chat-messages/chat-messages-voice/chat-message-voice.component";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@angular/forms";
11
+ import * as i8 from "@acorex/components/common";
12
+ import * as i9 from "@acorex/components/button";
13
+ import * as i10 from "@acorex/components/decorators";
14
+ import * as i11 from "@acorex/core/translation";
15
+ import * as i12 from "@acorex/components/dropdown";
16
+ import * as i13 from "@acorex/core/format";
17
+ import * as i14 from "@acorex/components/audio-wave";
18
+ import * as i15 from "@acorex/components/circular-progress";
16
19
  export interface AXChatModuleConfig {
17
20
  types: AXChatMessageType[];
18
21
  }
@@ -24,6 +27,6 @@ export declare class AXChatModule {
24
27
  */
25
28
  constructor(instances: any[]);
26
29
  static ɵfac: i0.ɵɵFactoryDeclaration<AXChatModule, [{ optional: true; }]>;
27
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXChatModule, [typeof i1.AXChatViewComponent, typeof i2.AXChatInputComponent, typeof i3.AXChatMessageComponent, typeof i4.AXChatVoiceComponent], [typeof i5.CommonModule, typeof i6.FormsModule, typeof i5.AsyncPipe, typeof i7.AXRippleDirective, typeof i8.AXButtonModule, typeof i9.AXDecoratorModule, typeof i10.AXTranslationModule, typeof i11.AXDropdownModule, typeof i12.AXFormatModule], [typeof i1.AXChatViewComponent, typeof i2.AXChatInputComponent, typeof i3.AXChatMessageComponent, typeof i4.AXChatVoiceComponent]>;
30
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXChatModule, [typeof i1.AXChatViewComponent, typeof i2.AXChatInputComponent, typeof i3.AXChatMessageComponent, typeof i4.AXChatTextMessageComponent, typeof i5.AXChatAudioMessageComponent], [typeof i6.CommonModule, typeof i7.FormsModule, typeof i6.AsyncPipe, typeof i8.AXRippleDirective, typeof i9.AXButtonModule, typeof i10.AXDecoratorModule, typeof i11.AXTranslationModule, typeof i12.AXDropdownModule, typeof i13.AXFormatModule, typeof i14.AXAudioWaveModule, typeof i15.AXCircularProgressModule], [typeof i1.AXChatViewComponent, typeof i2.AXChatInputComponent, typeof i3.AXChatMessageComponent, typeof i4.AXChatTextMessageComponent, typeof i5.AXChatAudioMessageComponent]>;
28
31
  static ɵinj: i0.ɵɵInjectorDeclaration<AXChatModule>;
29
32
  }
@@ -4,18 +4,18 @@ export interface AXChatMessageType {
4
4
  name: string;
5
5
  component: Type<any>;
6
6
  }
7
- export interface AXChatMessage {
7
+ export interface AXChatMessage<T> {
8
8
  id: string;
9
9
  type: string;
10
10
  sendTime: Date;
11
11
  deliverTime?: Date;
12
12
  readTime?: Date;
13
13
  replyTo?: string;
14
- content: any;
14
+ content: T;
15
15
  fromId?: string;
16
16
  }
17
- export declare class AXChatMessageBaseComponent {
18
- message: AXChatMessage;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<AXChatMessageBaseComponent, never>;
20
- static ɵprov: i0.ɵɵInjectableDeclaration<AXChatMessageBaseComponent>;
17
+ export declare class AXChatMessageBaseComponent<T> {
18
+ message: AXChatMessage<T>;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXChatMessageBaseComponent<any>, never>;
20
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXChatMessageBaseComponent<any>>;
21
21
  }
@@ -68,7 +68,7 @@ export declare class AXDataSource<T = unknown> {
68
68
  filter(value: AXDataSourceFilterOption): void;
69
69
  sort(...value: AXDataSourceSortOption[]): void;
70
70
  clearFilter(): void;
71
- private reset;
71
+ reset(): void;
72
72
  refresh(): void;
73
73
  find(key: unknown): T | Promise<T>;
74
74
  }
@@ -22,6 +22,7 @@ export declare class AXDataPagerComponent extends MXValueComponent<number> {
22
22
  ngAfterViewInit(): void;
23
23
  protected internalValueChanged(value: any): void;
24
24
  protected internalGetValue(value: any): number;
25
+ private previousDisplayInfo;
25
26
  get displayInfo(): AXDataPagerData;
26
27
  private _emitChangedEvent;
27
28
  goNextPage(): void;
@@ -6,15 +6,24 @@ import { AXDataTableColumnComponent } from '../columns/data-table-column';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class AXDataTableComponent extends AXBaseDataTable implements OnInit, AfterViewInit {
8
8
  private _unsubscriber;
9
- onColumnsOrderChanged: EventEmitter<AXColumnsOrderChangedEvent>;
9
+ private _zone;
10
10
  protected displayedRows: WritableSignal<any[]>;
11
11
  protected page: WritableSignal<number>;
12
12
  protected pageSize: WritableSignal<number>;
13
13
  protected columnsList: WritableSignal<any[]>;
14
- protected columns: QueryList<AXDataTableColumnComponent>;
15
- ngAfterViewInit(): void;
16
- protected drop(event: CdkDragDrop<any, any, any>): void;
17
- ngOnInit(): void;
14
+ protected isLoading: WritableSignal<boolean>;
15
+ protected resizeColumnProp: {
16
+ startX: number;
17
+ startWidth: number;
18
+ columnIndex: number;
19
+ newColumnWidth: number;
20
+ thElement: any;
21
+ };
22
+ protected hasItems: boolean;
23
+ protected totalRows: number;
24
+ protected currentPage: number;
25
+ protected totalPages: number;
26
+ protected startRowIndex: number;
18
27
  rowTemplate?: TemplateRef<unknown>;
19
28
  emptyTemplate?: TemplateRef<unknown>;
20
29
  showHeader: boolean;
@@ -31,17 +40,15 @@ export declare class AXDataTableComponent extends AXBaseDataTable implements OnI
31
40
  private _focusedRow;
32
41
  get focusedRow(): unknown;
33
42
  set focusedRow(v: unknown);
34
- protected isLoading: WritableSignal<boolean>;
35
- protected hasItems: boolean;
36
- protected totalRows: number;
37
- protected currentPage: number;
38
- protected totalPages: number;
39
- protected startRowIndex: number;
40
- private lastIndex;
41
43
  focusedRowChange: EventEmitter<unknown>;
42
44
  onRowClick: EventEmitter<AXDataTableRowClick>;
43
45
  onRowDbClick: EventEmitter<AXDataTableRowDbClick>;
46
+ onColumnsOrderChanged: EventEmitter<AXColumnsOrderChangedEvent>;
44
47
  private clickSubject;
48
+ protected columns: QueryList<AXDataTableColumnComponent>;
49
+ ngOnInit(): void;
50
+ ngAfterViewInit(): void;
51
+ protected drop(event: CdkDragDrop<any, any, any>): void;
45
52
  protected handleRowClick(event: MouseEvent, item: unknown): void;
46
53
  private handleRowSingleClick;
47
54
  protected onPageChanged(event: AXDataPagerChangedEvent): void;
@@ -49,7 +56,11 @@ export declare class AXDataTableComponent extends AXBaseDataTable implements OnI
49
56
  handleColumnClick(e: MouseEvent, column: AXDataTableColumnComponent): void;
50
57
  protected getSort(column: AXDataTableColumnComponent): string | undefined;
51
58
  refresh(): void;
59
+ protected onResizeColumnStart(event: MouseEvent, columnIndex: number): void;
60
+ private onResizeColumnMove;
61
+ private onResizeColumnEnd;
62
+ private resetResizingProcess;
52
63
  private calculateStickyColumnsPositions;
53
64
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDataTableComponent, never>;
54
- static ɵcmp: i0.ɵɵComponentDeclaration<AXDataTableComponent, "ax-data-table", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "rowTemplate": { "alias": "rowTemplate"; "required": false; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "fixedHeader": { "alias": "fixedHeader"; "required": false; }; "itemHeight": { "alias": "itemHeight"; "required": false; }; "allowReordering": { "alias": "allowReordering"; "required": false; }; "paging": { "alias": "paging"; "required": false; }; "fetchDataMode": { "alias": "fetchDataMode"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "focusedRow": { "alias": "focusedRow"; "required": false; }; }, { "onColumnsOrderChanged": "onColumnsOrderChanged"; "focusedRowChange": "focusedRowChange"; "onRowClick": "onRowClick"; "onRowDbClick": "onRowDbClick"; }, ["columns"], ["ax-header", "ax-footer"], false, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXDataTableComponent, "ax-data-table", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "rowTemplate": { "alias": "rowTemplate"; "required": false; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; }; "showHeader": { "alias": "showHeader"; "required": false; }; "fixedHeader": { "alias": "fixedHeader"; "required": false; }; "itemHeight": { "alias": "itemHeight"; "required": false; }; "allowReordering": { "alias": "allowReordering"; "required": false; }; "paging": { "alias": "paging"; "required": false; }; "fetchDataMode": { "alias": "fetchDataMode"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "focusedRow": { "alias": "focusedRow"; "required": false; }; }, { "focusedRowChange": "focusedRowChange"; "onRowClick": "onRowClick"; "onRowDbClick": "onRowDbClick"; "onColumnsOrderChanged": "onColumnsOrderChanged"; }, ["columns"], ["ax-header", "ax-footer"], false, never>;
55
66
  }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMtYXVkaW8td2F2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hdWRpby13YXZlL3NyYy9hY29yZXgtY29tcG9uZW50cy1hdWRpby13YXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,4 @@
1
+ export * from './lib/audio-wave.component';
2
+ export * from './lib/audio-wave.module';
3
+ export * from './lib/interfaces/audio-wave.interface';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYXVkaW8td2F2ZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpby13YXZlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdWRpby13YXZlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL2F1ZGlvLXdhdmUuaW50ZXJmYWNlJztcbiJdfQ==
@@ -0,0 +1,199 @@
1
+ import { Component, ElementRef, NgZone, ViewChild, ViewEncapsulation, afterNextRender, inject, input, output, } from '@angular/core';
2
+ import WaveSurfer from 'wavesurfer.js';
3
+ import * as i0 from "@angular/core";
4
+ export class AXAudioWaveComponent {
5
+ constructor() {
6
+ this.config = input();
7
+ this.onStatusChanged = output();
8
+ this.ngZone = inject(NgZone);
9
+ afterNextRender(() => {
10
+ const primary500 = getComputedStyle(document.body).getPropertyValue('--ax-color-primary-500');
11
+ const primary700 = getComputedStyle(document.body).getPropertyValue('--ax-color-primary-700');
12
+ this.audio = WaveSurfer.create({
13
+ container: this.div.nativeElement,
14
+ waveColor: this.config()?.waveColor || `rgba(${primary500})`,
15
+ progressColor: this.config()?.progressColor || `rgba(${primary700})`,
16
+ url: this.config()?.url || '',
17
+ barWidth: this.config()?.barWidth || 2,
18
+ barRadius: this.config()?.barRadius || 2,
19
+ barGap: this.config()?.barGap || 1,
20
+ height: this.config()?.height || 18,
21
+ });
22
+ this.audio.load(this.config()?.url);
23
+ this.bindEvents();
24
+ });
25
+ }
26
+ play() {
27
+ return this.audio.play();
28
+ }
29
+ pause() {
30
+ this.audio.pause();
31
+ }
32
+ getDuration() {
33
+ return this.audio?.getDuration();
34
+ }
35
+ getMediaElement() {
36
+ return this.audio?.getMediaElement();
37
+ }
38
+ bindEvents() {
39
+ this.handleLoad();
40
+ this.handleLoading();
41
+ this.handleDecode();
42
+ this.handleReady();
43
+ this.handleRedRawComplete();
44
+ this.handlePlay();
45
+ this.handlePause();
46
+ this.handleFinish();
47
+ this.handleTimeUpdate();
48
+ this.handleSeeking();
49
+ this.handleInteraction();
50
+ this.handleClick();
51
+ this.handleDrag();
52
+ this.handleScroll();
53
+ this.handleZoom();
54
+ this.handleDestroy();
55
+ }
56
+ /** When audio starts loading */
57
+ handleLoad() {
58
+ this.audio.on('load', (url) => {
59
+ this.ngZone.run(() => {
60
+ this.onStatusChanged.emit({ component: this, data: { url }, status: 'load', isUserInteraction: false });
61
+ });
62
+ });
63
+ }
64
+ /** During audio loading */
65
+ handleLoading() {
66
+ this.audio.on('loading', (percent) => {
67
+ this.ngZone.run(() => {
68
+ this.onStatusChanged.emit({ component: this, data: { percent }, status: 'loading', isUserInteraction: false });
69
+ });
70
+ });
71
+ }
72
+ /** When the audio has been decoded */
73
+ handleDecode() {
74
+ this.audio.on('decode', (duration) => {
75
+ this.ngZone.run(() => {
76
+ this.onStatusChanged.emit({ component: this, data: { duration }, status: 'decode', isUserInteraction: false });
77
+ });
78
+ });
79
+ }
80
+ /** When the audio is both decoded and can play */
81
+ handleReady() {
82
+ this.audio.on('ready', (duration) => {
83
+ this.ngZone.run(() => {
84
+ this.onStatusChanged.emit({ component: this, data: { duration }, status: 'ready', isUserInteraction: false });
85
+ });
86
+ });
87
+ }
88
+ /** When all audio channel chunks of the waveform have drawn */
89
+ handleRedRawComplete() {
90
+ this.audio.on('redrawcomplete', () => {
91
+ this.ngZone.run(() => {
92
+ this.onStatusChanged.emit({ component: this, data: null, status: 'redrawcomplete', isUserInteraction: false });
93
+ });
94
+ });
95
+ }
96
+ /** When the audio starts playing */
97
+ handlePlay() {
98
+ this.audio.on('play', () => {
99
+ this.ngZone.run(() => {
100
+ this.onStatusChanged.emit({ component: this, data: null, status: 'play', isUserInteraction: false });
101
+ });
102
+ });
103
+ }
104
+ /** When the audio pauses */
105
+ handlePause() {
106
+ this.audio.on('pause', () => {
107
+ this.ngZone.run(() => {
108
+ this.onStatusChanged.emit({ component: this, data: null, status: 'pause', isUserInteraction: false });
109
+ });
110
+ });
111
+ }
112
+ /** When the audio finishes playing */
113
+ handleFinish() {
114
+ this.audio.on('finish', () => {
115
+ this.ngZone.run(() => {
116
+ this.onStatusChanged.emit({ component: this, data: null, status: 'finish', isUserInteraction: false });
117
+ });
118
+ });
119
+ }
120
+ /** On audio position change, fires continuously during playback */
121
+ handleTimeUpdate() {
122
+ this.audio.on('timeupdate', (currentTime) => {
123
+ this.ngZone.run(() => {
124
+ this.onStatusChanged.emit({ component: this, data: { currentTime }, status: 'timeupdate', isUserInteraction: false });
125
+ });
126
+ });
127
+ }
128
+ /** When the user seeks to a new position */
129
+ handleSeeking() {
130
+ this.audio.on('seeking', (currentTime) => {
131
+ this.ngZone.run(() => {
132
+ this.onStatusChanged.emit({ component: this, data: { currentTime }, status: 'seeking', isUserInteraction: false });
133
+ });
134
+ });
135
+ }
136
+ /** When the user interacts with the waveform (i.g. clicks or drags on it) */
137
+ handleInteraction() {
138
+ this.audio.on('interaction', (newTime) => {
139
+ this.ngZone.run(() => {
140
+ this.onStatusChanged.emit({ component: this, data: { newTime }, status: 'interaction', isUserInteraction: false });
141
+ });
142
+ });
143
+ }
144
+ /** When the user clicks on the waveform */
145
+ handleClick() {
146
+ this.audio.on('click', (relativeX) => {
147
+ this.ngZone.run(() => {
148
+ this.onStatusChanged.emit({ component: this, data: { relativeX }, status: 'click', isUserInteraction: false });
149
+ });
150
+ });
151
+ }
152
+ /** When the user drags the cursor */
153
+ handleDrag() {
154
+ this.audio.on('drag', (relativeX) => {
155
+ this.ngZone.run(() => {
156
+ this.onStatusChanged.emit({ component: this, data: { relativeX }, status: 'drag', isUserInteraction: false });
157
+ });
158
+ });
159
+ }
160
+ /** When the waveform is scrolled (panned) */
161
+ handleScroll() {
162
+ this.audio.on('scroll', (visibleStartTime, visibleEndTime) => {
163
+ this.ngZone.run(() => {
164
+ this.onStatusChanged.emit({
165
+ component: this,
166
+ data: { visibleStartTime, visibleEndTime },
167
+ status: 'scroll',
168
+ isUserInteraction: false,
169
+ });
170
+ });
171
+ });
172
+ }
173
+ /** When the zoom level changes */
174
+ handleZoom() {
175
+ this.audio.on('zoom', (minPxPerSec) => {
176
+ this.ngZone.run(() => {
177
+ this.onStatusChanged.emit({ component: this, data: { minPxPerSec }, status: 'zoom', isUserInteraction: false });
178
+ });
179
+ });
180
+ }
181
+ /** Just before the waveform is destroyed so you can clean up your events */
182
+ handleDestroy() {
183
+ this.audio.on('destroy', () => {
184
+ this.ngZone.run(() => {
185
+ this.onStatusChanged.emit({ component: this, data: null, status: 'destroy', isUserInteraction: false });
186
+ });
187
+ });
188
+ }
189
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXAudioWaveComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
190
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.2", type: AXAudioWaveComponent, selector: "ax-audio-wave", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onStatusChanged: "onStatusChanged" }, viewQueries: [{ propertyName: "div", first: true, predicate: ["d"], descendants: true }], ngImport: i0, template: "<div class=\"ax-audio-wave\" #d></div>", styles: ["ax-audio-wave{display:block;width:100%;flex:1}\n"], encapsulation: i0.ViewEncapsulation.None }); }
191
+ }
192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXAudioWaveComponent, decorators: [{
193
+ type: Component,
194
+ args: [{ selector: 'ax-audio-wave', encapsulation: ViewEncapsulation.None, template: "<div class=\"ax-audio-wave\" #d></div>", styles: ["ax-audio-wave{display:block;width:100%;flex:1}\n"] }]
195
+ }], ctorParameters: () => [], propDecorators: { div: [{
196
+ type: ViewChild,
197
+ args: ['d']
198
+ }] } });
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8td2F2ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYXVkaW8td2F2ZS9zcmMvbGliL2F1ZGlvLXdhdmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2F1ZGlvLXdhdmUvc3JjL2xpYi9hdWRpby13YXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFVBQVUsTUFBTSxlQUFlLENBQUM7O0FBU3ZDLE1BQU0sT0FBTyxvQkFBb0I7SUFTL0I7UUFQQSxXQUFNLEdBQThCLEtBQUssRUFBZ0IsQ0FBQztRQUUxRCxvQkFBZSxHQUFHLE1BQU0sRUFBMEIsQ0FBQztRQUczQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRzlCLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDOUYsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFFOUYsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO2dCQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO2dCQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsSUFBSSxRQUFRLFVBQVUsR0FB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LENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFHLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWxOVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix1VUNyQmpDLHdDQUFvQzs7MkZEcUJ2QixvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJO3dEQUdYLEdBQUc7c0JBQTVCLFNBQVM7dUJBQUMsR0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXRTaWduYWwsXG4gIE5nWm9uZSxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IFdhdmVTdXJmZXIgZnJvbSAnd2F2ZXN1cmZlci5qcyc7XG5pbXBvcnQgeyBBWEF1ZGlvV2F2ZUNoYW5nZUV2ZW50LCBBWFdhdmVDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvYXVkaW8td2F2ZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1hdWRpby13YXZlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGlvLXdhdmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdWRpby13YXZlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFYQXVkaW9XYXZlQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnZCcpIHByb3RlY3RlZCBkaXY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBjb25maWc6IElucHV0U2lnbmFsPEFYV2F2ZUNvbmZpZz4gPSBpbnB1dDxBWFdhdmVDb25maWc+KCk7XG5cbiAgb25TdGF0dXNDaGFuZ2VkID0gb3V0cHV0PEFYQXVkaW9XYXZlQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGF1ZGlvOiBXYXZlU3VyZmVyO1xuICBwcml2YXRlIG5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBjb25zdCBwcmltYXJ5NTAwID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LWNvbG9yLXByaW1hcnktNTAwJyk7XG4gICAgICBjb25zdCBwcmltYXJ5NzAwID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LWNvbG9yLXByaW1hcnktNzAwJyk7XG5cbiAgICAgIHRoaXMuYXVkaW8gPSBXYXZlU3VyZmVyLmNyZWF0ZSh7XG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5kaXYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgd2F2ZUNvbG9yOiB0aGlzLmNvbmZpZygpPy53YXZlQ29sb3IgfHwgYHJnYmEoJHtwcmltYXJ5NTAwfSlgLFxuICAgICAgICBwcm9ncmVzc0NvbG9yOiB0aGlzLmNvbmZpZygpPy5wcm9ncmVzc0NvbG9yIHx8IGByZ2JhKCR7cHJpbWFyeTcwMH0pYCxcbiAgICAgICAgdXJsOiB0aGlzLmNvbmZpZygpPy51cmwgfHwgJycsXG4gICAgICAgIGJhcldpZHRoOiB0aGlzLmNvbmZpZygpPy5iYXJXaWR0aCB8fCAyLFxuICAgICAgICBiYXJSYWRpdXM6IHRoaXMuY29uZmlnKCk/LmJhclJhZGl1cyB8fCAyLFxuICAgICAgICBiYXJHYXA6IHRoaXMuY29uZmlnKCk/LmJhckdhcCB8fCAxLFxuICAgICAgICBoZWlnaHQ6IHRoaXMuY29uZmlnKCk/LmhlaWdodCB8fCAxOCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdWRpby5sb2FkKHRoaXMuY29uZmlnKCk/LnVybCk7XG4gICAgICB0aGlzLmJpbmRFdmVudHMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHBsYXkoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5hdWRpby5wbGF5KCk7XG4gIH1cblxuICBwYXVzZSgpOiB2b2lkIHtcbiAgICB0aGlzLmF1ZGlvLnBhdXNlKCk7XG4gIH1cblxuICBnZXREdXJhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5hdWRpbz8uZ2V0RHVyYXRpb24oKTtcbiAgfVxuXG4gIGdldE1lZGlhRWxlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5hdWRpbz8uZ2V0TWVkaWFFbGVtZW50KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmluZEV2ZW50cygpIHtcbiAgICB0aGlzLmhhbmRsZUxvYWQoKTtcbiAgICB0aGlzLmhhbmRsZUxvYWRpbmcoKTtcbiAgICB0aGlzLmhhbmRsZURlY29kZSgpO1xuICAgIHRoaXMuaGFuZGxlUmVhZHkoKTtcbiAgICB0aGlzLmhhbmRsZVJlZFJhd0NvbXBsZXRlKCk7XG4gICAgdGhpcy5oYW5kbGVQbGF5KCk7XG4gICAgdGhpcy5oYW5kbGVQYXVzZSgpO1xuICAgIHRoaXMuaGFuZGxlRmluaXNoKCk7XG4gICAgdGhpcy5oYW5kbGVUaW1lVXBkYXRlKCk7XG4gICAgdGhpcy5oYW5kbGVTZWVraW5nKCk7XG4gICAgdGhpcy5oYW5kbGVJbnRlcmFjdGlvbigpO1xuICAgIHRoaXMuaGFuZGxlQ2xpY2soKTtcbiAgICB0aGlzLmhhbmRsZURyYWcoKTtcbiAgICB0aGlzLmhhbmRsZVNjcm9sbCgpO1xuICAgIHRoaXMuaGFuZGxlWm9vbSgpO1xuICAgIHRoaXMuaGFuZGxlRGVzdHJveSgpO1xuICB9XG4gIC8qKiBXaGVuIGF1ZGlvIHN0YXJ0cyBsb2FkaW5nICovXG4gIHByb3RlY3RlZCBoYW5kbGVMb2FkKCkge1xuICAgIHRoaXMuYXVkaW8ub24oJ2xvYWQnLCAodXJsKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB7IHVybCB9LCBzdGF0dXM6ICdsb2FkJywgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogRHVyaW5nIGF1ZGlvIGxvYWRpbmcgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUxvYWRpbmcoKSB7XG4gICAgdGhpcy5hdWRpby5vbignbG9hZGluZycsIChwZXJjZW50KSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB7IHBlcmNlbnQgfSwgc3RhdHVzOiAnbG9hZGluZycsIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFdoZW4gdGhlIGF1ZGlvIGhhcyBiZWVuIGRlY29kZWQgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZURlY29kZSgpIHtcbiAgICB0aGlzLmF1ZGlvLm9uKCdkZWNvZGUnLCAoZHVyYXRpb24pID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IHsgZHVyYXRpb24gfSwgc3RhdHVzOiAnZGVjb2RlJywgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogV2hlbiB0aGUgYXVkaW8gaXMgYm90aCBkZWNvZGVkIGFuZCBjYW4gcGxheSAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUmVhZHkoKSB7XG4gICAgdGhpcy5hdWRpby5vbigncmVhZHknLCAoZHVyYXRpb24pID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IHsgZHVyYXRpb24gfSwgc3RhdHVzOiAncmVhZHknLCBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBXaGVuIGFsbCBhdWRpbyBjaGFubmVsIGNodW5rcyBvZiB0aGUgd2F2ZWZvcm0gaGF2ZSBkcmF3biAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlUmVkUmF3Q29tcGxldGUoKSB7XG4gICAgdGhpcy5hdWRpby5vbigncmVkcmF3Y29tcGxldGUnLCAoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiBudWxsLCBzdGF0dXM6ICdyZWRyYXdjb21wbGV0ZScsIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFdoZW4gdGhlIGF1ZGlvIHN0YXJ0cyBwbGF5aW5nICovXG4gIHByb3RlY3RlZCBoYW5kbGVQbGF5KCkge1xuICAgIHRoaXMuYXVkaW8ub24oJ3BsYXknLCAoKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiBudWxsLCBzdGF0dXM6ICdwbGF5JywgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogV2hlbiB0aGUgYXVkaW8gcGF1c2VzICovXG4gIHByb3RlY3RlZCBoYW5kbGVQYXVzZSgpIHtcbiAgICB0aGlzLmF1ZGlvLm9uKCdwYXVzZScsICgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IG51bGwsIHN0YXR1czogJ3BhdXNlJywgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogV2hlbiB0aGUgYXVkaW8gZmluaXNoZXMgcGxheWluZyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRmluaXNoKCkge1xuICAgIHRoaXMuYXVkaW8ub24oJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IG51bGwsIHN0YXR1czogJ2ZpbmlzaCcsIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIE9uIGF1ZGlvIHBvc2l0aW9uIGNoYW5nZSwgZmlyZXMgY29udGludW91c2x5IGR1cmluZyBwbGF5YmFjayAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlVGltZVVwZGF0ZSgpIHtcbiAgICB0aGlzLmF1ZGlvLm9uKCd0aW1ldXBkYXRlJywgKGN1cnJlbnRUaW1lKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB7IGN1cnJlbnRUaW1lIH0sIHN0YXR1czogJ3RpbWV1cGRhdGUnLCBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBXaGVuIHRoZSB1c2VyIHNlZWtzIHRvIGEgbmV3IHBvc2l0aW9uICovXG4gIHByb3RlY3RlZCBoYW5kbGVTZWVraW5nKCkge1xuICAgIHRoaXMuYXVkaW8ub24oJ3NlZWtpbmcnLCAoY3VycmVudFRpbWUpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IHsgY3VycmVudFRpbWUgfSwgc3RhdHVzOiAnc2Vla2luZycsIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFdoZW4gdGhlIHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlIHdhdmVmb3JtIChpLmcuIGNsaWNrcyBvciBkcmFncyBvbiBpdCkgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUludGVyYWN0aW9uKCkge1xuICAgIHRoaXMuYXVkaW8ub24oJ2ludGVyYWN0aW9uJywgKG5ld1RpbWUpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IHsgbmV3VGltZSB9LCBzdGF0dXM6ICdpbnRlcmFjdGlvbicsIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSB3YXZlZm9ybSAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ2xpY2soKSB7XG4gICAgdGhpcy5hdWRpby5vbignY2xpY2snLCAocmVsYXRpdmVYKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB7IHJlbGF0aXZlWCB9LCBzdGF0dXM6ICdjbGljaycsIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFdoZW4gdGhlIHVzZXIgZHJhZ3MgdGhlIGN1cnNvciAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRHJhZygpIHtcbiAgICB0aGlzLmF1ZGlvLm9uKCdkcmFnJywgKHJlbGF0aXZlWCkgPT4ge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblN0YXR1c0NoYW5nZWQuZW1pdCh7IGNvbXBvbmVudDogdGhpcywgZGF0YTogeyByZWxhdGl2ZVggfSwgc3RhdHVzOiAnZHJhZycsIGlzVXNlckludGVyYWN0aW9uOiBmYWxzZSB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFdoZW4gdGhlIHdhdmVmb3JtIGlzIHNjcm9sbGVkIChwYW5uZWQpICovXG4gIHByb3RlY3RlZCBoYW5kbGVTY3JvbGwoKSB7XG4gICAgdGhpcy5hdWRpby5vbignc2Nyb2xsJywgKHZpc2libGVTdGFydFRpbWUsIHZpc2libGVFbmRUaW1lKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgICAgZGF0YTogeyB2aXNpYmxlU3RhcnRUaW1lLCB2aXNpYmxlRW5kVGltZSB9LFxuICAgICAgICAgIHN0YXR1czogJ3Njcm9sbCcsXG4gICAgICAgICAgaXNVc2VySW50ZXJhY3Rpb246IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFdoZW4gdGhlIHpvb20gbGV2ZWwgY2hhbmdlcyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlWm9vbSgpIHtcbiAgICB0aGlzLmF1ZGlvLm9uKCd6b29tJywgKG1pblB4UGVyU2VjKSA9PiB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU3RhdHVzQ2hhbmdlZC5lbWl0KHsgY29tcG9uZW50OiB0aGlzLCBkYXRhOiB7IG1pblB4UGVyU2VjIH0sIHN0YXR1czogJ3pvb20nLCBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBKdXN0IGJlZm9yZSB0aGUgd2F2ZWZvcm0gaXMgZGVzdHJveWVkIHNvIHlvdSBjYW4gY2xlYW4gdXAgeW91ciBldmVudHMgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZURlc3Ryb3koKSB7XG4gICAgdGhpcy5hdWRpby5vbignZGVzdHJveScsICgpID0+IHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMub25TdGF0dXNDaGFuZ2VkLmVtaXQoeyBjb21wb25lbnQ6IHRoaXMsIGRhdGE6IG51bGwsIHN0YXR1czogJ2Rlc3Ryb3knLCBpc1VzZXJJbnRlcmFjdGlvbjogZmFsc2UgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWF1ZGlvLXdhdmVcIiAjZD48L2Rpdj4iXX0=
@@ -0,0 +1,20 @@
1
+ import { AXButtonModule } from '@acorex/components/button';
2
+ import { AXDecoratorModule } from '@acorex/components/decorators';
3
+ import { CommonModule } from '@angular/common';
4
+ import { NgModule } from '@angular/core';
5
+ import { AXAudioWaveComponent } from './audio-wave.component';
6
+ import * as i0 from "@angular/core";
7
+ export class AXAudioWaveModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXAudioWaveModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.2", ngImport: i0, type: AXAudioWaveModule, declarations: [AXAudioWaveComponent], imports: [CommonModule, AXButtonModule, AXDecoratorModule], exports: [AXAudioWaveComponent] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXAudioWaveModule, imports: [CommonModule, AXButtonModule, AXDecoratorModule] }); }
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AXAudioWaveModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [AXAudioWaveComponent],
16
+ imports: [CommonModule, AXButtonModule, AXDecoratorModule],
17
+ exports: [AXAudioWaveComponent],
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8td2F2ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYXVkaW8td2F2ZS9zcmMvbGliL2F1ZGlvLXdhdmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFPOUQsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBSmIsb0JBQW9CLGFBQ3pCLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCLGFBQy9DLG9CQUFvQjsrR0FFbkIsaUJBQWlCLFlBSGxCLFlBQVksRUFBRSxjQUFjLEVBQUUsaUJBQWlCOzsyRkFHOUMsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNwQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDO29CQUMxRCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztpQkFDaEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQXVkaW9XYXZlQ29tcG9uZW50IH0gZnJvbSAnLi9hdWRpby13YXZlLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0FYQXVkaW9XYXZlQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhCdXR0b25Nb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlXSxcbiAgZXhwb3J0czogW0FYQXVkaW9XYXZlQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQVhBdWRpb1dhdmVNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8td2F2ZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYXVkaW8td2F2ZS9zcmMvbGliL2ludGVyZmFjZXMvYXVkaW8td2F2ZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFdhdmVDb25maWcge1xuICBjb250YWluZXI/OiBIVE1MRWxlbWVudDtcbiAgd2F2ZUNvbG9yPzogc3RyaW5nO1xuICBwcm9ncmVzc0NvbG9yPzogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbiAgYmFyV2lkdGg/OiBudW1iZXI7XG4gIGJhckdhcD86IG51bWJlcjtcbiAgYmFyUmFkaXVzPzogbnVtYmVyO1xuICBoZWlnaHQ/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFYQXVkaW9XYXZlQ2hhbmdlRXZlbnQgZXh0ZW5kcyBBWEV2ZW50IHtcbiAgc3RhdHVzOlxuICAgIHwgJ2xvYWQnXG4gICAgfCAnbG9hZGluZydcbiAgICB8ICdkZWNvZGUnXG4gICAgfCAncmVhZHknXG4gICAgfCAncmVkcmF3Y29tcGxldGUnXG4gICAgfCAncGxheSdcbiAgICB8ICdwYXVzZSdcbiAgICB8ICdmaW5pc2gnXG4gICAgfCAndGltZXVwZGF0ZSdcbiAgICB8ICdzZWVraW5nJ1xuICAgIHwgJ2ludGVyYWN0aW9uJ1xuICAgIHwgJ2NsaWNrJ1xuICAgIHwgJ2RyYWcnXG4gICAgfCAnc2Nyb2xsJ1xuICAgIHwgJ3pvb20nXG4gICAgfCAnZGVzdHJveSc7XG4gIGRhdGE6IG51bGwgfCBhbnk7XG59XG4iXX0=
@@ -2,7 +2,6 @@ export * from './lib/chat-input/chat-input.component';
2
2
  export * from './lib/chat-input/chat-input.interface';
3
3
  export * from './lib/chat-message/chat-message.component';
4
4
  export * from './lib/chat-view/chat-view.component';
5
- export * from './lib/chat-voice/chat-voice.component';
6
5
  export * from './lib/chat.module';
7
6
  export * from './lib/chat.types';
8
7
  export * from './lib/classes/events.interface';
@@ -10,6 +9,6 @@ export * from './lib/services/chat-message-type-registry.service';
10
9
  export * from './lib/services/chat.service';
11
10
  export * from './lib/services/recording.service';
12
11
  //
13
- export * from './lib/chat-messages/chat-message-audio.component';
14
12
  export * from './lib/chat-messages/chat-message-text.component';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY2hhdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELEVBQUU7QUFDRixjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsaURBQWlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LWlucHV0L2NoYXQtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQtaW5wdXQvY2hhdC1pbnB1dC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC1tZXNzYWdlL2NoYXQtbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC12aWV3L2NoYXQtdmlldy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC12b2ljZS9jaGF0LXZvaWNlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LnR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvZXZlbnRzLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jaGF0LW1lc3NhZ2UtdHlwZS1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NoYXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9yZWNvcmRpbmcuc2VydmljZSc7XG4vL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC1tZXNzYWdlcy9jaGF0LW1lc3NhZ2UtYXVkaW8uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQtbWVzc2FnZXMvY2hhdC1tZXNzYWdlLXRleHQuY29tcG9uZW50JztcbiJdfQ==
13
+ export * from './lib/chat-messages/chat-messages-voice/chat-message-voice.component';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY2hhdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxFQUFFO0FBQ0YsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHNFQUFzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC1pbnB1dC9jaGF0LWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LWlucHV0L2NoYXQtaW5wdXQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQtdmlldy9jaGF0LXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy9ldmVudHMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NoYXQtbWVzc2FnZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY2hhdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JlY29yZGluZy5zZXJ2aWNlJztcbi8vXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LW1lc3NhZ2VzL2NoYXQtbWVzc2FnZS10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LW1lc3NhZ2VzL2NoYXQtbWVzc2FnZXMtdm9pY2UvY2hhdC1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudCc7XG4iXX0=