{"version":3,"file":"primeng-fileupload.mjs","sources":["../../src/fileupload/fileupload-token.ts","../../src/fileupload/style/fileuploadstyle.ts","../../src/fileupload/file-content.ts","../../src/fileupload/fileupload.ts","../../src/fileupload/primeng-fileupload.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FILEUPLOAD_INSTANCE = new InjectionToken<any>('FILEUPLOAD_INSTANCE');\n","import { Injectable } from '@angular/core';\nimport { style } from '@primeuix/styles/fileupload';\nimport { BaseStyle } from 'primeng/base';\n\nconst classes = {\n    root: ({ instance }) => `p-fileupload p-fileupload-${instance.mode()} p-component`,\n    header: 'p-fileupload-header',\n    pcChooseButton: 'p-fileupload-choose-button',\n    pcUploadButton: 'p-fileupload-upload-button',\n    pcCancelButton: 'p-fileupload-cancel-button',\n    content: 'p-fileupload-content',\n    fileList: 'p-fileupload-file-list',\n    file: 'p-fileupload-file',\n    fileThumbnail: 'p-fileupload-file-thumbnail',\n    fileInfo: 'p-fileupload-file-info',\n    fileName: 'p-fileupload-file-name',\n    fileSize: 'p-fileupload-file-size',\n    pcFileBadge: 'p-fileupload-file-badge',\n    fileActions: 'p-fileupload-file-actions',\n    pcFileRemoveButton: 'p-fileupload-file-remove-button',\n    basicContent: 'p-fileupload-basic-content'\n};\n\n@Injectable()\nexport class FileUploadStyle extends BaseStyle {\n    name = 'fileupload';\n\n    style = style;\n\n    classes = classes;\n}\n\n/**\n *\n * FileUpload is an advanced uploader with dragdrop support, multi file uploads, auto uploading, progress tracking and validations.\n *\n * [Live Demo](https://www.primeng.org/fileupload/)\n *\n * @module fileuploadstyle\n *\n */\n\nexport enum FileUploadClasses {\n    /**\n     * Class name of the root element\n     */\n    root = 'p-fileupload',\n    /**\n     * Class name of the header element\n     */\n    header = 'p-fileupload-header',\n    /**\n     * Class name of the choose button element\n     */\n    pcChooseButton = 'p-fileupload-choose-button',\n    /**\n     * Class name of the upload button element\n     */\n    pcUploadButton = 'p-fileupload-upload-button',\n    /**\n     * Class name of the cancel button element\n     */\n    pcCancelButton = 'p-fileupload-cancel-button',\n    /**\n     * Class name of the content element\n     */\n    content = 'p-fileupload-content',\n    /**\n     * Class name of the file list element\n     */\n    fileList = 'p-fileupload-file-list',\n    /**\n     * Class name of the file element\n     */\n    file = 'p-fileupload-file',\n    /**\n     * Class name of the file thumbnail element\n     */\n    fileThumbnail = 'p-fileupload-file-thumbnail',\n    /**\n     * Class name of the file info element\n     */\n    fileInfo = 'p-fileupload-file-info',\n    /**\n     * Class name of the file name element\n     */\n    fileName = 'p-fileupload-file-name',\n    /**\n     * Class name of the file size element\n     */\n    fileSize = 'p-fileupload-file-size',\n    /**\n     * Class name of the file badge element\n     */\n    pcFileBadge = 'p-fileupload-file-badge',\n    /**\n     * Class name of the file actions element\n     */\n    fileActions = 'p-fileupload-file-actions',\n    /**\n     * Class name of the file remove button element\n     */\n    pcFileRemoveButton = 'p-fileupload-file-remove-button',\n    /**\n     * Class name of the content in basic mode\n     */\n    basicContent = 'p-fileupload-basic-content'\n}\n\nexport interface FileUploadStyle extends BaseStyle {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, input, output, TemplateRef } from '@angular/core';\nimport { TranslationKeys } from 'primeng/api';\nimport { Badge } from 'primeng/badge';\nimport { BaseComponent } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { ButtonDirective } from 'primeng/button';\nimport { Times as TimesIcon } from '@primeicons/angular/times';\nimport { FileContentRemoveEvent, FileRemoveIconTemplateContext } from 'primeng/types/fileupload';\nimport type { FileUpload } from './fileupload';\nimport { FILEUPLOAD_INSTANCE } from './fileupload-token';\nimport { FileUploadStyle } from './style/fileuploadstyle';\nimport { BadgeSeverity } from 'primeng/types/badge';\n\n@Component({\n    selector: '[pFileContent]',\n    standalone: true,\n    template: `@for (file of files(); track file?.name + '-' + $index; let index = $index) {\n        <div [class]=\"cx('file')\" [pBind]=\"$pcFileUpload.ptm('file')\">\n            <img role=\"presentation\" [class]=\"cx('fileThumbnail')\" [attr.alt]=\"file.name\" [src]=\"file.objectURL\" [width]=\"previewWidth()\" [pBind]=\"$pcFileUpload.ptm('fileThumbnail')\" />\n            <div [class]=\"cx('fileInfo')\" [pBind]=\"$pcFileUpload.ptm('fileInfo')\">\n                <div [class]=\"cx('fileName')\" [pBind]=\"$pcFileUpload.ptm('fileName')\">{{ file.name }}</div>\n                <span [class]=\"cx('fileSize')\" [pBind]=\"$pcFileUpload.ptm('fileSize')\">{{ formatSize(file.size) }}</span>\n            </div>\n            <p-badge [value]=\"badgeValue()\" [severity]=\"badgeSeverity()\" [class]=\"cx('pcFileBadge')\" [pt]=\"$pcFileUpload.ptm('pcFileBadge')\" [unstyled]=\"unstyled()\" />\n            <div [class]=\"cx('fileActions')\" [pBind]=\"$pcFileUpload.ptm('fileActions')\">\n                <button type=\"button\" iconOnly pButton text rounded severity=\"danger\" [class]=\"cx('pcFileRemoveButton')\" [pButtonPT]=\"$pcFileUpload.ptm('pcFileRemoveButton')\" [pButtonUnstyled]=\"unstyled()\" (click)=\"onRemoveClick($event, index)\">\n                    @if (fileRemoveIconTemplate()) {\n                        <ng-template *ngTemplateOutlet=\"fileRemoveIconTemplate(); context: getRemoveIconContext('', file, index)\"></ng-template>\n                    } @else {\n                        <svg data-p-icon=\"times\" [attr.aria-hidden]=\"true\" />\n                    }\n                </button>\n            </div>\n        </div>\n    }`,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [FileUploadStyle],\n    imports: [NgTemplateOutlet, Badge, ButtonDirective, TimesIcon, Bind]\n})\nexport class FileContent extends BaseComponent {\n    _componentStyle = inject(FileUploadStyle);\n\n    $pcFileUpload = inject<FileUpload>(FILEUPLOAD_INSTANCE);\n\n    onRemove = output<FileContentRemoveEvent>();\n\n    files = input<File[]>();\n\n    badgeSeverity = input<BadgeSeverity>('warn');\n\n    badgeValue = input<string>();\n\n    previewWidth = input<number>(50);\n\n    fileRemoveIconTemplate = input<TemplateRef<unknown>>();\n\n    onRemoveClick(event: Event, index: number) {\n        this.onRemove.emit({ event, index });\n    }\n\n    getRemoveIconContext(iconClass: string, file: File, index: number): FileRemoveIconTemplateContext {\n        return { class: iconClass, file, index };\n    }\n\n    formatSize(bytes: number) {\n        const k = 1024;\n        const dm = 3;\n        const sizes = this.translate(TranslationKeys.FILE_SIZE_TYPES);\n\n        if (bytes === 0) {\n            return `0 ${sizes[0]}`;\n        }\n\n        const i = Math.floor(Math.log(bytes) / Math.log(k));\n        const formattedSize = (bytes / Math.pow(k, i)).toFixed(dm);\n\n        return `${formattedSize} ${sizes[i]}`;\n    }\n}\n","import { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\nimport { HttpClient, HttpEvent, HttpEventType, HttpHeaders } from '@angular/common/http';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, effect, ElementRef, inject, input, NgModule, numberAttribute, output, signal, TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { addClass, removeClass } from '@primeuix/utils';\nimport { BlockableUI, SharedModule, TranslationKeys } from 'primeng/api';\nimport { BaseComponent, PARENT_INSTANCE } from 'primeng/basecomponent';\nimport { Bind } from 'primeng/bind';\nimport { ButtonDirective } from 'primeng/button';\nimport type { ButtonDirectiveOptions } from 'primeng/types/button';\nimport { Plus as PlusIcon } from '@primeicons/angular/plus';\nimport { Times as TimesIcon } from '@primeicons/angular/times';\nimport { Upload as UploadIcon } from '@primeicons/angular/upload';\nimport { Message } from 'primeng/message';\nimport { ProgressBar } from 'primeng/progressbar';\nimport type { CSSProperties } from 'primeng/types/shared';\nimport { VoidListener } from 'primeng/ts-helpers';\nimport {\n    FileBeforeUploadEvent,\n    FileContentRemoveEvent,\n    FileProgressEvent,\n    FileRemoveEvent,\n    FileSelectEvent,\n    FileSendEvent,\n    FileUploadContentTemplateContext,\n    FileUploadErrorEvent,\n    FileUploadEvent,\n    FileUploadFileLabelTemplateContext,\n    FileUploadFileTemplateContext,\n    FileUploadHandlerEvent,\n    FileUploadHeaderTemplateContext,\n    FileUploadMessage,\n    FileUploadPassThrough,\n    RemoveUploadedFileEvent\n} from 'primeng/types/fileupload';\nimport { Subscription } from 'rxjs';\nimport { FileContent } from './file-content';\nimport { FILEUPLOAD_INSTANCE } from './fileupload-token';\nimport { FileUploadStyle } from './style/fileuploadstyle';\n\n/**\n * FileUpload is an advanced uploader with dragdrop support, multi file uploads, auto uploading, progress tracking and validations.\n * @group Components\n */\n@Component({\n    selector: 'p-fileupload',\n    standalone: true,\n    imports: [NgTemplateOutlet, ButtonDirective, ProgressBar, Message, PlusIcon, UploadIcon, TimesIcon, SharedModule, FileContent, Bind],\n    template: `\n        @if (isAdvancedMode()) {\n            <div [class]=\"cn(cx('root'), styleClass())\" [style]=\"style()\" [pBind]=\"ptm('root')\">\n                <input [attr.aria-label]=\"browseFilesLabel\" #advancedfileinput type=\"file\" (change)=\"onFileSelect($event)\" [multiple]=\"multiple()\" [accept]=\"accept()\" [disabled]=\"chooseButtonDisabled()\" [attr.title]=\"''\" [pBind]=\"ptm('input')\" />\n                <div [class]=\"cx('header')\" [pBind]=\"ptm('header')\">\n                    @if (!headerTemplate()) {\n                        <button\n                            type=\"button\"\n                            [pButton]=\"chooseButtonProps()\"\n                            [disabled]=\"chooseButtonDisabled()\"\n                            [class]=\"cn(cx('pcChooseButton'), chooseStyleClass())\"\n                            [pButtonPT]=\"ptm('pcChooseButton')\"\n                            [pButtonUnstyled]=\"unstyled()\"\n                            (focus)=\"onFocus()\"\n                            (blur)=\"onBlur()\"\n                            (click)=\"choose()\"\n                            (keydown.enter)=\"choose()\"\n                        >\n                            @if (chooseIcon()) {\n                                <span [class]=\"chooseIcon()\" [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n                            } @else {\n                                @if (!chooseIconTemplate()) {\n                                    <svg data-p-icon=\"plus\" [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n                                } @else {\n                                    <span [attr.aria-label]=\"true\" [pBind]=\"ptm('pcChooseButton')?.icon\">\n                                        <ng-container *ngTemplateOutlet=\"chooseIconTemplate()\"></ng-container>\n                                    </span>\n                                }\n                            }\n                            {{ chooseButtonLabel }}\n                        </button>\n\n                        @if (showUploadBtn()) {\n                            <button\n                                type=\"button\"\n                                [pButton]=\"uploadButtonProps()\"\n                                [disabled]=\"uploadButtonDisabled()\"\n                                [class]=\"cn(cx('pcUploadButton'), uploadStyleClass())\"\n                                [pButtonPT]=\"ptm('pcUploadButton')\"\n                                [pButtonUnstyled]=\"unstyled()\"\n                                (click)=\"upload()\"\n                            >\n                                @if (uploadIcon()) {\n                                    <span [class]=\"uploadIcon()\" [attr.aria-hidden]=\"true\" [pBind]=\"ptm('pcUploadButton')?.icon\"></span>\n                                } @else {\n                                    @if (!uploadIconTemplate()) {\n                                        <svg data-p-icon=\"upload\" [pBind]=\"ptm('pcUploadButton')?.icon\" />\n                                    } @else {\n                                        <span [attr.aria-hidden]=\"true\" [pBind]=\"ptm('pcUploadButton')?.icon\">\n                                            <ng-container *ngTemplateOutlet=\"uploadIconTemplate()\"></ng-container>\n                                        </span>\n                                    }\n                                }\n                                {{ uploadButtonLabel }}\n                            </button>\n                        }\n                        @if (showCancelBtn()) {\n                            <button\n                                type=\"button\"\n                                [pButton]=\"cancelButtonProps()\"\n                                [disabled]=\"cancelButtonDisabled()\"\n                                [class]=\"cn(cx('pcCancelButton'), cancelStyleClass())\"\n                                [pButtonPT]=\"ptm('pcCancelButton')\"\n                                [pButtonUnstyled]=\"unstyled()\"\n                                (click)=\"clear()\"\n                            >\n                                @if (cancelIcon()) {\n                                    <span [class]=\"cancelIcon()\" [pBind]=\"ptm('pcCancelButton')?.icon\"></span>\n                                } @else {\n                                    @if (!cancelIconTemplate()) {\n                                        <svg data-p-icon=\"times\" [attr.aria-hidden]=\"true\" [pBind]=\"ptm('pcCancelButton')?.icon\" />\n                                    } @else {\n                                        <span [attr.aria-hidden]=\"true\" [pBind]=\"ptm('pcCancelButton')?.icon\">\n                                            <ng-container *ngTemplateOutlet=\"cancelIconTemplate()\"></ng-container>\n                                        </span>\n                                    }\n                                }\n                                {{ cancelButtonLabel }}\n                            </button>\n                        }\n                    }\n                    <ng-container *ngTemplateOutlet=\"headerTemplate(); context: headerTemplateContext\"></ng-container>\n                    <ng-container *ngTemplateOutlet=\"toolbarTemplate()\"></ng-container>\n                </div>\n                <div #content [class]=\"cx('content')\" (dragenter)=\"onDragEnter($event)\" (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\" [pBind]=\"ptm('content')\">\n                    @if (contentTemplate()) {\n                        <ng-container *ngTemplateOutlet=\"contentTemplate(); context: contentTemplateContext\"></ng-container>\n                    } @else {\n                        @if (hasFiles()) {\n                            <p-progressbar [value]=\"progress()\" [showValue]=\"false\" [pt]=\"ptm('pcProgressBar')\"></p-progressbar>\n                        }\n                        @for (message of msgs(); track $index) {\n                            <p-message [severity]=\"message.severity\" [pt]=\"ptm('pcMessage')\" [unstyled]=\"unstyled()\">{{ message.text }}</p-message>\n                        }\n\n                        @if (hasFiles()) {\n                            <div [class]=\"cx('fileList')\" [pBind]=\"ptm('fileList')\">\n                                @if (fileTemplate()) {\n                                    @for (file of files; track file.name) {\n                                        <ng-container *ngTemplateOutlet=\"fileTemplate(); context: getFileTemplateContext(file)\"></ng-container>\n                                    }\n                                } @else {\n                                    <div pFileContent [unstyled]=\"unstyled()\" [files]=\"files\" (onRemove)=\"onRemoveClick($event)\" [badgeValue]=\"pendingLabel\" [previewWidth]=\"previewWidth()\" [fileRemoveIconTemplate]=\"cancelIconTemplate()\"></div>\n                                }\n                            </div>\n                        }\n                        @if (hasUploadedFiles()) {\n                            <div [class]=\"cx('fileList')\" [pBind]=\"ptm('fileList')\">\n                                @if (fileTemplate()) {\n                                    @for (file of uploadedFiles(); track file.name) {\n                                        <ng-container *ngTemplateOutlet=\"fileTemplate(); context: getFileTemplateContext(file)\"></ng-container>\n                                    }\n                                } @else {\n                                    <div\n                                        pFileContent\n                                        [unstyled]=\"unstyled()\"\n                                        [files]=\"uploadedFiles()\"\n                                        (onRemove)=\"onRemoveUploadedFileClick($event)\"\n                                        [badgeValue]=\"completedLabel()\"\n                                        badgeSeverity=\"success\"\n                                        [previewWidth]=\"previewWidth()\"\n                                        [fileRemoveIconTemplate]=\"cancelIconTemplate()\"\n                                    ></div>\n                                }\n                            </div>\n                        }\n                    }\n                    @if (showEmpty()) {\n                        <ng-container *ngTemplateOutlet=\"emptyTemplate()\" [pBind]=\"ptm('empty')\"></ng-container>\n                    }\n                </div>\n            </div>\n        }\n        @if (isBasicMode()) {\n            <div [class]=\"cn(cx('root'), styleClass())\" [pBind]=\"ptm('root')\">\n                @for (message of msgs(); track $index) {\n                    <p-message [severity]=\"message.severity\" [pt]=\"ptm('pcMessage')\" [unstyled]=\"unstyled()\">{{ message.text }}</p-message>\n                }\n\n                <div [class]=\"cx('basicContent')\" [pBind]=\"ptm('basicContent')\">\n                    <button\n                        type=\"button\"\n                        [pButton]=\"chooseButtonProps()\"\n                        [disabled]=\"disabled()\"\n                        [class]=\"cn(cx('pcChooseButton'), chooseStyleClass())\"\n                        [style]=\"style()\"\n                        [pButtonPT]=\"ptm('pcChooseButton')\"\n                        [pButtonUnstyled]=\"unstyled()\"\n                        (click)=\"onBasicUploaderClick()\"\n                        (keydown)=\"onBasicKeydown($event)\"\n                    >\n                        @if (hasFiles() && !auto()) {\n                            @if (uploadIcon()) {\n                                <span [class]=\"cn('p-button-icon p-button-icon-left', uploadIcon())\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n                            } @else {\n                                @if (!uploadIconTemplate()) {\n                                    <svg data-p-icon=\"upload\" [class]=\"'p-button-icon p-button-icon-left'\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n                                } @else {\n                                    <span class=\"p-button-icon p-button-icon-left\" [pBind]=\"ptm('pcChooseButton')?.icon\">\n                                        <ng-container *ngTemplateOutlet=\"uploadIconTemplate()\"></ng-container>\n                                    </span>\n                                }\n                            }\n                        } @else {\n                            @if (chooseIcon()) {\n                                <span [class]=\"cn('p-button-icon p-button-icon-left pi', chooseIcon())\" [pBind]=\"ptm('pcChooseButton')?.icon\"></span>\n                            } @else {\n                                @if (!chooseIconTemplate()) {\n                                    <svg data-p-icon=\"plus\" [pBind]=\"ptm('pcChooseButton')?.icon\" />\n                                } @else {\n                                    <ng-container *ngTemplateOutlet=\"chooseIconTemplate()\"></ng-container>\n                                }\n                            }\n                        }\n                        {{ chooseButtonLabel }}\n                    </button>\n                    <input\n                        [attr.aria-label]=\"browseFilesLabel\"\n                        #basicfileinput\n                        type=\"file\"\n                        [accept]=\"accept()\"\n                        [multiple]=\"multiple()\"\n                        [disabled]=\"disabled()\"\n                        (change)=\"onFileSelect($event)\"\n                        (focus)=\"onFocus()\"\n                        (blur)=\"onBlur()\"\n                        [pBind]=\"ptm('input')\"\n                    />\n                    @if (!auto()) {\n                        @if (!fileLabelTemplate()) {\n                            <span>\n                                {{ basicFileChosenLabel() }}\n                            </span>\n                        } @else {\n                            <ng-container *ngTemplateOutlet=\"fileLabelTemplate(); context: fileLabelTemplateContext\"></ng-container>\n                        }\n                    }\n                </div>\n            </div>\n        }\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [FileUploadStyle, { provide: FILEUPLOAD_INSTANCE, useExisting: FileUpload }, { provide: PARENT_INSTANCE, useExisting: FileUpload }],\n    hostDirectives: [Bind]\n})\nexport class FileUpload extends BaseComponent<FileUploadPassThrough> implements BlockableUI {\n    componentName = 'FileUpload';\n\n    bindDirectiveInstance = inject(Bind, { self: true });\n\n    onAfterViewChecked() {\n        this.bindDirectiveInstance.setAttrs(this.ptm('host'));\n    }\n\n    /**\n     * Name of the request parameter to identify the files at backend.\n     * @group Props\n     */\n    name = input<string>();\n    /**\n     * Remote url to upload the files.\n     * @group Props\n     */\n    url = input<string>();\n    /**\n     * HTTP method to send the files to the url such as \"post\" and \"put\".\n     * @group Props\n     */\n    method = input<'post' | 'put'>('post');\n    /**\n     * Used to select multiple files at once from file dialog.\n     * @group Props\n     */\n    multiple = input(false, { transform: booleanAttribute });\n    /**\n     * Comma-separated list of pattern to restrict the allowed file types. Can be any combination of either the MIME types (such as \"image/*\") or the file extensions (such as \".jpg\").\n     * @group Props\n     */\n    accept = input<string>();\n    /**\n     * Disables the upload functionality.\n     * @group Props\n     */\n    disabled = input(false, { transform: booleanAttribute });\n    /**\n     * When enabled, upload begins automatically after selection is completed.\n     * @group Props\n     */\n    auto = input(false, { transform: booleanAttribute });\n    /**\n     * Cross-site Access-Control requests should be made using credentials such as cookies, authorization headers or TLS client certificates.\n     * @group Props\n     */\n    withCredentials = input(false, { transform: booleanAttribute });\n    /**\n     * Maximum file size allowed in bytes.\n     * @group Props\n     */\n    maxFileSize = input<number, unknown>(undefined, { transform: numberAttribute });\n    /**\n     * Summary message of the invalid file size.\n     * @group Props\n     */\n    invalidFileSizeMessageSummary = input('{0}: Invalid file size, ');\n    /**\n     * Detail message of the invalid file size.\n     * @group Props\n     */\n    invalidFileSizeMessageDetail = input('maximum upload size is {0}.');\n    /**\n     * Summary message of the invalid file type.\n     * @group Props\n     */\n    invalidFileTypeMessageSummary = input('{0}: Invalid file type, ');\n    /**\n     * Detail message of the invalid file type.\n     * @group Props\n     */\n    invalidFileTypeMessageDetail = input('allowed file types: {0}.');\n    /**\n     * Detail message of the invalid file type.\n     * @group Props\n     */\n    invalidFileLimitMessageDetail = input('limit is {0} at most.');\n    /**\n     * Summary message of the invalid file type.\n     * @group Props\n     */\n    invalidFileLimitMessageSummary = input('Maximum number of files exceeded, ');\n    /**\n     * Inline style of the element.\n     * @group Props\n     */\n    style = input<CSSProperties>();\n    /**\n     * Class of the element.\n     * @group Props\n     */\n    styleClass = input<string>();\n    /**\n     * Width of the image thumbnail in pixels.\n     * @group Props\n     */\n    previewWidth = input(50, { transform: numberAttribute });\n    /**\n     * Label of the choose button. Defaults to PrimeNG Locale configuration.\n     * @group Props\n     */\n    chooseLabel = input<string>();\n    /**\n     * Label of the upload button. Defaults to PrimeNG Locale configuration.\n     * @group Props\n     */\n    uploadLabel = input<string>();\n    /**\n     * Label of the cancel button. Defaults to PrimeNG Locale configuration.\n     * @group Props\n     */\n    cancelLabel = input<string>();\n    /**\n     * Icon of the choose button.\n     * @group Props\n     */\n    chooseIcon = input<string>();\n    /**\n     * Icon of the upload button.\n     * @group Props\n     */\n    uploadIcon = input<string>();\n    /**\n     * Icon of the cancel button.\n     * @group Props\n     */\n    cancelIcon = input<string>();\n    /**\n     * Whether to show the upload button.\n     * @group Props\n     */\n    showUploadButton = input(true, { transform: booleanAttribute });\n    /**\n     * Whether to show the cancel button.\n     * @group Props\n     */\n    showCancelButton = input(true, { transform: booleanAttribute });\n    /**\n     * Defines the UI of the component.\n     * @group Props\n     */\n    mode = input<'advanced' | 'basic'>('advanced');\n    /**\n     * HttpHeaders class represents the header configuration options for an HTTP request.\n     * @group Props\n     */\n    headers = input<HttpHeaders>();\n    /**\n     * Whether to use the default upload or a manual implementation defined in uploadHandler callback. Defaults to PrimeNG Locale configuration.\n     * @group Props\n     */\n    customUpload = input(false, { transform: booleanAttribute });\n    /**\n     * Maximum number of files that can be uploaded.\n     * @group Props\n     */\n    fileLimit = input<number, unknown>(undefined, { transform: numberAttribute });\n    /**\n     * Style class of the upload button.\n     * @group Props\n     */\n    uploadStyleClass = input<string>();\n    /**\n     * Style class of the cancel button.\n     * @group Props\n     */\n    cancelStyleClass = input<string>();\n    /**\n     * Style class of the remove button.\n     * @group Props\n     */\n    removeStyleClass = input<string>();\n    /**\n     * Style class of the choose button.\n     * @group Props\n     */\n    chooseStyleClass = input<string>();\n    /**\n     * Configuration object forwarded to the choose button.\n     * @group Props\n     */\n    chooseButtonProps = input<ButtonDirectiveOptions>();\n    /**\n     * Configuration object forwarded to the upload button.\n     * @group Props\n     */\n    uploadButtonProps = input<ButtonDirectiveOptions>({ severity: 'secondary' });\n    /**\n     * Configuration object forwarded to the cancel button.\n     * @group Props\n     */\n    cancelButtonProps = input<ButtonDirectiveOptions>({ severity: 'secondary' });\n    /**\n     * Callback to invoke before file upload is initialized.\n     * @param {FileBeforeUploadEvent} event - Custom upload event.\n     * @group Emits\n     */\n    onBeforeUpload = output<FileBeforeUploadEvent>();\n    /**\n     * An event indicating that the request was sent to the server. Useful when a request may be retried multiple times, to distinguish between retries on the final event stream.\n     * @param {FileSendEvent} event - Custom send event.\n     * @group Emits\n     */\n    onSend = output<FileSendEvent>();\n    /**\n     * Callback to invoke when file upload is complete.\n     * @param {FileUploadEvent} event - Custom upload event.\n     * @group Emits\n     */\n    onUpload = output<FileUploadEvent>();\n    /**\n     * Callback to invoke if file upload fails.\n     * @param {FileUploadErrorEvent} event - Custom error event.\n     * @group Emits\n     */\n    onError = output<FileUploadErrorEvent>();\n    /**\n     * Callback to invoke when files in queue are removed without uploading using clear all button.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    onClear = output<void>();\n    /**\n     * Callback to invoke when a file is removed without uploading using clear button of a file.\n     * @param {FileRemoveEvent} event - Remove event.\n     * @group Emits\n     */\n    onRemove = output<FileRemoveEvent>();\n    /**\n     * Callback to invoke when files are selected.\n     * @param {FileSelectEvent} event - Select event.\n     * @group Emits\n     */\n    onSelect = output<FileSelectEvent>();\n    /**\n     * Callback to invoke when files are being uploaded.\n     * @param {FileProgressEvent} event - Progress event.\n     * @group Emits\n     */\n    onProgress = output<FileProgressEvent>();\n    /**\n     * Callback to invoke in custom upload mode to upload the files manually.\n     * @param {FileUploadHandlerEvent} event - Upload handler event.\n     * @group Emits\n     */\n    uploadHandler = output<FileUploadHandlerEvent>();\n    /**\n     * This event is triggered if an error occurs while loading an image file.\n     * @param {Event} event - Browser event.\n     * @group Emits\n     */\n    onImageError = output<Event>();\n    /**\n     * This event is triggered if an error occurs while loading an image file.\n     * @param {RemoveUploadedFileEvent} event - Remove event.\n     * @group Emits\n     */\n    onRemoveUploadedFile = output<RemoveUploadedFileEvent>();\n\n    /**\n     * Custom file template.\n     * @group Templates\n     */\n    fileTemplate = contentChild<TemplateRef<void>>('file', { descendants: false });\n\n    /**\n     * Custom header template.\n     * @param {FileUploadHeaderTemplateContext} context - header template context.\n     * @group Templates\n     */\n    headerTemplate = contentChild<TemplateRef<FileUploadHeaderTemplateContext>>('header', { descendants: false });\n\n    /**\n     * Custom content template.\n     * @param {FileUploadContentTemplateContext} context - content template context.\n     * @group Templates\n     */\n    contentTemplate = contentChild<TemplateRef<FileUploadContentTemplateContext>>('content', { descendants: false });\n\n    /**\n     * Custom toolbar template.\n     * @group Templates\n     */\n    toolbarTemplate = contentChild<TemplateRef<void>>('toolbar', { descendants: false });\n\n    /**\n     * Custom choose icon template.\n     * @group Templates\n     */\n    chooseIconTemplate = contentChild<TemplateRef<void>>('chooseicon', { descendants: false });\n\n    /**\n     * Custom file label template.\n     * @param {FileUploadFileLabelTemplateContext} context - file label template context.\n     * @group Templates\n     */\n    fileLabelTemplate = contentChild<TemplateRef<FileUploadFileLabelTemplateContext>>('filelabel', { descendants: false });\n\n    /**\n     * Custom upload icon template.\n     * @group Templates\n     */\n    uploadIconTemplate = contentChild<TemplateRef<void>>('uploadicon', { descendants: false });\n\n    /**\n     * Custom cancel icon template.\n     * @group Templates\n     */\n    cancelIconTemplate = contentChild<TemplateRef<void>>('cancelicon', { descendants: false });\n\n    /**\n     * Custom empty state template.\n     * @group Templates\n     */\n    emptyTemplate = contentChild<TemplateRef<void>>('empty', { descendants: false });\n\n    isAdvancedMode = computed(() => this.mode() === 'advanced');\n\n    isBasicMode = computed(() => this.mode() === 'basic');\n\n    showUploadBtn = computed(() => !this.auto() && this.showUploadButton());\n\n    showCancelBtn = computed(() => !this.auto() && this.showCancelButton());\n\n    chooseButtonDisabled = computed(() => this.disabled() || this.isChooseDisabled());\n\n    uploadButtonDisabled = computed(() => !this.hasFiles() || this.isFileLimitExceeded());\n\n    cancelButtonDisabled = computed(() => !this.hasFiles() || this.uploading());\n\n    showEmpty = computed(() => !!this.emptyTemplate() && !this.hasFiles() && !this.hasUploadedFiles());\n\n    get headerTemplateContext(): FileUploadHeaderTemplateContext {\n        return {\n            $implicit: this.files,\n            uploadedFiles: this.uploadedFiles(),\n            chooseCallback: this.choose.bind(this),\n            clearCallback: this.clear.bind(this),\n            uploadCallback: this.upload.bind(this)\n        };\n    }\n\n    get contentTemplateContext(): FileUploadContentTemplateContext {\n        return {\n            $implicit: this.files,\n            uploadedFiles: this.uploadedFiles(),\n            chooseCallback: this.choose.bind(this),\n            clearCallback: this.clear.bind(this),\n            removeUploadedFileCallback: this.removeUploadedFile.bind(this),\n            removeFileCallback: this.remove.bind(this),\n            progress: this.progress(),\n            messages: this.msgs()\n        };\n    }\n\n    get fileLabelTemplateContext(): FileUploadFileLabelTemplateContext {\n        return {\n            $implicit: this.files\n        };\n    }\n\n    advancedFileInput = viewChild<ElementRef>('advancedfileinput');\n\n    basicFileInput = viewChild<ElementRef>('basicfileinput');\n\n    contentEl = viewChild<ElementRef>('content');\n\n    /**\n     * Files input.\n     * @group Props\n     */\n    filesInput = input<File[]>([], { alias: 'files' });\n\n    get files(): File[] {\n        return this._files();\n    }\n\n    set files(value: File[]) {\n        this._files.set(value);\n    }\n\n    public get basicButtonLabel(): string {\n        if (this.auto() || !this.hasFiles()) {\n            return this.chooseLabel() as string;\n        }\n\n        return this.uploadLabel() ?? this.files[0].name;\n    }\n\n    public _files = signal<File[]>([]);\n\n    public progress = signal(0);\n\n    public dragHighlight = signal(false);\n\n    public msgs = signal<FileUploadMessage[]>([]);\n\n    public uploadedFileCount: number = 0;\n\n    focus = signal(false);\n\n    uploading = signal(false);\n\n    duplicateIEEvent: boolean | undefined; // flag to recognize duplicate onchange event for file input\n\n    translationSubscription: Subscription | undefined;\n\n    dragOverListener: VoidListener;\n\n    public uploadedFiles = signal<File[]>([]);\n\n    sanitizer = inject(DomSanitizer);\n\n    http = inject(HttpClient);\n\n    _componentStyle = inject(FileUploadStyle);\n\n    constructor() {\n        super();\n\n        effect(() => {\n            const inputFiles = this.filesInput();\n            if (inputFiles && inputFiles.length > 0) {\n                const newFiles: File[] = [];\n                for (let i = 0; i < inputFiles.length; i++) {\n                    let file = inputFiles[i];\n                    if (this.validate(file)) {\n                        if (this.isImage(file)) {\n                            (file as any).objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(inputFiles[i]));\n                        }\n                        newFiles.push(inputFiles[i]);\n                    }\n                }\n                this._files.set(newFiles);\n            }\n        });\n    }\n\n    onInit() {\n        this.translationSubscription = this.config.translationObserver.subscribe(() => {\n            this.cd.markForCheck();\n        });\n    }\n\n    onAfterViewInit() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (this.mode() === 'advanced') {\n                const contentEl = this.contentEl();\n                if (contentEl) {\n                    this.dragOverListener = this.renderer.listen(contentEl.nativeElement, 'dragover', this.onDragOver.bind(this));\n                }\n            }\n        }\n    }\n\n    basicFileChosenLabel() {\n        if (this.auto()) return this.chooseButtonLabel;\n        else if (this.hasFiles()) {\n            if (this.files && this.files.length === 1) return this.files[0].name;\n\n            return this.translate('fileChosenMessage')?.replace('{0}', this.files.length.toString());\n        }\n\n        return this.translate('noFileChosenMessage') || '';\n    }\n\n    completedLabel() {\n        return this.translate('completed') || '';\n    }\n\n    choose() {\n        this.advancedFileInput()?.nativeElement.click();\n    }\n\n    onFileSelect(event: Event) {\n        if (event.type !== 'drop' && this.isIE11() && this.duplicateIEEvent) {\n            this.duplicateIEEvent = false;\n            return;\n        }\n\n        if (!this.multiple()) {\n            this.files = [];\n        }\n\n        this.msgs.set([]);\n        this.files = this.files || [];\n        let files = (event as DragEvent).dataTransfer ? (event as DragEvent).dataTransfer!.files : (event.target as HTMLInputElement).files!;\n\n        for (let i = 0; i < files.length; i++) {\n            let file = files[i];\n\n            if (!this.isFileSelected(file)) {\n                if (this.validate(file)) {\n                    if (this.isImage(file)) {\n                        (file as any).objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(files[i]));\n                    }\n\n                    this.files.push(files[i]);\n                }\n            }\n        }\n\n        this.files = [...this.files];\n        this.onSelect.emit({ originalEvent: event, files: files, currentFiles: this.files });\n\n        // this will check the fileLimit with the uploaded files\n        this.checkFileLimit(files);\n\n        if (this.hasFiles() && this.auto() && (this.mode() !== 'advanced' || !this.isFileLimitExceeded())) {\n            this.upload();\n        }\n\n        if (event.type !== 'drop' && this.isIE11()) {\n            this.clearIEInput();\n        } else {\n            this.clearInputElement();\n        }\n    }\n\n    isFileSelected(file: File): boolean {\n        for (let sFile of this.files) {\n            if (sFile.name + sFile.type + sFile.size === file.name + file.type + file.size) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    isIE11() {\n        if (isPlatformBrowser(this.platformId)) {\n            return !!(this.document.defaultView as any)['MSInputMethodContext'] && !!(this.document as any)['documentMode'];\n        }\n    }\n\n    validate(file: File): boolean {\n        const acceptVal = this.accept();\n        if (acceptVal && !this.isFileTypeValid(file)) {\n            const text = `${this.invalidFileTypeMessageSummary().replace('{0}', file.name)} ${this.invalidFileTypeMessageDetail().replace('{0}', acceptVal)}`;\n            this.msgs.update((msgs) => [...msgs, { severity: 'error', text }]);\n            return false;\n        }\n\n        const maxFileSizeVal = this.maxFileSize();\n        if (maxFileSizeVal && file.size > maxFileSizeVal) {\n            const text = `${this.invalidFileSizeMessageSummary().replace('{0}', file.name)} ${this.invalidFileSizeMessageDetail().replace('{0}', this.formatSize(maxFileSizeVal))}`;\n            this.msgs.update((msgs) => [...msgs, { severity: 'error', text }]);\n            return false;\n        }\n\n        return true;\n    }\n\n    private isFileTypeValid(file: File): boolean {\n        const acceptVal = this.accept();\n        let acceptableTypes = acceptVal?.split(',').map((type) => type.trim());\n        for (let type of acceptableTypes!) {\n            let acceptable = this.isWildcard(type) ? this.getTypeClass(file.type) === this.getTypeClass(type) : file.type == type || this.getFileExtension(file).toLowerCase() === type.toLowerCase();\n\n            if (acceptable) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    getTypeClass(fileType: string): string {\n        return fileType.substring(0, fileType.indexOf('/'));\n    }\n\n    isWildcard(fileType: string): boolean {\n        return fileType.indexOf('*') !== -1;\n    }\n\n    getFileExtension(file: File): string {\n        return '.' + file.name.split('.').pop();\n    }\n\n    isImage(file: File): boolean {\n        return /^image\\//.test(file.type);\n    }\n\n    onImageLoad(img: HTMLImageElement) {\n        window.URL.revokeObjectURL(img.src);\n    }\n    /**\n     * Uploads the selected files.\n     * @group Method\n     */\n    uploader() {\n        if (this.customUpload()) {\n            const fileLimitVal = this.fileLimit();\n            if (fileLimitVal) {\n                this.uploadedFileCount += this.files.length;\n            }\n\n            this.uploadHandler.emit({\n                files: this.files\n            });\n        } else {\n            this.uploading.set(true);\n            this.msgs.set([]);\n            let formData = new FormData();\n\n            this.onBeforeUpload.emit({\n                formData: formData\n            });\n\n            const nameVal = this.name();\n            for (let i = 0; i < this.files.length; i++) {\n                formData.append(nameVal!, this.files[i], this.files[i].name);\n            }\n\n            this.http\n                .request(this.method(), this.url() as string, {\n                    body: formData,\n                    headers: this.headers(),\n                    reportProgress: true,\n                    observe: 'events',\n                    withCredentials: this.withCredentials()\n                })\n                .subscribe({\n                    next: (event: HttpEvent<any>) => {\n                        switch (event.type) {\n                            case HttpEventType.Sent:\n                                this.onSend.emit({\n                                    originalEvent: event,\n                                    formData: formData\n                                });\n                                break;\n                            case HttpEventType.Response:\n                                this.uploading.set(false);\n                                this.progress.set(0);\n\n                                if (event['status'] >= 200 && event['status'] < 300) {\n                                    const fileLimitVal = this.fileLimit();\n                                    if (fileLimitVal) {\n                                        this.uploadedFileCount += this.files.length;\n                                    }\n\n                                    this.onUpload.emit({ originalEvent: event, files: this.files });\n                                } else {\n                                    this.onError.emit({ files: this.files });\n                                }\n                                this.uploadedFiles.update((files) => [...files, ...this.files]);\n                                this.clear();\n                                break;\n                            case HttpEventType.UploadProgress: {\n                                if (event['loaded']) {\n                                    this.progress.set(Math.round((event['loaded'] * 100) / event['total']!));\n                                }\n\n                                this.onProgress.emit({ originalEvent: event, progress: this.progress() });\n                                break;\n                            }\n                        }\n                    },\n                    error: (error: ErrorEvent) => {\n                        this.uploading.set(false);\n                        this.onError.emit({ files: this.files, error: error });\n                    }\n                });\n        }\n    }\n    onRemoveClick(e: FileContentRemoveEvent) {\n        const { event, index } = e;\n        if (this.hasFiles()) {\n            this.remove(event, index);\n        }\n    }\n    onRemoveUploadedFileClick(e: Pick<FileContentRemoveEvent, 'index'>) {\n        const { index } = e;\n        if (this.hasUploadedFiles()) {\n            this.removeUploadedFile(index);\n        }\n    }\n    /**\n     * Clears the files list.\n     * @group Method\n     */\n    clear() {\n        this.files = [];\n        this.onClear.emit();\n        this.clearInputElement();\n        this.msgs.set([]);\n    }\n    /**\n     * Removes a single file.\n     * @param {Event} event - Browser event.\n     * @param {Number} index - Index of the file.\n     * @group Method\n     */\n    remove(event: Event, index: number) {\n        this.clearInputElement();\n        this.onRemove.emit({ originalEvent: event, file: this.files[index] });\n        this.files.splice(index, 1);\n        this.files = [...this.files];\n        this.checkFileLimit(this.files);\n    }\n    /**\n     * Removes uploaded file.\n     * @param {Number} index - Index of the file to be removed.\n     * @group Method\n     */\n    removeUploadedFile(index: number) {\n        const currentFiles = this.uploadedFiles();\n        const removedFile = currentFiles[index];\n        this.uploadedFiles.set(currentFiles.filter((_, i) => i !== index));\n        this.onRemoveUploadedFile.emit({ file: removedFile, files: this.uploadedFiles() });\n    }\n\n    isFileLimitExceeded() {\n        const isAutoMode = this.auto();\n        const totalFileCount = isAutoMode ? this.files.length : this.files.length + this.uploadedFileCount;\n        const fileLimitVal = this.fileLimit();\n\n        if (fileLimitVal && fileLimitVal <= totalFileCount && this.focus()) {\n            this.focus.set(false);\n        }\n\n        return fileLimitVal && fileLimitVal < totalFileCount;\n    }\n\n    isChooseDisabled() {\n        const fileLimitVal = this.fileLimit();\n        if (this.auto()) {\n            return fileLimitVal && fileLimitVal <= this.files.length;\n        } else {\n            return fileLimitVal && fileLimitVal <= this.files.length + this.uploadedFileCount;\n        }\n    }\n\n    checkFileLimit(files: FileList | File[]) {\n        const fileLimitVal = this.fileLimit();\n        const currentMsgs = this.msgs();\n        const hasExistingValidationMessages = currentMsgs.length > 0 && fileLimitVal && fileLimitVal < files.length;\n\n        if (this.isFileLimitExceeded() || hasExistingValidationMessages) {\n            const text = `${this.invalidFileLimitMessageSummary().replace('{0}', (fileLimitVal as number).toString())} ${this.invalidFileLimitMessageDetail().replace('{0}', (fileLimitVal as number).toString())}`;\n            this.msgs.update((msgs) => [...msgs, { severity: 'error', text }]);\n        } else {\n            this.msgs.update((msgs) => msgs.filter((msg) => !msg.text.includes(this.invalidFileLimitMessageSummary())));\n        }\n    }\n\n    clearInputElement() {\n        const advancedInput = this.advancedFileInput();\n        if (advancedInput && advancedInput.nativeElement) {\n            advancedInput.nativeElement.value = '';\n        }\n\n        const basicInput = this.basicFileInput();\n        if (basicInput && basicInput.nativeElement) {\n            basicInput.nativeElement.value = '';\n        }\n    }\n\n    clearIEInput() {\n        const advancedInput = this.advancedFileInput();\n        if (advancedInput && advancedInput.nativeElement) {\n            this.duplicateIEEvent = true; //IE11 fix to prevent onFileChange trigger again\n            advancedInput.nativeElement.value = '';\n        }\n    }\n\n    hasFiles(): boolean {\n        return this.files && this.files.length > 0;\n    }\n\n    hasUploadedFiles() {\n        return this.uploadedFiles().length > 0;\n    }\n\n    getFileTemplateContext(file: File): FileUploadFileTemplateContext {\n        return { $implicit: file };\n    }\n\n    onDragEnter(e: DragEvent) {\n        if (!this.disabled()) {\n            e.stopPropagation();\n            e.preventDefault();\n        }\n    }\n\n    onDragOver(e: DragEvent) {\n        if (!this.disabled()) {\n            const contentEl = this.contentEl();\n            !this.$unstyled() && addClass(contentEl?.nativeElement, 'p-fileupload-highlight');\n            contentEl?.nativeElement.setAttribute('data-p-highlight', true);\n            this.dragHighlight.set(true);\n            e.stopPropagation();\n            e.preventDefault();\n        }\n    }\n\n    onDragLeave(_event: DragEvent) {\n        if (!this.disabled()) {\n            const contentEl = this.contentEl();\n            !this.$unstyled() && removeClass(contentEl?.nativeElement, 'p-fileupload-highlight');\n            contentEl?.nativeElement.setAttribute('data-p-highlight', false);\n        }\n    }\n\n    onDrop(event: DragEvent) {\n        if (!this.disabled()) {\n            const contentEl = this.contentEl();\n            !this.$unstyled() && removeClass(contentEl?.nativeElement, 'p-fileupload-highlight');\n            contentEl?.nativeElement.setAttribute('data-p-highlight', false);\n            event.stopPropagation();\n            event.preventDefault();\n\n            let files = event.dataTransfer ? event.dataTransfer.files : (event.target as HTMLInputElement).files;\n            let allowDrop = this.multiple() || (files && files.length === 1);\n\n            if (allowDrop) {\n                this.onFileSelect(event);\n            }\n        }\n    }\n\n    onFocus() {\n        this.focus.set(true);\n    }\n\n    onBlur() {\n        this.focus.set(false);\n    }\n\n    formatSize(bytes: number) {\n        const k = 1024;\n        const dm = 3;\n        const sizes = this.translate(TranslationKeys.FILE_SIZE_TYPES);\n\n        if (bytes === 0) {\n            return `0 ${sizes[0]}`;\n        }\n\n        const i = Math.floor(Math.log(bytes) / Math.log(k));\n        const formattedSize = (bytes / Math.pow(k, i)).toFixed(dm);\n\n        return `${formattedSize} ${sizes[i]}`;\n    }\n\n    upload() {\n        if (this.hasFiles()) this.uploader();\n    }\n\n    onBasicUploaderClick() {\n        this.basicFileInput()?.nativeElement.click();\n    }\n\n    onBasicKeydown(event: KeyboardEvent) {\n        switch (event.code) {\n            case 'Space':\n            case 'Enter':\n                this.onBasicUploaderClick();\n\n                event.preventDefault();\n                break;\n        }\n    }\n\n    imageError(event: Event) {\n        this.onImageError.emit(event);\n    }\n\n    getBlockableElement(): HTMLElement {\n        return this.el.nativeElement.children[0];\n    }\n\n    get chooseButtonLabel(): string {\n        return this.chooseLabel() || this.translate(TranslationKeys.CHOOSE);\n    }\n\n    get uploadButtonLabel(): string {\n        return this.uploadLabel() || this.translate(TranslationKeys.UPLOAD);\n    }\n\n    get cancelButtonLabel(): string {\n        return this.cancelLabel() || this.translate(TranslationKeys.CANCEL);\n    }\n\n    get browseFilesLabel(): string {\n        return this.translate(TranslationKeys.ARIA, TranslationKeys.BROWSE_FILES);\n    }\n\n    get pendingLabel() {\n        return this.translate(TranslationKeys.PENDING);\n    }\n\n    onDestroy() {\n        const contentEl = this.contentEl();\n        if (contentEl && contentEl.nativeElement) {\n            if (this.dragOverListener) {\n                this.dragOverListener();\n                this.dragOverListener = null;\n            }\n        }\n\n        if (this.translationSubscription) {\n            this.translationSubscription.unsubscribe();\n        }\n    }\n}\n\n@NgModule({\n    imports: [FileUpload, SharedModule],\n    exports: [FileUpload, SharedModule]\n})\nexport class FileUploadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["TimesIcon","PlusIcon","UploadIcon"],"mappings":"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"}