@eui/components 19.2.0-snapshot-1745320402511 → 19.2.0-snapshot-1745410361865

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.
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-file-upload.mjs","sources":["../../eui-file-upload/progress/eui-file-upload-progress.component.ts","../../eui-file-upload/progress/eui-file-upload-progress.component.html","../../eui-file-upload/pipes/filesize.pipe.ts","../../eui-file-upload/file-preview/file-preview.component.ts","../../eui-file-upload/file-preview/file-preview.component.html","../../eui-file-upload/eui-file-upload.component.ts","../../eui-file-upload/eui-file-upload.component.html","../../eui-file-upload/utils/eui-file-upload.utils.ts","../../eui-file-upload/eui-file-upload.module.ts","../../eui-file-upload/utils/mime-types.ts","../../eui-file-upload/utils/eui-file-upload.validators.ts","../../eui-file-upload/eui-components-eui-file-upload.ts"],"sourcesContent":["import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'eui-file-upload-progress',\n templateUrl: './eui-file-upload-progress.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiFileUploadProgressComponent {\n /**\n * Sets the progress of upload to be displayed by the progress bar.\n * \n * @type {number}\n */\n @Input() progress = 0;\n}\n","<div *ngIf=\"progress > 0\">\n <div class=\"eui-file-upload__progress-bar-container\">\n <div class=\"progress-bar\" [style.width]=\"progress + '%'\"></div>\n </div>\n <div>{{ progress }}%</div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * A pipe that transforms a file size in bytes into a human-readable format (e.g., KB, MB, GB).\n *\n * @example\n * {{ 1024 | filesize }} // Outputs: \"1.00 KB\"\n * {{ 1048576 | filesize:1 }} // Outputs: \"1.0 MB\"\n *\n * @param {number} bytes - The file size in bytes.\n * @param {number} [precision=2] - The number of decimal places to include in the output.\n * @returns {string} The formatted file size with the appropriate unit.\n */\n@Pipe({\n name: 'filesize',\n standalone: false,\n})\nexport class EuiFileSizePipe implements PipeTransform {\n private units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\n /**\n * Method used to format a size.\n * \n * @param bytes Bytes to format.\n * @param precision Number of decimal\n * @returns String with formated size and unit.\n */\n transform(bytes = 0, precision = 2): string {\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) {\n return '?';\n }\n\n let unit = 0;\n\n while (bytes >= 1024) {\n bytes /= 1024;\n unit++;\n }\n\n return bytes.toFixed(+precision) + ' ' + this.units[unit];\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ChangeDetectorRef,\n Output,\n EventEmitter,\n ContentChildren,\n QueryList,\n TemplateRef,\n booleanAttribute,\n AfterViewInit,\n} from '@angular/core';\n\nimport { EuiTemplateDirective } from '@eui/components/directives';\n\nimport { EuiUploadedFileInterface } from '../models/uploaded-file.model';\n\n/**\n * @description\n * Internal class used by `eui-file-upload` to display the files to be uploaded.\n */\n@Component({\n selector: 'eui-file-preview',\n templateUrl: './file-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiFilePreviewComponent implements OnInit, AfterViewInit {\n /**\n * The file to use. Will be a `Blob` for a file to be uploaded, `EuiUploadedFileInterface` for an initial file.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() file: Blob | EuiUploadedFileInterface | any;\n /**\n * Template to use in the list of files.\n */\n @Input() uploadedFileTemplate: TemplateRef<{ $implicit: { file: EuiUploadedFileInterface, index: number, isFileObject: boolean } }>;\n /**\n * Index of the file in the list.\n */\n @Input() index: number;\n\n /**\n * Object matching extension and icon.\n */\n @Input() previewAsIconConfig = {\n avi: 'eui-file-video',\n html: 'eui-file-html',\n htm: 'eui-file-code',\n js: 'eui-file-code',\n json: 'eui-file-code',\n mp3: 'eui-file-audio',\n mp4: 'eui-file-video',\n pdf: 'eui-file-pdf',\n png: 'eui-file-image',\n svg: 'eui-file-image',\n txt: 'eui-file-text',\n xml: 'eui-file-code',\n jpeg: 'eui-file-image',\n jpg: 'eui-file-image',\n zip: 'eui-file-archive',\n doc: 'eui-file-word',\n docx: 'eui-file-word-o',\n xls: 'eui-file-excel-o',\n xlsx: 'eui-file-excel-o',\n ppt: 'eui-file-powerpoint',\n csv: 'eui-file-text',\n rtf: 'eui-file-text',\n };\n\n /**\n * Event emitted when the rmeove button is clicked.\n */\n @Output() removeFromList = new EventEmitter<number>();\n\n public url: string;\n public icon: string;\n public fileExtension: string;\n public previewData: { image: boolean; display: string };\n public isLoading = false;\n\n /**\n * Event emitted when a choosen file to upload is clicked.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Output() itemClick = new EventEmitter<Blob | EuiUploadedFileInterface | any>();\n\n /**\n * Wheter a preview, image or icon, is displayed for a file to upload.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) hasPreview = true;\n /**\n * Wheter the filename is displayed.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) isFilenameDisplayed = true;\n /**\n * Wheter the filesize is displayed.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) isFilesizeDisplayed = true;\n /**\n * Wheter the file type is displayed.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) isFiletypeDisplayed = true;\n /**\n * Wheter a preview is displayed as image.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) hasPreviewAsImage = true;\n /**\n * Wheter a preview is displayed as a file format icon.\n * \n * @default false\n */\n @Input({ transform: booleanAttribute }) hasPreviewAsIcon = false;\n /**\n * Wheter items can be clicked. `itemClick` event is emitted.\n * \n * @default false\n */\n @Input({ transform: booleanAttribute }) isItemsClickable = false;\n /**\n * Wheter the file is `File` or has been provided by the user as initial value.\n * \n * @default false\n */\n @Input({ transform: booleanAttribute }) isFileObject = false;\n\n @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.hasPreviewAsIcon) {\n this.hasPreviewAsImage = false;\n }\n\n if (this.file instanceof Blob) {\n const reader = new FileReader();\n reader.readAsArrayBuffer(this.file as Blob);\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n reader.onload = (event: any): void => {\n this.url = event.target.result;\n this.fileExtension = this.getFileExtension(this.file.name);\n this.icon = this.getIconForMime(this.fileExtension);\n\n const blob = new Blob([reader.result], { type: this.file.type });\n const imageUrl = URL.createObjectURL(blob);\n\n this.previewData = this.getPreviewForMime(this.fileExtension, imageUrl);\n\n this.cd.detectChanges();\n };\n reader.onloadstart = (event: ProgressEvent): void => {\n this.isLoading = true;\n this.cd.detectChanges();\n };\n reader.onloadend = (event: ProgressEvent): void => {\n this.isLoading = false;\n this.cd.detectChanges();\n };\n } else {\n this.url = (this.file as EuiUploadedFileInterface).url;\n this.fileExtension = this.getFileExtension(this.file.name);\n this.icon = this.getIconForMime(this.fileExtension);\n\n this.previewData = this.getPreviewForMime(this.fileExtension, this.url);\n\n this.cd.detectChanges();\n }\n }\n\n ngAfterViewInit(): void {\n this.templates.forEach((item) => {\n if (item.getType() === 'uploadedFile') {\n this.uploadedFileTemplate = item.template;\n }\n });\n }\n\n /**\n * Remove from the list handler.\n */\n public onRemoveFromList(): void {\n this.removeFromList.emit(this.index);\n }\n\n /**\n * Click item handler.\n * @param e The item clicked.\n */\n public onItemClick(e: Event): void {\n this.itemClick.emit(this.file);\n e.preventDefault();\n }\n\n /**\n * Method returning a file extension.\n * \n * @param fileName Filename of the file\n * @returns the extension as a string\n */\n private getFileExtension(fileName: string): string {\n const ext = fileName.split('.');\n\n return ext[ext.length - 1];\n }\n\n /**\n * Method that returns the preview for a file.\n * \n * @param fileExtension Extension of the file\n * @param imgUrl URL of the file\n * @returns The image URL if valid image otherwise an icon of the extension\n */\n private getPreviewForMime(fileExtension: string, imgUrl: string): { image: boolean; display: string } {\n const f = fileExtension.toLowerCase();\n const image = f === 'jpeg' || f === 'jpg' || f === 'png' || f === 'gif' ? true : false;\n const display = f === 'jpeg' || f === 'jpg' || f === 'png' || f === 'gif' ? imgUrl : this.getIconForMime(f);\n\n return { image, display };\n }\n\n /**\n * Method that return the icon for a MIME type.\n * \n * @param fileExtension Extension of the file\n * @returns An icon string\n */\n private getIconForMime(fileExtension: string): string {\n const f = fileExtension.toLowerCase();\n return !this.previewAsIconConfig[f] ? 'eui-file-empty-o' : this.previewAsIconConfig[f];\n }\n}\n","@if (uploadedFileTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"uploadedFileTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { file: { id: file.id, name: file.name, url: file.url || previewData?.display, size: file.size, type: file.type }, index, isFileObject } }\">\n </ng-template>\n} @else {\n <div class=\"eui-file-upload__preview\">\n <div class=\"eui-file-upload__preview--left\">\n <div class=\"eui-file-upload__preview--left__image\" *ngIf=\"hasPreview && hasPreviewAsImage\">\n <img [src]=\"previewData.display\" *ngIf=\"url && previewData.image\" />\n <eui-icon-svg *ngIf=\"previewData && !previewData.image\" icon=\"{{ previewData.display }}\" size=\"l\" fillColor=\"info-100\" class=\"eui-u-mr-s\"></eui-icon-svg>\n <div *ngIf=\"isLoading\" class=\"loading-container\">\n <eui-icon-svg isLoading size=\"2xl\"></eui-icon-svg>\n </div>\n </div>\n <div *ngIf=\"hasPreview && hasPreviewAsIcon\">\n <eui-icon-svg icon=\"{{ icon }}\" size=\"l\" fillColor=\"info-100\" class=\"eui-u-mr-s\"></eui-icon-svg>\n </div>\n <div class=\"eui-file-upload__preview--left__filename eui-u-text-truncate\" *ngIf=\"isFilenameDisplayed\">\n <ng-container *ngIf=\"!isItemsClickable\">\n {{ file.name }}\n </ng-container>\n <ng-container *ngIf=\"isItemsClickable\">\n <a href=\"#\" (click)=\"onItemClick($event)\" class=\"eui-u-text-link eui-u-text-truncate\">{{ file.name }}</a>\n </ng-container>\n </div>\n </div>\n <div class=\"eui-file-upload__preview--right\">\n <div class=\"eui-u-text-no-wrap\" *ngIf=\"isFilesizeDisplayed\">{{ file.size | filesize }}</div>\n <div *ngIf=\"isFiletypeDisplayed\"><span euiLabel>{{ file.type }}</span></div>\n <div>\n <button euiButton euiDanger euiRounded euiIconButton euiBasicButton type=\"button\" (click)=\"onRemoveFromList()\">\n <eui-icon-svg icon=\"eui-ecl-trash\"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n}\n","import {\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n ViewEncapsulation,\n OnInit,\n ViewChildren,\n QueryList,\n Output,\n EventEmitter,\n booleanAttribute,\n AfterViewInit,\n ContentChildren,\n TemplateRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { EuiTemplateDirective } from '@eui/components/directives';\n\nimport { EuiUploadedFileInterface } from './models/uploaded-file.model';\n\n/**\n * @description\n * `eui-file-upload` allows the user to upload a file to a server. It can be use in the classic simple file way or with a drag and drop feature.\n */\n@Component({\n selector: 'eui-file-upload',\n templateUrl: './eui-file-upload.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: EuiFileUploadComponent,\n multi: true,\n },\n ],\n styleUrls: ['./eui-file-upload.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiFileUploadComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n /**\n * Sets the `data-e2e` attribute for the host element.\n *\n * @default 'eui-file-upload'\n */\n @Input() e2eAttr = 'eui-file-upload';\n /**\n * In combination with `hasProgressBar`. Sets the progress of upload to be displayed by the progress bar.\n *\n * @type {number}\n */\n @Input() progress: number;\n /**\n * A comma separated list of extension allowed to be uploaded by the user.\n *\n * @default '*' (all)\n */\n @Input() accept = '*';\n /**\n * The maximum number of file the user is allowed to upload\n *\n * @type {number}\n * @default null (no maximum)\n */\n @Input() maxFiles: number;\n /**\n * Event emitted when a file is drag and dropped in the component.\n */\n @Output() fileDrop = new EventEmitter();\n /**\n * Event emitted when a choosen file to upload is clicked.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Output() itemClick = new EventEmitter<Blob | EuiUploadedFileInterface | any>();\n\n /**\n * Sets the `class` attribute for the host element.\n *\n * @returns A string with all CSS classes applied.\n */\n @HostBinding('class')\n public get cssClasses(): string {\n return [\n 'eui-file-upload',\n ]\n .join(' ')\n .trim();\n }\n\n public files: File[] = [];\n public filesTotalSize = 0;\n /**\n * Random number generated to give an unique id to the field.\n */\n public randomNumberId = Math.floor(Math.random() * 10000);\n /**\n * List of existing files to display in the component.\n *\n * @type {EuiUploadedFileInterface[]}\n */\n public uploadedFiles: EuiUploadedFileInterface[] = [];\n // eslint-disable-next-line\n public dragEntered = false;\n\n /**\n * List of templates passed to the component.\n */\n @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n @ViewChildren('input') fileInputs: QueryList<ElementRef<HTMLInputElement>>;\n\n public uploadedFileTemplate: TemplateRef<{ $implicit: { file: EuiUploadedFileInterface, index: number, isFileObject: boolean } }>;\n public browseButtonTemplate: TemplateRef<HTMLElement>;\n public resetButtonTemplate: TemplateRef<HTMLElement>;\n public progressBarTemplate: TemplateRef<{ $implicit: { progress: number } }>;\n\n /**\n * Wheter multiple files can be choosen.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) isMultiple = true;\n /**\n * Wheter a progress bar is displayed to indicate the upload progress.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasProgressBar = true;\n /**\n * Wheter a preview, image or icon, is displayed for a file to upload.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasPreview = true;\n /**\n * Wheter a preview is displayed as image.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasPreviewAsImage = true;\n /**\n * Wheter a preview is displayed as a file format icon.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasPreviewAsIcon = false;\n /**\n * Wheter the total size that will be uploaded is displayed.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasTotalSizeDisplayed = true;\n /**\n * Wheter a reset list button is displayed.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasResetButton = true;\n /**\n * Wheter files can be drag and dropped in the component.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasDragArea = false;\n /**\n * Wheter items can be clicked. `itemClick` event is emitted.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isItemsClickable = false;\n\n /**\n * Drag and drop area listener.\n *\n * @param fileList `FileList` containing dropped file and initial file.\n */\n @HostListener('change', ['$event.target.files']) emitFiles(fileList: FileList): void {\n let i = [...this.uploadedFiles, ...this.files].length;\n for (const property in fileList) {\n if (fileList[property] && typeof fileList[property] === 'object' && (!this.maxFiles || i < this.maxFiles)) {\n const fileName = fileList[property].name.split('.');\n const fileExtension = fileName[fileName.length - 1];\n\n if (this.accept.indexOf(fileExtension.toLowerCase()) !== -1 || this.accept === '*') {\n this.files.push(fileList[property]);\n }\n\n i++;\n }\n\n }\n\n this.getTotalSize();\n // eslint-disable-next-line\n this.uploadedFiles ? this.onChange([...this.uploadedFiles, ...this.files]) : this.onChange(this.files);\n if (this.fileInputs) {\n this.fileInputs.first.nativeElement.value = '';\n this.fileInputs.last.nativeElement.value = '';\n }\n\n this.dragEntered = false;\n this.fileDrop.emit();\n }\n\n /**\n * Determines whether the reset button should be displayed.\n *\n * @returns {boolean} `true` if the reset button should be shown, otherwise `false`.\n */\n get showResetBtn(): boolean {\n return this.hasResetButton && this.isMultiple && (this.files.length > 0 || this.uploadedFiles.length > 0);\n }\n\n /**\n * Determines whether the drop area should be disabled.\n *\n * @returns {boolean} `true` if the drop area is disabled, otherwise `false`.\n */\n get isDropAreaDisabled(): boolean {\n return (!this.isMultiple && this.files.length === 1) || [...this.uploadedFiles, ...this.files].length === this.maxFiles;\n }\n\n ngOnInit(): void {\n if (this.hasPreviewAsIcon) {\n this.hasPreviewAsImage = false;\n }\n }\n\n ngAfterViewInit(): void {\n // TODO EUI19: Change detection to OnPush to get rid of setTimeout workaround.\n setTimeout(() => {\n this.templates.forEach((item) => {\n if (item.getType() === 'uploadedFile') {\n this.uploadedFileTemplate = item.template;\n }\n if (item.getType() === 'browseButton') {\n this.browseButtonTemplate = item.template;\n }\n if (item.getType() === 'resetButton') {\n this.resetButtonTemplate = item.template;\n }\n if (item.getType() === 'progressBar') {\n this.progressBarTemplate = item.template;\n }\n });\n });\n }\n\n onDragEnter(): void {\n if (!this.isDropAreaDisabled) {\n this.dragEntered = true;\n }\n }\n\n onDragLeave(): void {\n this.dragEntered = false;\n }\n\n /**\n * Remove a file from the array of files choosen by the user.\n *\n * @param index Index of the file to remove in the array.\n */\n public removeFromList(index: number): void {\n this.files = this.files.filter((f, i) => i !== index);\n\n if (this.files.length === 0) {\n this.progress = 0;\n }\n this.getTotalSize();\n this.onChange([...this.uploadedFiles, ...this.files]);\n }\n\n /**\n * Remove a file from the array of files provided to the component as existing values.\n *\n * @param index Index of the file to remove in the array.\n */\n public removeFromUploadedList(index: number): void {\n this.uploadedFiles = this.uploadedFiles.filter((f, i) => i !== index);\n\n if (this.files.length === 0) {\n this.progress = 0;\n }\n\n this.getTotalSize();\n this.onChange([...this.uploadedFiles, ...this.files]);\n }\n\n /**\n * Reset the list of files in the component.\n */\n public resetList(): void {\n this.files = [];\n this.uploadedFiles = [];\n this.getTotalSize();\n this.progress = 0;\n this.onChange([...this.uploadedFiles, ...this.files]);\n }\n\n public openBrowseWindow(): void {\n this.fileInputs.first.nativeElement.click();\n }\n\n /**\n * Click item handler.\n * @param e The item clicked. Will be a `Blob` for a file to be uploaded, `EuiUploadedFileInterface` for an initial file.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public onItemClick(e: Blob | EuiUploadedFileInterface | any): void {\n this.itemClick.emit(e);\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.uploadedFiles = value || [];\n this.files = [];\n this.getTotalSize();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {/* Nothing to be Done so far */}\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: any = (): void => {/* Nothing to be Done so far */};\n\n /**\n * Calculates the total size to be uploaded.\n */\n private getTotalSize(): void {\n this.filesTotalSize = 0;\n this.files.forEach((f) => {\n this.filesTotalSize += f.size;\n });\n }\n}\n","@if (hasDragArea) {\n <div\n class=\"eui-file-upload__drop-area\"\n [class.eui-file-upload__drop-area--active]=\"dragEntered\"\n [class.eui-file-upload__drop-area--disabled]=\"isDropAreaDisabled\">\n <span class=\"eui-file-upload__fake-btn\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</span>\n <span>{{ 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate }}</span>\n <input\n #input\n class=\"eui-file-upload__file-input\"\n attr.aria-label=\"{{ 'eui.euifileupload.CHOOSE-FILE' | translate }} 'or' {{\n 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate\n }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n [attr.disabled]=\"isDropAreaDisabled ? 'disabled' : null\"\n [multiple]=\"isMultiple\"\n (dragenter)=\"onDragEnter()\"\n (dragleave)=\"onDragLeave()\" />\n </div>\n} @else {\n <div class=\"eui-file-upload__simple-input-file\">\n <label for=\"file-{{ randomNumberId }}\">\n @if (browseButtonTemplate) {\n <ng-template [ngTemplateOutlet]=\"browseButtonTemplate\"></ng-template>\n } @else {\n <button euiButton type=\"button\" (click)=\"openBrowseWindow()\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</button>\n }\n </label>\n \n @if (isMultiple) {\n <input\n #input\n aria-label=\"Choose Multiple Files\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n multiple />\n } @else {\n <input\n #input\n aria-label=\"Choose a single file\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\" />\n }\n </div>\n}\n\n@if (hasProgressBar) {\n @if (progressBarTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"progressBarTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { progress } }\">\n </ng-template>\n } @else {\n <eui-file-upload-progress [progress]=\"progress\"></eui-file-upload-progress>\n }\n}\n\n@for (uploadedFile of uploadedFiles; let i = $index; track $index) {\n <div>\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"uploadedFile\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n [uploadedFileTemplate]=\"uploadedFileTemplate\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromUploadedList($event)\">\n </eui-file-preview>\n </div>\n}\n\n@for (file of files; let i = $index; track $index) {\n <div>\n <eui-file-preview\n isFileObject\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"file\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n [uploadedFileTemplate]=\"uploadedFileTemplate\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromList($event)\">\n </eui-file-preview>\n </div>\n}\n\n@if (filesTotalSize && hasTotalSizeDisplayed) {\n <div class=\"eui-file-upload__total-size\">\n {{ filesTotalSize | filesize }} {{ 'eui.euifileupload.TOTAL-SIZE' | translate }}\n </div>\n}\n\n<ng-content></ng-content>\n\n@if (showResetBtn) {\n @if (resetButtonTemplate) {\n <ng-template [ngTemplateOutlet]=\"resetButtonTemplate\"></ng-template>\n } @else {\n <button euiButton type=\"button\" (click)=\"resetList()\">\n {{ 'eui.euifileupload.RESET-LIST' | translate }}\n </button>\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpEvent, HttpEventType, HttpResponse } from '@angular/common/http';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { pipe, Observable, UnaryFunction, MonoTypeOperatorFunction } from 'rxjs';\n\n@Injectable()\nexport class EuiFileUploadUtilsService {\n constructor(private httpClient: HttpClient) {}\n\n /**\n * @description\n * Method that will format data in `FormData` and send them to backend.\n *\n * @example\n * Call the method and log the response in the console.\n *\n * ```\n * this.euiFileUploadUtilsService.sendData(this.form.value, 'http://localhost:3000/api/fake-api').pipe(\n * this.euiFileUploadUtilsService.uploadProgress((progress) => {\n * console.log(progress);\n * }),\n * this.euiFileUploadUtilsService.toResponseBody(),\n * ).subscribe((response) => {\n * console.log(response);\n * });\n * ```\n *\n * @param data Data to send to backend\n * @param APIEndPoint Endpoint URL\n * @returns The backend response.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public sendData(data: any, APIEndPoint: string): Observable<any> {\n return this.httpClient.post(APIEndPoint, this.toFormData(data), {\n reportProgress: true,\n observe: 'events',\n });\n }\n\n /**\n * @description\n * Method that will return the upload progress.\n *\n * @example\n * Call the method and log the progress in the console.\n *\n * ```\n * this.euiFileUploadUtilsService.sendData(this.form.value, 'http://localhost:3000/api/fake-api').pipe(\n * this.euiFileUploadUtilsService.uploadProgress((progress) => {\n * console.log(progress);\n * }),\n * this.euiFileUploadUtilsService.toResponseBody(),\n * ).subscribe((response) => {\n * console.log(response);\n * });\n * ```\n *\n * @param cb A method to execute on each progress step.\n * @returns A number between 0 and 100.\n */\n public uploadProgress<T>(cb: (progress: number) => void): MonoTypeOperatorFunction<HttpEvent<T>> {\n return tap((event: HttpEvent<T>) => {\n if (event.type === HttpEventType.UploadProgress) {\n cb(Math.round((100 * event.loaded) / event.total));\n }\n });\n }\n\n /**\n * @description\n * Method that will return only the body of the backend response.\n *\n * @example\n * Call the method and log the response in the console.\n *\n * ```\n * this.euiFileUploadUtilsService.sendData(this.form.value, 'http://localhost:3000/api/fake-api').pipe(\n * this.euiFileUploadUtilsService.uploadProgress((progress) => {\n * console.log(progress);\n * }),\n * this.euiFileUploadUtilsService.toResponseBody(),\n * ).subscribe((response) => {\n * console.log(response);\n * });\n * ```\n *\n * @returns The backend response.\n */\n public toResponseBody<T>(): UnaryFunction<Observable<HttpEvent<T>>, Observable<T>> {\n return pipe(\n filter((event: HttpEvent<T>) => event.type === HttpEventType.Response),\n map((res: HttpResponse<T>) => res.body),\n );\n }\n\n /**\n * @description\n * Return the icon to be used with eui-icon-svg of the given extension or a default file icon\n * \n * @param fileExtension \n * @returns Icon name as string\n */\n public getIconForExtension(fileExtension: string): string {\n const previewAsIconConfig = {\n avi: 'eui-file-video',\n html: 'eui-file-html',\n htm: 'eui-file-code',\n js: 'eui-file-code',\n json: 'eui-file-code',\n mp3: 'eui-file-audio',\n mp4: 'eui-file-video',\n pdf: 'eui-file-pdf',\n png: 'eui-file-image',\n svg: 'eui-file-image',\n txt: 'eui-file-text',\n xml: 'eui-file-code',\n jpeg: 'eui-file-image',\n jpg: 'eui-file-image',\n zip: 'eui-file-archive',\n doc: 'eui-file-word',\n docx: 'eui-file-word-o',\n xls: 'eui-file-excel-o',\n xlsx: 'eui-file-excel-o',\n ppt: 'eui-file-powerpoint',\n csv: 'eui-file-text',\n rtf: 'eui-file-text',\n };\n\n const f = fileExtension.toLowerCase();\n return !previewAsIconConfig[f] ? 'eui-file-empty-o' : previewAsIconConfig[f];\n }\n\n /**\n * Internal method returning `FormData` object.\n * \n * @param formValue Data to send to form\n * @returns A `FormData` object\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private toFormData(formValue: any): FormData {\n const formData = new FormData();\n\n for (const key of Object.keys(formValue)) {\n if (Array.isArray(formValue[key])) {\n let fileIndex = 0;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formValue[key].forEach((value: any) => {\n if (value instanceof File) {\n formData.append(key + fileIndex, value);\n fileIndex++;\n }\n });\n\n const a = [];\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formValue[key].forEach((value: any): void => {\n a.push(value);\n });\n\n formData.append(key, JSON.stringify(a));\n } else {\n if (typeof formValue[key] === 'string') {\n formData.set(key, formValue[key]);\n } else {\n formData.set(key, JSON.stringify(formValue[key]));\n }\n }\n }\n\n return formData;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiTemplateDirectiveModule } from '@eui/components/directives';\n\nimport { EuiFileUploadComponent } from './eui-file-upload.component';\nimport { EuiFileUploadProgressComponent } from './progress/eui-file-upload-progress.component';\nimport { EuiFilePreviewComponent } from './file-preview/file-preview.component';\nimport { EuiFileSizePipe } from './pipes/filesize.pipe';\nimport { EuiFileUploadUtilsService } from './utils/eui-file-upload.utils';\n\n/**\n * @description\n * Module that provides the EuiFileUpload component and its dependencies\n */\n@NgModule({\n imports: [CommonModule, EuiButtonModule, EuiIconModule, TranslateModule, EuiTemplateDirectiveModule],\n declarations: [EuiFileUploadComponent, EuiFileUploadProgressComponent, EuiFilePreviewComponent, EuiFileSizePipe],\n providers: [EuiFileUploadUtilsService],\n exports: [EuiFileUploadComponent, EuiFileSizePipe, EuiTemplateDirectiveModule],\n})\nexport class EuiFileUploadModule {}\n","export type MimeType =\n | 'image/jpeg'\n | 'image/png'\n | 'image/gif'\n | 'image/webp'\n | 'image/flif'\n | 'image/x-xcf'\n | 'image/x-canon-cr2'\n | 'image/x-canon-cr3'\n | 'image/tiff'\n | 'image/bmp'\n | 'image/icns'\n | 'image/vnd.ms-photo'\n | 'image/vnd.adobe.photoshop'\n | 'application/x-indesign'\n | 'application/epub+zip'\n | 'application/x-xpinstall'\n | 'application/vnd.oasis.opendocument.text'\n | 'application/vnd.oasis.opendocument.spreadsheet'\n | 'application/vnd.oasis.opendocument.presentation'\n | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n | 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n | 'application/zip'\n | 'application/json'\n | 'application/x-tar'\n | 'application/x-rar-compressed'\n | 'application/gzip'\n | 'application/x-bzip2'\n | 'application/x-7z-compressed'\n | 'application/x-apple-diskimage'\n | 'video/mp4'\n | 'audio/midi'\n | 'video/x-matroska'\n | 'video/webm'\n | 'video/quicktime'\n | 'video/vnd.avi'\n | 'audio/vnd.wave'\n | 'audio/qcelp'\n | 'audio/x-ms-asf'\n | 'video/x-ms-asf'\n | 'application/vnd.ms-asf'\n | 'video/mpeg'\n | 'video/3gpp'\n | 'audio/mpeg'\n | 'audio/mp4'\n | 'audio/opus'\n | 'video/ogg'\n | 'audio/ogg'\n | 'application/ogg'\n | 'audio/x-flac'\n | 'audio/ape'\n | 'audio/wavpack'\n | 'audio/amr'\n | 'application/pdf'\n | 'application/x-elf'\n | 'application/x-msdownload'\n | 'application/x-shockwave-flash'\n | 'application/rtf'\n | 'application/wasm'\n | 'font/woff'\n | 'font/woff2'\n | 'application/vnd.ms-fontobject'\n | 'font/ttf'\n | 'font/otf'\n | 'image/x-icon'\n | 'video/x-flv'\n | 'application/postscript'\n | 'application/eps'\n | 'application/x-xz'\n | 'application/x-sqlite3'\n | 'application/x-nintendo-nes-rom'\n | 'application/x-google-chrome-extension'\n | 'application/vnd.ms-cab-compressed'\n | 'application/x-deb'\n | 'application/x-unix-archive'\n | 'application/x-rpm'\n | 'application/x-compress'\n | 'application/x-lzip'\n | 'application/x-cfb'\n | 'application/x-mie'\n | 'application/x-apache-arrow'\n | 'application/mxf'\n | 'video/mp2t'\n | 'application/x-blender'\n | 'image/bpg'\n | 'image/j2c'\n | 'image/jp2'\n | 'image/jpx'\n | 'image/jpm'\n | 'image/mj2'\n | 'audio/aiff'\n | 'application/xml'\n | 'application/x-mobipocket-ebook'\n | 'image/heif'\n | 'image/heif-sequence'\n | 'image/heic'\n | 'image/heic-sequence'\n | 'image/ktx'\n | 'application/dicom'\n | 'audio/x-musepack'\n | 'text/calendar'\n | 'text/vcard'\n | 'model/gltf-binary'\n | 'application/vnd.tcpdump.pcap'\n | 'audio/x-voc'\n | 'audio/vnd.dolby.dd-raw'\n | 'audio/x-m4a'\n | 'image/apng'\n | 'image/x-olympus-orf'\n | 'image/x-sony-arw'\n | 'image/x-adobe-dng'\n | 'image/x-nikon-nef'\n | 'image/x-panasonic-rw2'\n | 'image/x-fujifilm-raf'\n | 'video/x-m4v'\n | 'video/3gpp2'\n | 'application/x-esri-shape'\n | 'audio/aac'\n | 'audio/x-it'\n | 'audio/x-s3m'\n | 'audio/x-xm'\n | 'video/MP1S'\n | 'video/MP2P'\n | 'application/vnd.sketchup.skp'\n | 'image/avif'\n | 'application/x-lzh-compressed'\n | 'application/pgp-encrypted'\n | 'application/x-asar'\n | 'model/stl'\n | 'application/vnd.ms-htmlhelp'\n | 'model/3mf'\n | 'image/jxl'\n | 'application/zstd'\n | 'image/jls'\n | 'application/vnd.ms-outlook'\n | 'image/vnd.dwg'\n | 'application/x-parquet'\n | 'application/java-vm'\n | 'application/x-arj'\n | 'application/x-cpio'\n | 'application/x-ace-compressed'\n | 'application/avro'\n | 'application/vnd.iccprofile'; // eslint-disable-line semi-style\n\nexport const getMimeType = (header: Uint8Array): MimeType => {\n // convert Uint8Array to hex string\n const hex = uint8ArrayToHexString(header);\n\n // map hex string to mime type\n if (hex.startsWith('ffd8ffe000104a46')) return 'image/jpeg';\n if (hex.startsWith('89504e47')) return 'image/png';\n if (hex.startsWith('464c4946')) return 'image/flif';\n if (hex.startsWith('67696d7020786366')) return 'image/x-xcf';\n if (hex.startsWith('49492a00')) return 'image/x-canon-cr2';\n if (hex.startsWith('49492a00')) return 'image/x-canon-cr3';\n if (hex.startsWith('49492a00')) return 'image/tiff';\n if (hex.startsWith('424d')) return 'image/bmp';\n if (hex.startsWith('69636e73')) return 'image/icns';\n if (hex.startsWith('49491a0000004845415050')) return 'image/vnd.ms-photo';\n if (hex.startsWith('38425053')) return 'image/vnd.adobe.photoshop';\n if (hex.startsWith('06054b50')) return 'application/x-indesign';\n if (hex.startsWith('504b0304')) return 'application/epub+zip';\n if (hex.startsWith('504b0304')) return 'application/x-xpinstall';\n if (hex.startsWith('504b0304')) return 'application/vnd.oasis.opendocument.text';\n if (hex.startsWith('504b0304')) return 'application/vnd.oasis.opendocument.spreadsheet';\n if (hex.startsWith('504b0304')) return 'application/vnd.oasis.opendocument.presentation';\n if (hex.startsWith('504b0304')) return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n if (hex.startsWith('504b0304')) return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n if (hex.startsWith('504b0304')) return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n if (hex.startsWith('504b0304')) return 'application/zip';\n if (hex.startsWith('7b2274797065223a226a736f6e227d')) return 'application/json';\n if (hex.startsWith('7573746172')) return 'application/x-tar';\n if (hex.startsWith('526172211a0700')) return 'application/x-rar-compressed';\n if (hex.startsWith('1f8b08')) return 'application/gzip';\n if (hex.startsWith('425a68')) return 'application/x-bzip2';\n if (hex.startsWith('377abcaf271c')) return 'application/x-7z-compressed';\n if (hex.startsWith('78da')) return 'application/x-apple-diskimage';\n if (hex.startsWith('00000020667479706d70')) return 'video/mp4';\n if (hex.startsWith('4d546864')) return 'audio/midi';\n if (hex.startsWith('1a45dfa393428288')) return 'video/x-matroska';\n if (hex.startsWith('1a45dfa3')) return 'video/webm';\n if (hex.startsWith('00000014667479707174')) return 'video/quicktime';\n if (hex.startsWith('52494646')) return 'video/vnd.avi';\n if (hex.startsWith('52494646')) return 'audio/vnd.wave';\n if (hex.startsWith('0a010301')) return 'audio/qcelp';\n if (hex.startsWith('3026b2758e66cf11')) return 'audio/x-ms-asf';\n if (hex.startsWith('3026b2758e66cf11')) return 'video/x-ms-asf';\n if (hex.startsWith('3026b2758e66cf11')) return 'application/vnd.ms-asf';\n if (hex.startsWith('000001ba')) return 'video/mpeg';\n if (hex.startsWith('00000020667479703367')) return 'video/3gpp';\n if (hex.startsWith('494433')) return 'audio/mpeg';\n if (hex.startsWith('00000020667479704d344120')) return 'audio/mp4';\n if (hex.startsWith('4f707573')) return 'audio/opus';\n if (hex.startsWith('4f676753')) return 'video/ogg';\n if (hex.startsWith('4f676753')) return 'audio/ogg';\n if (hex.startsWith('4f676753')) return 'application/ogg';\n if (hex.startsWith('664c6143')) return 'audio/x-flac';\n if (hex.startsWith('4d414320')) return 'audio/ape';\n if (hex.startsWith('7776706b')) return 'audio/wavpack';\n if (hex.startsWith('2321414d520a')) return 'audio/amr';\n if (hex.startsWith('255044462d312e')) return 'application/pdf';\n if (hex.startsWith('7f454c46')) return 'application/x-elf';\n if (hex.startsWith('4d5a')) return 'application/x-msdownload';\n if (hex.startsWith('435753')) return 'application/x-shockwave-flash';\n if (hex.startsWith('7b5c72746631')) return 'application/rtf';\n if (hex.startsWith('0061736d')) return 'application/wasm';\n if (hex.startsWith('774f4646')) return 'font/woff';\n if (hex.startsWith('774f4632')) return 'font/woff2';\n if (hex.startsWith('000100000008')) return 'application/vnd.ms-fontobject';\n if (hex.startsWith('0001000000')) return 'font/ttf';\n if (hex.startsWith('4f54544f00')) return 'font/otf';\n if (hex.startsWith('000001000100')) return 'image/x-icon';\n if (hex.startsWith('464c560105')) return 'video/x-flv';\n if (hex.startsWith('25215053')) return 'application/postscript';\n if (hex.startsWith('25215053')) return 'application/eps';\n if (hex.startsWith('fd377a585a00')) return 'application/x-xz';\n if (hex.startsWith('53514c69746520666f726d6174203300')) return 'application/x-sqlite3';\n if (hex.startsWith('4e45531a00000001')) return 'application/x-nintendo-nes-rom';\n if (hex.startsWith('504b0304')) return 'application/x-google-chrome-extension';\n if (hex.startsWith('4d534346')) return 'application/vnd.ms-cab-compressed';\n if (hex.startsWith('213c617263683e0a')) return 'application/x-deb';\n if (hex.startsWith('1f8b08')) return 'application/x-unix-archive';\n if (hex.startsWith('edabeedb')) return 'application/x-rpm';\n if (hex.startsWith('1f9d90')) return 'application/x-compress';\n if (hex.startsWith('4c5a4950')) return 'application/x-lzip';\n if (hex.startsWith('d0cf11e0a1b11ae1')) return 'application/x-cfb';\n if (hex.startsWith('4d49455f')) return 'application/x-mie';\n if (hex.startsWith('4141523146')) return 'application/x-apache-arrow';\n if (hex.startsWith('060e2b3402050101')) return 'application/mxf';\n if (hex.startsWith('47')) return 'video/mp2t';\n if (hex.startsWith('4250e4')) return 'application/x-blender';\n if (hex.startsWith('425047fb')) return 'image/bpg';\n if (hex.startsWith('ff4fff51')) return 'image/j2c';\n if (hex.startsWith('0000000c6a5020200d0a')) return 'image/jp2';\n if (hex.startsWith('6a5020200d0a870a')) return 'image/jpx';\n if (hex.startsWith('6a5020200d0a870a')) return 'image/jpm';\n if (hex.startsWith('0000000c6a5020200d0a')) return 'image/mj2';\n if (hex.startsWith('464f524d')) return 'audio/aiff';\n if (hex.startsWith('3c3f786d6c20')) return 'application/xml';\n if (hex.startsWith('424f4f4b4d4f4249')) return 'application/x-mobipocket-ebook';\n if (hex.startsWith('667479706174')) return 'image/heif';\n if (hex.startsWith('667479706174')) return 'image/heif-sequence';\n if (hex.startsWith('667479706174')) return 'image/heic';\n if (hex.startsWith('667479706174')) return 'image/heic-sequence';\n if (hex.startsWith('4b545820')) return 'image/ktx';\n if (hex.startsWith('4449434d')) return 'application/dicom';\n if (hex.startsWith('4d50434b')) return 'audio/x-musepack';\n if (hex.startsWith('56656e64')) return 'text/calendar';\n if (hex.startsWith('424547494e3a5643415244')) return 'text/vcard';\n if (hex.startsWith('676c5458')) return 'model/gltf-binary';\n if (hex.startsWith('d4c3b2a1')) return 'application/vnd.tcpdump.pcap';\n if (hex.startsWith('464f524d')) return 'audio/x-voc';\n if (hex.startsWith('64646f6c')) return 'audio/vnd.dolby.dd-raw';\n\n return null;\n};\n\nconst uint8ArrayToHexString = (uint8Array): string => {\n return Array.prototype.map.call(uint8Array, (byte) => ('00' + byte.toString(16)).slice(-2)).join('');\n};\n","import { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { Observable, of, zip } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { getMimeType, MimeType } from './mime-types';\n\n/**\n * @description\n * Validator that requires the maximum length of files that can be uploaded.\n *\n * @example\n * Validate that the user selected maximum 3 files:\n *\n * ```\n * const fileUpload = new FormControl(null, maxFilesValidator(3));\n * console.log(fileUpload.errors); // { maxFiles: 3 }\n * ```\n *\n * @param {MimeType[]} maxFiles - The maximum number of files allowed.\n * @returns A validator function that returns an error map with the\n * `maxFiles` if the validation check fails, otherwise `null`.\n */\nexport const maxFilesValidator =\n (maxFiles: number): ValidatorFn =>\n (control: AbstractControl): { maxFiles: number } | null =>\n control.value && control.value.length > maxFiles ? { maxFiles } : null;\n\n/**\n * @description\n * Validator that requires the maximum size (in bytes) of files that can be uploaded.\n *\n * @example\n * Validate that the user doesn't select a file have a size up to 300Kb:\n *\n * ```\n * const fileUpload = new FormControl(null, maxSizeValidator(300000));\n * console.log(fileUpload.errors); // { maxSize: 300000 }\n * ```\n * \n * @param {MimeType[]} maxFileSize - The maximum filesize allowed.\n * @returns A validator function that returns an error map with the\n * `maxSize` if the validation check fails, otherwise `null`.\n */\nexport const maxSizeValidator =\n (maxSize: number): ValidatorFn =>\n (control: AbstractControl): { maxSize: number } | null => {\n let totalSize = 0;\n if (control.value) {\n control.value.forEach((file: File) => {\n totalSize += file.size;\n });\n }\n\n return control.value && totalSize > maxSize * 1.024 ? { maxSize } : null;\n };\n\n/**\n * @description\n * Validator that requires the maximum size (in bytes) per file that can be uploaded.\n *\n * @example\n * Validates that the user doesn't select a file that exceeds the provided size\n *\n * @param {MimeType[]} maxFileSize - The maximum filesize allowed.\n * @returns A validator function that returns an error map with the\n * `maxFileSize` and the `indexes` of the file/files that exceeded the max size if the validation check fails, otherwise `null`.\n */\nexport const maxFileSizeValidator =\n (maxFileSize: number): ValidatorFn =>\n (control: AbstractControl): { maxFileSize: number, indexes: Array<number> } | null => {\n const fileIndexes =[];\n let maxFileExceeded = false;\n if (control.value) {\n control.value.forEach((file: File, index: number) => {\n if (file.size > maxFileSize * 1.024) {\n fileIndexes.push(index);\n maxFileExceeded = true;\n }\n });\n }\n\n return control.value && maxFileExceeded ? { maxFileSize, indexes: fileIndexes } : null;\n };\n\n/**\n * @description\n * Validator that requires an array of mime type that can be uploaded.\n *\n * @example\n * Validate that the user doesn't select a file having another extension than .jpg or .jpeg:\n * ```\n * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),\n * console.log(fileUpload.errors); // { invalidFileExtension: ['image/jpeg'] }\n * ```\n * \n * @param {MimeType[]} mimeTypes - The list of allowed MIME types.\n * @returns A validator function that returns an error map with the\n * `invalidFileExtension` if the validation check fails, otherwise `null`.\n */\nexport const mimeTypeExtensionValidator =\n (mimeTypes: string[]): ValidatorFn =>\n (control: AbstractControl): { invalidFileExtension: string[] } | null => {\n const invalidFileExtension: string[] = [];\n if (control.value) {\n control.value.forEach((file: File) => {\n if (mimeTypes.indexOf(file.type) === -1) {\n invalidFileExtension.push(file.name);\n }\n });\n }\n\n return control.value && invalidFileExtension.length > 0 ? { invalidFileExtension } : null;\n };\n\n/**\n * @description\n * Validator that requires an array of mime type that can be uploaded.\n *\n * @example\n * Validate that the user doesn't select a file having another extension than .jpg or .jpeg:\n *\n * ```\n * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),\n * console.log(fileUpload.errors); // { invalidMimeFileType: ['image/jpeg'] }\n * ```\n * @param {MimeType[]} mimeTypes - The list of allowed MIME types.\n * @returns An Async validator function that returns an error map with the\n * `invalidMimeFileType` if the validation check fails, otherwise `null`.\n */\nexport const asyncMimeTypeExtensionValidator =\n (mimeTypes: MimeType[]): AsyncValidatorFn =>\n (control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\n if (control.value) {\n const fileErrorObservables: Observable<ValidationErrors | null>[] = [];\n // iterate over files\n control.value.forEach((file: File) => {\n // push observable which will check the mime validation type\n fileErrorObservables.push(validateFileMimeType(file, mimeTypes));\n });\n return zip(...fileErrorObservables).pipe(\n map((fileErrors) => {\n const errors = fileErrors.filter((fileError) => fileError !== null);\n // Error should be { fileName: FileType }\n return { invalidMimeFileType: errors };\n }),\n );\n }\n return of(null);\n };\n\n/**\n * Validates the MIME type of a file against a list of allowed MIME types.\n *\n * @param {File} file - The file to validate.\n * @param {MimeType[]} mimeTypes - The list of allowed MIME types.\n * @returns {Observable<{ [key: string]: MimeType }>} An observable that emits an object containing the file name as the key and\n * its detected MIME type as the value if the file type is not allowed.\n */\nconst validateFileMimeType = (file: File, mimeTypes: MimeType[]): Observable<{ [key: string]: MimeType }> => {\n return new Observable<{ [p: string]: MimeType }>((subscriber) => {\n const reader = new FileReader();\n reader.onloadend = (): void => {\n const buffer = reader.result as ArrayBuffer;\n const headerBytes = new Uint8Array(buffer).slice(0, 8);\n const mime = getMimeType(headerBytes);\n if (mimeTypes.indexOf(mime) === -1) {\n subscriber.next({ [file.name]: mime });\n }\n subscriber.complete();\n };\n reader.readAsArrayBuffer(file);\n });\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.EuiFileSizePipe","i3.EuiFileUploadProgressComponent","i4.EuiFilePreviewComponent","i6.EuiFileSizePipe","i1"],"mappings":"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"}
1
+ {"version":3,"file":"eui-components-eui-file-upload.mjs","sources":["../../eui-file-upload/progress/eui-file-upload-progress.component.ts","../../eui-file-upload/progress/eui-file-upload-progress.component.html","../../eui-file-upload/pipes/filesize.pipe.ts","../../eui-file-upload/file-preview/file-preview.component.ts","../../eui-file-upload/file-preview/file-preview.component.html","../../eui-file-upload/eui-file-upload.component.ts","../../eui-file-upload/eui-file-upload.component.html","../../eui-file-upload/utils/eui-file-upload.utils.ts","../../eui-file-upload/eui-file-upload.module.ts","../../eui-file-upload/utils/mime-types.ts","../../eui-file-upload/utils/eui-file-upload.validators.ts","../../eui-file-upload/eui-components-eui-file-upload.ts"],"sourcesContent":["import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'eui-file-upload-progress',\n templateUrl: './eui-file-upload-progress.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiFileUploadProgressComponent {\n /**\n * Sets the progress of upload to be displayed by the progress bar.\n * \n * @type {number}\n */\n @Input() progress = 0;\n}\n","<div *ngIf=\"progress > 0\">\n <div class=\"eui-file-upload__progress-bar-container\">\n <div class=\"progress-bar\" [style.width]=\"progress + '%'\"></div>\n </div>\n <div>{{ progress }}%</div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * A pipe that transforms a file size in bytes into a human-readable format (e.g., KB, MB, GB).\n *\n * @example\n * {{ 1024 | filesize }} // Outputs: \"1.00 KB\"\n * {{ 1048576 | filesize:1 }} // Outputs: \"1.0 MB\"\n *\n * @param {number} bytes - The file size in bytes.\n * @param {number} [precision=2] - The number of decimal places to include in the output.\n * @returns {string} The formatted file size with the appropriate unit.\n */\n@Pipe({\n name: 'filesize',\n standalone: false,\n})\nexport class EuiFileSizePipe implements PipeTransform {\n private units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n\n /**\n * Method used to format a size.\n * \n * @param bytes Bytes to format.\n * @param precision Number of decimal\n * @returns String with formated size and unit.\n */\n transform(bytes = 0, precision = 2): string {\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) {\n return '?';\n }\n\n let unit = 0;\n\n while (bytes >= 1024) {\n bytes /= 1024;\n unit++;\n }\n\n return bytes.toFixed(+precision) + ' ' + this.units[unit];\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ChangeDetectorRef,\n Output,\n EventEmitter,\n ContentChildren,\n QueryList,\n TemplateRef,\n booleanAttribute,\n AfterViewInit,\n} from '@angular/core';\n\nimport { EuiTemplateDirective } from '@eui/components/directives';\n\nimport { EuiUploadedFileInterface } from '../models/uploaded-file.model';\n\n/**\n * @description\n * Internal class used by `eui-file-upload` to display the files to be uploaded.\n */\n@Component({\n selector: 'eui-file-preview',\n templateUrl: './file-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiFilePreviewComponent implements OnInit, AfterViewInit {\n /**\n * The file to use. Will be a `Blob` for a file to be uploaded, `EuiUploadedFileInterface` for an initial file.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Input() file: Blob | EuiUploadedFileInterface | any;\n /**\n * Template to use in the list of files.\n */\n @Input() uploadedFileTemplate: TemplateRef<{ $implicit: { file: EuiUploadedFileInterface, index: number, isFileObject: boolean } }>;\n /**\n * Index of the file in the list.\n */\n @Input() index: number;\n\n /**\n * Object matching extension and icon.\n */\n @Input() previewAsIconConfig = {\n avi: 'eui-file-video',\n html: 'eui-file-html',\n htm: 'eui-file-code',\n js: 'eui-file-code',\n json: 'eui-file-code',\n mp3: 'eui-file-audio',\n mp4: 'eui-file-video',\n pdf: 'eui-file-pdf',\n png: 'eui-file-image',\n svg: 'eui-file-image',\n txt: 'eui-file-text',\n xml: 'eui-file-code',\n jpeg: 'eui-file-image',\n jpg: 'eui-file-image',\n zip: 'eui-file-archive',\n doc: 'eui-file-word',\n docx: 'eui-file-word-o',\n xls: 'eui-file-excel-o',\n xlsx: 'eui-file-excel-o',\n ppt: 'eui-file-powerpoint',\n csv: 'eui-file-text',\n rtf: 'eui-file-text',\n };\n\n /**\n * Event emitted when the rmeove button is clicked.\n */\n @Output() removeFromList = new EventEmitter<number>();\n\n public url: string;\n public icon: string;\n public fileExtension: string;\n public previewData: { image: boolean; display: string };\n public isLoading = false;\n\n /**\n * Event emitted when a choosen file to upload is clicked.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Output() itemClick = new EventEmitter<Blob | EuiUploadedFileInterface | any>();\n\n /**\n * Wheter a preview, image or icon, is displayed for a file to upload.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) hasPreview = true;\n /**\n * Wheter the filename is displayed.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) isFilenameDisplayed = true;\n /**\n * Wheter the filesize is displayed.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) isFilesizeDisplayed = true;\n /**\n * Wheter the file type is displayed.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) isFiletypeDisplayed = true;\n /**\n * Wheter a preview is displayed as image.\n * \n * @default true\n */\n @Input({ transform: booleanAttribute }) hasPreviewAsImage = true;\n /**\n * Wheter a preview is displayed as a file format icon.\n * \n * @default false\n */\n @Input({ transform: booleanAttribute }) hasPreviewAsIcon = false;\n /**\n * Wheter items can be clicked. `itemClick` event is emitted.\n * \n * @default false\n */\n @Input({ transform: booleanAttribute }) isItemsClickable = false;\n /**\n * Wheter the file is `File` or has been provided by the user as initial value.\n * \n * @default false\n */\n @Input({ transform: booleanAttribute }) isFileObject = false;\n\n @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n if (this.hasPreviewAsIcon) {\n this.hasPreviewAsImage = false;\n }\n\n if (this.file instanceof Blob) {\n const reader = new FileReader();\n reader.readAsArrayBuffer(this.file as Blob);\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n reader.onload = (event: any): void => {\n this.url = event.target.result;\n this.fileExtension = this.getFileExtension(this.file.name);\n this.icon = this.getIconForMime(this.fileExtension);\n\n const blob = new Blob([reader.result], { type: this.file.type });\n const imageUrl = URL.createObjectURL(blob);\n\n this.previewData = this.getPreviewForMime(this.fileExtension, imageUrl);\n\n this.cd.detectChanges();\n };\n reader.onloadstart = (event: ProgressEvent): void => {\n this.isLoading = true;\n this.cd.detectChanges();\n };\n reader.onloadend = (event: ProgressEvent): void => {\n this.isLoading = false;\n this.cd.detectChanges();\n };\n } else {\n this.url = (this.file as EuiUploadedFileInterface).url;\n this.fileExtension = this.getFileExtension(this.file.name);\n this.icon = this.getIconForMime(this.fileExtension);\n\n this.previewData = this.getPreviewForMime(this.fileExtension, this.url);\n\n this.cd.detectChanges();\n }\n }\n\n ngAfterViewInit(): void {\n this.templates.forEach((item) => {\n if (item.getType() === 'uploadedFile') {\n this.uploadedFileTemplate = item.template;\n }\n });\n }\n\n /**\n * Remove from the list handler.\n */\n public onRemoveFromList(): void {\n this.removeFromList.emit(this.index);\n }\n\n /**\n * Click item handler.\n * @param e The item clicked.\n */\n public onItemClick(e: Event): void {\n this.itemClick.emit(this.file);\n e.preventDefault();\n }\n\n /**\n * Method returning a file extension.\n * \n * @param fileName Filename of the file\n * @returns the extension as a string\n */\n private getFileExtension(fileName: string): string {\n const ext = fileName.split('.');\n\n return ext[ext.length - 1];\n }\n\n /**\n * Method that returns the preview for a file.\n * \n * @param fileExtension Extension of the file\n * @param imgUrl URL of the file\n * @returns The image URL if valid image otherwise an icon of the extension\n */\n private getPreviewForMime(fileExtension: string, imgUrl: string): { image: boolean; display: string } {\n const f = fileExtension.toLowerCase();\n const image = f === 'jpeg' || f === 'jpg' || f === 'png' || f === 'gif' ? true : false;\n const display = f === 'jpeg' || f === 'jpg' || f === 'png' || f === 'gif' ? imgUrl : this.getIconForMime(f);\n\n return { image, display };\n }\n\n /**\n * Method that return the icon for a MIME type.\n * \n * @param fileExtension Extension of the file\n * @returns An icon string\n */\n private getIconForMime(fileExtension: string): string {\n const f = fileExtension.toLowerCase();\n return !this.previewAsIconConfig[f] ? 'eui-file-empty-o' : this.previewAsIconConfig[f];\n }\n}\n","@if (uploadedFileTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"uploadedFileTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { file: { id: file.id, name: file.name, url: file.url || previewData?.display, size: file.size, type: file.type }, index, isFileObject } }\">\n </ng-template>\n} @else {\n <div class=\"eui-file-upload__preview\">\n <div class=\"eui-file-upload__preview--left\">\n <div class=\"eui-file-upload__preview--left__image\" *ngIf=\"hasPreview && hasPreviewAsImage\">\n <img [src]=\"previewData.display\" *ngIf=\"url && previewData.image\" />\n <eui-icon-svg *ngIf=\"previewData && !previewData.image\" icon=\"{{ previewData.display }}\" size=\"l\" fillColor=\"info-100\" class=\"eui-u-mr-s\"></eui-icon-svg>\n <div *ngIf=\"isLoading\" class=\"loading-container\">\n <eui-icon-svg isLoading size=\"2xl\"></eui-icon-svg>\n </div>\n </div>\n <div *ngIf=\"hasPreview && hasPreviewAsIcon\">\n <eui-icon-svg icon=\"{{ icon }}\" size=\"l\" fillColor=\"info-100\" class=\"eui-u-mr-s\"></eui-icon-svg>\n </div>\n <div class=\"eui-file-upload__preview--left__filename eui-u-text-truncate\" *ngIf=\"isFilenameDisplayed\">\n <ng-container *ngIf=\"!isItemsClickable\">\n {{ file.name }}\n </ng-container>\n <ng-container *ngIf=\"isItemsClickable\">\n <a href=\"#\" (click)=\"onItemClick($event)\" class=\"eui-u-text-link eui-u-text-truncate\">{{ file.name }}</a>\n </ng-container>\n </div>\n </div>\n <div class=\"eui-file-upload__preview--right\">\n <div class=\"eui-u-text-no-wrap\" *ngIf=\"isFilesizeDisplayed\">{{ file.size | filesize }}</div>\n <div *ngIf=\"isFiletypeDisplayed\"><span euiLabel>{{ file.type }}</span></div>\n <div>\n <button euiButton euiDanger euiRounded euiIconButton euiBasicButton type=\"button\" (click)=\"onRemoveFromList()\">\n <eui-icon-svg icon=\"eui-ecl-trash\"></eui-icon-svg>\n </button>\n </div>\n </div>\n </div>\n}\n","import {\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n ViewEncapsulation,\n OnInit,\n ViewChildren,\n QueryList,\n Output,\n EventEmitter,\n booleanAttribute,\n AfterViewInit,\n ContentChildren,\n TemplateRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { EuiTemplateDirective } from '@eui/components/directives';\n\nimport { EuiUploadedFileInterface } from './models/uploaded-file.model';\n\n/**\n * @description\n * `eui-file-upload` allows the user to upload a file to a server. It can be use in the classic simple file way or with a drag and drop feature.\n */\n@Component({\n selector: 'eui-file-upload',\n templateUrl: './eui-file-upload.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: EuiFileUploadComponent,\n multi: true,\n },\n ],\n styleUrls: ['./eui-file-upload.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class EuiFileUploadComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n /**\n * Sets the `data-e2e` attribute for the host element.\n *\n * @default 'eui-file-upload'\n */\n @Input() e2eAttr = 'eui-file-upload';\n /**\n * In combination with `hasProgressBar`. Sets the progress of upload to be displayed by the progress bar.\n *\n * @type {number}\n */\n @Input() progress: number;\n /**\n * A comma separated list of extension allowed to be uploaded by the user.\n *\n * @default '*' (all)\n */\n @Input() accept = '*';\n /**\n * The maximum number of file the user is allowed to upload\n *\n * @type {number}\n * @default null (no maximum)\n */\n @Input() maxFiles: number;\n /**\n * Event emitted when a file is drag and dropped in the component.\n */\n @Output() fileDrop = new EventEmitter();\n /**\n * Event emitted when a choosen file to upload is clicked.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n @Output() itemClick = new EventEmitter<Blob | EuiUploadedFileInterface | any>();\n\n /**\n * Sets the `class` attribute for the host element.\n *\n * @returns A string with all CSS classes applied.\n */\n @HostBinding('class')\n public get cssClasses(): string {\n return [\n 'eui-file-upload',\n ]\n .join(' ')\n .trim();\n }\n\n public files: File[] = [];\n public filesTotalSize = 0;\n /**\n * Random number generated to give an unique id to the field.\n */\n public randomNumberId = Math.floor(Math.random() * 10000);\n /**\n * List of existing files to display in the component.\n *\n * @type {EuiUploadedFileInterface[]}\n */\n public uploadedFiles: EuiUploadedFileInterface[] = [];\n // eslint-disable-next-line\n public dragEntered = false;\n\n /**\n * List of templates passed to the component.\n */\n @ContentChildren(EuiTemplateDirective) templates: QueryList<EuiTemplateDirective>;\n\n @ViewChildren('input') fileInputs: QueryList<ElementRef<HTMLInputElement>>;\n\n public uploadedFileTemplate: TemplateRef<{ $implicit: { file: EuiUploadedFileInterface, index: number, isFileObject: boolean } }>;\n public browseButtonTemplate: TemplateRef<HTMLElement>;\n public resetButtonTemplate: TemplateRef<HTMLElement>;\n public progressBarTemplate: TemplateRef<{ $implicit: { progress: number } }>;\n\n /**\n * Wheter multiple files can be choosen.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) isMultiple = true;\n /**\n * Wheter a progress bar is displayed to indicate the upload progress.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasProgressBar = true;\n /**\n * Wheter a preview, image or icon, is displayed for a file to upload.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasPreview = true;\n /**\n * Wheter a preview is displayed as image.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasPreviewAsImage = true;\n /**\n * Wheter a preview is displayed as a file format icon.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasPreviewAsIcon = false;\n /**\n * Wheter the total size that will be uploaded is displayed.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasTotalSizeDisplayed = true;\n /**\n * Wheter a reset list button is displayed.\n *\n * @default true\n */\n @Input({ transform: booleanAttribute }) hasResetButton = true;\n /**\n * Wheter files can be drag and dropped in the component.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) hasDragArea = false;\n /**\n * Wheter items can be clicked. `itemClick` event is emitted.\n *\n * @default false\n */\n @Input({ transform: booleanAttribute }) isItemsClickable = false;\n\n /**\n * Drag and drop area listener.\n *\n * @param fileList `FileList` containing dropped file and initial file.\n */\n @HostListener('change', ['$event.target.files']) emitFiles(fileList: FileList): void {\n let i = [...this.uploadedFiles, ...this.files].length;\n for (const property in fileList) {\n if (fileList[property] && typeof fileList[property] === 'object' && (!this.maxFiles || i < this.maxFiles)) {\n const fileName = fileList[property].name.split('.');\n const fileExtension = fileName[fileName.length - 1];\n\n if (this.accept.indexOf(fileExtension.toLowerCase()) !== -1 || this.accept === '*') {\n this.files.push(fileList[property]);\n }\n\n i++;\n }\n\n }\n\n this.getTotalSize();\n // eslint-disable-next-line\n this.uploadedFiles ? this.onChange([...this.uploadedFiles, ...this.files]) : this.onChange(this.files);\n if (this.fileInputs) {\n this.fileInputs.first.nativeElement.value = '';\n this.fileInputs.last.nativeElement.value = '';\n }\n\n this.dragEntered = false;\n this.fileDrop.emit();\n }\n\n /**\n * Determines whether the reset button should be displayed.\n *\n * @returns {boolean} `true` if the reset button should be shown, otherwise `false`.\n */\n get showResetBtn(): boolean {\n return this.hasResetButton && this.isMultiple && (this.files.length > 0 || this.uploadedFiles.length > 0);\n }\n\n /**\n * Determines whether the drop area should be disabled.\n *\n * @returns {boolean} `true` if the drop area is disabled, otherwise `false`.\n */\n get isDropAreaDisabled(): boolean {\n return (!this.isMultiple && this.files.length === 1) || [...this.uploadedFiles, ...this.files].length === this.maxFiles;\n }\n\n ngOnInit(): void {\n if (this.hasPreviewAsIcon) {\n this.hasPreviewAsImage = false;\n }\n }\n\n ngAfterViewInit(): void {\n // TODO EUI19: Change detection to OnPush to get rid of setTimeout workaround.\n setTimeout(() => {\n this.templates.forEach((item) => {\n if (item.getType() === 'uploadedFile') {\n this.uploadedFileTemplate = item.template;\n }\n if (item.getType() === 'browseButton') {\n this.browseButtonTemplate = item.template;\n }\n if (item.getType() === 'resetButton') {\n this.resetButtonTemplate = item.template;\n }\n if (item.getType() === 'progressBar') {\n this.progressBarTemplate = item.template;\n }\n });\n });\n }\n\n onDragEnter(): void {\n if (!this.isDropAreaDisabled) {\n this.dragEntered = true;\n }\n }\n\n onDragLeave(): void {\n this.dragEntered = false;\n }\n\n /**\n * Remove a file from the array of files choosen by the user.\n *\n * @param index Index of the file to remove in the array.\n */\n public removeFromList(index: number): void {\n this.files = this.files.filter((f, i) => i !== index);\n\n if (this.files.length === 0) {\n this.progress = 0;\n }\n this.getTotalSize();\n this.onChange([...this.uploadedFiles, ...this.files]);\n }\n\n /**\n * Remove a file from the array of files provided to the component as existing values.\n *\n * @param index Index of the file to remove in the array.\n */\n public removeFromUploadedList(index: number): void {\n this.uploadedFiles = this.uploadedFiles.filter((f, i) => i !== index);\n\n if (this.files.length === 0) {\n this.progress = 0;\n }\n\n this.getTotalSize();\n this.onChange([...this.uploadedFiles, ...this.files]);\n }\n\n /**\n * Reset the list of files in the component.\n */\n public resetList(): void {\n this.files = [];\n this.uploadedFiles = [];\n this.getTotalSize();\n this.progress = 0;\n this.onChange([...this.uploadedFiles, ...this.files]);\n }\n\n public openBrowseWindow(): void {\n this.fileInputs.first.nativeElement.click();\n }\n\n /**\n * Click item handler.\n * @param e The item clicked. Will be a `Blob` for a file to be uploaded, `EuiUploadedFileInterface` for an initial file.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public onItemClick(e: Blob | EuiUploadedFileInterface | any): void {\n this.itemClick.emit(e);\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n writeValue(value: any): void {\n this.uploadedFiles = value || [];\n this.files = [];\n this.getTotalSize();\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n registerOnTouched(fn: any): void {/* Nothing to be Done so far */}\n\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private onChange: any = (): void => {/* Nothing to be Done so far */};\n\n /**\n * Calculates the total size to be uploaded.\n */\n private getTotalSize(): void {\n this.filesTotalSize = 0;\n this.files.forEach((f) => {\n this.filesTotalSize += f.size;\n });\n }\n}\n","@if (hasDragArea) {\n <div\n class=\"eui-file-upload__drop-area\"\n [class.eui-file-upload__drop-area--active]=\"dragEntered\"\n [class.eui-file-upload__drop-area--disabled]=\"isDropAreaDisabled\">\n <span class=\"eui-file-upload__fake-btn\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</span>\n <span>{{ 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate }}</span>\n <input\n #input\n class=\"eui-file-upload__file-input\"\n attr.aria-label=\"{{ 'eui.euifileupload.CHOOSE-FILE' | translate }} 'or' {{\n 'eui.euifileupload.DRAG-AND-DROP-FILE-HERE' | translate\n }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n [attr.disabled]=\"isDropAreaDisabled ? 'disabled' : null\"\n [multiple]=\"isMultiple\"\n (dragenter)=\"onDragEnter()\"\n (dragleave)=\"onDragLeave()\" />\n </div>\n} @else {\n <div class=\"eui-file-upload__simple-input-file\">\n <label for=\"file-{{ randomNumberId }}\">\n @if (browseButtonTemplate) {\n <ng-template [ngTemplateOutlet]=\"browseButtonTemplate\"></ng-template>\n } @else {\n <button euiButton type=\"button\" (click)=\"openBrowseWindow()\">{{ 'eui.euifileupload.CHOOSE-FILE' | translate }}</button>\n }\n </label>\n \n @if (isMultiple) {\n <input\n #input\n aria-label=\"Choose Multiple Files\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\"\n multiple />\n } @else {\n <input\n #input\n aria-label=\"Choose a single file\"\n class=\"file-input\"\n id=\"file-{{ randomNumberId }}\"\n type=\"file\"\n accept=\"{{ accept }}\" />\n }\n </div>\n}\n\n@if (hasProgressBar) {\n @if (progressBarTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"progressBarTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: { progress } }\">\n </ng-template>\n } @else {\n <eui-file-upload-progress [progress]=\"progress\"></eui-file-upload-progress>\n }\n}\n\n@for (uploadedFile of uploadedFiles; let i = $index; track $index) {\n <div>\n <eui-file-preview\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"uploadedFile\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n [uploadedFileTemplate]=\"uploadedFileTemplate\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromUploadedList($event)\">\n </eui-file-preview>\n </div>\n}\n\n@for (file of files; let i = $index; track $index) {\n <div>\n <eui-file-preview\n isFileObject\n [isItemsClickable]=\"isItemsClickable\"\n [index]=\"i\"\n [file]=\"file\"\n [hasPreview]=\"hasPreview\"\n [hasPreviewAsImage]=\"hasPreviewAsImage\"\n [hasPreviewAsIcon]=\"hasPreviewAsIcon\"\n [uploadedFileTemplate]=\"uploadedFileTemplate\"\n (itemClick)=\"onItemClick($event)\"\n (removeFromList)=\"removeFromList($event)\">\n </eui-file-preview>\n </div>\n}\n\n@if (filesTotalSize && hasTotalSizeDisplayed) {\n <div class=\"eui-file-upload__total-size\">\n {{ filesTotalSize | filesize }} {{ 'eui.euifileupload.TOTAL-SIZE' | translate }}\n </div>\n}\n\n<ng-content></ng-content>\n\n@if (showResetBtn) {\n @if (resetButtonTemplate) {\n <ng-template [ngTemplateOutlet]=\"resetButtonTemplate\"></ng-template>\n } @else {\n <button euiButton type=\"button\" (click)=\"resetList()\">\n {{ 'eui.euifileupload.RESET-LIST' | translate }}\n </button>\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpEvent, HttpEventType, HttpResponse } from '@angular/common/http';\nimport { filter, map, tap } from 'rxjs/operators';\nimport { pipe, Observable, UnaryFunction, MonoTypeOperatorFunction } from 'rxjs';\n\n@Injectable()\nexport class EuiFileUploadUtilsService {\n constructor(private httpClient: HttpClient) {}\n\n /**\n * @description\n * Method that will format data in `FormData` and send them to backend.\n *\n * @example\n * Call the method and log the response in the console.\n *\n * ```\n * this.euiFileUploadUtilsService.sendData(this.form.value, 'http://localhost:3000/api/fake-api').pipe(\n * this.euiFileUploadUtilsService.uploadProgress((progress) => {\n * console.log(progress);\n * }),\n * this.euiFileUploadUtilsService.toResponseBody(),\n * ).subscribe((response) => {\n * console.log(response);\n * });\n * ```\n *\n * @param data Data to send to backend\n * @param APIEndPoint Endpoint URL\n * @returns The backend response.\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public sendData(data: any, APIEndPoint: string): Observable<any> {\n return this.httpClient.post(APIEndPoint, this.toFormData(data), {\n reportProgress: true,\n observe: 'events',\n });\n }\n\n /**\n * @description\n * Method that will return the upload progress.\n *\n * @example\n * Call the method and log the progress in the console.\n *\n * ```\n * this.euiFileUploadUtilsService.sendData(this.form.value, 'http://localhost:3000/api/fake-api').pipe(\n * this.euiFileUploadUtilsService.uploadProgress((progress) => {\n * console.log(progress);\n * }),\n * this.euiFileUploadUtilsService.toResponseBody(),\n * ).subscribe((response) => {\n * console.log(response);\n * });\n * ```\n *\n * @param cb A method to execute on each progress step.\n * @returns A number between 0 and 100.\n */\n public uploadProgress<T>(cb: (progress: number) => void): MonoTypeOperatorFunction<HttpEvent<T>> {\n return tap((event: HttpEvent<T>) => {\n if (event.type === HttpEventType.UploadProgress) {\n cb(Math.round((100 * event.loaded) / event.total));\n }\n });\n }\n\n /**\n * @description\n * Method that will return only the body of the backend response.\n *\n * @example\n * Call the method and log the response in the console.\n *\n * ```\n * this.euiFileUploadUtilsService.sendData(this.form.value, 'http://localhost:3000/api/fake-api').pipe(\n * this.euiFileUploadUtilsService.uploadProgress((progress) => {\n * console.log(progress);\n * }),\n * this.euiFileUploadUtilsService.toResponseBody(),\n * ).subscribe((response) => {\n * console.log(response);\n * });\n * ```\n *\n * @returns The backend response.\n */\n public toResponseBody<T>(): UnaryFunction<Observable<HttpEvent<T>>, Observable<T>> {\n return pipe(\n filter((event: HttpEvent<T>) => event.type === HttpEventType.Response),\n map((res: HttpResponse<T>) => res.body),\n );\n }\n\n /**\n * @description\n * Return the icon to be used with eui-icon-svg of the given extension or a default file icon\n * \n * @param fileExtension \n * @returns Icon name as string\n */\n public getIconForExtension(fileExtension: string): string {\n const previewAsIconConfig = {\n avi: 'eui-file-video',\n html: 'eui-file-html',\n htm: 'eui-file-code',\n js: 'eui-file-code',\n json: 'eui-file-code',\n mp3: 'eui-file-audio',\n mp4: 'eui-file-video',\n pdf: 'eui-file-pdf',\n png: 'eui-file-image',\n svg: 'eui-file-image',\n txt: 'eui-file-text',\n xml: 'eui-file-code',\n jpeg: 'eui-file-image',\n jpg: 'eui-file-image',\n zip: 'eui-file-archive',\n doc: 'eui-file-word',\n docx: 'eui-file-word-o',\n xls: 'eui-file-excel-o',\n xlsx: 'eui-file-excel-o',\n ppt: 'eui-file-powerpoint',\n csv: 'eui-file-text',\n rtf: 'eui-file-text',\n };\n\n const f = fileExtension.toLowerCase();\n return !previewAsIconConfig[f] ? 'eui-file-empty-o' : previewAsIconConfig[f];\n }\n\n /**\n * Internal method returning `FormData` object.\n * \n * @param formValue Data to send to form\n * @returns A `FormData` object\n */\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private toFormData(formValue: any): FormData {\n const formData = new FormData();\n\n for (const key of Object.keys(formValue)) {\n if (Array.isArray(formValue[key])) {\n let fileIndex = 0;\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formValue[key].forEach((value: any) => {\n if (value instanceof File) {\n formData.append(key + fileIndex, value);\n fileIndex++;\n }\n });\n\n const a = [];\n // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n formValue[key].forEach((value: any): void => {\n a.push(value);\n });\n\n formData.append(key, JSON.stringify(a));\n } else {\n if (typeof formValue[key] === 'string') {\n formData.set(key, formValue[key]);\n } else {\n formData.set(key, JSON.stringify(formValue[key]));\n }\n }\n }\n\n return formData;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { EuiButtonModule } from '@eui/components/eui-button';\nimport { EuiIconModule } from '@eui/components/eui-icon';\nimport { EuiTemplateDirectiveModule } from '@eui/components/directives';\n\nimport { EuiFileUploadComponent } from './eui-file-upload.component';\nimport { EuiFileUploadProgressComponent } from './progress/eui-file-upload-progress.component';\nimport { EuiFilePreviewComponent } from './file-preview/file-preview.component';\nimport { EuiFileSizePipe } from './pipes/filesize.pipe';\nimport { EuiFileUploadUtilsService } from './utils/eui-file-upload.utils';\n\n/**\n * @description\n * Module that provides the EuiFileUpload component and its dependencies\n */\n@NgModule({\n imports: [CommonModule, EuiButtonModule, EuiIconModule, TranslateModule, EuiTemplateDirectiveModule],\n declarations: [EuiFileUploadComponent, EuiFileUploadProgressComponent, EuiFilePreviewComponent, EuiFileSizePipe],\n providers: [EuiFileUploadUtilsService],\n exports: [EuiFileUploadComponent, EuiFileSizePipe, EuiTemplateDirectiveModule],\n})\nexport class EuiFileUploadModule {}\n","export type MimeType =\n | 'image/jpeg'\n | 'image/png'\n | 'image/gif'\n | 'image/webp'\n | 'image/flif'\n | 'image/x-xcf'\n | 'image/x-canon-cr2'\n | 'image/x-canon-cr3'\n | 'image/tiff'\n | 'image/bmp'\n | 'image/icns'\n | 'image/vnd.ms-photo'\n | 'image/vnd.adobe.photoshop'\n | 'application/x-indesign'\n | 'application/epub+zip'\n | 'application/x-xpinstall'\n | 'application/vnd.oasis.opendocument.text'\n | 'application/vnd.oasis.opendocument.spreadsheet'\n | 'application/vnd.oasis.opendocument.presentation'\n | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n | 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n | 'application/zip'\n | 'application/json'\n | 'application/x-tar'\n | 'application/x-rar-compressed'\n | 'application/gzip'\n | 'application/x-bzip2'\n | 'application/x-7z-compressed'\n | 'application/x-apple-diskimage'\n | 'video/mp4'\n | 'audio/midi'\n | 'video/x-matroska'\n | 'video/webm'\n | 'video/quicktime'\n | 'video/vnd.avi'\n | 'audio/vnd.wave'\n | 'audio/qcelp'\n | 'audio/x-ms-asf'\n | 'video/x-ms-asf'\n | 'application/vnd.ms-asf'\n | 'video/mpeg'\n | 'video/3gpp'\n | 'audio/mpeg'\n | 'audio/mp4'\n | 'audio/opus'\n | 'video/ogg'\n | 'audio/ogg'\n | 'application/ogg'\n | 'audio/x-flac'\n | 'audio/ape'\n | 'audio/wavpack'\n | 'audio/amr'\n | 'application/pdf'\n | 'application/x-elf'\n | 'application/x-msdownload'\n | 'application/x-shockwave-flash'\n | 'application/rtf'\n | 'application/wasm'\n | 'font/woff'\n | 'font/woff2'\n | 'application/vnd.ms-fontobject'\n | 'font/ttf'\n | 'font/otf'\n | 'image/x-icon'\n | 'video/x-flv'\n | 'application/postscript'\n | 'application/eps'\n | 'application/x-xz'\n | 'application/x-sqlite3'\n | 'application/x-nintendo-nes-rom'\n | 'application/x-google-chrome-extension'\n | 'application/vnd.ms-cab-compressed'\n | 'application/x-deb'\n | 'application/x-unix-archive'\n | 'application/x-rpm'\n | 'application/x-compress'\n | 'application/x-lzip'\n | 'application/x-cfb'\n | 'application/x-mie'\n | 'application/x-apache-arrow'\n | 'application/mxf'\n | 'video/mp2t'\n | 'application/x-blender'\n | 'image/bpg'\n | 'image/j2c'\n | 'image/jp2'\n | 'image/jpx'\n | 'image/jpm'\n | 'image/mj2'\n | 'audio/aiff'\n | 'application/xml'\n | 'application/x-mobipocket-ebook'\n | 'image/heif'\n | 'image/heif-sequence'\n | 'image/heic'\n | 'image/heic-sequence'\n | 'image/ktx'\n | 'application/dicom'\n | 'audio/x-musepack'\n | 'text/calendar'\n | 'text/vcard'\n | 'model/gltf-binary'\n | 'application/vnd.tcpdump.pcap'\n | 'audio/x-voc'\n | 'audio/vnd.dolby.dd-raw'\n | 'audio/x-m4a'\n | 'image/apng'\n | 'image/x-olympus-orf'\n | 'image/x-sony-arw'\n | 'image/x-adobe-dng'\n | 'image/x-nikon-nef'\n | 'image/x-panasonic-rw2'\n | 'image/x-fujifilm-raf'\n | 'video/x-m4v'\n | 'video/3gpp2'\n | 'application/x-esri-shape'\n | 'audio/aac'\n | 'audio/x-it'\n | 'audio/x-s3m'\n | 'audio/x-xm'\n | 'video/MP1S'\n | 'video/MP2P'\n | 'application/vnd.sketchup.skp'\n | 'image/avif'\n | 'application/x-lzh-compressed'\n | 'application/pgp-encrypted'\n | 'application/x-asar'\n | 'model/stl'\n | 'application/vnd.ms-htmlhelp'\n | 'model/3mf'\n | 'image/jxl'\n | 'application/zstd'\n | 'image/jls'\n | 'application/vnd.ms-outlook'\n | 'image/vnd.dwg'\n | 'application/x-parquet'\n | 'application/java-vm'\n | 'application/x-arj'\n | 'application/x-cpio'\n | 'application/x-ace-compressed'\n | 'application/avro'\n | 'application/vnd.iccprofile'; // eslint-disable-line semi-style\n\nexport const getMimeType = (header: Uint8Array): MimeType => {\n // convert Uint8Array to hex string\n const hex = uint8ArrayToHexString(header);\n\n // map hex string to mime type\n if (hex.startsWith('ffd8ffe000104a46')) return 'image/jpeg';\n if (hex.startsWith('89504e47')) return 'image/png';\n if (hex.startsWith('464c4946')) return 'image/flif';\n if (hex.startsWith('67696d7020786366')) return 'image/x-xcf';\n if (hex.startsWith('49492a00')) return 'image/x-canon-cr2';\n if (hex.startsWith('49492a00')) return 'image/x-canon-cr3';\n if (hex.startsWith('49492a00')) return 'image/tiff';\n if (hex.startsWith('424d')) return 'image/bmp';\n if (hex.startsWith('69636e73')) return 'image/icns';\n if (hex.startsWith('49491a0000004845415050')) return 'image/vnd.ms-photo';\n if (hex.startsWith('38425053')) return 'image/vnd.adobe.photoshop';\n if (hex.startsWith('06054b50')) return 'application/x-indesign';\n if (hex.startsWith('504b0304')) return 'application/epub+zip';\n if (hex.startsWith('504b0304')) return 'application/x-xpinstall';\n if (hex.startsWith('504b0304')) return 'application/vnd.oasis.opendocument.text';\n if (hex.startsWith('504b0304')) return 'application/vnd.oasis.opendocument.spreadsheet';\n if (hex.startsWith('504b0304')) return 'application/vnd.oasis.opendocument.presentation';\n if (hex.startsWith('504b0304')) return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n if (hex.startsWith('504b0304')) return 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n if (hex.startsWith('504b0304')) return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n if (hex.startsWith('504b0304')) return 'application/zip';\n if (hex.startsWith('7b2274797065223a226a736f6e227d')) return 'application/json';\n if (hex.startsWith('7573746172')) return 'application/x-tar';\n if (hex.startsWith('526172211a0700')) return 'application/x-rar-compressed';\n if (hex.startsWith('1f8b08')) return 'application/gzip';\n if (hex.startsWith('425a68')) return 'application/x-bzip2';\n if (hex.startsWith('377abcaf271c')) return 'application/x-7z-compressed';\n if (hex.startsWith('78da')) return 'application/x-apple-diskimage';\n if (hex.startsWith('00000020667479706d70')) return 'video/mp4';\n if (hex.startsWith('4d546864')) return 'audio/midi';\n if (hex.startsWith('1a45dfa393428288')) return 'video/x-matroska';\n if (hex.startsWith('1a45dfa3')) return 'video/webm';\n if (hex.startsWith('00000014667479707174')) return 'video/quicktime';\n if (hex.startsWith('52494646')) return 'video/vnd.avi';\n if (hex.startsWith('52494646')) return 'audio/vnd.wave';\n if (hex.startsWith('0a010301')) return 'audio/qcelp';\n if (hex.startsWith('3026b2758e66cf11')) return 'audio/x-ms-asf';\n if (hex.startsWith('3026b2758e66cf11')) return 'video/x-ms-asf';\n if (hex.startsWith('3026b2758e66cf11')) return 'application/vnd.ms-asf';\n if (hex.startsWith('000001ba')) return 'video/mpeg';\n if (hex.startsWith('00000020667479703367')) return 'video/3gpp';\n if (hex.startsWith('494433')) return 'audio/mpeg';\n if (hex.startsWith('00000020667479704d344120')) return 'audio/mp4';\n if (hex.startsWith('4f707573')) return 'audio/opus';\n if (hex.startsWith('4f676753')) return 'video/ogg';\n if (hex.startsWith('4f676753')) return 'audio/ogg';\n if (hex.startsWith('4f676753')) return 'application/ogg';\n if (hex.startsWith('664c6143')) return 'audio/x-flac';\n if (hex.startsWith('4d414320')) return 'audio/ape';\n if (hex.startsWith('7776706b')) return 'audio/wavpack';\n if (hex.startsWith('2321414d520a')) return 'audio/amr';\n if (hex.startsWith('255044462d312e')) return 'application/pdf';\n if (hex.startsWith('7f454c46')) return 'application/x-elf';\n if (hex.startsWith('4d5a')) return 'application/x-msdownload';\n if (hex.startsWith('435753')) return 'application/x-shockwave-flash';\n if (hex.startsWith('7b5c72746631')) return 'application/rtf';\n if (hex.startsWith('0061736d')) return 'application/wasm';\n if (hex.startsWith('774f4646')) return 'font/woff';\n if (hex.startsWith('774f4632')) return 'font/woff2';\n if (hex.startsWith('000100000008')) return 'application/vnd.ms-fontobject';\n if (hex.startsWith('0001000000')) return 'font/ttf';\n if (hex.startsWith('4f54544f00')) return 'font/otf';\n if (hex.startsWith('000001000100')) return 'image/x-icon';\n if (hex.startsWith('464c560105')) return 'video/x-flv';\n if (hex.startsWith('25215053')) return 'application/postscript';\n if (hex.startsWith('25215053')) return 'application/eps';\n if (hex.startsWith('fd377a585a00')) return 'application/x-xz';\n if (hex.startsWith('53514c69746520666f726d6174203300')) return 'application/x-sqlite3';\n if (hex.startsWith('4e45531a00000001')) return 'application/x-nintendo-nes-rom';\n if (hex.startsWith('504b0304')) return 'application/x-google-chrome-extension';\n if (hex.startsWith('4d534346')) return 'application/vnd.ms-cab-compressed';\n if (hex.startsWith('213c617263683e0a')) return 'application/x-deb';\n if (hex.startsWith('1f8b08')) return 'application/x-unix-archive';\n if (hex.startsWith('edabeedb')) return 'application/x-rpm';\n if (hex.startsWith('1f9d90')) return 'application/x-compress';\n if (hex.startsWith('4c5a4950')) return 'application/x-lzip';\n if (hex.startsWith('d0cf11e0a1b11ae1')) return 'application/x-cfb';\n if (hex.startsWith('4d49455f')) return 'application/x-mie';\n if (hex.startsWith('4141523146')) return 'application/x-apache-arrow';\n if (hex.startsWith('060e2b3402050101')) return 'application/mxf';\n if (hex.startsWith('47')) return 'video/mp2t';\n if (hex.startsWith('4250e4')) return 'application/x-blender';\n if (hex.startsWith('425047fb')) return 'image/bpg';\n if (hex.startsWith('ff4fff51')) return 'image/j2c';\n if (hex.startsWith('0000000c6a5020200d0a')) return 'image/jp2';\n if (hex.startsWith('6a5020200d0a870a')) return 'image/jpx';\n if (hex.startsWith('6a5020200d0a870a')) return 'image/jpm';\n if (hex.startsWith('0000000c6a5020200d0a')) return 'image/mj2';\n if (hex.startsWith('464f524d')) return 'audio/aiff';\n if (hex.startsWith('3c3f786d6c20')) return 'application/xml';\n if (hex.startsWith('424f4f4b4d4f4249')) return 'application/x-mobipocket-ebook';\n if (hex.startsWith('667479706174')) return 'image/heif';\n if (hex.startsWith('667479706174')) return 'image/heif-sequence';\n if (hex.startsWith('667479706174')) return 'image/heic';\n if (hex.startsWith('667479706174')) return 'image/heic-sequence';\n if (hex.startsWith('4b545820')) return 'image/ktx';\n if (hex.startsWith('4449434d')) return 'application/dicom';\n if (hex.startsWith('4d50434b')) return 'audio/x-musepack';\n if (hex.startsWith('56656e64')) return 'text/calendar';\n if (hex.startsWith('424547494e3a5643415244')) return 'text/vcard';\n if (hex.startsWith('676c5458')) return 'model/gltf-binary';\n if (hex.startsWith('d4c3b2a1')) return 'application/vnd.tcpdump.pcap';\n if (hex.startsWith('464f524d')) return 'audio/x-voc';\n if (hex.startsWith('64646f6c')) return 'audio/vnd.dolby.dd-raw';\n\n return null;\n};\n\nconst uint8ArrayToHexString = (uint8Array): string => {\n return Array.prototype.map.call(uint8Array, (byte) => ('00' + byte.toString(16)).slice(-2)).join('');\n};\n","import { AbstractControl, AsyncValidatorFn, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { Observable, of, zip } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { getMimeType, MimeType } from './mime-types';\n\n/**\n * @description\n * Validator that requires the maximum length of files that can be uploaded.\n *\n * @example\n * Validate that the user selected maximum 3 files:\n *\n * ```\n * const fileUpload = new FormControl(null, maxFilesValidator(3));\n * console.log(fileUpload.errors); // { maxFiles: 3 }\n * ```\n *\n * @param {MimeType[]} maxFiles - The maximum number of files allowed.\n * @returns A validator function that returns an error map with the\n * `maxFiles` if the validation check fails, otherwise `null`.\n */\nexport const maxFilesValidator =\n (maxFiles: number): ValidatorFn =>\n (control: AbstractControl): { maxFiles: number } | null =>\n control.value && control.value.length > maxFiles ? { maxFiles } : null;\n\n/**\n * @description\n * Validator that requires the maximum size (in bytes) of files that can be uploaded.\n *\n * @example\n * Validate that the user doesn't select a file have a size up to 300Kb:\n *\n * ```\n * const fileUpload = new FormControl(null, maxSizeValidator(300000));\n * console.log(fileUpload.errors); // { maxSize: 300000 }\n * ```\n * \n * @param {MimeType[]} maxFileSize - The maximum filesize allowed.\n * @returns A validator function that returns an error map with the\n * `maxSize` if the validation check fails, otherwise `null`.\n */\nexport const maxSizeValidator =\n (maxSize: number): ValidatorFn =>\n (control: AbstractControl): { maxSize: number } | null => {\n let totalSize = 0;\n if (control.value) {\n control.value.forEach((file: File) => {\n totalSize += file.size;\n });\n }\n\n return control.value && totalSize > maxSize * 1.024 ? { maxSize } : null;\n };\n\n/**\n * @description\n * Validator that requires the maximum size (in bytes) per file that can be uploaded.\n *\n * @example\n * Validates that the user doesn't select a file that exceeds the provided size\n *\n * @param {MimeType[]} maxFileSize - The maximum filesize allowed.\n * @returns A validator function that returns an error map with the\n * `maxFileSize` and the `indexes` of the file/files that exceeded the max size if the validation check fails, otherwise `null`.\n */\nexport const maxFileSizeValidator =\n (maxFileSize: number): ValidatorFn =>\n (control: AbstractControl): { maxFileSize: number, indexes: Array<number> } | null => {\n const fileIndexes =[];\n let maxFileExceeded = false;\n if (control.value) {\n control.value.forEach((file: File, index: number) => {\n if (file.size > maxFileSize * 1.024) {\n fileIndexes.push(index);\n maxFileExceeded = true;\n }\n });\n }\n\n return control.value && maxFileExceeded ? { maxFileSize, indexes: fileIndexes } : null;\n };\n\n/**\n * @description\n * Validator that requires an array of mime type that can be uploaded.\n *\n * @example\n * Validate that the user doesn't select a file having another extension than .jpg or .jpeg:\n * ```\n * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),\n * console.log(fileUpload.errors); // { invalidFileExtension: ['image/jpeg'] }\n * ```\n * \n * @param {MimeType[]} mimeTypes - The list of allowed MIME types.\n * @returns A validator function that returns an error map with the\n * `invalidFileExtension` if the validation check fails, otherwise `null`.\n */\nexport const mimeTypeExtensionValidator =\n (mimeTypes: string[]): ValidatorFn =>\n (control: AbstractControl): { invalidFileExtension: string[] } | null => {\n const invalidFileExtension: string[] = [];\n if (control.value) {\n control.value.forEach((file: File) => {\n if (mimeTypes.indexOf(file.type) === -1) {\n invalidFileExtension.push(file.name);\n }\n });\n }\n\n return control.value && invalidFileExtension.length > 0 ? { invalidFileExtension } : null;\n };\n\n/**\n * @description\n * Validator that requires an array of mime type that can be uploaded.\n *\n * @example\n * Validate that the user doesn't select a file having another extension than .jpg or .jpeg:\n *\n * ```\n * const fileUpload = new FormControl(null, mimeTypeExtensionValidator(['image/jpeg'])),\n * console.log(fileUpload.errors); // { invalidMimeFileType: ['image/jpeg'] }\n * ```\n * @param {MimeType[]} mimeTypes - The list of allowed MIME types.\n * @returns An Async validator function that returns an error map with the\n * `invalidMimeFileType` if the validation check fails, otherwise `null`.\n */\nexport const asyncMimeTypeExtensionValidator =\n (mimeTypes: MimeType[]): AsyncValidatorFn =>\n (control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> => {\n if (control.value) {\n const fileErrorObservables: Observable<ValidationErrors | null>[] = [];\n // iterate over files\n control.value.forEach((file: File) => {\n // push observable which will check the mime validation type\n fileErrorObservables.push(validateFileMimeType(file, mimeTypes));\n });\n return zip(...fileErrorObservables).pipe(\n map((fileErrors) => {\n const errors = fileErrors.filter((fileError) => fileError !== null);\n // Error should be { fileName: FileType }\n return { invalidMimeFileType: errors };\n }),\n );\n }\n return of(null);\n };\n\n/**\n * Validates the MIME type of a file against a list of allowed MIME types.\n *\n * @param {File} file - The file to validate.\n * @param {MimeType[]} mimeTypes - The list of allowed MIME types.\n * @returns {Observable<{ [key: string]: MimeType }>} An observable that emits an object containing the file name as the key and\n * its detected MIME type as the value if the file type is not allowed.\n */\nconst validateFileMimeType = (file: File, mimeTypes: MimeType[]): Observable<{ [key: string]: MimeType }> => {\n return new Observable<{ [p: string]: MimeType }>((subscriber) => {\n const reader = new FileReader();\n reader.onloadend = (): void => {\n const buffer = reader.result as ArrayBuffer;\n const headerBytes = new Uint8Array(buffer).slice(0, 8);\n const mime = getMimeType(headerBytes);\n if (mimeTypes.indexOf(mime) === -1) {\n subscriber.next({ [file.name]: mime });\n }\n subscriber.complete();\n };\n reader.readAsArrayBuffer(file);\n });\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.EuiFileSizePipe","i3.EuiFileUploadProgressComponent","i4.EuiFilePreviewComponent","i6.EuiFileSizePipe","i1"],"mappings":"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"}
@@ -90,11 +90,11 @@ class EuiGrowlComponent {
90
90
  return this.value?.length ? this.value.findIndex((value) => value === msg) : -1;
91
91
  }
92
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: EuiGrowlComponent, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.7", type: EuiGrowlComponent, isStandalone: false, selector: "eui-growl", inputs: { e2eAttr: "e2eAttr", sticky: ["sticky", "sticky", booleanAttribute], life: "life", value: "value", closeAllSticky: "closeAllSticky", position: "position" }, outputs: { growlClick: "growlClick" }, host: { listeners: { "click": "onClick()" }, properties: { "class": "this.cssClasses", "attr.data-e2e": "this.e2eAttr", "attr.role": "this.role", "attr.aria-live": "this.ariaLive", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy" } }, ngImport: i0, template: "<div\n *ngFor=\"let msg of value\"\n class=\"eui-growl-item-container eui-u-anim eui-u-anim--fast\"\n [ngClass]=\"{\n 'eui-growl-item-container--info eui--info': msg.severity === 'info',\n 'eui-growl-item-container--warning eui--warning': msg.severity === 'warning',\n 'eui-growl-item-container--danger eui--danger': msg.severity === 'danger',\n 'eui-growl-item-container--success eui--success': msg.severity === 'success',\n 'eui-growl-item-container--filled': msg.filled,\n 'eui-growl--sticky': sticky,\n }\"\n [class.eui-u-anim--slideInUp]=\"position === 'bottom-left' || position === 'bottom-center' || position === 'bottom-right'\"\n [class.eui-u-anim--slideInDown]=\"position === 'top-left' || position === 'top-center' || position === 'top-right'\">\n\n <div class=\"eui-growl-item\">\n <div class=\"eui-growl-item-summary-wrapper\">\n <eui-icon-state [euiVariant]=\"msg.severity\" class=\"eui-growl-item-icon\"/>\n <span [id]=\"titleId\" class=\"eui-growl-item-title\">{{ msg.summary }}</span>\n </div>\n <div [id]=\"contentId\" class=\"eui-growl-item-content\" [innerHTML]=\"msg.detail\"></div>\n\n <eui-icon-button\n (buttonClick)=\"remove(msg)\"\n icon=\"close:outline\"\n fillColor=\"neutral-light\"\n euiRounded\n ariaLabel=\"Close growl icon\"\n class=\"eui-growl-item-close\">\n </eui-icon-button>\n </div>\n\n</div>\n<div class=\"eui-growl-item-container eui-u-anim eui-u-anim--fast eui-growl-item-container--secondary\"\n *ngIf=\"closeAllSticky && isGrowlMoreThanTwo()\">\n <div class=\"eui-growl-item\">\n <div class=\"eui-growl-item-summary-wrapper\">\n <eui-icon-svg icon=\"checkmark-done:sharp\"/>\n <span class=\"eui-growl-item-title\">{{ 'eui.growl.dismiss-all' | translate }}</span>\n </div>\n <eui-icon-button (buttonClick)=\"removeAll()\"\n icon=\"close:outline\"\n fillColor=\"neutral-light\"\n euiRounded\n ariaLabel=\"Close growl icon\"\n class=\"eui-growl-item-close\"/>\n </div>\n</div>\n", styles: [".eui-19 .eui-growl{--_color: var(--eui-growl-color, var(--eui-c-s-info-on-bg));--_bg-color: var(--eui-growl-bg-color, var(--eui-c-s-info-bg));--_color-on-bg: var(--eui-growl-color-on-bg, var(--eui-c-s-info-bg-contrast));--_close-hover-color: var(--eui-growl-close-hover-color, var(--eui-c-s-info-bg-hover));--eui-bottom-left-horizontal-offset: var(--eui-s-l);--eui-bottom-left-vertical-offset: var(--eui-s-l);--eui-bottom-right-horizontal-offset: var(--eui-s-l);--eui-bottom-right-vertical-offset: var(--eui-s-l)}.eui-19 .eui-growl-item-container--primary{--_color: var(--eui-c-s-primary);--_bg-color: var(--eui-c-s-primary-bg);--_color-on-bg: var(--eui-c-s-primary-bg-contrast);--_close-hover-color: var(--eui-c-s-primary-bg-hover)}.eui-19 .eui-growl-item-container--secondary{--_color: var(--eui-c-s-secondary);--_bg-color: var(--eui-c-s-secondary-bg);--_color-on-bg: var(--eui-c-s-secondary-bg-contrast);--_close-hover-color: var(--eui-c-s-secondary-bg-hover)}.eui-19 .eui-growl-item-container--info{--_color: var(--eui-c-s-info);--_bg-color: var(--eui-c-s-info-bg);--_color-on-bg: var(--eui-c-s-info-bg-contrast);--_close-hover-color: var(--eui-c-s-info-bg-hover)}.eui-19 .eui-growl-item-container--success{--_color: var(--eui-c-s-success);--_bg-color: var(--eui-c-s-success-bg);--_color-on-bg: var(--eui-c-s-success-bg-contrast);--_close-hover-color: var(--eui-c-s-success-bg-hover)}.eui-19 .eui-growl-item-container--warning{--_color: var(--eui-c-s-warning);--_bg-color: var(--eui-c-s-warning-bg);--_color-on-bg: var(--eui-c-s-warning-bg-contrast);--_close-hover-color: var(--eui-c-s-warning-bg-hover)}.eui-19 .eui-growl-item-container--danger{--_color: var(--eui-c-s-danger);--_bg-color: var(--eui-c-s-danger-bg);--_color-on-bg: var(--eui-c-s-danger-bg-contrast);--_close-hover-color: var(--eui-c-s-danger-bg-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--primary{--_bg-color: var(--eui-c-primary);--_color-on-bg: var(--eui-c-primary-contrast);--_color: var(--eui-c-primary-contrast);--_icon-color: var(--eui-c-primary-contrast);--_close-hover-color: var(--eui-c-primary-d10)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--info{--_bg-color: var(--eui-c-info);--_color-on-bg: var(--eui-c-info-contrast);--_color: var(--eui-c-info-contrast);--_icon-color: var(--eui-c-info-contrast);--_close-hover-color: var(--eui-c-info-d10)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--success{--_bg-color: var(--eui-c-success-dark);--_color-on-bg: var(--eui-c-success-contrast);--_color: var(--eui-c-success-contrast);--_icon-color: var(--eui-c-success-contrast);--_close-hover-color: var(--eui-c-success-dark-d10)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--warning{--_bg-color: var(--eui-c-warning);--_color-on-bg: var(--eui-c-warning-contrast);--_color: var(--eui-c-warning-contrast);--_icon-color: var(--eui-c-warning-contrast);--_close-hover-color: var(--eui-c-warning-d10)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--danger{--_bg-color: var(--eui-c-s-danger);--_color-on-bg: var(--eui-c-danger-contrast);--_color: var(--eui-c-danger-contrast);--_icon-color: var(--eui-c-danger-contrast);--_close-hover-color: var(--eui-c-s-danger-d10)}.eui-19 .eui-growl{position:fixed;width:20rem;z-index:var(--eui-zi-growl-message)}.eui-19 .eui-growl--bottom-left{bottom:var(--eui-bottom-left-vertical-offset);left:var(--eui-bottom-left-horizontal-offset)}.eui-19 .eui-growl--bottom-center{bottom:var(--eui-s-l);right:50%;transform:translate(50%)}.eui-19 .eui-growl--bottom-right{bottom:var(--eui-bottom-right-vertical-offset);right:var(--eui-bottom-right-horizontal-offset)}.eui-19 .eui-growl--top-left{left:var(--eui-s-l);top:var(--eui-s-l)}.eui-19 .eui-growl--top-center{right:50%;top:var(--eui-s-l);transform:translate(50%)}.eui-19 .eui-growl--top-right{right:var(--eui-s-l);top:var(--eui-s-l)}.eui-19 .eui-growl a{text-decoration:underline}.eui-19 .eui-growl-item-container{margin-bottom:var(--eui-s-s);position:relative;background-color:var(--_bg-color);color:var(--_color-on-bg)}.eui-19 .eui-growl-item{display:flex;flex-direction:column;padding:var(--eui-s-m);position:relative;width:20rem;box-shadow:var(--eui-sh-3)}.eui-19 .eui-growl-item-summary-wrapper{display:flex;align-items:center;gap:var(--eui-s-xs)}.eui-19 .eui-growl-item-title{font:var(--eui-f-m-compact-bold);margin-right:var(--eui-s-xl);color:var(--_color)}.eui-19 .eui-growl-item-content:not(:empty){margin-top:var(--eui-s-xs);max-height:80vh;overflow-y:auto;overflow-wrap:break-word;font:var(--eui-f-m-compact)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar{display:inherit;height:4px;width:4px;background-color:var(--eui-c-neutral-bg-light)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-thumb{background-color:var(--_eui-scrollbars-foreground-color);border-radius:5rem}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-19 .eui-growl-item-content:not(:empty){scrollbar-color:var(--eui-c-neutral-lighter) var(--eui-c-neutral-bg-light);scrollbar-width:auto}}.eui-19 .eui-growl-item-close{position:absolute;top:var(--eui-s-xs);right:var(--eui-s-xs)}.eui-19 .eui-growl-item-close .eui-icon-button__button:hover{background-color:var(--_close-hover-color)}.eui-19 .eui-growl-item-container--filled .eui-icon-svg svg{fill:var(--_icon-color)!important;color:var(--_icon-color)!important}.eui-19 .eui-growl-item-container--filled a,.eui-19 .eui-growl-item-container--filled code{color:var(--eui-c-white)!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i3.EuiIconButtonComponent, selector: "eui-icon-button", inputs: ["icon", "iconUrl", "fillColor", "size", "ariaLabel", "tabindex", "hasNoPadding", "hasFocusHoverColor", "hasFocusHoverBg", "euiRounded", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i4.EuiIconStateComponent, selector: "eui-icon-state", inputs: ["size", "ariaLabel"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.7", type: EuiGrowlComponent, isStandalone: false, selector: "eui-growl", inputs: { e2eAttr: "e2eAttr", sticky: ["sticky", "sticky", booleanAttribute], life: "life", value: "value", closeAllSticky: "closeAllSticky", position: "position" }, outputs: { growlClick: "growlClick" }, host: { listeners: { "click": "onClick()" }, properties: { "class": "this.cssClasses", "attr.data-e2e": "this.e2eAttr", "attr.role": "this.role", "attr.aria-live": "this.ariaLive", "attr.aria-labelledby": "this.ariaLabelledBy", "attr.aria-describedby": "this.ariaDescribedBy" } }, ngImport: i0, template: "<div\n *ngFor=\"let msg of value\"\n class=\"eui-growl-item-container eui-u-anim eui-u-anim--fast\"\n [ngClass]=\"{\n 'eui-growl-item-container--info eui--info': msg.severity === 'info',\n 'eui-growl-item-container--warning eui--warning': msg.severity === 'warning',\n 'eui-growl-item-container--danger eui--danger': msg.severity === 'danger',\n 'eui-growl-item-container--success eui--success': msg.severity === 'success',\n 'eui-growl-item-container--filled': msg.filled,\n 'eui-growl--sticky': sticky,\n }\"\n [class.eui-u-anim--slideInUp]=\"position === 'bottom-left' || position === 'bottom-center' || position === 'bottom-right'\"\n [class.eui-u-anim--slideInDown]=\"position === 'top-left' || position === 'top-center' || position === 'top-right'\">\n\n <div class=\"eui-growl-item\">\n <div class=\"eui-growl-item-summary-wrapper\">\n <eui-icon-state [euiVariant]=\"msg.severity\" class=\"eui-growl-item-icon\"/>\n <span [id]=\"titleId\" class=\"eui-growl-item-title\">{{ msg.summary }}</span>\n </div>\n <div [id]=\"contentId\" class=\"eui-growl-item-content\" [innerHTML]=\"msg.detail\"></div>\n\n <eui-icon-button\n (buttonClick)=\"remove(msg)\"\n icon=\"close:outline\"\n fillColor=\"neutral-light\"\n euiRounded\n ariaLabel=\"Close growl icon\"\n class=\"eui-growl-item-close\">\n </eui-icon-button>\n </div>\n\n</div>\n<div class=\"eui-growl-item-container eui-u-anim eui-u-anim--fast eui-growl-item-container--secondary\"\n *ngIf=\"closeAllSticky && isGrowlMoreThanTwo()\">\n <div class=\"eui-growl-item\">\n <div class=\"eui-growl-item-summary-wrapper\">\n <eui-icon-svg icon=\"checkmark-done:sharp\"/>\n <span class=\"eui-growl-item-title\">{{ 'eui.growl.dismiss-all' | translate }}</span>\n </div>\n <eui-icon-button (buttonClick)=\"removeAll()\"\n icon=\"close:outline\"\n fillColor=\"neutral-light\"\n euiRounded\n ariaLabel=\"Close growl icon\"\n class=\"eui-growl-item-close\"/>\n </div>\n</div>\n", styles: [".eui-19 .eui-growl{--_color: var(--eui-growl-color, var(--eui-c-s-info-on-bg));--_bg-color: var(--eui-growl-bg-color, var(--eui-c-s-info-bg));--_color-on-bg: var(--eui-growl-color-on-bg, var(--eui-c-s-info-bg-contrast));--_close-hover-color: var(--eui-growl-close-hover-color, var(--eui-c-s-info-bg-hover));--eui-bottom-left-horizontal-offset: var(--eui-s-l);--eui-bottom-left-vertical-offset: var(--eui-s-l);--eui-bottom-right-horizontal-offset: var(--eui-s-l);--eui-bottom-right-vertical-offset: var(--eui-s-l)}.eui-19 .eui-growl-item-container--primary{--_color: var(--eui-c-s-primary);--_bg-color: var(--eui-c-s-primary-bg);--_color-on-bg: var(--eui-c-s-primary-bg-contrast);--_close-hover-color: var(--eui-c-s-primary-bg-hover)}.eui-19 .eui-growl-item-container--secondary{--_color: var(--eui-c-s-secondary);--_bg-color: var(--eui-c-s-secondary-bg);--_color-on-bg: var(--eui-c-s-secondary-bg-contrast);--_close-hover-color: var(--eui-c-s-secondary-bg-hover)}.eui-19 .eui-growl-item-container--info{--_color: var(--eui-c-s-info);--_bg-color: var(--eui-c-s-info-bg);--_color-on-bg: var(--eui-c-s-info-bg-contrast);--_close-hover-color: var(--eui-c-s-info-bg-hover)}.eui-19 .eui-growl-item-container--success{--_color: var(--eui-c-s-success);--_bg-color: var(--eui-c-s-success-bg);--_color-on-bg: var(--eui-c-s-success-bg-contrast);--_close-hover-color: var(--eui-c-s-success-bg-hover)}.eui-19 .eui-growl-item-container--warning{--_color: var(--eui-c-s-warning);--_bg-color: var(--eui-c-s-warning-bg);--_color-on-bg: var(--eui-c-s-warning-bg-contrast);--_close-hover-color: var(--eui-c-s-warning-bg-hover)}.eui-19 .eui-growl-item-container--danger{--_color: var(--eui-c-s-danger);--_bg-color: var(--eui-c-s-danger-bg);--_color-on-bg: var(--eui-c-s-danger-bg-contrast);--_close-hover-color: var(--eui-c-s-danger-bg-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--primary{--_bg-color: var(--eui-c-s-primary-fill);--_color-on-bg: var(--eui-c-s-primary-fill-contrast);--_color: var(--eui-c-s-primary-fill-contrast);--_icon-color: var(--eui-c-s-primary-fill-contrast);--_close-hover-color: var(--eui-c-s-primary-fill-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--info{--_bg-color: var(--eui-c-s-info-fill);--_color-on-bg: var(--eui-c-s-info-fill-contrast);--_color: var(--eui-c-s-info-fill-contrast);--_icon-color: var(--eui-c-s-info-fill-contrast);--_close-hover-color: var(--eui-c-s-info-fill-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--success{--_bg-color: var(--eui-c-s-success-fill);--_color-on-bg: var(--eui-c-s-success-fill-contrast);--_color: var(--eui-c-s-success-fill-contrast);--_icon-color: var(--eui-c-s-success-fill-contrast);--_close-hover-color: var(--eui-c-s-success-fill-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--warning{--_bg-color: var(--eui-c-s-warning-fill);--_color-on-bg: var(--eui-c-s-warning-fill-contrast);--_color: var(--eui-c-s-warning-fill-contrast);--_icon-color: var(--eui-c-s-warning-fill-contrast);--_close-hover-color: var(--eui-c-s-warning-fill-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--danger{--_bg-color: var(--eui-c-s-danger-fill);--_color-on-bg: var(--eui-c-s-danger-fill-contrast);--_color: var(--eui-c-s-danger-fill-contrast);--_icon-color: var(--eui-c-s-danger-fill-contrast);--_close-hover-color: var(--eui-c-s-danger-fill-hover)}.eui-19 .eui-growl{position:fixed;width:20rem;z-index:var(--eui-zi-growl-message)}.eui-19 .eui-growl--bottom-left{bottom:var(--eui-bottom-left-vertical-offset);left:var(--eui-bottom-left-horizontal-offset)}.eui-19 .eui-growl--bottom-center{bottom:var(--eui-s-l);right:50%;transform:translate(50%)}.eui-19 .eui-growl--bottom-right{bottom:var(--eui-bottom-right-vertical-offset);right:var(--eui-bottom-right-horizontal-offset)}.eui-19 .eui-growl--top-left{left:var(--eui-s-l);top:var(--eui-s-l)}.eui-19 .eui-growl--top-center{right:50%;top:var(--eui-s-l);transform:translate(50%)}.eui-19 .eui-growl--top-right{right:var(--eui-s-l);top:var(--eui-s-l)}.eui-19 .eui-growl a{text-decoration:underline}.eui-19 .eui-growl-item-container{margin-bottom:var(--eui-s-s);position:relative;background-color:var(--_bg-color);color:var(--_color-on-bg)}.eui-19 .eui-growl-item{display:flex;flex-direction:column;padding:var(--eui-s-m);position:relative;width:20rem;box-shadow:var(--eui-sh-3)}.eui-19 .eui-growl-item-summary-wrapper{display:flex;align-items:center;gap:var(--eui-s-xs)}.eui-19 .eui-growl-item-title{font:var(--eui-f-m-compact-bold);margin-right:var(--eui-s-xl);color:var(--_color)}.eui-19 .eui-growl-item-content:not(:empty){margin-top:var(--eui-s-xs);max-height:80vh;overflow-y:auto;overflow-wrap:break-word;font:var(--eui-f-m-compact)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar{display:inherit;height:4px;width:4px;background-color:var(--eui-c-neutral-bg-light)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-thumb{background-color:var(--_eui-scrollbars-foreground-color);border-radius:5rem}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-19 .eui-growl-item-content:not(:empty){scrollbar-color:var(--eui-c-neutral-lighter) var(--eui-c-neutral-bg-light);scrollbar-width:auto}}.eui-19 .eui-growl-item-close{position:absolute;top:var(--eui-s-xs);right:var(--eui-s-xs)}.eui-19 .eui-growl-item-close .eui-icon-button__button:hover{background-color:var(--_close-hover-color)}.eui-19 .eui-growl-item-container--filled .eui-icon-svg svg{fill:var(--_icon-color)!important;color:var(--_icon-color)!important}.eui-19 .eui-growl-item-container--filled a,.eui-19 .eui-growl-item-container--filled code{color:var(--eui-c-white)!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EuiIconSvgComponent, selector: "eui-icon-svg, span[euiIconSvg], i[euiIconSvg]", inputs: ["icon", "fillColor", "set", "size", "style", "iconUrl", "transform", "euiVariant", "aria-label", "ariaHidden", "focusable", "isLoading", "isInputIcon", "euiStart", "euiEnd"] }, { kind: "component", type: i3.EuiIconButtonComponent, selector: "eui-icon-button", inputs: ["icon", "iconUrl", "fillColor", "size", "ariaLabel", "tabindex", "hasNoPadding", "hasFocusHoverColor", "hasFocusHoverBg", "euiRounded", "euiDisabled"], outputs: ["buttonClick"] }, { kind: "component", type: i4.EuiIconStateComponent, selector: "eui-icon-state", inputs: ["size", "ariaLabel"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
94
94
  }
95
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: EuiGrowlComponent, decorators: [{
96
96
  type: Component,
97
- args: [{ selector: 'eui-growl', encapsulation: ViewEncapsulation.None, standalone: false, template: "<div\n *ngFor=\"let msg of value\"\n class=\"eui-growl-item-container eui-u-anim eui-u-anim--fast\"\n [ngClass]=\"{\n 'eui-growl-item-container--info eui--info': msg.severity === 'info',\n 'eui-growl-item-container--warning eui--warning': msg.severity === 'warning',\n 'eui-growl-item-container--danger eui--danger': msg.severity === 'danger',\n 'eui-growl-item-container--success eui--success': msg.severity === 'success',\n 'eui-growl-item-container--filled': msg.filled,\n 'eui-growl--sticky': sticky,\n }\"\n [class.eui-u-anim--slideInUp]=\"position === 'bottom-left' || position === 'bottom-center' || position === 'bottom-right'\"\n [class.eui-u-anim--slideInDown]=\"position === 'top-left' || position === 'top-center' || position === 'top-right'\">\n\n <div class=\"eui-growl-item\">\n <div class=\"eui-growl-item-summary-wrapper\">\n <eui-icon-state [euiVariant]=\"msg.severity\" class=\"eui-growl-item-icon\"/>\n <span [id]=\"titleId\" class=\"eui-growl-item-title\">{{ msg.summary }}</span>\n </div>\n <div [id]=\"contentId\" class=\"eui-growl-item-content\" [innerHTML]=\"msg.detail\"></div>\n\n <eui-icon-button\n (buttonClick)=\"remove(msg)\"\n icon=\"close:outline\"\n fillColor=\"neutral-light\"\n euiRounded\n ariaLabel=\"Close growl icon\"\n class=\"eui-growl-item-close\">\n </eui-icon-button>\n </div>\n\n</div>\n<div class=\"eui-growl-item-container eui-u-anim eui-u-anim--fast eui-growl-item-container--secondary\"\n *ngIf=\"closeAllSticky && isGrowlMoreThanTwo()\">\n <div class=\"eui-growl-item\">\n <div class=\"eui-growl-item-summary-wrapper\">\n <eui-icon-svg icon=\"checkmark-done:sharp\"/>\n <span class=\"eui-growl-item-title\">{{ 'eui.growl.dismiss-all' | translate }}</span>\n </div>\n <eui-icon-button (buttonClick)=\"removeAll()\"\n icon=\"close:outline\"\n fillColor=\"neutral-light\"\n euiRounded\n ariaLabel=\"Close growl icon\"\n class=\"eui-growl-item-close\"/>\n </div>\n</div>\n", styles: [".eui-19 .eui-growl{--_color: var(--eui-growl-color, var(--eui-c-s-info-on-bg));--_bg-color: var(--eui-growl-bg-color, var(--eui-c-s-info-bg));--_color-on-bg: var(--eui-growl-color-on-bg, var(--eui-c-s-info-bg-contrast));--_close-hover-color: var(--eui-growl-close-hover-color, var(--eui-c-s-info-bg-hover));--eui-bottom-left-horizontal-offset: var(--eui-s-l);--eui-bottom-left-vertical-offset: var(--eui-s-l);--eui-bottom-right-horizontal-offset: var(--eui-s-l);--eui-bottom-right-vertical-offset: var(--eui-s-l)}.eui-19 .eui-growl-item-container--primary{--_color: var(--eui-c-s-primary);--_bg-color: var(--eui-c-s-primary-bg);--_color-on-bg: var(--eui-c-s-primary-bg-contrast);--_close-hover-color: var(--eui-c-s-primary-bg-hover)}.eui-19 .eui-growl-item-container--secondary{--_color: var(--eui-c-s-secondary);--_bg-color: var(--eui-c-s-secondary-bg);--_color-on-bg: var(--eui-c-s-secondary-bg-contrast);--_close-hover-color: var(--eui-c-s-secondary-bg-hover)}.eui-19 .eui-growl-item-container--info{--_color: var(--eui-c-s-info);--_bg-color: var(--eui-c-s-info-bg);--_color-on-bg: var(--eui-c-s-info-bg-contrast);--_close-hover-color: var(--eui-c-s-info-bg-hover)}.eui-19 .eui-growl-item-container--success{--_color: var(--eui-c-s-success);--_bg-color: var(--eui-c-s-success-bg);--_color-on-bg: var(--eui-c-s-success-bg-contrast);--_close-hover-color: var(--eui-c-s-success-bg-hover)}.eui-19 .eui-growl-item-container--warning{--_color: var(--eui-c-s-warning);--_bg-color: var(--eui-c-s-warning-bg);--_color-on-bg: var(--eui-c-s-warning-bg-contrast);--_close-hover-color: var(--eui-c-s-warning-bg-hover)}.eui-19 .eui-growl-item-container--danger{--_color: var(--eui-c-s-danger);--_bg-color: var(--eui-c-s-danger-bg);--_color-on-bg: var(--eui-c-s-danger-bg-contrast);--_close-hover-color: var(--eui-c-s-danger-bg-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--primary{--_bg-color: var(--eui-c-primary);--_color-on-bg: var(--eui-c-primary-contrast);--_color: var(--eui-c-primary-contrast);--_icon-color: var(--eui-c-primary-contrast);--_close-hover-color: var(--eui-c-primary-d10)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--info{--_bg-color: var(--eui-c-info);--_color-on-bg: var(--eui-c-info-contrast);--_color: var(--eui-c-info-contrast);--_icon-color: var(--eui-c-info-contrast);--_close-hover-color: var(--eui-c-info-d10)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--success{--_bg-color: var(--eui-c-success-dark);--_color-on-bg: var(--eui-c-success-contrast);--_color: var(--eui-c-success-contrast);--_icon-color: var(--eui-c-success-contrast);--_close-hover-color: var(--eui-c-success-dark-d10)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--warning{--_bg-color: var(--eui-c-warning);--_color-on-bg: var(--eui-c-warning-contrast);--_color: var(--eui-c-warning-contrast);--_icon-color: var(--eui-c-warning-contrast);--_close-hover-color: var(--eui-c-warning-d10)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--danger{--_bg-color: var(--eui-c-s-danger);--_color-on-bg: var(--eui-c-danger-contrast);--_color: var(--eui-c-danger-contrast);--_icon-color: var(--eui-c-danger-contrast);--_close-hover-color: var(--eui-c-s-danger-d10)}.eui-19 .eui-growl{position:fixed;width:20rem;z-index:var(--eui-zi-growl-message)}.eui-19 .eui-growl--bottom-left{bottom:var(--eui-bottom-left-vertical-offset);left:var(--eui-bottom-left-horizontal-offset)}.eui-19 .eui-growl--bottom-center{bottom:var(--eui-s-l);right:50%;transform:translate(50%)}.eui-19 .eui-growl--bottom-right{bottom:var(--eui-bottom-right-vertical-offset);right:var(--eui-bottom-right-horizontal-offset)}.eui-19 .eui-growl--top-left{left:var(--eui-s-l);top:var(--eui-s-l)}.eui-19 .eui-growl--top-center{right:50%;top:var(--eui-s-l);transform:translate(50%)}.eui-19 .eui-growl--top-right{right:var(--eui-s-l);top:var(--eui-s-l)}.eui-19 .eui-growl a{text-decoration:underline}.eui-19 .eui-growl-item-container{margin-bottom:var(--eui-s-s);position:relative;background-color:var(--_bg-color);color:var(--_color-on-bg)}.eui-19 .eui-growl-item{display:flex;flex-direction:column;padding:var(--eui-s-m);position:relative;width:20rem;box-shadow:var(--eui-sh-3)}.eui-19 .eui-growl-item-summary-wrapper{display:flex;align-items:center;gap:var(--eui-s-xs)}.eui-19 .eui-growl-item-title{font:var(--eui-f-m-compact-bold);margin-right:var(--eui-s-xl);color:var(--_color)}.eui-19 .eui-growl-item-content:not(:empty){margin-top:var(--eui-s-xs);max-height:80vh;overflow-y:auto;overflow-wrap:break-word;font:var(--eui-f-m-compact)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar{display:inherit;height:4px;width:4px;background-color:var(--eui-c-neutral-bg-light)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-thumb{background-color:var(--_eui-scrollbars-foreground-color);border-radius:5rem}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-19 .eui-growl-item-content:not(:empty){scrollbar-color:var(--eui-c-neutral-lighter) var(--eui-c-neutral-bg-light);scrollbar-width:auto}}.eui-19 .eui-growl-item-close{position:absolute;top:var(--eui-s-xs);right:var(--eui-s-xs)}.eui-19 .eui-growl-item-close .eui-icon-button__button:hover{background-color:var(--_close-hover-color)}.eui-19 .eui-growl-item-container--filled .eui-icon-svg svg{fill:var(--_icon-color)!important;color:var(--_icon-color)!important}.eui-19 .eui-growl-item-container--filled a,.eui-19 .eui-growl-item-container--filled code{color:var(--eui-c-white)!important}\n"] }]
97
+ args: [{ selector: 'eui-growl', encapsulation: ViewEncapsulation.None, standalone: false, template: "<div\n *ngFor=\"let msg of value\"\n class=\"eui-growl-item-container eui-u-anim eui-u-anim--fast\"\n [ngClass]=\"{\n 'eui-growl-item-container--info eui--info': msg.severity === 'info',\n 'eui-growl-item-container--warning eui--warning': msg.severity === 'warning',\n 'eui-growl-item-container--danger eui--danger': msg.severity === 'danger',\n 'eui-growl-item-container--success eui--success': msg.severity === 'success',\n 'eui-growl-item-container--filled': msg.filled,\n 'eui-growl--sticky': sticky,\n }\"\n [class.eui-u-anim--slideInUp]=\"position === 'bottom-left' || position === 'bottom-center' || position === 'bottom-right'\"\n [class.eui-u-anim--slideInDown]=\"position === 'top-left' || position === 'top-center' || position === 'top-right'\">\n\n <div class=\"eui-growl-item\">\n <div class=\"eui-growl-item-summary-wrapper\">\n <eui-icon-state [euiVariant]=\"msg.severity\" class=\"eui-growl-item-icon\"/>\n <span [id]=\"titleId\" class=\"eui-growl-item-title\">{{ msg.summary }}</span>\n </div>\n <div [id]=\"contentId\" class=\"eui-growl-item-content\" [innerHTML]=\"msg.detail\"></div>\n\n <eui-icon-button\n (buttonClick)=\"remove(msg)\"\n icon=\"close:outline\"\n fillColor=\"neutral-light\"\n euiRounded\n ariaLabel=\"Close growl icon\"\n class=\"eui-growl-item-close\">\n </eui-icon-button>\n </div>\n\n</div>\n<div class=\"eui-growl-item-container eui-u-anim eui-u-anim--fast eui-growl-item-container--secondary\"\n *ngIf=\"closeAllSticky && isGrowlMoreThanTwo()\">\n <div class=\"eui-growl-item\">\n <div class=\"eui-growl-item-summary-wrapper\">\n <eui-icon-svg icon=\"checkmark-done:sharp\"/>\n <span class=\"eui-growl-item-title\">{{ 'eui.growl.dismiss-all' | translate }}</span>\n </div>\n <eui-icon-button (buttonClick)=\"removeAll()\"\n icon=\"close:outline\"\n fillColor=\"neutral-light\"\n euiRounded\n ariaLabel=\"Close growl icon\"\n class=\"eui-growl-item-close\"/>\n </div>\n</div>\n", styles: [".eui-19 .eui-growl{--_color: var(--eui-growl-color, var(--eui-c-s-info-on-bg));--_bg-color: var(--eui-growl-bg-color, var(--eui-c-s-info-bg));--_color-on-bg: var(--eui-growl-color-on-bg, var(--eui-c-s-info-bg-contrast));--_close-hover-color: var(--eui-growl-close-hover-color, var(--eui-c-s-info-bg-hover));--eui-bottom-left-horizontal-offset: var(--eui-s-l);--eui-bottom-left-vertical-offset: var(--eui-s-l);--eui-bottom-right-horizontal-offset: var(--eui-s-l);--eui-bottom-right-vertical-offset: var(--eui-s-l)}.eui-19 .eui-growl-item-container--primary{--_color: var(--eui-c-s-primary);--_bg-color: var(--eui-c-s-primary-bg);--_color-on-bg: var(--eui-c-s-primary-bg-contrast);--_close-hover-color: var(--eui-c-s-primary-bg-hover)}.eui-19 .eui-growl-item-container--secondary{--_color: var(--eui-c-s-secondary);--_bg-color: var(--eui-c-s-secondary-bg);--_color-on-bg: var(--eui-c-s-secondary-bg-contrast);--_close-hover-color: var(--eui-c-s-secondary-bg-hover)}.eui-19 .eui-growl-item-container--info{--_color: var(--eui-c-s-info);--_bg-color: var(--eui-c-s-info-bg);--_color-on-bg: var(--eui-c-s-info-bg-contrast);--_close-hover-color: var(--eui-c-s-info-bg-hover)}.eui-19 .eui-growl-item-container--success{--_color: var(--eui-c-s-success);--_bg-color: var(--eui-c-s-success-bg);--_color-on-bg: var(--eui-c-s-success-bg-contrast);--_close-hover-color: var(--eui-c-s-success-bg-hover)}.eui-19 .eui-growl-item-container--warning{--_color: var(--eui-c-s-warning);--_bg-color: var(--eui-c-s-warning-bg);--_color-on-bg: var(--eui-c-s-warning-bg-contrast);--_close-hover-color: var(--eui-c-s-warning-bg-hover)}.eui-19 .eui-growl-item-container--danger{--_color: var(--eui-c-s-danger);--_bg-color: var(--eui-c-s-danger-bg);--_color-on-bg: var(--eui-c-s-danger-bg-contrast);--_close-hover-color: var(--eui-c-s-danger-bg-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--primary{--_bg-color: var(--eui-c-s-primary-fill);--_color-on-bg: var(--eui-c-s-primary-fill-contrast);--_color: var(--eui-c-s-primary-fill-contrast);--_icon-color: var(--eui-c-s-primary-fill-contrast);--_close-hover-color: var(--eui-c-s-primary-fill-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--info{--_bg-color: var(--eui-c-s-info-fill);--_color-on-bg: var(--eui-c-s-info-fill-contrast);--_color: var(--eui-c-s-info-fill-contrast);--_icon-color: var(--eui-c-s-info-fill-contrast);--_close-hover-color: var(--eui-c-s-info-fill-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--success{--_bg-color: var(--eui-c-s-success-fill);--_color-on-bg: var(--eui-c-s-success-fill-contrast);--_color: var(--eui-c-s-success-fill-contrast);--_icon-color: var(--eui-c-s-success-fill-contrast);--_close-hover-color: var(--eui-c-s-success-fill-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--warning{--_bg-color: var(--eui-c-s-warning-fill);--_color-on-bg: var(--eui-c-s-warning-fill-contrast);--_color: var(--eui-c-s-warning-fill-contrast);--_icon-color: var(--eui-c-s-warning-fill-contrast);--_close-hover-color: var(--eui-c-s-warning-fill-hover)}.eui-19 .eui-growl-item-container.eui-growl-item-container--filled.eui-growl-item-container--danger{--_bg-color: var(--eui-c-s-danger-fill);--_color-on-bg: var(--eui-c-s-danger-fill-contrast);--_color: var(--eui-c-s-danger-fill-contrast);--_icon-color: var(--eui-c-s-danger-fill-contrast);--_close-hover-color: var(--eui-c-s-danger-fill-hover)}.eui-19 .eui-growl{position:fixed;width:20rem;z-index:var(--eui-zi-growl-message)}.eui-19 .eui-growl--bottom-left{bottom:var(--eui-bottom-left-vertical-offset);left:var(--eui-bottom-left-horizontal-offset)}.eui-19 .eui-growl--bottom-center{bottom:var(--eui-s-l);right:50%;transform:translate(50%)}.eui-19 .eui-growl--bottom-right{bottom:var(--eui-bottom-right-vertical-offset);right:var(--eui-bottom-right-horizontal-offset)}.eui-19 .eui-growl--top-left{left:var(--eui-s-l);top:var(--eui-s-l)}.eui-19 .eui-growl--top-center{right:50%;top:var(--eui-s-l);transform:translate(50%)}.eui-19 .eui-growl--top-right{right:var(--eui-s-l);top:var(--eui-s-l)}.eui-19 .eui-growl a{text-decoration:underline}.eui-19 .eui-growl-item-container{margin-bottom:var(--eui-s-s);position:relative;background-color:var(--_bg-color);color:var(--_color-on-bg)}.eui-19 .eui-growl-item{display:flex;flex-direction:column;padding:var(--eui-s-m);position:relative;width:20rem;box-shadow:var(--eui-sh-3)}.eui-19 .eui-growl-item-summary-wrapper{display:flex;align-items:center;gap:var(--eui-s-xs)}.eui-19 .eui-growl-item-title{font:var(--eui-f-m-compact-bold);margin-right:var(--eui-s-xl);color:var(--_color)}.eui-19 .eui-growl-item-content:not(:empty){margin-top:var(--eui-s-xs);max-height:80vh;overflow-y:auto;overflow-wrap:break-word;font:var(--eui-f-m-compact)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar{display:inherit;height:4px;width:4px;background-color:var(--eui-c-neutral-bg-light)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-thumb{background-color:var(--_eui-scrollbars-foreground-color);border-radius:5rem}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-thumb:hover{background-color:var(--eui-c-neutral-lighter)}.eui-19 .eui-growl-item-content:not(:empty)::-webkit-scrollbar-track{background-color:var(--eui-c-neutral-bg-light);border-radius:0}@-moz-document url-prefix(){.eui-19 .eui-growl-item-content:not(:empty){scrollbar-color:var(--eui-c-neutral-lighter) var(--eui-c-neutral-bg-light);scrollbar-width:auto}}.eui-19 .eui-growl-item-close{position:absolute;top:var(--eui-s-xs);right:var(--eui-s-xs)}.eui-19 .eui-growl-item-close .eui-icon-button__button:hover{background-color:var(--_close-hover-color)}.eui-19 .eui-growl-item-container--filled .eui-icon-svg svg{fill:var(--_icon-color)!important;color:var(--_icon-color)!important}.eui-19 .eui-growl-item-container--filled a,.eui-19 .eui-growl-item-container--filled code{color:var(--eui-c-white)!important}\n"] }]
98
98
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.IterableDiffers }], propDecorators: { cssClasses: [{
99
99
  type: HostBinding,
100
100
  args: ['class']