@acorex/components 17.0.7 → 17.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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 +82 -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 +81 -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,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=
|
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=
|