import { ElementRef } from '@angular/core'; import { ControlValueAccessor, FormGroup } from '@angular/forms'; import { TranslateService } from '@ngx-translate/core'; import { AudioPlayerService, Track } from '@sixbell-telco/sdk/components/audio-player'; import { FileExtension } from '../shared/types/file-upload'; import * as i0 from "@angular/core"; /** * A customizable drag-and-drop file upload zone with audio playback capabilities * * @remarks * Supports file validation, multi-file uploads, and audio file preview/playback. * Implements ControlValueAccessor for Angular form integration. * * @example * ```html * * ``` * * @example * ```html * * * ``` */ export declare class DropzoneComponent implements ControlValueAccessor { /** @internal Translation service instance */ translateService: TranslateService; /** @internal Audio player service instance */ audioService: AudioPlayerService; /** * Maximum number of allowed files * @defaultValue 1 */ maxFiles: import("@angular/core").InputSignal; /** * Maximum file size in bytes (0 for unlimited) * @defaultValue 0 */ maxFileSize: import("@angular/core").InputSignal; /** * Whether to display uploaded files list * @defaultValue true */ showFiles: import("@angular/core").InputSignal; /** * Allowed file extensions (e.g., ['.pdf', '.mp3']) */ extensions: import("@angular/core").InputSignal; /** * Whether upload is in progress * @defaultValue false */ uploading: import("@angular/core").InputSignal; /** * Whether the component is disabled * @defaultValue false */ disabled: import("@angular/core").ModelSignal; /** * Whether multiple files can be uploaded * @defaultValue false */ multiple: import("@angular/core").InputSignal; /** * HTML name attribute for the input * @defaultValue 'file' */ name: import("@angular/core").InputSignal; /** * Computed accept attribute for file input * @internal */ accept: import("@angular/core").Signal; /** @internal Tracks audio player open state */ opened: import("@angular/core").WritableSignal; /** @internal Tracks blur events for validation */ private readonly blurTrigger; /** * Parent form group for reactive forms */ parentForm: import("@angular/core").InputSignal | null>; /** * Form control name for reactive forms */ formControlName: import("@angular/core").InputSignal; /** * Emitted when valid files are dropped/selected */ fileDropped: import("@angular/core").OutputEmitterRef; /** * Emitted when a file is removed */ fileRemoved: import("@angular/core").OutputEmitterRef; /** * Stop event propagation for activation events * @defaultValue false */ stopPropagation: import("@angular/core").InputSignal; /** * Event emitted on click */ clicked: import("@angular/core").OutputEmitterRef; /** * Event emitted on pointer down */ pointerDown: import("@angular/core").OutputEmitterRef; /** * Event emitted on Enter keydown */ keyDownEnter: import("@angular/core").OutputEmitterRef; /** * Event emitted on Space keydown */ keyDownSpace: import("@angular/core").OutputEmitterRef; /** * Event emitted on activation (click or keyboard) */ triggered: import("@angular/core").OutputEmitterRef; /** @internal Current list of uploaded files */ files: import("@angular/core").WritableSignal; /** @internal Drag state tracker */ isDragging: import("@angular/core").WritableSignal; /** @internal Validation error message */ errorMessage: import("@angular/core").WritableSignal; /** @internal Change callback function */ private onControlChange; /** @internal Touch callback function */ private onControlTouch; /** @internal Reference to file input element */ fileInput: import("@angular/core").Signal | undefined>; /** @internal Material icon references */ iconDelete: string; iconDownload: string; iconInsertDriveFile: string; iconCloudUpload: string; iconError: string; iconVisibility: string; iconVisibilityOff: string; /** * Computed audio tracks from uploaded files * @internal */ tracks: import("@angular/core").Signal; /** * Whether to show audio player controls * @internal */ addAudioPlayer: import("@angular/core").Signal; /** * Gets track index for audio files * @param file - File to check * @returns Index in audio tracks array * @internal */ getIndexForTracks(file: File): number; /** * @internal * Handle click activation */ handleClick(event: MouseEvent): void; /** * @internal * Handle pointer down activation */ handlePointerDown(event: PointerEvent): void; /** * @internal * Handle Enter key activation */ handleKeyDownEnter(event: Event): void; /** * @internal * Handle Space key activation */ handleKeyDownSpace(event: Event): void; /** * Handles drag over event * @param event - Drag event * @internal */ handleDragOver(event: DragEvent): void; /** * Handles drag leave event * @param event - Drag event * @internal */ handleDragLeave(event: DragEvent): void; /** * Handles file drop event * @param event - Drag event * @internal */ handleDrop(event: DragEvent): void; /** * Handles file input selection * @param event - Input change event * @internal */ handleFileSelect(event: Event): void; /** @internal Processes and validates uploaded files */ private processFiles; /** * Validates file size against maxFileSize * @param file - File to validate * @returns True if file size is valid * @internal */ validateFileSize(file: File): boolean; /** * Validates file type against allowed extensions * @param file - File to validate * @returns True if file type is valid * @internal */ validateFileType(file: File): boolean; /** * Handles file download * @param file - File to download * @internal */ handlefileDownload(file: File): void; /** * Removes a file from the list * @param file - File to remove * @internal */ handleRemove(file: File): void; /** * Checks if a file is an audio file * @param file - File to check * @returns True if audio file * @internal */ checkIfIsAudioFile(file: File): boolean; /** * Toggles audio player visibility * @internal */ handleAudioPlayerOpen(): void; /** @internal Cleans up object URLs */ ngDestroy(): void; /** * Writes form value to component * @param files - Array of files from form control */ writeValue(files: File[]): void; /** * Registers change callback * @param fn - Callback function for value changes */ registerOnChange(fn: (value: File[]) => void): void; /** * Registers touch callback * @param fn - Callback function for touch events */ registerOnTouched(fn: () => void): void; /** * Sets disabled state * @param isDisabled - Whether component is disabled */ setDisabledState(isDisabled: boolean): void; /** * Triggers file input dialog * @internal */ triggerFileInput(): void; /** @internal Form control reference */ private readonly formControl; /** @internal Form control observable */ private readonly formControl$; /** @internal Status changes observable */ private readonly statusChanges$; /** @internal Value changes observable */ private readonly stateChanges$; /** @internal Status signal */ private readonly statusSignal; /** @internal State signal */ private readonly stateSignal; /** * Handles blur events for validation * @internal */ handleBlur(): void; /** * Computes CSS classes for dropzone based on state * @internal */ dropzoneClass: import("@angular/core").Signal; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }