{"version":3,"file":"uipath-angular-components-ui-file-picker.mjs","sources":["../../../projects/angular/components/ui-file-picker/src/ui-input-file-drop-zone/ui-input-file-drop-zone.component.ts","../../../projects/angular/components/ui-file-picker/src/ui-input-file-drop-zone/ui-input-file-drop-zone.component.html","../../../projects/angular/components/ui-file-picker/src/ui-file-picker.intl.ts","../../../projects/angular/components/ui-file-picker/src/ui-file-picker.component.ts","../../../projects/angular/components/ui-file-picker/src/ui-file-picker.component.html","../../../projects/angular/components/ui-file-picker/src/uipath-angular-components-ui-file-picker.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    Output,\n    ViewChild,\n} from '@angular/core';\nimport {\n    FileReaderError,\n    UiFileDropZoneDirective,\n    sortAndFilter,\n} from '@uipath/angular/directives/ui-file-drop-zone';\nimport { Subject } from 'rxjs';\n\n@Component({\n    selector: 'ui-input-file-drop-zone',\n    templateUrl: './ui-input-file-drop-zone.component.html',\n    styleUrls: [ './ui-input-file-drop-zone.component.scss' ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [ CommonModule ],\n    hostDirectives: [{\n        directive: UiFileDropZoneDirective,\n        inputs: [ 'sortBy', 'accept', 'disabled: disableDropZone' ],\n        // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n        outputs: [ 'filesReceived', 'filesLoading', 'fileError' ],\n    }],\n})\nexport class UiInputFileDropZoneComponent implements OnDestroy {\n    @Input() single?: boolean;\n    // if not provided, input is removed from tab order and aria is disabled\n    @Input() ariaLabel?: string;\n    @Input() disabled?: boolean;\n    // key of File and '-' prefix for descending sort\n    @Input() sortBy?: string;\n    // comma-separated extension list, example: '.jpg,.png,.pdf'\n    @Input() set accept(value: string | undefined) {\n        if (value) {\n            this._accept = value.split(',')\n                .map(v => v.trim().toLowerCase())\n                .filter(v => !!v);\n        }\n    }\n    // disable UiFileDropZoneDirective, [disabled] component input will not also disable the directive\n    @Input() disableDropZone = false;\n\n    @Output() filesReceived = new EventEmitter<File[]>();\n    @Output() filesLoading = new EventEmitter<boolean>();\n    @Output() fileError = new EventEmitter<FileReaderError | null>();\n\n    @ViewChild('uploadInput', {\n        read: ElementRef,\n        static: false,\n    }) inputElement?: ElementRef;\n\n    protected _accept: string[] = [];\n    private _destroyed$ = new Subject<void>();\n\n    ngOnDestroy(): void {\n        this._destroyed$.next();\n        this._destroyed$.complete();\n    }\n\n    click() {\n        this.inputElement?.nativeElement.click();\n    }\n\n    onBrowseFiles($event: Event) {\n        const filesReceived = ($event.target as HTMLInputElement).files;\n        if (!filesReceived) {\n            return;\n        }\n\n        this.filesLoading.next(true);\n        const unsortedFiles: File[] = [];\n        for (let i = 0; i < filesReceived.length; i++) {\n            const file = filesReceived.item(i);\n            if (file?.size) {\n                unsortedFiles.push(file);\n            }\n        }\n\n        const sortedFiles = sortAndFilter(unsortedFiles, this.sortBy, this._accept);\n        this._emitFiles(sortedFiles);\n    }\n\n    protected _emitFiles(files: File[]) {\n        this.fileError.emit(null);\n        this.filesReceived.emit(files);\n        this.filesLoading.emit(false);\n        // force change callback on input to get called\n        // for consecutive selections of the same files\n        if (this.inputElement) {\n            this.inputElement.nativeElement.value = null;\n        }\n    }\n\n}\n","<ng-content></ng-content>\n<input #uploadInput\n       data-testid=\"file-input\"\n       type=\"file\"\n       [tabindex]=\"ariaLabel ? 0 : -1\"\n       [attr.aria-hidden]=\"ariaLabel === undefined\"\n       [attr.aria-label]=\"ariaLabel\"\n       [multiple]=\"!single\"\n       [accept]=\"accept\"\n       [disabled]=\"disabled\"\n       (change)=\"onBrowseFiles($event)\" />\n","import { Injectable } from '@angular/core';\nimport { of } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class UiFilePickerIntl {\n    clickUploadDragDrop$ = of('Click to upload or drag and drop');\n    deleteAll$ = of('Delete all');\n    fileName$ = of('File name');\n    size$ = of('Size');\n    type$ = of('Type');\n\n    deleteFile$ = (fileName: string) => of(`Delete file ${fileName}`);\n    errorReadingFiles$ = (directory: string, errorName: string, errorMsg: string) => of(`Error reading directory: ${directory}. ${errorName}: ${errorMsg}`);\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    ViewChild,\n} from '@angular/core';\nimport {\n    BehaviorSubject,\n    ReplaySubject,\n    Subject,\n} from 'rxjs';\nimport {\n    take,\n    takeUntil,\n} from 'rxjs/operators';\n\nimport {\n    getFileExtension,\n    sort,\n} from '@uipath/angular/utilities';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { UiGridModule } from '@uipath/angular/components/ui-grid';\n\nimport { UiPipeModule } from '@uipath/angular/pipes';\nimport {\n    UiFileDropZoneDirective,\n    FileReaderError,\n} from '@uipath/angular/directives/ui-file-drop-zone';\nimport { UiNgLetModule } from '@uipath/angular/directives/ui-ng-let';\nimport { UiFilePickerIntl } from './ui-file-picker.intl';\nimport { UiInputFileDropZoneComponent } from './ui-input-file-drop-zone/ui-input-file-drop-zone.component';\n\n@Component({\n    selector: 'ui-file-picker',\n    templateUrl: './ui-file-picker.component.html',\n    styleUrls: [ './ui-file-picker.component.scss' ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatButtonModule,\n        MatIconModule,\n        MatInputModule,\n        MatProgressSpinnerModule,\n        MatTooltipModule,\n\n        UiGridModule,\n        UiPipeModule,\n        UiNgLetModule,\n\n        UiFileDropZoneDirective,\n        UiInputFileDropZoneComponent,\n    ],\n})\nexport class UiFilePickerComponent implements OnInit, OnDestroy {\n\n    // comma-separated extension list, example: '.jpg,.png,.pdf'\n    @Input() accept?: string;\n    @Input() disabled?: boolean;\n    @Input() hideSummaryAfterFilesSelection?: boolean;\n    @Input() secondaryMessage?: string;\n    // key of File and '-' prefix for descending sort\n    @Input() sortBy?: string;\n    @Input() single?: boolean;\n\n    @Input() set files(files: File[]) {\n        if (files) {\n            this.displayedFiles$.next(files);\n        }\n    }\n\n    @Output() filesChanged = new EventEmitter<File[]>();\n\n    @HostBinding('class.ui-file-picker') cls = true;\n\n    @ViewChild('fileDropzone', { read: UiInputFileDropZoneComponent }) fileDropZone?: UiInputFileDropZoneComponent;\n    @ViewChild('deleteAll', { read: ElementRef }) deleteAllButton!: ElementRef;\n\n    files$ = new ReplaySubject<File[]>(1);\n    fileError$ = new BehaviorSubject<string | null>(null);\n    filesLoading$ = new BehaviorSubject<boolean>(false);\n    displayedFiles$ = new BehaviorSubject<File[]>([]);\n    deleteButtonSize = 0;\n\n    getFileExtension = getFileExtension;\n\n    private _destroyed$ = new Subject<void>();\n\n    constructor(\n        readonly intl: UiFilePickerIntl,\n    ) { }\n\n    ngOnInit(): void {\n        this.files$.pipe(\n            takeUntil(this._destroyed$),\n        ).subscribe(files => {\n            this.displayedFiles$.next(files);\n            this.filesChanged.emit(files);\n        });\n    }\n\n    ngOnDestroy(): void {\n        this._destroyed$.next();\n        this._destroyed$.complete();\n    }\n\n    addFiles(files: File[]): void {\n        const current = this.displayedFiles$.value;\n        const isFileAlreadyListed = (file: File) => current.find(existingFile => this._isSameFile(existingFile, file));\n        const unique = files.filter(f => !isFileAlreadyListed(f));\n        const all = current.concat(unique);\n        const sorted = this._sortFiles(all);\n\n        this.files$.next(sorted);\n    }\n\n    removeFile(file: File) {\n        const filteredFiles = this.displayedFiles$.value.filter(f => !this._isSameFile(f, file));\n        this.files$.next(filteredFiles);\n    }\n\n    clearAll() {\n        this.files$.next([]);\n    }\n\n    detectDeleteButtonSize() {\n        // this is needed to set minimum width on the \"Size\" grid column\n        // and stop it from being hidden by the delete all button\n        this.deleteButtonSize = this.deleteAllButton ?\n            this.deleteAllButton.nativeElement.getBoundingClientRect().width : 0;\n    }\n\n    onBrowseFilesClick() {\n        this.fileDropZone?.click();\n    }\n\n    displayLoadingIndicator(loading: boolean) {\n        this.filesLoading$.next(loading);\n    }\n\n    handleFileError(error: FileReaderError | null) {\n        if (error) {\n            this.intl.errorReadingFiles$(error.entryName, error.error, error.errorMessage)\n                .pipe(\n                    take(1),\n                ).subscribe(errorMessage => this.fileError$.next(errorMessage));\n        } else {\n            this.fileError$.next(null);\n        }\n    }\n\n    private _sortFiles(files: File[]) {\n        return this.sortBy ? sort(files, this.sortBy, false) : files;\n    }\n\n    private _isSameFile(file1: File, file2: File) {\n        return file1.name === file2.name &&\n            file1.size === file2.size;\n    }\n}\n","<ng-container *ngLet=\"{\n    files: (displayedFiles$ | async) ?? [],\n    filesLoading: filesLoading$ | async,\n    fileError: fileError$ | async\n} as state\">\n    <div uiFileDropZone\n         [accept]=\"accept\"\n         [disabled]=\"disabled\"\n         (filesReceived)=\"addFiles($event)\"\n         (filesLoading)=\"displayLoadingIndicator($event)\"\n         (fileError)=\"handleFileError($event)\"\n         class=\"upload-wrapper\"\n         [class.disabled]=\"!!disabled\">\n        <div *ngIf=\"!state.filesLoading && state.files.length > 0 && !hideSummaryAfterFilesSelection\"\n             class=\"grid-wrapper\">\n            <button (click)=\"clearAll()\"\n                    #deleteAll\n                    mat-button\n                    class=\"delete-all-button\"\n                    color=\"primary\"\n                    type=\"button\"\n                    data-testid=\"delete-all-button\">\n                <mat-icon>delete_outline</mat-icon>\n                {{intl.deleteAll$ | async}}\n            </button>\n            <ui-grid #filesGrid\n                     [data]=\"state.files\"\n                     [selectable]=\"false\"\n                     [refreshable]=\"false\"\n                     (rendered)=\"detectDeleteButtonSize()\">\n                <ui-grid-column width=\"40%\"\n                                property=\"name\"\n                                [title]=\"(intl.fileName$ | async) ?? 'File name'\"\n                                [disableToggle]=\"true\">\n                    <ng-template let-entry=\"data\">{{entry.name}}</ng-template>\n                </ui-grid-column>\n                <ui-grid-column width=\"20%\"\n                                property=\"type\"\n                                [title]=\"(intl.type$ | async) ?? 'Type'\">\n                    <ng-template let-entry=\"data\">\n                        {{getFileExtension(entry.name)}}\n                    </ng-template>\n                </ui-grid-column>\n                <ui-grid-column property=\"pages\"\n                                width=\"40%\"\n                                [minWidth]=\"deleteButtonSize\"\n                                [title]=\"(intl.size$ | async) ?? 'Title'\">\n                    <ng-template let-entry=\"data\">{{entry.size | uiFileSize | async}}\n                    </ng-template>\n                </ui-grid-column>\n                <ui-grid-row-action>\n                    <ng-template let-entry=\"data\">\n                        <button mat-button\n                                data-testid=\"delete-file-button\"\n                                [attr.aria-label]=\"intl.deleteFile$(entry.name) | async\"\n                                [matTooltip]=\"(intl.deleteFile$(entry.name) | async) ?? 'Delete file'\"\n                                (click)=\"removeFile(entry)\">\n                            <mat-icon class=\"remove-file\">delete_outline</mat-icon>\n                        </button>\n                    </ng-template>\n                </ui-grid-row-action>\n            </ui-grid>\n        </div>\n        <ui-input-file-drop-zone #fileDropzone\n                                 class=\"upload-input-wrapper\"\n                                 [class.large]=\"state.filesLoading || state.files.length === 0 || hideSummaryAfterFilesSelection\"\n                                 [disableDropZone]=\"true\"\n                                 [single]=\"single\"\n                                 [accept]=\"accept\"\n                                 [disabled]=\"disabled\"\n                                 (filesReceived)=\"addFiles($event)\"\n                                 (filesLoading)=\"displayLoadingIndicator($event)\"\n                                 (fileError)=\"handleFileError($event)\">\n            <div *ngIf=\"state.filesLoading\"\n                 class=\"spinner-container\">\n                <mat-progress-spinner color=\"primary\"\n                                      mode=\"indeterminate\"\n                                      diameter=\"32\">\n                </mat-progress-spinner>\n            </div>\n            <div *ngIf=\"!state.filesLoading\"\n                 class=\"message\">\n                <button mat-icon-button\n                        color=\"primary\"\n                        data-testid=\"browse-files-button\"\n                        [attr.aria-label]=\"intl.clickUploadDragDrop$ | async\"\n                        [disabled]=\"disabled\"\n                        (click)=\"onBrowseFilesClick()\">\n                    <mat-icon>cloud_upload</mat-icon>\n                </button>\n                <div class=\"primary\">\n                    <div translate>\n                        {{intl.clickUploadDragDrop$ | async}}\n                    </div>\n                    <span *ngIf=\"secondaryMessage\"\n                          class=\"placeholder\">{{secondaryMessage}}</span>\n                </div>\n            </div>\n        </ui-input-file-drop-zone>\n    </div>\n    <mat-error *ngIf=\"state.fileError\">{{ state.fileError }}</mat-error>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.UiFilePickerIntl"],"mappings":"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"}