@acorex/components 17.0.7 → 17.0.9
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/audio-wave/README.md +3 -0
- package/audio-wave/index.d.ts +3 -0
- package/audio-wave/lib/audio-wave.component.d.ts +51 -0
- package/audio-wave/lib/audio-wave.module.d.ts +10 -0
- package/audio-wave/lib/interfaces/audio-wave.interface.d.ts +15 -0
- package/chat/index.d.ts +1 -2
- package/chat/lib/chat-message/chat-message.component.d.ts +1 -1
- package/chat/lib/chat-messages/chat-message-text.component.d.ts +1 -1
- package/chat/lib/chat-messages/chat-messages-voice/chat-message-voice.component.d.ts +16 -0
- package/chat/lib/chat-view/chat-view.component.d.ts +2 -2
- package/chat/lib/chat.module.d.ts +13 -10
- package/chat/lib/chat.types.d.ts +6 -6
- package/data-pager/lib/data-pager.component.d.ts +1 -0
- package/data-table/lib/data-table/data-table.component.d.ts +24 -13
- package/esm2022/audio-wave/acorex-components-audio-wave.mjs +5 -0
- package/esm2022/audio-wave/index.mjs +4 -0
- package/esm2022/audio-wave/lib/audio-wave.component.mjs +199 -0
- package/esm2022/audio-wave/lib/audio-wave.module.mjs +20 -0
- package/esm2022/audio-wave/lib/interfaces/audio-wave.interface.mjs +2 -0
- package/esm2022/chat/index.mjs +2 -3
- package/esm2022/chat/lib/chat-message/chat-message.component.mjs +3 -3
- package/esm2022/chat/lib/chat-messages/chat-message-text.component.mjs +2 -2
- package/esm2022/chat/lib/chat-messages/chat-messages-voice/chat-message-voice.component.mjs +49 -0
- package/esm2022/chat/lib/chat-view/chat-view.component.mjs +2 -2
- package/esm2022/chat/lib/chat.module.mjs +18 -8
- package/esm2022/chat/lib/chat.types.mjs +1 -1
- package/esm2022/data-pager/lib/data-pager.component.mjs +19 -14
- package/esm2022/data-table/lib/data-table/data-table.component.mjs +83 -39
- package/esm2022/side-menu/lib/side-menu-item/side-menu-item.compoent.mjs +8 -8
- package/fesm2022/acorex-components-audio-wave.mjs +223 -0
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -0
- package/fesm2022/acorex-components-chat.mjs +65 -34
- package/fesm2022/acorex-components-chat.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +18 -13
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +82 -38
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +7 -7
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/package.json +7 -1
- package/side-menu/lib/side-menu-item/side-menu-item.compoent.d.ts +3 -4
- package/chat/lib/chat-messages/chat-message-audio.component.d.ts +0 -7
- package/chat/lib/chat-voice/chat-voice.component.d.ts +0 -6
- package/esm2022/chat/lib/chat-messages/chat-message-audio.component.mjs +0 -17
- package/esm2022/chat/lib/chat-voice/chat-voice.component.mjs +0 -12
@@ -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-
|
8
|
-
import * as i5 from "
|
9
|
-
import * as i6 from "@angular/
|
10
|
-
import * as i7 from "@
|
11
|
-
import * as i8 from "@acorex/components/
|
12
|
-
import * as i9 from "@acorex/components/
|
13
|
-
import * as i10 from "@acorex/
|
14
|
-
import * as i11 from "@acorex/
|
15
|
-
import * as i12 from "@acorex/
|
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.
|
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
|
}
|
package/chat/lib/chat.types.d.ts
CHANGED
@@ -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:
|
14
|
+
content: T;
|
15
15
|
fromId?: string;
|
16
16
|
}
|
17
|
-
export declare class AXChatMessageBaseComponent {
|
18
|
-
message: AXChatMessage
|
19
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AXChatMessageBaseComponent
|
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
|
}
|
@@ -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
|
-
|
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
|
15
|
-
|
16
|
-
|
17
|
-
|
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; }; }, { "
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8td2F2ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYXVkaW8td2F2ZS9zcmMvbGliL2F1ZGlvLXdhdmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2F1ZGlvLXdhdmUvc3JjL2xpYi9hdWRpby13YXZlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUVWLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFVBQVUsTUFBTSxlQUFlLENBQUM7O0FBU3ZDLE1BQU0sT0FBTyxvQkFBb0I7SUFTL0I7UUFQQSxXQUFNLEdBQThCLEtBQUssRUFBZ0IsQ0FBQztRQUUxRCxvQkFBZSxHQUFHLE1BQU0sRUFBMEIsQ0FBQztRQUczQyxXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRzlCLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDOUYsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFFOUYsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO2dCQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO2dCQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsSUFBSSxRQUFRLFVBQVUsR0FBRztnQkFDNUQsYUFBYSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxhQUFhLElBQUksUUFBUSxVQUFVLEdBQUc7Z0JBQ3BFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUU7Z0JBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsUUFBUSxJQUFJLENBQUM7Z0JBQ3RDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxJQUFJLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxJQUFJLENBQUM7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUU7YUFDcEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRVMsVUFBVTtRQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELGdDQUFnQztJQUN0QixVQUFVO1FBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUMxRyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDJCQUEyQjtJQUNqQixhQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHNDQUFzQztJQUM1QixZQUFZO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtEQUFrRDtJQUN4QyxXQUFXO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNoSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELCtEQUErRDtJQUNyRCxvQkFBb0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDakgsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQ0FBb0M7SUFDMUIsVUFBVTtRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZHLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNEJBQTRCO0lBQ2xCLFdBQVc7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN4RyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHNDQUFzQztJQUM1QixZQUFZO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDekcsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtRUFBbUU7SUFDekQsZ0JBQWdCO1FBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN4SCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDRDQUE0QztJQUNsQyxhQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNySCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDZFQUE2RTtJQUNuRSxpQkFBaUI7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3JILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsMkNBQTJDO0lBQ2pDLFdBQVc7UUFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2pILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQscUNBQXFDO0lBQzNCLFVBQVU7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2hILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNkNBQTZDO0lBQ25DLFlBQVk7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLEVBQUU7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztvQkFDeEIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsSUFBSSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFO29CQUMxQyxNQUFNLEVBQUUsUUFBUTtvQkFDaEIsaUJBQWlCLEVBQUUsS0FBSztpQkFDekIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQ0FBa0M7SUFDeEIsVUFBVTtRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbEgsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw0RUFBNEU7SUFDbEUsYUFBYTtRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFHLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWxOVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix1VUNyQmpDLHdDQUFvQzs7MkZEcUJ2QixvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0UsZUFBZSxpQkFHVixpQkFBaUIsQ0FBQyxJQUFJO3dEQUdYLEdBQUc7c0JBQTVCLFNBQVM7dUJBQUMsR0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXRTaWduYWwsXG4gIE5nWm9uZSxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IFdhdmVTdXJmZXIgZnJvbSAnd2F2ZXN1cmZlci5qcyc7XG5pbXBvcnQgeyBBWEF1ZGlvV2F2ZUNoYW5nZUV2ZW50LCBBWFdhdmVDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvYXVkaW8td2F2ZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1hdWRpby13YXZlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGlvLXdhdmUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdWRpby13YXZlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFYQXVkaW9XYXZlQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnZCcpIHByb3RlY3RlZCBkaXY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+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=
|
package/esm2022/chat/index.mjs
CHANGED
@@ -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
|
-
|
13
|
+
export * from './lib/chat-messages/chat-messages-voice/chat-message-voice.component';
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY2hhdC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxFQUFFO0FBQ0YsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLHNFQUFzRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC1pbnB1dC9jaGF0LWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LWlucHV0L2NoYXQtaW5wdXQuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQtbWVzc2FnZS9jaGF0LW1lc3NhZ2UuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQtdmlldy9jaGF0LXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYXQudHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy9ldmVudHMuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NoYXQtbWVzc2FnZS10eXBlLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY2hhdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JlY29yZGluZy5zZXJ2aWNlJztcbi8vXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LW1lc3NhZ2VzL2NoYXQtbWVzc2FnZS10ZXh0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGF0LW1lc3NhZ2VzL2NoYXQtbWVzc2FnZXMtdm9pY2UvY2hhdC1tZXNzYWdlLXZvaWNlLmNvbXBvbmVudCc7XG4iXX0=
|