@acorex/components 22.2.7 → 22.2.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/fesm2022/acorex-components-audio-wave.mjs +24 -3
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/{acorex-components-conversation-acorex-components-conversation-CjuzzYML.mjs → acorex-components-conversation-acorex-components-conversation-CJ2TAxPI.mjs} +839 -139
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-CJ2TAxPI.mjs.map +1 -0
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs +87 -0
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-COT96F_v.mjs.map +1 -0
- package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-r-53kDO7.mjs → acorex-components-conversation-picker-rename-file-dialog.component-veZdIY3W.mjs} +2 -2
- package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-r-53kDO7.mjs.map → acorex-components-conversation-picker-rename-file-dialog.component-veZdIY3W.mjs.map} +1 -1
- package/fesm2022/acorex-components-conversation.mjs +1 -1
- package/fesm2022/acorex-components-file-viewer.mjs +145 -66
- package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +96 -16
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-rest-api-generator.mjs +403 -0
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -0
- package/fesm2022/acorex-components-tree-view.mjs +36 -4
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/package.json +7 -3
- package/rest-api-generator/README.md +3 -0
- package/types/acorex-components-audio-wave.d.ts +8 -0
- package/types/acorex-components-conversation.d.ts +116 -11
- package/types/acorex-components-file-viewer.d.ts +6 -0
- package/types/acorex-components-menu.d.ts +15 -3
- package/types/acorex-components-rest-api-generator.d.ts +129 -0
- package/types/acorex-components-tree-view.d.ts +17 -0
- package/fesm2022/acorex-components-conversation-acorex-components-conversation-CjuzzYML.mjs.map +0 -1
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-AO1evM19.mjs +0 -85
- package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-AO1evM19.mjs.map +0 -1
|
@@ -111,7 +111,7 @@ class AXAudioWaveComponent {
|
|
|
111
111
|
this.loadedUrl = nextUrl;
|
|
112
112
|
this.audioState.set('loading');
|
|
113
113
|
this.errorMessage.set('');
|
|
114
|
-
return this.audio.load(nextUrl);
|
|
114
|
+
return this.swallowAbort(this.audio.load(nextUrl));
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
117
117
|
* Plays the audio.
|
|
@@ -119,7 +119,7 @@ class AXAudioWaveComponent {
|
|
|
119
119
|
* @returns A promise that resolves when playback starts.
|
|
120
120
|
*/
|
|
121
121
|
play() {
|
|
122
|
-
return this.audio?.play()
|
|
122
|
+
return this.swallowAbort(this.audio?.play());
|
|
123
123
|
}
|
|
124
124
|
/**
|
|
125
125
|
* Pauses the audio.
|
|
@@ -210,7 +210,7 @@ class AXAudioWaveComponent {
|
|
|
210
210
|
const url = config?.url?.trim() ?? '';
|
|
211
211
|
if (url && url !== this.loadedUrl) {
|
|
212
212
|
this.loadedUrl = url;
|
|
213
|
-
void this.audio?.load(url);
|
|
213
|
+
void this.swallowAbort(this.audio?.load(url));
|
|
214
214
|
}
|
|
215
215
|
else if (!url) {
|
|
216
216
|
queueMicrotask(() => {
|
|
@@ -323,6 +323,9 @@ class AXAudioWaveComponent {
|
|
|
323
323
|
this.emitStatus('destroy', null, false);
|
|
324
324
|
});
|
|
325
325
|
this.audio.on('error', (error) => {
|
|
326
|
+
if (this.isAbortError(error)) {
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
326
329
|
this.runInZone(() => {
|
|
327
330
|
const message = error?.message ?? '';
|
|
328
331
|
this.errorMessage.set(message);
|
|
@@ -331,6 +334,24 @@ class AXAudioWaveComponent {
|
|
|
331
334
|
});
|
|
332
335
|
});
|
|
333
336
|
}
|
|
337
|
+
/**
|
|
338
|
+
* @ignore
|
|
339
|
+
*/
|
|
340
|
+
swallowAbort(promise) {
|
|
341
|
+
return Promise.resolve(promise).then(() => undefined, (error) => {
|
|
342
|
+
if (this.isAbortError(error)) {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
throw error;
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* @ignore
|
|
350
|
+
*/
|
|
351
|
+
isAbortError(error) {
|
|
352
|
+
return ((typeof DOMException !== 'undefined' && error instanceof DOMException && error.name === 'AbortError') ||
|
|
353
|
+
(error instanceof Error && (error.name === 'AbortError' || /aborted/i.test(error.message))));
|
|
354
|
+
}
|
|
334
355
|
/**
|
|
335
356
|
* @ignore
|
|
336
357
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-audio-wave.mjs","sources":["../../../../packages/components/audio-wave/src/lib/audio-wave.component.ts","../../../../packages/components/audio-wave/src/lib/audio-wave.component.html","../../../../packages/components/audio-wave/src/lib/audio-wave.module.ts","../../../../packages/components/audio-wave/src/acorex-components-audio-wave.ts"],"sourcesContent":["import { AXComponent } from '@acorex/cdk/common';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n NgZone,\n output,\n PLATFORM_ID,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport WaveSurfer from 'wavesurfer.js';\nimport type {\n AXAudioWaveChangeEvent,\n AXAudioWaveEventPayload,\n AXAudioWaveState,\n AXAudioWaveStatus,\n AXWaveConfig,\n} from './interfaces/audio-wave.interface';\n\nconst DEFAULT_BAR_WIDTH = 2;\nconst DEFAULT_BAR_GAP = 2;\nconst DEFAULT_BAR_RADIUS = 2;\nconst DEFAULT_HEIGHT = 36;\nconst FALLBACK_RGB = '128, 128, 128';\n\n/**\n * Displays and interacts with audio waveform visualization.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-audio-wave',\n templateUrl: './audio-wave.component.html',\n styleUrls: ['./audio-wave.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXTranslatorPipe, AXSkeletonComponent],\n providers: [{ provide: AXComponent, useExisting: AXAudioWaveComponent }],\n host: {\n '[attr.aria-busy]': 'audioState() === \"loading\" || null',\n '[attr.aria-invalid]': 'audioState() === \"error\" || null',\n },\n})\nexport class AXAudioWaveComponent {\n /**\n * @ignore\n */\n private readonly wave = viewChild<ElementRef<HTMLDivElement>>('wave');\n\n /**\n * Configuration settings for the audio wave.\n */\n readonly config = input<AXWaveConfig>();\n\n /**\n * Emits an event when the status of the audio wave changes.\n *\n * @event\n */\n readonly onStatusChanged = output<AXAudioWaveChangeEvent>();\n\n /**\n * @ignore\n */\n protected readonly audioState = signal<AXAudioWaveState>('loading');\n\n /**\n * @ignore\n */\n protected readonly errorMessage = signal('');\n\n /**\n * @ignore\n */\n protected readonly isWaveVisible = computed(() => {\n const state = this.audioState();\n return state === 'ready' || state === 'playing' || state === 'paused';\n });\n\n /**\n * @ignore\n */\n private audio: WaveSurfer | undefined;\n\n /**\n * @ignore\n */\n private loadedUrl = '';\n\n /**\n * @ignore\n */\n private lastVisualKey = '';\n\n /**\n * @ignore\n */\n private isDestroyed = false;\n\n /**\n * @ignore\n */\n private readonly ngZone = inject(NgZone);\n\n /**\n * @ignore\n */\n private readonly platformId = inject(PLATFORM_ID);\n\n /**\n * @ignore\n */\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * @ignore\n */\n constructor() {\n afterRenderEffect(() => {\n const container = this.wave()?.nativeElement;\n const config = this.config();\n\n if (this.isDestroyed || !isPlatformBrowser(this.platformId) || !container) {\n return;\n }\n\n if (!this.audio) {\n this.createWaveSurfer(container, config);\n return;\n }\n\n this.syncFromConfig(config);\n });\n\n this.destroyRef.onDestroy(() => {\n this.isDestroyed = true;\n this.audio?.destroy();\n this.audio = undefined;\n });\n }\n\n /**\n * Loads the audio from the specified URL.\n *\n * @param url - The URL of the audio to load. Defaults to the URL from the config.\n * @returns A promise that resolves when loading starts, or immediately when unavailable.\n */\n load(url = this.config()?.url): Promise<void> {\n const nextUrl = url?.trim();\n if (!this.audio || !nextUrl) {\n return Promise.resolve();\n }\n\n this.loadedUrl = nextUrl;\n this.audioState.set('loading');\n this.errorMessage.set('');\n return this.audio.load(nextUrl);\n }\n\n /**\n * Plays the audio.\n *\n * @returns A promise that resolves when playback starts.\n */\n play(): Promise<void> {\n return this.audio?.play() ?? Promise.resolve();\n }\n\n /**\n * Pauses the audio.\n */\n pause(): void {\n this.audio?.pause();\n }\n\n /**\n * Retrieves the duration of the audio in seconds.\n *\n * @returns The audio duration, or `0` when unavailable.\n */\n getDuration(): number {\n return this.audio?.getDuration() ?? 0;\n }\n\n /**\n * Retrieves the underlying HTML media element.\n *\n * @returns The media element used by WaveSurfer, or `undefined` when unavailable.\n */\n getMediaElement(): HTMLMediaElement | undefined {\n return this.audio?.getMediaElement();\n }\n\n /**\n * Retrieves the current playback position in seconds.\n *\n * @returns The current time, or `0` when unavailable.\n */\n getCurrentTime(): number {\n return this.audio?.getCurrentTime() ?? this.getMediaElement()?.currentTime ?? 0;\n }\n\n /**\n * Sets the playback rate of the audio.\n *\n * @param rate - The playback rate to set.\n */\n setRate(rate: number): void {\n this.audio?.setPlaybackRate(rate);\n }\n\n /**\n * Mutes or unmutes the audio.\n *\n * @param muted - Whether the audio should be muted.\n */\n setMuted(muted: boolean): void {\n this.audio?.setMuted(muted);\n }\n\n /**\n * Indicates whether the audio is currently muted.\n *\n * @returns True when muted; otherwise false.\n */\n isMuted(): boolean {\n return this.audio?.getMuted() ?? false;\n }\n\n /**\n * @ignore\n */\n private createWaveSurfer(container: HTMLDivElement, config?: AXWaveConfig): void {\n const visualOptions = this.resolveVisualOptions(config);\n this.lastVisualKey = JSON.stringify(visualOptions);\n this.audio = WaveSurfer.create({\n container,\n ...visualOptions,\n });\n this.bindEvents();\n this.applyUrlAndRate(config);\n }\n\n /**\n * @ignore\n */\n private syncFromConfig(config?: AXWaveConfig): void {\n if (!this.audio) {\n return;\n }\n\n const visualOptions = this.resolveVisualOptions(config);\n const visualKey = JSON.stringify(visualOptions);\n if (visualKey !== this.lastVisualKey) {\n this.lastVisualKey = visualKey;\n this.audio.setOptions(visualOptions);\n }\n\n this.applyUrlAndRate(config);\n }\n\n /**\n * @ignore\n */\n private applyUrlAndRate(config?: AXWaveConfig): void {\n const url = config?.url?.trim() ?? '';\n if (url && url !== this.loadedUrl) {\n this.loadedUrl = url;\n void this.audio?.load(url);\n } else if (!url) {\n queueMicrotask(() => {\n if (!this.isDestroyed && !this.loadedUrl && this.audioState() === 'loading') {\n this.audioState.set('paused');\n }\n });\n }\n\n if (config?.audioRate != null) {\n this.audio?.setPlaybackRate(config.audioRate);\n }\n }\n\n /**\n * @ignore\n */\n private resolveVisualOptions(config?: AXWaveConfig) {\n const primary200 = this.readCssRgbVar('--ax-sys-color-primary-200');\n const primary700 = this.readCssRgbVar('--ax-sys-color-primary-700');\n\n return {\n waveColor: config?.waveColor ?? `rgba(${primary200})`,\n progressColor: config?.progressColor ?? `rgba(${primary700})`,\n barWidth: config?.barWidth ?? DEFAULT_BAR_WIDTH,\n barGap: config?.barGap ?? DEFAULT_BAR_GAP,\n barRadius: config?.barRadius ?? DEFAULT_BAR_RADIUS,\n height: config?.height ?? DEFAULT_HEIGHT,\n };\n }\n\n /**\n * @ignore\n */\n private readCssRgbVar(name: string): string {\n if (!isPlatformBrowser(this.platformId)) {\n return FALLBACK_RGB;\n }\n\n return getComputedStyle(document.documentElement).getPropertyValue(name).trim() || FALLBACK_RGB;\n }\n\n /**\n * @ignore\n */\n private bindEvents(): void {\n if (!this.audio) {\n return;\n }\n\n this.audio.on('load', (url) => {\n this.emitStatus('load', { url }, false);\n });\n\n this.audio.on('loading', (percent) => {\n this.runInZone(() => {\n this.errorMessage.set('');\n this.audioState.set('loading');\n this.emitStatus('loading', { percent }, false, false);\n });\n });\n\n this.audio.on('decode', (duration) => {\n this.emitStatus('decode', { duration }, false);\n });\n\n this.audio.on('ready', (duration) => {\n this.runInZone(() => {\n if (this.audioState() !== 'playing') {\n this.audioState.set('ready');\n }\n this.emitStatus('ready', { duration }, false, false);\n });\n });\n\n this.audio.on('redrawcomplete', () => {\n this.emitStatus('redrawcomplete', null, false);\n });\n\n this.audio.on('play', () => {\n this.runInZone(() => {\n this.audioState.set('playing');\n this.emitStatus('play', null, false, false);\n });\n });\n\n this.audio.on('pause', () => {\n this.runInZone(() => {\n if (this.audioState() !== 'error') {\n this.audioState.set('paused');\n }\n this.emitStatus('pause', null, false, false);\n });\n });\n\n this.audio.on('finish', () => {\n this.runInZone(() => {\n this.audioState.set('paused');\n this.emitStatus('finish', null, false, false);\n });\n });\n\n this.audio.on('timeupdate', (currentTime) => {\n this.emitStatus('timeupdate', { currentTime }, false);\n });\n\n this.audio.on('seeking', (currentTime) => {\n this.emitStatus('seeking', { currentTime }, true);\n });\n\n this.audio.on('interaction', (newTime) => {\n this.emitStatus('interaction', { newTime }, true);\n });\n\n this.audio.on('click', (relativeX, relativeY) => {\n this.emitStatus('click', { relativeX, relativeY }, true);\n });\n\n this.audio.on('drag', (relativeX) => {\n this.emitStatus('drag', { relativeX }, true);\n });\n\n this.audio.on('scroll', (visibleStartTime, visibleEndTime) => {\n this.emitStatus('scroll', { visibleStartTime, visibleEndTime }, true);\n });\n\n this.audio.on('zoom', (minPxPerSec) => {\n this.emitStatus('zoom', { minPxPerSec }, false);\n });\n\n this.audio.on('destroy', () => {\n this.emitStatus('destroy', null, false);\n });\n\n this.audio.on('error', (error) => {\n this.runInZone(() => {\n const message = error?.message ?? '';\n this.errorMessage.set(message);\n this.audioState.set('error');\n this.emitStatus('error', { message }, false, false);\n });\n });\n }\n\n /**\n * @ignore\n */\n private emitStatus(\n status: AXAudioWaveStatus,\n data: AXAudioWaveEventPayload | null,\n isUserInteraction: boolean,\n wrapInZone = true,\n ): void {\n if (this.isDestroyed) {\n return;\n }\n\n const emit = () => {\n this.onStatusChanged.emit({\n component: this,\n data,\n status,\n isUserInteraction,\n });\n };\n\n if (wrapInZone) {\n this.runInZone(emit);\n return;\n }\n\n emit();\n }\n\n /**\n * @ignore\n */\n private runInZone(fn: () => void): void {\n if (this.isDestroyed) {\n return;\n }\n\n this.ngZone.run(fn);\n }\n}\n","<div class=\"ax-audio-wave-host\" [class.ax-audio-wave-host--loading]=\"audioState() === 'loading'\">\n <div class=\"ax-audio-wave\" #wave [class.ax-audio-wave--hidden]=\"!isWaveVisible()\"></div>\n\n @switch (audioState()) {\n @case ('loading') {\n <ax-skeleton class=\"ax-audio-wave-skeleton\"></ax-skeleton>\n }\n @case ('error') {\n <div class=\"ax-wave-message\">\n {{ '@acorex:error.message' | translate: { params: { message: errorMessage() } } | async }}\n </div>\n }\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { AXAudioWaveComponent } from './audio-wave.component';\n\n@NgModule({\n exports: [AXAudioWaveComponent],\n imports: [AXAudioWaveComponent],\n})\nexport class AXAudioWaveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-audio-wave.mjs","sources":["../../../../packages/components/audio-wave/src/lib/audio-wave.component.ts","../../../../packages/components/audio-wave/src/lib/audio-wave.component.html","../../../../packages/components/audio-wave/src/lib/audio-wave.module.ts","../../../../packages/components/audio-wave/src/acorex-components-audio-wave.ts"],"sourcesContent":["import { AXComponent } from '@acorex/cdk/common';\nimport { AXSkeletonComponent } from '@acorex/components/skeleton';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, isPlatformBrowser } from '@angular/common';\nimport {\n afterRenderEffect,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n NgZone,\n output,\n PLATFORM_ID,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport WaveSurfer from 'wavesurfer.js';\nimport type {\n AXAudioWaveChangeEvent,\n AXAudioWaveEventPayload,\n AXAudioWaveState,\n AXAudioWaveStatus,\n AXWaveConfig,\n} from './interfaces/audio-wave.interface';\n\nconst DEFAULT_BAR_WIDTH = 2;\nconst DEFAULT_BAR_GAP = 2;\nconst DEFAULT_BAR_RADIUS = 2;\nconst DEFAULT_HEIGHT = 36;\nconst FALLBACK_RGB = '128, 128, 128';\n\n/**\n * Displays and interacts with audio waveform visualization.\n *\n * @category Components\n */\n@Component({\n selector: 'ax-audio-wave',\n templateUrl: './audio-wave.component.html',\n styleUrls: ['./audio-wave.component.css'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, AXTranslatorPipe, AXSkeletonComponent],\n providers: [{ provide: AXComponent, useExisting: AXAudioWaveComponent }],\n host: {\n '[attr.aria-busy]': 'audioState() === \"loading\" || null',\n '[attr.aria-invalid]': 'audioState() === \"error\" || null',\n },\n})\nexport class AXAudioWaveComponent {\n /**\n * @ignore\n */\n private readonly wave = viewChild<ElementRef<HTMLDivElement>>('wave');\n\n /**\n * Configuration settings for the audio wave.\n */\n readonly config = input<AXWaveConfig>();\n\n /**\n * Emits an event when the status of the audio wave changes.\n *\n * @event\n */\n readonly onStatusChanged = output<AXAudioWaveChangeEvent>();\n\n /**\n * @ignore\n */\n protected readonly audioState = signal<AXAudioWaveState>('loading');\n\n /**\n * @ignore\n */\n protected readonly errorMessage = signal('');\n\n /**\n * @ignore\n */\n protected readonly isWaveVisible = computed(() => {\n const state = this.audioState();\n return state === 'ready' || state === 'playing' || state === 'paused';\n });\n\n /**\n * @ignore\n */\n private audio: WaveSurfer | undefined;\n\n /**\n * @ignore\n */\n private loadedUrl = '';\n\n /**\n * @ignore\n */\n private lastVisualKey = '';\n\n /**\n * @ignore\n */\n private isDestroyed = false;\n\n /**\n * @ignore\n */\n private readonly ngZone = inject(NgZone);\n\n /**\n * @ignore\n */\n private readonly platformId = inject(PLATFORM_ID);\n\n /**\n * @ignore\n */\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * @ignore\n */\n constructor() {\n afterRenderEffect(() => {\n const container = this.wave()?.nativeElement;\n const config = this.config();\n\n if (this.isDestroyed || !isPlatformBrowser(this.platformId) || !container) {\n return;\n }\n\n if (!this.audio) {\n this.createWaveSurfer(container, config);\n return;\n }\n\n this.syncFromConfig(config);\n });\n\n this.destroyRef.onDestroy(() => {\n this.isDestroyed = true;\n this.audio?.destroy();\n this.audio = undefined;\n });\n }\n\n /**\n * Loads the audio from the specified URL.\n *\n * @param url - The URL of the audio to load. Defaults to the URL from the config.\n * @returns A promise that resolves when loading starts, or immediately when unavailable.\n */\n load(url = this.config()?.url): Promise<void> {\n const nextUrl = url?.trim();\n if (!this.audio || !nextUrl) {\n return Promise.resolve();\n }\n\n this.loadedUrl = nextUrl;\n this.audioState.set('loading');\n this.errorMessage.set('');\n return this.swallowAbort(this.audio.load(nextUrl));\n }\n\n /**\n * Plays the audio.\n *\n * @returns A promise that resolves when playback starts.\n */\n play(): Promise<void> {\n return this.swallowAbort(this.audio?.play());\n }\n\n /**\n * Pauses the audio.\n */\n pause(): void {\n this.audio?.pause();\n }\n\n /**\n * Retrieves the duration of the audio in seconds.\n *\n * @returns The audio duration, or `0` when unavailable.\n */\n getDuration(): number {\n return this.audio?.getDuration() ?? 0;\n }\n\n /**\n * Retrieves the underlying HTML media element.\n *\n * @returns The media element used by WaveSurfer, or `undefined` when unavailable.\n */\n getMediaElement(): HTMLMediaElement | undefined {\n return this.audio?.getMediaElement();\n }\n\n /**\n * Retrieves the current playback position in seconds.\n *\n * @returns The current time, or `0` when unavailable.\n */\n getCurrentTime(): number {\n return this.audio?.getCurrentTime() ?? this.getMediaElement()?.currentTime ?? 0;\n }\n\n /**\n * Sets the playback rate of the audio.\n *\n * @param rate - The playback rate to set.\n */\n setRate(rate: number): void {\n this.audio?.setPlaybackRate(rate);\n }\n\n /**\n * Mutes or unmutes the audio.\n *\n * @param muted - Whether the audio should be muted.\n */\n setMuted(muted: boolean): void {\n this.audio?.setMuted(muted);\n }\n\n /**\n * Indicates whether the audio is currently muted.\n *\n * @returns True when muted; otherwise false.\n */\n isMuted(): boolean {\n return this.audio?.getMuted() ?? false;\n }\n\n /**\n * @ignore\n */\n private createWaveSurfer(container: HTMLDivElement, config?: AXWaveConfig): void {\n const visualOptions = this.resolveVisualOptions(config);\n this.lastVisualKey = JSON.stringify(visualOptions);\n this.audio = WaveSurfer.create({\n container,\n ...visualOptions,\n });\n this.bindEvents();\n this.applyUrlAndRate(config);\n }\n\n /**\n * @ignore\n */\n private syncFromConfig(config?: AXWaveConfig): void {\n if (!this.audio) {\n return;\n }\n\n const visualOptions = this.resolveVisualOptions(config);\n const visualKey = JSON.stringify(visualOptions);\n if (visualKey !== this.lastVisualKey) {\n this.lastVisualKey = visualKey;\n this.audio.setOptions(visualOptions);\n }\n\n this.applyUrlAndRate(config);\n }\n\n /**\n * @ignore\n */\n private applyUrlAndRate(config?: AXWaveConfig): void {\n const url = config?.url?.trim() ?? '';\n if (url && url !== this.loadedUrl) {\n this.loadedUrl = url;\n void this.swallowAbort(this.audio?.load(url));\n } else if (!url) {\n queueMicrotask(() => {\n if (!this.isDestroyed && !this.loadedUrl && this.audioState() === 'loading') {\n this.audioState.set('paused');\n }\n });\n }\n\n if (config?.audioRate != null) {\n this.audio?.setPlaybackRate(config.audioRate);\n }\n }\n\n /**\n * @ignore\n */\n private resolveVisualOptions(config?: AXWaveConfig) {\n const primary200 = this.readCssRgbVar('--ax-sys-color-primary-200');\n const primary700 = this.readCssRgbVar('--ax-sys-color-primary-700');\n\n return {\n waveColor: config?.waveColor ?? `rgba(${primary200})`,\n progressColor: config?.progressColor ?? `rgba(${primary700})`,\n barWidth: config?.barWidth ?? DEFAULT_BAR_WIDTH,\n barGap: config?.barGap ?? DEFAULT_BAR_GAP,\n barRadius: config?.barRadius ?? DEFAULT_BAR_RADIUS,\n height: config?.height ?? DEFAULT_HEIGHT,\n };\n }\n\n /**\n * @ignore\n */\n private readCssRgbVar(name: string): string {\n if (!isPlatformBrowser(this.platformId)) {\n return FALLBACK_RGB;\n }\n\n return getComputedStyle(document.documentElement).getPropertyValue(name).trim() || FALLBACK_RGB;\n }\n\n /**\n * @ignore\n */\n private bindEvents(): void {\n if (!this.audio) {\n return;\n }\n\n this.audio.on('load', (url) => {\n this.emitStatus('load', { url }, false);\n });\n\n this.audio.on('loading', (percent) => {\n this.runInZone(() => {\n this.errorMessage.set('');\n this.audioState.set('loading');\n this.emitStatus('loading', { percent }, false, false);\n });\n });\n\n this.audio.on('decode', (duration) => {\n this.emitStatus('decode', { duration }, false);\n });\n\n this.audio.on('ready', (duration) => {\n this.runInZone(() => {\n if (this.audioState() !== 'playing') {\n this.audioState.set('ready');\n }\n this.emitStatus('ready', { duration }, false, false);\n });\n });\n\n this.audio.on('redrawcomplete', () => {\n this.emitStatus('redrawcomplete', null, false);\n });\n\n this.audio.on('play', () => {\n this.runInZone(() => {\n this.audioState.set('playing');\n this.emitStatus('play', null, false, false);\n });\n });\n\n this.audio.on('pause', () => {\n this.runInZone(() => {\n if (this.audioState() !== 'error') {\n this.audioState.set('paused');\n }\n this.emitStatus('pause', null, false, false);\n });\n });\n\n this.audio.on('finish', () => {\n this.runInZone(() => {\n this.audioState.set('paused');\n this.emitStatus('finish', null, false, false);\n });\n });\n\n this.audio.on('timeupdate', (currentTime) => {\n this.emitStatus('timeupdate', { currentTime }, false);\n });\n\n this.audio.on('seeking', (currentTime) => {\n this.emitStatus('seeking', { currentTime }, true);\n });\n\n this.audio.on('interaction', (newTime) => {\n this.emitStatus('interaction', { newTime }, true);\n });\n\n this.audio.on('click', (relativeX, relativeY) => {\n this.emitStatus('click', { relativeX, relativeY }, true);\n });\n\n this.audio.on('drag', (relativeX) => {\n this.emitStatus('drag', { relativeX }, true);\n });\n\n this.audio.on('scroll', (visibleStartTime, visibleEndTime) => {\n this.emitStatus('scroll', { visibleStartTime, visibleEndTime }, true);\n });\n\n this.audio.on('zoom', (minPxPerSec) => {\n this.emitStatus('zoom', { minPxPerSec }, false);\n });\n\n this.audio.on('destroy', () => {\n this.emitStatus('destroy', null, false);\n });\n\n this.audio.on('error', (error) => {\n if (this.isAbortError(error)) {\n return;\n }\n this.runInZone(() => {\n const message = error?.message ?? '';\n this.errorMessage.set(message);\n this.audioState.set('error');\n this.emitStatus('error', { message }, false, false);\n });\n });\n }\n\n /**\n * @ignore\n */\n private swallowAbort(promise: Promise<unknown> | undefined): Promise<void> {\n return Promise.resolve(promise).then(\n () => undefined,\n (error: unknown) => {\n if (this.isAbortError(error)) {\n return;\n }\n throw error;\n },\n );\n }\n\n /**\n * @ignore\n */\n private isAbortError(error: unknown): boolean {\n return (\n (typeof DOMException !== 'undefined' && error instanceof DOMException && error.name === 'AbortError') ||\n (error instanceof Error && (error.name === 'AbortError' || /aborted/i.test(error.message)))\n );\n }\n\n /**\n * @ignore\n */\n private emitStatus(\n status: AXAudioWaveStatus,\n data: AXAudioWaveEventPayload | null,\n isUserInteraction: boolean,\n wrapInZone = true,\n ): void {\n if (this.isDestroyed) {\n return;\n }\n\n const emit = () => {\n this.onStatusChanged.emit({\n component: this,\n data,\n status,\n isUserInteraction,\n });\n };\n\n if (wrapInZone) {\n this.runInZone(emit);\n return;\n }\n\n emit();\n }\n\n /**\n * @ignore\n */\n private runInZone(fn: () => void): void {\n if (this.isDestroyed) {\n return;\n }\n\n this.ngZone.run(fn);\n }\n}\n","<div class=\"ax-audio-wave-host\" [class.ax-audio-wave-host--loading]=\"audioState() === 'loading'\">\n <div class=\"ax-audio-wave\" #wave [class.ax-audio-wave--hidden]=\"!isWaveVisible()\"></div>\n\n @switch (audioState()) {\n @case ('loading') {\n <ax-skeleton class=\"ax-audio-wave-skeleton\"></ax-skeleton>\n }\n @case ('error') {\n <div class=\"ax-wave-message\">\n {{ '@acorex:error.message' | translate: { params: { message: errorMessage() } } | async }}\n </div>\n }\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { AXAudioWaveComponent } from './audio-wave.component';\n\n@NgModule({\n exports: [AXAudioWaveComponent],\n imports: [AXAudioWaveComponent],\n})\nexport class AXAudioWaveModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|